- added button for status change -> draft;

- added button 'rimove company' and added integration with emailjs;
This commit is contained in:
Vitalii Kiiko
2024-10-30 14:30:39 +01:00
parent 99bdb2cfb5
commit 45d783cdf4
3 changed files with 143 additions and 3 deletions

View File

@@ -6,6 +6,7 @@
"@babel/plugin-proposal-private-property-in-object": "7.21.11",
"@babel/preset-react": "7.24.7",
"@date-fns/tz": "1.1.2",
"@emailjs/browser": "^4.4.1",
"@emotion/styled": "11.13.0",
"@tanstack/react-table": "8.20.5",
"@wordpress/i18n": "5.8.0",

View File

@@ -160,7 +160,6 @@ const BandoApplication = () => {
const validateApplicationCallback = (data) => {
if (data.status === 'SUCCESS') {
console.log('data.data', data.data)
if (data.data.status) {
setApplicationStatus(data.data.status); // ask why not 'applicationStatus'?
}
@@ -454,6 +453,34 @@ const BandoApplication = () => {
}
}
const doChangeToDraft = () => {
const applId = getApplicationId();
storeSet.main.setAsyncRequest();
formMsgs.current.clear();
ApplicationService.updateStatusApplication(applId, {}, changeToDraftCallback, errChangeToDraftCallback, [
['status', 'DRAFT']
]);
};
const changeToDraftCallback = (data) => {
if (data.status === 'SUCCESS') {
if (data.data.status) {
setApplicationStatus(data.data.status);
}
}
storeSet.main.unsetAsyncRequest();
}
const errChangeToDraftCallback = (data) => {
storeSet.main.unsetAsyncRequest();
toast.current.show({
severity: 'error',
summary: '',
detail: data.message
});
}
useEffect(() => {
if ('SUBMIT' === applicationStatus) {
setVisibleConfirmation(true);
@@ -593,6 +620,16 @@ const BandoApplication = () => {
})
: null}
{['AWAITING'].includes(applicationStatus)
? <div className="appPageSection">
<Button
type="button"
outlined
onClick={doChangeToDraft}
label={__('Ripristina draft', 'gepafin')}
icon="pi pi-arrow-left" iconPos="left"/>
</div> : null}
{['AWAITING', 'READY', 'SUBMIT', 'EVALUATION'].includes(applicationStatus)
? <div className="appPageSection">
<div className="appForm__field">

View File

@@ -4,6 +4,7 @@ import { isEmpty, pathOr, head } from 'ramda';
import { klona } from 'klona';
import { wrap } from 'object-path-immutable';
import { useForm } from 'react-hook-form';
import emailjs from '@emailjs/browser';
// store
import { storeSet, useStore, storeGet } from '../../store';
@@ -25,6 +26,10 @@ import FileuploadDelega from '../../components/FileuploadDelega';
import { Toast } from 'primereact/toast';
import getFormatedFileSizeText from '../../helpers/getFormatedFileSizeText';
import { defaultMaxFileSize } from '../../configData';
import { classNames } from 'primereact/utils';
import { Dropdown } from 'primereact/dropdown';
import { Dialog } from 'primereact/dialog';
import { confirmPopup, ConfirmPopup } from 'primereact/confirmpopup';
const ProfileCompany = () => {
const isAsyncRequest = useStore().main.isAsyncRequest();
@@ -34,6 +39,7 @@ const ProfileCompany = () => {
const [formInitialData, setFormInitialData] = useState({});
const [delegaData, setDelegaData] = useState({});
const [delega, setDelega] = useState([]);
const [isVisibleRemoveDialog, setIsVisibleRemoveDialog] = useState(false);
const { delegaFirstName = '', delegaLastName = '', delegaCodiceFiscale = '' } = delegaData;
const toast = useRef(null);
@@ -197,6 +203,85 @@ const ProfileCompany = () => {
storeSet.main.unsetAsyncRequest();
}
const confirmDelete = (event) => {
confirmPopup({
target: event.currentTarget,
message: __('Sei sicuro di rimuovere la azienda?', 'gepafin'),
acceptLabel: __('Si', 'gepafin'),
icon: 'pi pi-info-circle',
defaultFocus: 'reject',
acceptClassName: 'p-button-danger',
accept: () => {
doRemoveCompany();
},
reject: () => {
}
});
};
const footerRemoveDialog = () => {
return <div>
<Button type="button" label={__('No', 'gepafin')} onClick={hideRemoveDialog} outlined/>
<Button
type="button"
label={__('Si', 'gepafin')} onClick={doRemoveCompany}/>
</div>
}
const headerRemoveDialog = () => {
return <span>{__('Rimuovi azienda', 'gepafin')}</span>
}
const hideRemoveDialog = () => {
setIsVisibleRemoveDialog(false);
}
const doRemoveCompany = () => {
const userData = storeGet.main.userData();
let chosenCompany = {};
if (chosenCompanyId) {
chosenCompany = head(companies.filter(o => o.id === chosenCompanyId));
}
const templateParams = {
firstName: userData.firstName,
lastName: userData.lastName,
userId: userData.id,
companyName: chosenCompany.companyName,
companyId: chosenCompany.id
};
emailjs.send(
'service_qu9yy6o',
'template_oie3kcp',
templateParams,
{
publicKey: 'TPWwaPLM2dDuEIa10'
}
).then(() => {
/*if (toast.current) {
toast.current.show({
severity: 'success',
summary: '',
detail: __('La richiesta è stata inviata!', 'gepafin')
});
}*/
setIsVisibleRemoveDialog(true);
})
.catch((err) => {
console.log(err)
if (toast.current) {
toast.current.show({
severity: 'error',
summary: '',
detail: __('Error', 'gepafin')
});
}
});
}
useEffect(() => {
const newFormData = klona(formInitialData);
Object.keys(newFormData).map(v => setValue(v, newFormData[v]));
@@ -498,19 +583,36 @@ const ProfileCompany = () => {
</div> : <div className="appPage__spacer"></div>}
<div className="appPageSection__hr">
<span>{__('Azioni rapide', 'gepafin')}</span>
<span>{__('Azioni', 'gepafin')}</span>
</div>
<div className="appPageSection">
<div className="appPageSection__actions">
<Button
form="companyForm"
/*disabled={isAsyncRequest || emptyValues || values.id}*/
label={__('Salva modifiche', 'gepafin')}
icon="pi pi-check" iconPos="right"/>
<ConfirmPopup/>
<Button
type="button"
onClick={confirmDelete}
severity="danger"
label={__('Rimuovi azienda', 'gepafin')}
icon="pi pi-trash" iconPos="right"/>
</div>
</div>
<Dialog
visible={isVisibleRemoveDialog}
modal
header={headerRemoveDialog}
/*footer={footerRemoveDialog}*/
style={{ maxWidth: '600px', width: '100%' }}
onHide={hideRemoveDialog}>
<p>Abbiamo preso in carica la tua richiesta a breve l'azienda sarà rimossa dal tuo profilo</p>
</Dialog>
</div>
)