diff --git a/src/components/NotificationsSidebar/index.js b/src/components/NotificationsSidebar/index.js index 91555de..8d5e7b3 100644 --- a/src/components/NotificationsSidebar/index.js +++ b/src/components/NotificationsSidebar/index.js @@ -203,7 +203,14 @@ const NotificationsSidebar = () => { } const connectWebSocket = () => { - socket.current = new SockJS(socketUrl); + socket.current = new SockJS(socketUrl, null, { + transports: [ + 'websocket', + 'xhr-streaming', + 'xhr-polling' + ] + } + ); stomp.current = Stomp.over(socket.current); stomp.current.configure({ diff --git a/src/components/TopBarProfileMenu/index.js b/src/components/TopBarProfileMenu/index.js index 2c3c729..296527a 100644 --- a/src/components/TopBarProfileMenu/index.js +++ b/src/components/TopBarProfileMenu/index.js @@ -95,6 +95,8 @@ const TopBarProfileMenu = ({ menuLeftRef }) => { detail: __('L\'azienda è stata cambiata') }); } + + navigate('/') } } diff --git a/src/pages/BandoApplication/index.js b/src/pages/BandoApplication/index.js index b168f58..6f5cf0f 100644 --- a/src/pages/BandoApplication/index.js +++ b/src/pages/BandoApplication/index.js @@ -100,11 +100,7 @@ const BandoApplication = () => { const formValues = watch(); const onValidate = () => { - const applId = getApplicationId(); - storeSet.main.setAsyncRequest(); - formMsgs.current.clear(); - - ApplicationService.validateApplication(applId, {}, validateApplicationCallback, errValidateApplicationCallback); + saveDraft('VALIDATE'); }; const onSubmit = () => { @@ -263,13 +259,24 @@ const BandoApplication = () => { }); } if (!isEmpty(saveAndMove) && is(String, saveAndMove)) { - storeSet.main.setAsyncRequest(); - ApplicationService.getApplicationForm(data.data.id, getApplFormCallback, errGetApplFormCallbacks, [ - ['formId', formId], - ['action', saveAndMove] - ]); + if (['NEXT','PREVIOUS'].includes(saveAndMove)) { + storeSet.main.setAsyncRequest(); + ApplicationService.getApplicationForm(data.data.id, getApplFormCallback, errGetApplFormCallbacks, [ + ['formId', formId], + ['companyId', chosenCompanyId], + ['action', saveAndMove] + ]); + } else if (['VALIDATE'].includes(saveAndMove)) { + const applId = getApplicationId(); + storeSet.main.setAsyncRequest(); + formMsgs.current.clear(); + + ApplicationService.validateApplication(applId, {}, validateApplicationCallback, errValidateApplicationCallback); + } } else { - ApplicationService.getApplicationForm(data.data.id, getStatusCheckCallback, errGetStatusCheckCallbacks); + ApplicationService.getApplicationForm(data.data.id, getStatusCheckCallback, errGetStatusCheckCallbacks, [ + ['companyId', chosenCompanyId] + ]); } } } @@ -576,7 +583,9 @@ const BandoApplication = () => { if (applId) { storeSet.main.setAsyncRequest(); - ApplicationService.getApplicationForm(applId, getApplFormCallback, errGetApplFormCallbacks); + ApplicationService.getApplicationForm(applId, getApplFormCallback, errGetApplFormCallbacks, [ + ['companyId', chosenCompanyId] + ]); } } @@ -608,7 +617,9 @@ const BandoApplication = () => { if (applId) { storeSet.main.setAsyncRequest(); setIsRequestForApplData(true); - ApplicationService.getApplicationForm(applId, getApplFormCallback, errGetApplFormCallbacks); + ApplicationService.getApplicationForm(applId, getApplFormCallback, errGetApplFormCallbacks, [ + ['companyId', chosenCompanyId] + ]); } }, [id, chosenCompanyId]); diff --git a/src/pages/BandoApplicationPreview/index.js b/src/pages/BandoApplicationPreview/index.js index a21913e..84c64e8 100644 --- a/src/pages/BandoApplicationPreview/index.js +++ b/src/pages/BandoApplicationPreview/index.js @@ -50,6 +50,8 @@ const BandoApplicationPreview = () => { const [totalSteps, setTotalSteps] = useState(0); const [applicationStatus, setApplicationStatus] = useState(''); const [activeStep, setActiveStep] = useState(1); + const chosenCompanyId = useStore().main.chosenCompanyId(); + const role = useStore().main.getRole(); const isAsyncRequest = useStore().main.isAsyncRequest(); const toast = useRef(null); const formMsgs = useRef(null); @@ -130,18 +132,34 @@ const BandoApplicationPreview = () => { const goBackward = () => { storeSet.main.setAsyncRequest(); - ApplicationService.getApplicationForm(id, getApplFormCallback, errGetApplFormCallbacks, [ - ['formId', formId], - ['action', 'PREVIOUS'] - ]); + const queryParams = 'ROLE_BENEFICIARY' === role + ? [ + ['formId', formId], + ['companyId', chosenCompanyId], + ['action', 'PREVIOUS'] + ] + : [ + ['formId', formId], + ['action', 'PREVIOUS'] + ]; + + ApplicationService.getApplicationForm(id, getApplFormCallback, errGetApplFormCallbacks, queryParams); } const goForward = () => { storeSet.main.setAsyncRequest(); - ApplicationService.getApplicationForm(id, getApplFormCallback, errGetApplFormCallbacks, [ - ['formId', formId], - ['action', 'NEXT'] - ]); + const queryParams = 'ROLE_BENEFICIARY' === role + ? [ + ['formId', formId], + ['companyId', chosenCompanyId], + ['action', 'NEXT'] + ] + : [ + ['formId', formId], + ['action', 'NEXT'] + ]; + + ApplicationService.getApplicationForm(id, getApplFormCallback, errGetApplFormCallbacks, queryParams); } const getApplFormCallback = (data) => { @@ -310,7 +328,12 @@ const BandoApplicationPreview = () => { if (applId) { storeSet.main.setAsyncRequest(); - ApplicationService.getApplicationForm(applId, getApplFormCallback, errGetApplFormCallbacks); + const queryParams = 'ROLE_BENEFICIARY' === role + ? [ + ['companyId', chosenCompanyId] + ] + : []; + ApplicationService.getApplicationForm(applId, getApplFormCallback, errGetApplFormCallbacks, queryParams); } }, [id]); diff --git a/src/pages/BandoEdit/components/BandoEditFormStep1/index.js b/src/pages/BandoEdit/components/BandoEditFormStep1/index.js index f15f353..6d615ed 100644 --- a/src/pages/BandoEdit/components/BandoEditFormStep1/index.js +++ b/src/pages/BandoEdit/components/BandoEditFormStep1/index.js @@ -201,7 +201,7 @@ const BandoEditFormStep1 = forwardRef(function ({ initialData, setInitialData, g ![ 'descriptionShort', 'descriptionLong', 'documentationRequested', 'threshold', 'aimedTo', 'criteria', 'docs', 'checklist', 'faq', 'amount', 'amountMin', 'amountMax', - 'email', 'phoneNumber', 'checkList', 'images', 'numberOfCheck', 'productId' + 'email', 'phoneNumber', 'checkList', 'images', 'numberOfCheck', 'appointmentTemplateId' ].includes(fieldName) } @@ -497,12 +497,12 @@ const BandoEditFormStep1 = forwardRef(function ({ initialData, setInitialData, g {APP_HUB_ID !== 't7jh5wfg9QXylNaTZkPoE' ? { const elements = useStore().main.formElements(); const element = head(elements.filter(o => o.id === id)); const [label, setLabel] = useState(''); - const isRequired = pathOr(false, ['validators', 'isRequired'], element) + const isRequired = pathOr(false, ['validators', 'isRequired'], element); + const customValidation = pathOr(false, ['validators', 'custom'], element); + let maybeNonEmptyTables = customValidation === 'nonEmptyTables'; useEffect(() => { const label = head(element.settings.filter(o => o.name === 'label')); @@ -26,7 +28,7 @@ const BuilderElementProperLabel = ({ id, defaultLabel }) => { return
{renderHtmlContent(label)} - {isRequired ? * : null} + {isRequired || maybeNonEmptyTables ? * : null}
} diff --git a/src/pages/BandoViewBeneficiario/index.js b/src/pages/BandoViewBeneficiario/index.js index 97b6b8f..73656cf 100644 --- a/src/pages/BandoViewBeneficiario/index.js +++ b/src/pages/BandoViewBeneficiario/index.js @@ -340,8 +340,6 @@ const BandoViewBeneficiario = () => { } }, [data]); - console.log('applicationObj', applicationObj) - return (
{!isAsyncRequest && !isEmpty(data) diff --git a/src/pages/DashboardInstructorManager/components/InstructorManagerMieDomandeTable/index.js b/src/pages/DashboardInstructorManager/components/InstructorManagerMieDomandeTable/index.js index 752347f..d15bd47 100644 --- a/src/pages/DashboardInstructorManager/components/InstructorManagerMieDomandeTable/index.js +++ b/src/pages/DashboardInstructorManager/components/InstructorManagerMieDomandeTable/index.js @@ -102,7 +102,8 @@ const InstructorManagerMieDomandeTable = ({ userId = null, statuses = [] }) => { evaluationEndDate: { operator: FilterOperator.AND, constraints: [{ value: null, matchMode: FilterMatchMode.DATE_IS }] - } + }, + status: { operator: FilterOperator.OR, constraints: [{ value: null, matchMode: FilterMatchMode.EQUALS }] } }); }; diff --git a/src/pages/DashboardPreInstructor/components/PreInstructorDomandeTable/index.js b/src/pages/DashboardPreInstructor/components/PreInstructorDomandeTable/index.js index 7791aa7..0592fff 100644 --- a/src/pages/DashboardPreInstructor/components/PreInstructorDomandeTable/index.js +++ b/src/pages/DashboardPreInstructor/components/PreInstructorDomandeTable/index.js @@ -102,7 +102,8 @@ const PreInstructorDomandeTable = ({ userId = null, statuses = [] }) => { evaluationEndDate: { operator: FilterOperator.AND, constraints: [{ value: null, matchMode: FilterMatchMode.DATE_IS }] - } + }, + status: { operator: FilterOperator.OR, constraints: [{ value: null, matchMode: FilterMatchMode.EQUALS }] } }); }; diff --git a/src/pages/DomandaEditInstructorManager/index.js b/src/pages/DomandaEditInstructorManager/index.js index 5d72e2f..f706531 100644 --- a/src/pages/DomandaEditInstructorManager/index.js +++ b/src/pages/DomandaEditInstructorManager/index.js @@ -157,8 +157,8 @@ const DomandaEditInstructorManager = () => { if (formFieldsChecklist.length >= minChecks) { const valuesTotal = formFieldsChecklist.map(v => formValues[v]); const valuesFirst = valuesTotal.toSpliced(minChecks); - setAtLeastOneChecked(valuesTotal.filter(v => v === true).length === valuesTotal.length); - setAllChecksChecked(valuesFirst.filter(v => v === true).length === valuesFirst.length) + setAtLeastOneChecked(valuesFirst.filter(v => Boolean(v) === true).length === valuesFirst.length); + setAllChecksChecked(valuesTotal.filter(v => Boolean(v) === true).length === valuesTotal.length); } } }, [formValues]); @@ -695,11 +695,11 @@ const DomandaEditInstructorManager = () => { } } - AppointmentService.createAppointment(id, submitData, getAppointemntCallback, errGetAppointemntCallback); + AppointmentService.createAppointment(id, submitData, getAppointmentCallback, errGetAppointemntCallback); } } - const getAppointemntCallback = (data) => { + const getAppointmentCallback = (data) => { if (data.status === 'SUCCESS') { if (toast.current && data.message) { toast.current.show({ @@ -708,6 +708,12 @@ const DomandaEditInstructorManager = () => { detail: data.message }); } + if (data.data.appointmentId) { + setData({ + ...data, + appointmentId: data.data.appointmentId + }); + } } setIsVisibleAppointmentDialog(false); storeSet.main.unsetAsyncRequest(); @@ -939,7 +945,7 @@ const DomandaEditInstructorManager = () => { ['evaluationDocument'] )} shouldDisable={['APPROVED', 'REJECTED'].includes(data.applicationStatus) || evaluationBlockedForUser(data)} - sourceId={data.assignedApplicationId} + sourceId={data.id} sourceName="evaluation"/>
diff --git a/src/pages/DomandaEditPreInstructor/index.js b/src/pages/DomandaEditPreInstructor/index.js index 6e1def2..64d4020 100644 --- a/src/pages/DomandaEditPreInstructor/index.js +++ b/src/pages/DomandaEditPreInstructor/index.js @@ -72,6 +72,7 @@ const DomandaEditPreInstructor = () => { const [isVisibleCompleteDialog, setIsVisibleCompleteDialog] = useState(false); const [operationType, setOperationType] = useState(''); const [motivation, setMotivation] = useState(''); + const [amountAccepted, setAmountAccepted] = useState(0); const [isVisibleAppointmentDialog, setIsVisibleAppointmentDialog] = useState(false); const [allFilesRated, setAllFilesRated] = useState(false); const [atLeastOneChecked, setAtLeastOneChecked] = useState(false); @@ -157,8 +158,8 @@ const DomandaEditPreInstructor = () => { if (formFieldsChecklist.length >= minChecks) { const valuesTotal = formFieldsChecklist.map(v => formValues[v]); const valuesFirst = valuesTotal.toSpliced(minChecks); - setAtLeastOneChecked(valuesTotal.filter(v => v === true).length === valuesTotal.length); - setAllChecksChecked(valuesFirst.filter(v => v === true).length === valuesFirst.length) + setAtLeastOneChecked(valuesFirst.filter(v => Boolean(v) === true).length === valuesFirst.length); + setAllChecksChecked(valuesTotal.filter(v => Boolean(v) === true).length === valuesTotal.length); } } }, [formValues]); @@ -388,7 +389,8 @@ const DomandaEditPreInstructor = () => { checklist: klona(data.checklist), files: klona(data.files), note: data.note, - motivation + motivation, + amountAccepted } setLoading(true); @@ -695,11 +697,11 @@ const DomandaEditPreInstructor = () => { } } - AppointmentService.createAppointment(id, submitData, getAppointemntCallback, errGetAppointemntCallback); + AppointmentService.createAppointment(id, submitData, getAppointmentCallback, errGetAppointemntCallback); } } - const getAppointemntCallback = (data) => { + const getAppointmentCallback = (data) => { if (data.status === 'SUCCESS') { if (toast.current && data.message) { toast.current.show({ @@ -708,6 +710,12 @@ const DomandaEditPreInstructor = () => { detail: data.message }); } + if (data.data.appointmentId) { + setData({ + ...data, + appointmentId: data.data.appointmentId + }); + } } setIsVisibleAppointmentDialog(false); storeSet.main.unsetAsyncRequest(); @@ -734,7 +742,7 @@ const DomandaEditPreInstructor = () => { const userData = storeGet.main.userData() return isAsyncRequest || userData.id !== data.assignedUserId; } - + const shouldDisableNewSoccorso = () => { if (data.evaluationVersion === 'V1') { return !allFilesRated || !atLeastOneChecked; @@ -810,7 +818,7 @@ const DomandaEditPreInstructor = () => { ? + {/*
+ +
+ + {__('Gentili clienti abbiamo riscontrato dei problemi di autenticazione allo Spid per alcuni provider, in caso di impossibilità di accesso si prega di provare ad accedere con la carta di identità elettronica. Stiamo cercando di risolvere al più presto tutti i problemi.', 'gepafin')} +
*/} +

{__('Hai problemi di accesso con SPID?', 'gepafin')}

diff --git a/src/pages/SoccorsoIstruttorioPreInstructor/components/PreInstructorSoccorsiTable/index.js b/src/pages/SoccorsoIstruttorioPreInstructor/components/PreInstructorSoccorsiTable/index.js index b74acd6..384ac29 100644 --- a/src/pages/SoccorsoIstruttorioPreInstructor/components/PreInstructorSoccorsiTable/index.js +++ b/src/pages/SoccorsoIstruttorioPreInstructor/components/PreInstructorSoccorsiTable/index.js @@ -94,8 +94,8 @@ const PreInstructorSoccorsiTable = ({ userId = null }) => { evaluationEndDate: { operator: FilterOperator.AND, constraints: [{ value: null, matchMode: FilterMatchMode.DATE_IS }] - } - }); + }, + status: { operator: FilterOperator.OR, constraints: [{ value: null, matchMode: FilterMatchMode.EQUALS }] }, }); }; const renderHeader = () => { @@ -165,8 +165,11 @@ const PreInstructorSoccorsiTable = ({ userId = null }) => { filterField="evaluationEndDate" dataType="date" style={{ minWidth: '8rem' }} body={dateExpirationBodyTemplate} filter filterElement={dateFilterTemplate}/> -