diff --git a/src/pages/DashboardInstructorManager/index.js b/src/pages/DashboardInstructorManager/index.js index 8822037..2ee8a13 100644 --- a/src/pages/DashboardInstructorManager/index.js +++ b/src/pages/DashboardInstructorManager/index.js @@ -27,21 +27,12 @@ const DashboardInstructorManager = () => { const errGetStats = () => {} - const getDoubleStats = (data) => { - if (data.status === 'SUCCESS') { - console.log(data.data); - } - } - - const errGetDoubleStats = () => {} - const getStatValue = (key, fallback = '') => { return pathOr(fallback, [key], mainStats); } useEffect(() => { DashboardService.getEvaluationsStats(getStats, errGetStats); - DashboardService.getInstructorAmendmentsStats(getDoubleStats, errGetDoubleStats); }, []); return( diff --git a/src/pages/DashboardPreInstructor/index.js b/src/pages/DashboardPreInstructor/index.js index 9e67e92..ed54aeb 100644 --- a/src/pages/DashboardPreInstructor/index.js +++ b/src/pages/DashboardPreInstructor/index.js @@ -36,7 +36,9 @@ const DashboardPreInstructor = () => { } useEffect(() => { - DashboardService.getInstructorAmendmentsStats(getStats, errGetStats); + DashboardService.getInstructorAmendmentsStats(getStats, errGetStats, [ + ['userId', userData.id] + ]); }, []); return( diff --git a/src/pages/DomandaEditInstructorManager/index.js b/src/pages/DomandaEditInstructorManager/index.js index f9d4409..c47351e 100644 --- a/src/pages/DomandaEditInstructorManager/index.js +++ b/src/pages/DomandaEditInstructorManager/index.js @@ -4,6 +4,9 @@ import { useNavigate, useParams } from 'react-router-dom'; import { is, isEmpty, isNil, sum, pathOr, head, pluck } from 'ramda'; import { klona } from 'klona'; import { wrap } from 'object-path-immutable'; +import { evaluate } from 'mathjs'; +import equal from 'fast-deep-equal'; +import { useForm } from 'react-hook-form'; // store import { storeGet, storeSet, useStore } from '../../store'; @@ -15,31 +18,6 @@ import AppointmentService from '../../service/appointment-service'; // tools import set404FromErrorResponse from '../../helpers/set404FromErrorResponse'; -import getBandoLabel from '../../helpers/getBandoLabel'; -import getDateFromISOstring from '../../helpers/getDateFromISOstring'; - -// components -import { Skeleton } from 'primereact/skeleton'; -import { Button } from 'primereact/button'; -import { Tag } from 'primereact/tag'; -import { Checkbox } from 'primereact/checkbox'; -import { Editor } from 'primereact/editor'; -import { InputNumber } from 'primereact/inputnumber'; -import { Toast } from 'primereact/toast'; -import { Dialog } from 'primereact/dialog'; -import HelpIcon from '../../icons/HelpIcon'; -import { classNames } from 'primereact/utils'; -import { InputTextarea } from 'primereact/inputtextarea'; -import { InputText } from 'primereact/inputtext'; -import DownloadApplicationArchive from '../DomandaEditPreInstructor/components/DownloadApplicationArchive'; -import DownloadCompanyDelegation from '../DomandaEditPreInstructor/components/DownloadCompanyDelegation'; -import DownloadSignedApplication from '../DomandaEditPreInstructor/components/DownloadSignedApplication'; -import ListOfFiles from '../DomandaEditPreInstructor/components/ListOfFiles'; -import RepeaterFields from '../DomandaEditPreInstructor/components/RepeaterFields'; -import getDateTimeFromISOstring from '../../helpers/getDateTimeFromISOstring'; -import ApplicationInfo from '../DomandaEditPreInstructor/components/ApplicationInfo'; -import ApplicationDownloadFiles from '../DomandaEditPreInstructor/components/ApplicationDownloadFiles'; -import { useForm } from 'react-hook-form'; import { isCAP, isCodiceFiscale, @@ -54,9 +32,25 @@ import formatDateString from '../../helpers/formatDateString'; import getTokens from '../../helpers/getTokens'; import parseCommaDecimal from '../../helpers/parseCommaDecimal'; import renderWithDataVars from '../../helpers/renderWithDataVars'; -import { evaluate } from 'mathjs'; -import equal from 'fast-deep-equal'; import renderHtmlContent from '../../helpers/renderHtmlContent'; + +// components +import { Skeleton } from 'primereact/skeleton'; +import { Button } from 'primereact/button'; +import { Tag } from 'primereact/tag'; +import { Checkbox } from 'primereact/checkbox'; +import { Editor } from 'primereact/editor'; +import { InputNumber } from 'primereact/inputnumber'; +import { Toast } from 'primereact/toast'; +import { Dialog } from 'primereact/dialog'; +import HelpIcon from '../../icons/HelpIcon'; +import { classNames } from 'primereact/utils'; +import { InputTextarea } from 'primereact/inputtextarea'; +import { InputText } from 'primereact/inputtext'; +import ListOfFiles from '../DomandaEditPreInstructor/components/ListOfFiles'; +import RepeaterFields from '../DomandaEditPreInstructor/components/RepeaterFields'; +import ApplicationInfo from '../DomandaEditPreInstructor/components/ApplicationInfo'; +import ApplicationDownloadFiles from '../DomandaEditPreInstructor/components/ApplicationDownloadFiles'; import FormField from '../../components/FormField'; const APP_EVALUATION_FLOW_ID = process.env.REACT_APP_EVALUATION_FLOW_ID; @@ -126,7 +120,7 @@ const DomandaEditInstructorManager = () => { navigate('/mie-domande'); } - const updateFlagsForSoccorso = (data) => { + const updateFlagsForSoccorso = useCallback((data) => { let nonRatedFilesLength = 0; if (data.files) { @@ -145,14 +139,28 @@ const DomandaEditInstructorManager = () => { setAllFilesRated(nonRatedFilesLength === 0); - if (data.checklist) { - const checkedChecklistItems = data.checklist - .map(el => el.valid) - .filter(v => v); - setAtLeastOneChecked(checkedChecklistItems.length > 0); - setAllChecksChecked(checkedChecklistItems.length === data.checklist.length) + if (data.evaluationVersion === 'V1') { + if (data.checklist) { + const checkedChecklistItems = data.checklist + .map(el => el.valid) + .filter(v => v); + setAtLeastOneChecked(checkedChecklistItems.length > 0); + setAllChecksChecked(checkedChecklistItems.length === data.checklist.length) + } + } else if (data.evaluationVersion === 'V2') { + const minChecks = data.numberOfCheck; + const formFieldsChecklist = formData + .filter(o => head(o.settings.filter(s => s.name === 'isChecklistItem' && s.value))) + .map(o => o.id); + + 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) + } } - } + }, [formValues]); const doNewSoccorso = () => { if (connectedSoccorsoId !== 0) { @@ -191,24 +199,43 @@ const DomandaEditInstructorManager = () => { storeSet.main.unsetAsyncRequest(); } - const getCallback = (data) => { - if (data.status === 'SUCCESS') { - setData(getFormattedData(data.data)); - setMotivation(data.data.motivation); - updateFlagsForSoccorso(data.data); + const getCallback = (resp) => { + if (resp.status === 'SUCCESS') { + setData(getFormattedData(resp.data)); + setMotivation(resp.data.motivation); + updateFlagsForSoccorso(resp.data); + setFormData(resp.data.applicationEvaluationFormResponse.content); + setFormId(resp.data.applicationEvaluationFormResponse.id); + let formDataInitial = {}; + + if (resp.data.applicationEvaluationFormResponse.formFields) { + const submitData = resp.data.applicationEvaluationFormResponse.formFields.map((o) => ({ + fieldId: o.fieldId, + fieldValue: o.fieldValue + })); + formDataInitial = submitData.reduce((acc, cur) => { + if (cur.fieldValue) { + acc[cur.fieldId] = cur.fieldValue; + } + return acc; + }, formDataInitial); + } + + reset(); + setFormInitialData(formDataInitial); } storeSet.main.unsetAsyncRequest(); } - const errGetCallback = (data) => { - if (toast.current && data.message) { + const errGetCallback = (resp) => { + if (toast.current && resp.message) { toast.current.show({ severity: 'error', summary: '', - detail: data.message + detail: resp.message }); } - set404FromErrorResponse(data); + set404FromErrorResponse(resp); storeSet.main.unsetAsyncRequest(); } @@ -834,6 +861,8 @@ const DomandaEditInstructorManager = () => { if (!isEmpty(updatedFormValues) && !equal(updatedFormValues, formValues)) { reset(updatedFormValues); } + + updateFlagsForSoccorso(data); }, [formValues]); useEffect(() => { diff --git a/src/pages/Profile/index.js b/src/pages/Profile/index.js index d7b3474..3b2d5b7 100644 --- a/src/pages/Profile/index.js +++ b/src/pages/Profile/index.js @@ -36,7 +36,7 @@ const Profile = () => { const onSubmit = (formData) => { storeSet.main.setAsyncRequest(); - UserService.updateUser(userData.id, formData, updateCallback, updateError); + UserService.updateUserSelf(userData.id, formData, updateCallback, updateError); }; const updateCallback = (data) => { @@ -109,6 +109,7 @@ const Profile = () => { { const onSubmit = (formData) => { storeSet.main.setAsyncRequest(); - UserService.updateUser(userData.id, formData, updateCallback, updateError); + UserService.updateUserSelf(userData.id, formData, updateCallback, updateError); }; const updateCallback = (data) => { diff --git a/src/service/dashboard-service.js b/src/service/dashboard-service.js index bf30675..5ad2f03 100644 --- a/src/service/dashboard-service.js +++ b/src/service/dashboard-service.js @@ -24,7 +24,7 @@ export default class DashboardService { NetworkService.get(`${API_BASE_URL}/dashboard/beneficiary/company/${id}`, callback, errCallback); }; - static getInstructorAmendmentsStats = (callback, errCallback) => { - NetworkService.get(`${API_BASE_URL}/dashboard/instructor/amendment`, callback, errCallback); + static getInstructorAmendmentsStats = (callback, errCallback, queryParams) => { + NetworkService.get(`${API_BASE_URL}/dashboard/instructor/amendment`, callback, errCallback, queryParams); }; } diff --git a/src/service/user-service.js b/src/service/user-service.js index e98fd89..1906903 100644 --- a/src/service/user-service.js +++ b/src/service/user-service.js @@ -16,6 +16,10 @@ export default class UserService { NetworkService.put(`${API_BASE_URL}/user/${id}`, body, callback, errCallback); }; + static updateUserSelf = (id, body, callback, errCallback) => { + NetworkService.put(`${API_BASE_URL}/user/${id}/update-details`, body, callback, errCallback); + }; + static createUser = (body, callback, errCallback) => { NetworkService.post(`${API_BASE_URL}/user`, body, callback, errCallback); };