import React, { FunctionComponent, useState, useEffect } from 'react'; import { Page } from '../Page'; import { ClarificationSection } from './ClarificationSection'; import { MetadataPanel } from './MetadataPanel'; import { AppendixPanel } from './AppendixPanel'; import { DecisionSupportFile, newDecisionSupportFile, DecisionSupportFileStatus } from '../../types/decision'; import { useParams, useHistory } from 'react-router'; import { useDecisionSupportFiles } from '../../gql/queries/dsf'; import { useCreateDecisionSupportFileMutation, useUpdateDecisionSupportFileMutation } from '../../gql/mutations/dsf'; import { OptionsSection } from './OptionsSection'; import { useIsAuthorized } from '../../gql/queries/authorization'; export interface DecisionSupportFilePageProps { }; export const DecisionSupportFilePage: FunctionComponent = () => { const { id } = useParams(); const history = useHistory(); const { decisionSupportFiles } = useDecisionSupportFiles({ variables:{ filter: { ids: id !== 'new' ? [id] : undefined, } } }); const [ state, setState ] = useState({ dsf: newDecisionSupportFile(), saved: true, selectedTabIndex: 0, }); const { isAuthorized } = useIsAuthorized({ variables: { action: 'update', object: { decisionSupportFileId: state.dsf.id, } } }, id === 'new'); useEffect(() => { const dsf = decisionSupportFiles.length > 0 && decisionSupportFiles[0].id === id ? decisionSupportFiles[0] : {}; setState(state => ({ ...state, dsf: { ...state.dsf, ...dsf }})) }, [ decisionSupportFiles ]); const selectTab = (tabIndex: number) => { setState(state => ({ ...state, selectedTabIndex: tabIndex })); }; const updateDSF = (dsf: DecisionSupportFile) => { setState(state => { return { ...state, saved: false, dsf: { ...state.dsf, ...dsf } }; }); }; const [ createDecisionSupportFile ] = useCreateDecisionSupportFileMutation(); const [ updateDecisionSupportFile ] = useUpdateDecisionSupportFileMutation(); const saveDSF = () => { const changes = { title: state.dsf.title !== '' ? state.dsf.title : undefined, status: state.dsf.status, workgroupId: state.dsf.workgroup ? state.dsf.workgroup.id : undefined, sections: state.dsf.sections, }; if (!changes.workgroupId) return; if (state.dsf.id === '') { createDecisionSupportFile({ variables: { changes }, }).then(({ data }) => { history.push(`/decisions/${data.createDecisionSupportFile.id}`); }); } else { updateDecisionSupportFile({ variables: { changes, id: state.dsf.id }, }).then(({ data }) => { setState(state => { return { ...state, saved: true, dsf: { ...state.dsf, ...data.updateDecisionSupportFile } }; }); }); } }; const canSave = !!state.dsf.workgroup && !state.saved; const isNew = state.dsf.id === ''; const isClosed = state.dsf.status === DecisionSupportFileStatus.Closed; return (
{ isNew ?

Nouveau

Dossier d'Aide à la Décision

:

{state.dsf.title} Lecture seule

Dossier d'Aide à la Décision { isClosed ? '(clos)' : null }

}
{ state.selectedTabIndex === 0 ? : null } { state.selectedTabIndex === 1 ? : null }
); };