From a98e4bef5d580025e42e3b63f63c7ea3811bb638 Mon Sep 17 00:00:00 2001 From: Vitalii Kiiko Date: Tue, 28 Jan 2025 14:20:28 +0100 Subject: [PATCH] - saving progress; --- src/assets/scss/components/layout.scss | 14 + .../components/AppSidebar/index.js | 85 ++- .../components/AllBandiTable/index.js | 149 +++++ src/pages/BandiPreInstructor/index.js | 27 + src/pages/BandoViewPreInstructor/index.js | 274 ++++++++ .../InstructorManagerMieDomandeTable/index.js | 195 ++++++ src/pages/DashboardInstructorManager/index.js | 119 ++++ .../PreInstructorDomandeTable/index.js | 41 +- src/pages/DashboardPreInstructor/index.js | 84 ++- .../DomandaEditInstructorManager/index.js | 14 +- src/pages/DomandaEditPreInstructor/index.js | 4 + src/pages/DomandeArchive/index.js | 12 +- .../DomandeArchivePreInstructor/index.js | 29 + src/pages/DomandeInstructorManager/index.js | 21 +- .../DomandeMieInstructorManager/index.js | 37 ++ src/pages/DomandePreInstructor/index.js | 80 +-- .../SoccorsoAddInstructorManager/index.js | 351 +++++++++++ .../SoccorsoEditInstructorManager/index.js | 587 ++++++++++++++++++ .../SoccorsoIstruttorioPreInstructor/index.js | 12 +- src/routes.js | 53 +- 20 files changed, 2021 insertions(+), 167 deletions(-) create mode 100644 src/pages/BandiPreInstructor/components/AllBandiTable/index.js create mode 100644 src/pages/BandiPreInstructor/index.js create mode 100644 src/pages/BandoViewPreInstructor/index.js create mode 100644 src/pages/DashboardInstructorManager/components/InstructorManagerMieDomandeTable/index.js create mode 100644 src/pages/DashboardInstructorManager/index.js create mode 100644 src/pages/DomandeArchivePreInstructor/index.js create mode 100644 src/pages/DomandeMieInstructorManager/index.js create mode 100644 src/pages/SoccorsoAddInstructorManager/index.js create mode 100644 src/pages/SoccorsoEditInstructorManager/index.js diff --git a/src/assets/scss/components/layout.scss b/src/assets/scss/components/layout.scss index e350503..5b617be 100644 --- a/src/assets/scss/components/layout.scss +++ b/src/assets/scss/components/layout.scss @@ -116,6 +116,20 @@ img { } } } + + li div.nonLink { + display: flex; + padding: 10.5px 17.5px; + align-items: center; + font-size: 14px; + font-style: normal; + font-weight: 400; + line-height: 100%; + text-decoration: none; + border-bottom: 1px solid var(--menu-borderColor); + background-color: var(--button-secondary-borderColor); + color: white; + } } } diff --git a/src/layouts/DefaultLayout/components/AppSidebar/index.js b/src/layouts/DefaultLayout/components/AppSidebar/index.js index 30bc83e..aa25929 100644 --- a/src/layouts/DefaultLayout/components/AppSidebar/index.js +++ b/src/layouts/DefaultLayout/components/AppSidebar/index.js @@ -53,69 +53,97 @@ const AppSidebar = () => { icon: 'pi pi-file', href: '/domande', id: 6, - enable: intersection(permissions, ['VIEW_USERS', 'MANAGE_USERS']).length + enable: intersection(permissions, ['VIEW_USERS', 'MANAGE_USERS', 'ASSIGED_APPLICATION']).length }, { label: __('Domande da valutare', 'gepafin'), icon: 'pi pi-calendar-clock', href: '/domande', id: 7, + enable: intersection(permissions, ['EVALUATE_APPLICATIONS']).length && !intersection(permissions, ['ASSIGED_APPLICATION']).length + }, + { + label: __('Bandi attivi', 'gepafin'), + icon: 'pi pi-file', + href: '/bandi', + id: 8, + enable: intersection(permissions, ['EVALUATE_APPLICATIONS']).length + }, + { + label: __('Soccorso', 'gepafin'), + icon: , + href: '/soccorso-istruttorio', + id: 9, enable: intersection(permissions, ['EVALUATE_APPLICATIONS']).length }, { label: __('Archivio domande', 'gepafin'), icon: 'pi pi-briefcase', href: '/domande', - id: 8, + id: 10, enable: intersection(permissions, ['APPLY_CALLS']).length }, { label: __('Archivio domande', 'gepafin'), icon: 'pi pi-briefcase', href: '/domande-archivio', - id: 9, + id: 11, enable: intersection(permissions, ['VIEW_USERS', 'MANAGE_USERS']).length }, { label: __('Archivio domande', 'gepafin'), icon: 'pi pi-briefcase', href: '/domande-archivio', - id: 10, + id: 12, enable: intersection(permissions, ['EVALUATE_APPLICATIONS']).length }, + { + label: __('Area personale', 'gepafin'), + icon: 'pi pi-calendar-clock', + id: 17, + enable: intersection(permissions, ['ASSIGED_APPLICATION']).length + }, + { + label: __('Domande da valutare', 'gepafin'), + icon: 'pi pi-calendar-clock', + href: '/mie-domande', + id: 18, + enable: intersection(permissions, ['ASSIGED_APPLICATION']).length + }, { label: __('Soccorso istruttorio', 'gepafin'), icon: , - href: '/soccorso-istruttorio', - id: 11, - enable: intersection(permissions, ['EVALUATE_APPLICATIONS']).length + href: '/mio-soccorso-istruttorio', + id: 19, + enable: intersection(permissions, ['ASSIGED_APPLICATION']).length }, { label: __('Gestione utenti', 'gepafin'), icon: 'pi pi-users', href: '/utenti', - id: 12, + id: 13, enable: intersection(permissions, ['VIEW_USERS', 'MANAGE_USERS']).length }, { label: __('Configurazione', 'gepafin'), icon: 'pi pi-cog', //href: '/configurazione', - id: 13, + id: 14, enable: false }, { label: __('Report e Analisi', 'gepafin'), icon: 'pi pi-chart-bar', //href: '/stats', - id: 14, + id: 15, enable: false }, { label: __('Log di Sistema', 'gepafin'), icon: 'pi pi-receipt', - clickFn: () => {}, - id: 15, + clickFn: () => { + }, + id: 16, enable: false } ] @@ -125,20 +153,25 @@ const AppSidebar = () => { {items .filter(o => o.enable) .map(o =>
  • - {o.href - ? - {is(String, o.icon) - ? - : o.icon} - {o.label} - - : } -
  • )} + {o.href + ? + {is(String, o.icon) + ? + : o.icon} + {o.label} + + : (o.clickFn ? + + :
    + {o.label} +
    )} + )} } diff --git a/src/pages/BandiPreInstructor/components/AllBandiTable/index.js b/src/pages/BandiPreInstructor/components/AllBandiTable/index.js new file mode 100644 index 0000000..a5dbe61 --- /dev/null +++ b/src/pages/BandiPreInstructor/components/AllBandiTable/index.js @@ -0,0 +1,149 @@ +import React, { useState, useEffect} from 'react'; +import { __ } from '@wordpress/i18n'; +import { is, uniq } from 'ramda'; + +// tools +import getBandoSeverity from '../../../../helpers/getBandoSeverity'; +import getBandoLabel from '../../../../helpers/getBandoLabel'; +import getDateFromISOstring from '../../../../helpers/getDateFromISOstring'; + +// api +import BandoService from '../../../../service/bando-service'; + +// components +import { FilterMatchMode, FilterOperator } from 'primereact/api'; +import { DataTable } from 'primereact/datatable'; +import { Column } from 'primereact/column'; +import { Dropdown } from 'primereact/dropdown'; +import { Button } from 'primereact/button'; +import { Calendar } from 'primereact/calendar'; +import { Tag } from 'primereact/tag'; +import ProperBandoLabel from '../../../../components/ProperBandoLabel'; +import { Link } from 'react-router-dom'; +import translationStrings from '../../../../translationStringsForComponents'; + + +const AllBandiTable = () => { + const [items, setItems] = useState(null); + const [filters, setFilters] = useState(null); + const [localAsyncRequest, setLocalAsyncRequest] = useState(false); + const [statuses, setStatuses] = useState([]); + + useEffect(() => { + setLocalAsyncRequest(true); + BandoService.getBandi(getCallback, errGetCallbacks); + }, []); + + const getCallback = (data) => { + if (data.status === 'SUCCESS') { + setItems(getFormattedBandiData(data.data)); + setStatuses(uniq(data.data.map(o => o.status))) + initFilters(); + } + setLocalAsyncRequest(false); + } + + const errGetCallbacks = (data) => { + setLocalAsyncRequest(false); + } + + const getFormattedBandiData = (data) => { + return data.map((d) => { + d.dates = d.dates.map(v => is(String, v) ? new Date(v) : (v ? v : '')); + return d; + }); + }; + + const clearFilter = () => { + initFilters(); + }; + + const initFilters = () => { + setFilters({ + global: { value: null, matchMode: FilterMatchMode.CONTAINS }, + name: { operator: FilterOperator.AND, constraints: [{ value: null, matchMode: FilterMatchMode.STARTS_WITH }] }, + start_date: { operator: FilterOperator.AND, constraints: [{ value: null, matchMode: FilterMatchMode.DATE_IS }] }, + end_date: { operator: FilterOperator.AND, constraints: [{ value: null, matchMode: FilterMatchMode.DATE_IS }] }, + status: { operator: FilterOperator.OR, constraints: [{ value: null, matchMode: FilterMatchMode.EQUALS }] }, + }); + }; + + const renderHeader = () => { + return ( +
    +
    + ); + }; + + /*const nameBodyTemplate = (rowData) => { + return {rowData.name} + }*/ + + const dateStartBodyTemplate = (rowData) => { + return getDateFromISOstring(rowData.dates[0]); + }; + + const dateEndBodyTemplate = (rowData) => { + return getDateFromISOstring(rowData.dates[1]); + }; + + const dateFilterTemplate = (options) => { + return options.filterCallback(e.value, options.index)} dateFormat="mm/dd/yy" placeholder="mm/dd/yyyy" mask="99/99/9999" />; + }; + + const statusBodyTemplate = (rowData) => { + return ; + }; + + const statusFilterTemplate = (options) => { + return options.filterCallback(e.value, options.index)} + itemTemplate={statusItemTemplate} + placeholder={translationStrings.selectOneLabel} + className="p-column-filter" + showClear />; + }; + + const statusItemTemplate = (option) => { + return ; + }; + + const actionsBodyTemplate = (rowData) => { + return + + + + + + + + + + + + + ); + }; + + const header = renderHeader(); + + const updateEvaluationValue = (value, path, maxValue) => { + let finalValue = value; + + if (maxValue) { + finalValue = value > maxValue ? maxValue : value; + } + + const newData = wrap(formData).set(path.split('.'), finalValue).value(); + + setFormData(newData); + } + + const doCreate = () => { + storeSet.main.setAsyncRequest(); + + AmendmentsService.createSoccorso(formData, createCallback, errCreateCallback, [ + ['applicationEvaluationId', evaluationId] + ]); + } + + const createCallback = (data) => { + if (data.status === 'SUCCESS') { + if (toast.current) { + toast.current.show({ + severity: 'success', + summary: '', + detail: data.message + }); + } + setTimeout(() => { + navigate(`/mie-domande/${id}/soccorso/${data.data.id}`); + }, 1000) + } + storeSet.main.unsetAsyncRequest(); + } + + const errCreateCallback = (data) => { + if (toast.current && data.message) { + toast.current.show({ + severity: 'error', + summary: '', + detail: data.message + }); + } + set404FromErrorResponse(data); + storeSet.main.unsetAsyncRequest(); + } + + const initCreationProcess = () => { + setIsVisibleConfirmDialog(true); + } + + const headerConfirmDialog = () => { + return {__('Richiesta di conferma', 'gepafin')}; + } + + const hideConfirmDialog = () => { + setIsVisibleConfirmDialog(false); + } + + const footerConfirmDialog = () => { + return
    +
    + } + + const doConfirm = () => { + setIsVisibleConfirmDialog(false); + doCreate(); + } + + return ( +
    +
    +

    {__('Richiesta Integrazione Documentale', 'gepafin')}

    +
    + +
    + + + +
    +
    + +
    + + {!isAsyncRequest && !isEmpty(data) + ?
    +
    +

    + {__('ID domanda', 'gepafin')} + {data.applicationId} +

    +

    + {__('Bando', 'gepafin')} + {data.callName} +

    +

    + {__('Referente Aziendale', 'gepafin')} + {data.beneficiaryName} +

    +
    + +
    +
    +
    +

    {__('Pec/Email', 'gepafin')}

    +
    + updateEvaluationValue( + e.htmlValue, + 'note' + )} + style={{ height: 80 * 3, width: '100%' }} + /> +
    + +

    {__('Tempo per la Risposta (giorni)', 'gepafin')}

    +
    + updateEvaluationValue( + e.value, + 'responseDays', + 9999 + )}/> +
    + +

    {__('Notifica', 'gepafin')}

    +
    +
    + updateEvaluationValue( + e.value, + 'isSendEmail' + )}/> + +
    +
    + updateEvaluationValue( + e.value, + 'isSendNotification' + )}/> + +
    +
    +
    + {formData.formFields + ?
    +

    {__('Documenti da Integrare', 'gepafin')}

    +
    +
    + {formData.formFields.map((o, i) =>
    + updateEvaluationValue( + e.checked, + `formFields.${i}.selected` + )} + checked={o.selected}> + +
    )} +
    +
    +
    + : null} +
    +
    + +
    + + {__('Attenzione', 'gepafin')} + {__("L'invio della richiesta di integrazione sospenderà il termine di valutazione della domanda.", 'gepafin')} +
    + +
    + {__('Azioni', 'gepafin')} +
    + +
    +
    +
    +
    + + +
    +

    {__('Soccorso istruttorio autorizzato dal direttore e autorizzazione caricata su portale a seguito del quale parte l\'email?', 'gepafin')}

    +
    +
    + +
    + : <> + + + + + + + + + } +
    + ) + +} + +export default SoccorsoAddInstructorManager; diff --git a/src/pages/SoccorsoEditInstructorManager/index.js b/src/pages/SoccorsoEditInstructorManager/index.js new file mode 100644 index 0000000..6726001 --- /dev/null +++ b/src/pages/SoccorsoEditInstructorManager/index.js @@ -0,0 +1,587 @@ +import React, { useState, useEffect, useRef, useMemo } from 'react'; +import { __ } from '@wordpress/i18n'; +import { useNavigate, useParams } from 'react-router-dom'; +import { is, isEmpty } from 'ramda'; +import { wrap } from 'object-path-immutable'; +import { klona } from 'klona'; +import { useForm } from 'react-hook-form'; + +// store +import { storeSet, useStore } from '../../store'; + +// api +import AmendmentsService from '../../service/amendments-service'; + +// tools +import set404FromErrorResponse from '../../helpers/set404FromErrorResponse'; +import getBandoLabel from '../../helpers/getBandoLabel'; +import getDateFromISOstring from '../../helpers/getDateFromISOstring'; +import getEmailTemplateForSoccorso from '../../helpers/getStrippedHtmlBodyTags'; + +// components +import { Button } from 'primereact/button'; +import BlockingOverlay from '../../components/BlockingOverlay'; +import { Toast } from 'primereact/toast'; +import { classNames } from 'primereact/utils'; +import { Dialog } from 'primereact/dialog'; +import FormField from '../../components/FormField'; +import { Editor } from 'primereact/editor'; +import { InputNumber } from 'primereact/inputnumber'; +import SoccorsoComunications from '../SoccorsoEditPreInstructor/components/SoccorsoComunications'; + + +const SoccorsoEditInstructorManager = () => { + const isAsyncRequest = useStore().main.isAsyncRequest(); + const { id, amendmentId } = useParams(); + const navigate = useNavigate(); + const [data, setData] = useState({}); + const [isVisibleCloseAmendDialog, setIsVisibleCloseAmendDialog] = useState(false); + const [isVisibleExtendTimeDialog, setIsVisibleExtendTimeDialog] = useState(false); + const [extendedTime, setExtendedTime] = useState(3); + const [isLoadingExtendingTime, setIsLoadingExtendingTime] = useState(false); + const [isLoadingReminding, setIsLoadingReminding] = useState(false); + const [internalNote, setInternalNote] = useState(''); + const toast = useRef(null); + const [formInitialData, setFormInitialData] = useState({}); + const { + control, + handleSubmit, + formState: { errors }, + setValue, + register, + trigger, + getValues + } = useForm({ + defaultValues: useMemo(() => { + return formInitialData; + }, [formInitialData]), mode: 'onChange' + }); + + const goToEvaluationPage = () => { + navigate(`/mie-domande/${id}`); + } + + const getCallback = (data) => { + if (data.status === 'SUCCESS') { + setData(getFormattedData(data.data)); + let formDataInitial = data.data.applicationFormFields.reduce((acc, cur) => { + if (cur.fieldValue) { + acc[cur.fieldId] = cur.fieldValue; + } + return acc; + }, {}); + formDataInitial = { + ...formDataInitial, + amendmentDocuments: data.data.amendmentDocuments + } + setFormInitialData(formDataInitial); + } + storeSet.main.unsetAsyncRequest(); + } + + const errGetCallback = (data) => { + if (toast.current && data.message) { + toast.current.show({ + severity: 'error', + summary: '', + detail: data.message + }); + } + set404FromErrorResponse(data); + storeSet.main.unsetAsyncRequest(); + } + + const getFormattedData = (data) => { + data.startDate = is(String, data.startDate) ? new Date(data.startDate) : (data.startDate ? data.startDate : ''); + data.expirationDate = is(String, data.expirationDate) ? new Date(data.expirationDate) : (data.expirationDate ? data.expirationDate : ''); + return data; + }; + + const renderHeader = () => { + return ( + + + + + + + + + + + + + + ); + }; + + const header = renderHeader(); + + const updateNewAmendmentData = (value, path) => { + const newData = wrap(data).set(path, value).value(); + setData(newData); + } + + const onSubmit = () => { + }; + + const doUpdateAmendment = (doClose = false) => { + trigger(); + let formValues = klona(getValues()); + const newFormValues = Object.keys(formValues) + .filter(v => v !== 'amendmentDocuments') + .reduce((acc, cur) => { + let fieldVal = formValues[cur]; + + fieldVal = isEmpty(fieldVal) ? null : fieldVal; + fieldVal = is(Array, fieldVal) ? fieldVal.map(o => o.id).join(',') : null; + + acc.push({ + 'fieldId': cur, + 'fieldValue': fieldVal + }); + return acc; + }, []); + const newAmendDocs = formValues.amendmentDocuments + ? formValues.amendmentDocuments.map(o => o.id).join(',') + : ''; + + const submitData = { + applicationFormFields: newFormValues, + amendmentDocuments: newAmendDocs, + amendmentNotes: data.amendmentNotes + } + + storeSet.main.setAsyncRequest(); + AmendmentsService.updateSoccorso( + amendmentId, + submitData, + (resp) => updateAmendmentCallback(resp, doClose), + errUpdateAmendmentCallback + ); + } + + const updateAmendmentCallback = (data, doClose = false) => { + if (data.status === 'SUCCESS') { + setData(getFormattedData(data.data)); + + if (doClose) { + const submitData = { + internalNote + } + storeSet.main.setAsyncRequest(); + AmendmentsService.closeSoccorso(amendmentId, submitData, closeAmendmentCallback, errCloseAmendmentCallback); + } else { + if (toast.current) { + toast.current.show({ + severity: 'success', + summary: '', + detail: data.message + }); + } + let formDataInitial = data.data.applicationFormFields.reduce((acc, cur) => { + if (cur.fieldValue) { + acc[cur.fieldId] = cur.fieldValue; + } + return acc; + }, formInitialData); + formDataInitial = { + ...formDataInitial, + amendmentDocuments: data.data.amendmentDocuments + } + setFormInitialData(formDataInitial); + } + } + storeSet.main.unsetAsyncRequest(); + } + + const errUpdateAmendmentCallback = (data) => { + if (toast.current && data.message) { + toast.current.show({ + severity: 'error', + summary: '', + detail: data.message + }); + } + set404FromErrorResponse(data); + storeSet.main.unsetAsyncRequest(); + } + + const openCloseAmendmentDialog = () => { + setIsVisibleCloseAmendDialog(true); + } + + const headerCloseAmendDialog = () => { + return {__('Chiudi Soccorso Istruttorio', 'gepafin')} + } + + const hideCloseAmendDialog = () => { + setIsVisibleCloseAmendDialog(false); + } + + const footerCloseAmendDialog = () => { + return
    +
    + } + + const doCloseAmendment = () => { + doUpdateAmendment(true); + } + + const closeAmendmentCallback = (data) => { + if (data.status === 'SUCCESS') { + if (toast.current) { + toast.current.show({ + severity: 'success', + summary: '', + detail: data.message + }); + } + if (data.data.status) { + updateNewAmendmentData(data.data.status, ['status']); + setIsVisibleCloseAmendDialog(false); + } + } + storeSet.main.unsetAsyncRequest(); + } + + const errCloseAmendmentCallback = (data) => { + if (toast.current && data.message) { + toast.current.show({ + severity: 'error', + summary: '', + detail: data.message + }); + } + set404FromErrorResponse(data); + storeSet.main.unsetAsyncRequest(); + } + + const headerExtendRespDialog = () => { + return {__('Estendi scadenza', 'gepafin')} + } + + const hideExtendRespDialog = () => { + setIsVisibleExtendTimeDialog(false); + } + + const footerExtendRespDialog = () => { + return
    +
    + } + + const openExtendResponseTimeDialog = () => { + setIsVisibleExtendTimeDialog(true); + setExtendedTime(3); + } + + const doExtendTimeResponse = () => { + setIsLoadingExtendingTime(true); + AmendmentsService.extendSoccorso(amendmentId, extendedTime, extendCallback, errExtendCallback); + } + + const extendCallback = (data) => { + if (data.status === 'SUCCESS') { + if (toast.current) { + toast.current.show({ + severity: 'success', + summary: '', + detail: data.message + }); + } + setIsVisibleExtendTimeDialog(false); + } + setIsLoadingExtendingTime(false); + } + + const errExtendCallback = (data) => { + if (toast.current && data.message) { + toast.current.show({ + severity: 'error', + summary: '', + detail: data.message + }); + } + set404FromErrorResponse(data); + setIsLoadingExtendingTime(false); + } + + const sendReminder = () => { + setIsLoadingReminding(true); + AmendmentsService.sendReminderForSoccorso(amendmentId, reminderCallback, errReminderCallback) + } + + const reminderCallback = (data) => { + if (data.status === 'SUCCESS') { + if (toast.current) { + toast.current.show({ + severity: 'success', + summary: '', + detail: data.message + }); + } + } + setIsLoadingReminding(false); + } + + const errReminderCallback = (data) => { + if (toast.current && data.message) { + toast.current.show({ + severity: 'error', + summary: '', + detail: data.message + }); + } + set404FromErrorResponse(data); + setIsLoadingReminding(false); + } + + useEffect(() => { + if (formInitialData) { + Object.keys(formInitialData).map(k => setValue(k, formInitialData[k])); + trigger(); + } + }, [formInitialData]); + + useEffect(() => { + const parsedSoccorsoId = parseInt(amendmentId); + const soccorsoEntityId = !isNaN(parsedSoccorsoId) ? parsedSoccorsoId : 0; + + AmendmentsService.getSoccorsoById(getCallback, errGetCallback, [['id', soccorsoEntityId]]); + }, [amendmentId]); + + return ( +
    +
    +

    {__('Soccorso Istruttorio - Dettagli', 'gepafin')}

    +
    + +
    + + + +
    +
    + +
    + +
    +
    +

    + {__('ID domanda', 'gepafin')} + {data.applicationId} +

    +

    + {__('Bando', 'gepafin')} + {data.callName} +

    +

    + {__('Referente Aziendale', 'gepafin')} + {data.beneficiaryName} +

    +

    + {__('Inizio', 'gepafin')} + {getDateFromISOstring(data.startDate)} +

    +

    + {__('Scadenza', 'gepafin')} + {getDateFromISOstring(data.expirationDate)} +

    +

    + {__('Stato', 'gepafin')} + {getBandoLabel(data.status)} +

    +
    + +
    +

    {__('Dettagli richiesta', 'gepafin')}

    +

    {__('Note e spiegazioni', 'gepafin')}

    +
    {getEmailTemplateForSoccorso(data.emailTemplate, data.note)}
    +
    +
    +

    {__('Documenti richiesti', 'gepafin')}

    +
      + {data.formFields + ? data.formFields.map((o, i) =>
    1. + {o.label} +
    2. ) : null} +
    +
    + +
    +

    {__('Comunicazioni', 'gepafin')}

    + +
    + + {data.formFields && !isEmpty(data.formFields) + ?
    +

    {__('Documenti Ricevuti', 'gepafin')}

    + +
    + {data.formFields.map((o, i) => { + return + })} + +
    : null} + +
    +

    {__('Documenti aggiuntivi', 'gepafin')}

    +
    +

    {__('Notes', 'gepafin')}

    +
    + + updateNewAmendmentData( + e.htmlValue, + 'amendmentNotes' + )} + style={{ height: 80 * 3, width: '100%' }} + /> +
    + +
    +
    + +
    + +
    + {__('Azioni', 'gepafin')} +
    + +
    +
    +
    +
    + +
    + + +
    + + setExtendedTime(e.value)}/> +
    +
    + + +
    + +
    + + setInternalNote(e.htmlValue)} + style={{ height: 80 * 3, width: '100%' }} + /> +
    +
    +
    +
    + ) + +} + +export default SoccorsoEditInstructorManager; diff --git a/src/pages/SoccorsoIstruttorioPreInstructor/index.js b/src/pages/SoccorsoIstruttorioPreInstructor/index.js index 6a92b97..4adb445 100644 --- a/src/pages/SoccorsoIstruttorioPreInstructor/index.js +++ b/src/pages/SoccorsoIstruttorioPreInstructor/index.js @@ -34,12 +34,6 @@ const SoccorsoIstruttorioPreInstructor = () => {
    -
    - -
    - -
    -

    {__('Riepilogo', 'gepafin')}

    @@ -88,6 +82,12 @@ const SoccorsoIstruttorioPreInstructor = () => {
    + +
    + +
    + +
    ) } diff --git a/src/routes.js b/src/routes.js index c8c0302..e72c0c2 100644 --- a/src/routes.js +++ b/src/routes.js @@ -41,6 +41,13 @@ import DomandeInstructorManager from './pages/DomandeInstructorManager'; import DomandaEditInstructorManager from './pages/DomandaEditInstructorManager'; import UserActivity from './pages/UserActivity'; import DomandeArchive from './pages/DomandeArchive'; +import BandiPreInstructor from './pages/BandiPreInstructor'; +import BandoViewPreInstructor from './pages/BandoViewPreInstructor'; +import DomandeArchivePreInstructor from './pages/DomandeArchivePreInstructor'; +import DashboardInstructorManager from './pages/DashboardInstructorManager'; +import DomandeMieInstructorManager from './pages/DomandeMieInstructorManager'; +import SoccorsoAddInstructorManager from './pages/SoccorsoAddInstructorManager'; +import SoccorsoEditInstructorManager from './pages/SoccorsoEditInstructorManager'; const routes = ({ role, chosenCompanyId }) => { @@ -51,19 +58,19 @@ const routes = ({ role, chosenCompanyId }) => { {'ROLE_SUPER_ADMIN' === role ? : null} {'ROLE_BENEFICIARY' === role ? : null} {'ROLE_PRE_INSTRUCTOR' === role ? : null} - {'ROLE_INSTRUCTOR_MANAGER' === role ? : null} + {'ROLE_INSTRUCTOR_MANAGER' === role ? : null} }/> {'ROLE_SUPER_ADMIN' === role ? : null} {'ROLE_BENEFICIARY' === role ? : null} - {'ROLE_PRE_INSTRUCTOR' === role ? : null} - {'ROLE_INSTRUCTOR_MANAGER' === role ? : null} + {'ROLE_PRE_INSTRUCTOR' === role ? : null} + {'ROLE_INSTRUCTOR_MANAGER' === role ? : null} }/> {'ROLE_SUPER_ADMIN' === role ? : null} {'ROLE_BENEFICIARY' === role ? : null} - {'ROLE_PRE_INSTRUCTOR' === role ? : null} - {'ROLE_INSTRUCTOR_MANAGER' === role ? : null} + {'ROLE_PRE_INSTRUCTOR' === role ? : null} + {'ROLE_INSTRUCTOR_MANAGER' === role ? : null} }/> {'ROLE_SUPER_ADMIN' === role ? : null} @@ -117,7 +124,7 @@ const routes = ({ role, chosenCompanyId }) => { {'ROLE_SUPER_ADMIN' === role ? : null} {'ROLE_BENEFICIARY' === role ? : null} {'ROLE_PRE_INSTRUCTOR' === role ? : null} - {'ROLE_INSTRUCTOR_MANAGER' === role ? : null} + {'ROLE_INSTRUCTOR_MANAGER' === role ? : null} }/> {'ROLE_SUPER_ADMIN' === role ? : null} @@ -128,7 +135,7 @@ const routes = ({ role, chosenCompanyId }) => { {'ROLE_SUPER_ADMIN' === role ? : null} {'ROLE_BENEFICIARY' === role ? : null} - {'ROLE_PRE_INSTRUCTOR' === role ? : null} + {'ROLE_PRE_INSTRUCTOR' === role ? : null} {'ROLE_INSTRUCTOR_MANAGER' === role ? : null} }/> @@ -141,7 +148,7 @@ const routes = ({ role, chosenCompanyId }) => { {'ROLE_SUPER_ADMIN' === role ? : null} {'ROLE_BENEFICIARY' === role ? : null} {'ROLE_PRE_INSTRUCTOR' === role ? : null} - {'ROLE_INSTRUCTOR_MANAGER' === role ? : null} + {'ROLE_INSTRUCTOR_MANAGER' === role ? : null} }/> {'ROLE_SUPER_ADMIN' === role ? : null} @@ -155,6 +162,36 @@ const routes = ({ role, chosenCompanyId }) => { {'ROLE_PRE_INSTRUCTOR' === role ? : null} {'ROLE_INSTRUCTOR_MANAGER' === role ? : null} }/> + + {'ROLE_SUPER_ADMIN' === role ? : null} + {'ROLE_BENEFICIARY' === role ? : null} + {'ROLE_PRE_INSTRUCTOR' === role ? : null} + {'ROLE_INSTRUCTOR_MANAGER' === role ? : null} + }/> + + {'ROLE_SUPER_ADMIN' === role ? : null} + {'ROLE_BENEFICIARY' === role ? : null} + {'ROLE_PRE_INSTRUCTOR' === role ? : null} + {'ROLE_INSTRUCTOR_MANAGER' === role ? : null} + }/> + + {'ROLE_SUPER_ADMIN' === role ? : null} + {'ROLE_BENEFICIARY' === role ? : null} + {'ROLE_PRE_INSTRUCTOR' === role ? : null} + {'ROLE_INSTRUCTOR_MANAGER' === role ? : null} + }/> + + {'ROLE_SUPER_ADMIN' === role ? : null} + {'ROLE_BENEFICIARY' === role ? : null} + {'ROLE_PRE_INSTRUCTOR' === role ? : null} + {'ROLE_INSTRUCTOR_MANAGER' === role ? : null} + }/> + + {'ROLE_SUPER_ADMIN' === role ? : null} + {'ROLE_BENEFICIARY' === role ? : null} + {'ROLE_PRE_INSTRUCTOR' === role ? : null} + {'ROLE_INSTRUCTOR_MANAGER' === role ? : null} + }/> {'ROLE_SUPER_ADMIN' === role ? : null} {'ROLE_BENEFICIARY' === role ? : null}