From 25b1b5ae7dfa1460252209474ee1ec7eabebef3d Mon Sep 17 00:00:00 2001 From: Vitalii Kiiko Date: Wed, 25 Sep 2024 16:25:09 +0200 Subject: [PATCH] - added login and loginAdmin; - fixed bug with saving application data; --- environments/prod/prod.env | 2 +- src/pages/BandoApplication/index.js | 81 ++++++++++-- src/pages/BandoFlowEdit/index.js | 4 + src/pages/BandoForms/index.js | 20 ++- .../MyLatestSubmissionsTable/index.js | 22 ++-- src/pages/Login/index.js | 86 +------------ src/pages/LoginAdmin/index.js | 115 ++++++++++++++++++ src/routes.js | 2 + src/service/application-service.js | 6 +- 9 files changed, 226 insertions(+), 112 deletions(-) create mode 100644 src/pages/LoginAdmin/index.js diff --git a/environments/prod/prod.env b/environments/prod/prod.env index 26fd054..8e6e6b7 100644 --- a/environments/prod/prod.env +++ b/environments/prod/prod.env @@ -1,3 +1,3 @@ REACT_APP_TAB_TITLE=Gepafin -REACT_APP_API_EXECUTION_ADDRESS=https://api-dev-gepafin.memento.credit/v1 +REACT_APP_API_EXECUTION_ADDRESS=http://79.137.88.15/v1 REACT_APP_LOGO_FILENAME=logo.svg \ No newline at end of file diff --git a/src/pages/BandoApplication/index.js b/src/pages/BandoApplication/index.js index 528a23a..8fd6167 100644 --- a/src/pages/BandoApplication/index.js +++ b/src/pages/BandoApplication/index.js @@ -1,8 +1,8 @@ import React, { useState, useEffect, useCallback, useRef } from 'react'; import { __, sprintf } from '@wordpress/i18n'; -import { useNavigate, useParams } from 'react-router-dom'; +import { useParams } from 'react-router-dom'; import { klona } from 'klona'; -import { head, range, is, isNil } from 'ramda'; +import { head, range, is, pluck } from 'ramda'; import { useForm } from 'react-hook-form'; // store @@ -40,6 +40,7 @@ const BandoApplication = () => { const [bandoTitle, setBandoTitle] = useState(''); const [formId, setFormId] = useState(''); const [totalSteps, setTotalSteps] = useState(0); + const [completedSteps, setCompletedSteps] = useState(0); const [activeStep, setActiveStep] = useState(1); const [stepItems, setStepItems] = useState([{ label: 'Passo' }]); const isAsyncRequest = useStore().main.isAsyncRequest(); @@ -67,12 +68,52 @@ const BandoApplication = () => { } const onSubmit = () => { + const applId = getApplicationId(); + storeSet.main.setAsyncRequest(); + + ApplicationService.updateStatusApplication(applId, {}, submitApplicationCallback, errSubmitApplicationCallback, [ + ['status', 'SUBMIT'] + ]); }; - const saveDraft = useCallback(() => { + const submitApplicationCallback = (data) => { + if (data.status === 'SUCCESS') { + if (toast.current) { + toast.current.show({ + severity: 'success', + summary: '', + detail: __('La domanda è stata presentata!', 'gepafin') + }); + } + } + storeSet.main.unsetAsyncRequest(); + } + + const errSubmitApplicationCallback = (data) => { + storeSet.main.unsetAsyncRequest(); + if (data.status === 'VALIDATION_ERROR') { + if (formMsgs.current) { + formMsgs.current.show([ + { + id: '99', + sticky: true, severity: 'error', summary: '', + detail: data.data.join(', '), + closable: true + } + ]); + } + } else { + set404FromErrorResponse(data); + } + } + + const saveDraft = () => { trigger(); const formValues = getValues(); - const newFormValues = Object.keys(formValues).reduce((acc, cur) => { + const usedFieldsIds = pluck('id', formData); + const newFormValues = Object.keys(formValues) + .filter(v => usedFieldsIds.includes(v)) + .reduce((acc, cur) => { const formField = head(formData.filter(o => o.id === cur)); let fieldVal = formValues[cur]; @@ -103,32 +144,33 @@ const BandoApplication = () => { formMsgs.current.clear(); } - ApplicationService.submitForm(applId, submitData, submitFormCallback, errSubmitFormCallback, [ + ApplicationService.saveDraft(applId, submitData, saveDraftCallback, errSaveDraftCallback, [ ['formId', formId] ]); } - }, [errors]); + } const getApplicationId = () => { const parsed = parseInt(id) return !isNaN(parsed) ? parsed : 0; } - const submitFormCallback = (data) => { + const saveDraftCallback = (data) => { if (data.status === 'SUCCESS') { - console.log(data.data); if (toast.current) { toast.current.show({ severity: 'success', summary: '', - detail: __('Saved!', 'gepafin') + detail: __('Salvato!', 'gepafin') }); } + // update info about application completeness + ApplicationService.getApplicationForm(data.data.id, getStatusCheckCallback, errGetStatusCheckCallbacks); } storeSet.main.unsetAsyncRequest(); } - const errSubmitFormCallback = (data) => { + const errSaveDraftCallback = (data) => { storeSet.main.unsetAsyncRequest(); if (data.status === 'VALIDATION_ERROR') { if (formMsgs.current) { @@ -183,7 +225,8 @@ const BandoApplication = () => { setFormId(data.data.formId); setTotalSteps(data.data.totalFormSteps); - setActiveStep(data.data.currentStep) + setCompletedSteps(data.data.completedSteps); + setActiveStep(data.data.currentStep); } storeSet.main.unsetAsyncRequest(); } @@ -203,9 +246,18 @@ const BandoApplication = () => { } } + const getStatusCheckCallback = (data) => { + if (data.status === 'SUCCESS') { + setCompletedSteps(data.data.completedSteps); + } + } + + const errGetStatusCheckCallbacks = (data) => { + set404FromErrorResponse(data); + } + useEffect(() => { const newFormData = klona(formInitialData); - console.log('newFormData', newFormData); newFormData.map(o => setValue(o.fieldId, o.fieldValue)); }, [formInitialData]); @@ -325,6 +377,11 @@ const BandoApplication = () => { label={__('Vai avanti', 'gepafin')} icon="pi pi-arrow-right" iconPos="right"/> : null} + -
- -
- {__('Oppure', 'gepafin')} -
- -
- -
- - - - -