From 45d783cdf458403e43f22ff5dd99a64da88e368e Mon Sep 17 00:00:00 2001 From: Vitalii Kiiko Date: Wed, 30 Oct 2024 14:30:39 +0100 Subject: [PATCH] - added button for status change -> draft; - added button 'rimove company' and added integration with emailjs; --- package.json | 1 + src/pages/BandoApplication/index.js | 39 +++++++++- src/pages/ProfileCompany/index.js | 106 +++++++++++++++++++++++++++- 3 files changed, 143 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index a7e0379..b1eef76 100644 --- a/package.json +++ b/package.json @@ -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", diff --git a/src/pages/BandoApplication/index.js b/src/pages/BandoApplication/index.js index 643627a..cee9155 100644 --- a/src/pages/BandoApplication/index.js +++ b/src/pages/BandoApplication/index.js @@ -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) + ?
+
: null} + {['AWAITING', 'READY', 'SUBMIT', 'EVALUATION'].includes(applicationStatus) ?
diff --git a/src/pages/ProfileCompany/index.js b/src/pages/ProfileCompany/index.js index 56e3f41..b55322a 100644 --- a/src/pages/ProfileCompany/index.js +++ b/src/pages/ProfileCompany/index.js @@ -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
+
+ } + + const headerRemoveDialog = () => { + return {__('Rimuovi azienda', 'gepafin')} + } + + 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 = () => {
:
}
- {__('Azioni rapide', 'gepafin')} + {__('Azioni', 'gepafin')}
+ +

Abbiamo preso in carica la tua richiesta a breve l'azienda sarà rimossa dal tuo profilo

+
+
)