Skip to content

Commit

Permalink
🎨 Simplifier formulaire
Browse files Browse the repository at this point in the history
  • Loading branch information
benjlevesque committed Jan 6, 2025
1 parent 96cc36d commit 6804062
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 32 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import { GestionnaireRéseau, Raccordement } from '@potentiel-domain/reseau';
import { Option } from '@potentiel-libraries/monads';
import { IdentifiantProjet } from '@potentiel-domain/common';
import { mapToPlainObject } from '@potentiel-domain/core';
import { getLogger } from '@potentiel-libraries/monitoring';

import { TransmettreDemandeComplèteRaccordementPage } from '@/components/pages/réseau/raccordement/transmettre/transmettreDemandeComplèteRaccordement/TransmettreDemandeComplèteRaccordement.page';
import { PageWithErrorHandling } from '@/utils/PageWithErrorHandling';
Expand All @@ -23,6 +24,7 @@ type PageProps = IdentifiantParameter;

export default async function Page({ params: { identifiant } }: PageProps) {
return PageWithErrorHandling(async () => {
const logger = getLogger('page:DCR:transmettre');
const identifiantProjet = IdentifiantProjet.convertirEnValueType(decodeParameter(identifiant));

const projet = await récupérerProjet(identifiantProjet.formatter());
Expand Down Expand Up @@ -60,6 +62,13 @@ export default async function Page({ params: { identifiant } }: PageProps) {
data: { identifiantProjetValue: identifiantProjet.formatter() },
});

if (Option.isNone(gestionnaireRéseauActuel)) {
logger.warn('Aucun gestionnaire de réseau trouvé pour le projet', {
identifiantProjet: identifiantProjet.formatter(),
});
notFound();
}

const raccordements = await mediator.send<Raccordement.ConsulterRaccordementQuery>({
type: 'Réseau.Raccordement.Query.ConsulterRaccordement',
data: { identifiantProjetValue: identifiantProjet.formatter() },
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import { Routes } from '@potentiel-applications/routes';
import { ExpressionRegulière, IdentifiantProjet } from '@potentiel-domain/common';
import { PlainType } from '@potentiel-domain/core';
import { Option } from '@potentiel-libraries/monads';
import { GestionnaireRéseau, Raccordement } from '@potentiel-domain/reseau';

import { Form } from '@/components/atoms/form/Form';
import { UploadNewOrModifyExistingDocument } from '@/components/atoms/form/document/UploadNewOrModifyExistingDocument';
Expand All @@ -28,7 +29,7 @@ import {

export type TransmettreDemandeComplèteRaccordementFormProps = {
identifiantProjet: PlainType<IdentifiantProjet.ValueType>;
gestionnaireRéseauActuel: GestionnaireRéseauSelectProps['gestionnaireRéseauActuel'];
gestionnaireRéseauActuel: PlainType<Raccordement.ConsulterGestionnaireRéseauRaccordementReadModel>;
listeGestionnairesRéseau: GestionnaireRéseauSelectProps['listeGestionnairesRéseau'];
aDéjàTransmisUneDemandeComplèteDeRaccordement: boolean;
};
Expand All @@ -44,27 +45,27 @@ export const TransmettreDemandeComplèteRaccordementForm = ({
ValidationErrors<TransmettreDemandeComplèteRaccordementFormKeys>
>({});

const identifiantGestionnaireRéseauActuel = Option.match(gestionnaireRéseauActuel)
.some<string | undefined>((grd) => grd.identifiantGestionnaireRéseau.codeEIC)
.none(() => undefined);
const estGestionnaireInconnu = GestionnaireRéseau.IdentifiantGestionnaireRéseau.bind(
gestionnaireRéseauActuel.identifiantGestionnaireRéseau,
).estÉgaleÀ(GestionnaireRéseau.IdentifiantGestionnaireRéseau.inconnu);

const identifiantGestionnaireRéseauActuel =
gestionnaireRéseauActuel.identifiantGestionnaireRéseau.codeEIC;

const [selectedIdentifiantGestionnaireRéseau, setSelectedIdentifiantGestionnaireRéseau] =
useState<string | undefined>(identifiantGestionnaireRéseauActuel);

const alreadyHasAGestionnaireRéseau =
identifiantGestionnaireRéseauActuel && identifiantGestionnaireRéseauActuel !== 'inconnu';

const gestionnaireActuel = selectedIdentifiantGestionnaireRéseau
const aideSaisieRéférenceDossierRaccordement = selectedIdentifiantGestionnaireRéseau
? listeGestionnairesRéseau.find(
(gestionnaire) =>
gestionnaire.identifiantGestionnaireRéseau.codeEIC ===
selectedIdentifiantGestionnaireRéseau,
)
)?.aideSaisieRéférenceDossierRaccordement
: undefined;
const format = gestionnaireActuel?.aideSaisieRéférenceDossierRaccordement?.format ?? Option.none;
const légende = gestionnaireActuel?.aideSaisieRéférenceDossierRaccordement.légende ?? Option.none;
const format = aideSaisieRéférenceDossierRaccordement?.format ?? Option.none;
const légende = aideSaisieRéférenceDossierRaccordement?.légende ?? Option.none;
const expressionReguliere =
gestionnaireActuel?.aideSaisieRéférenceDossierRaccordement?.expressionReguliere?.expression ??
aideSaisieRéférenceDossierRaccordement?.expressionReguliere?.expression ??
ExpressionRegulière.accepteTout.expression;

return (
Expand Down Expand Up @@ -103,18 +104,8 @@ export const TransmettreDemandeComplèteRaccordementForm = ({
>
<input name="identifiantProjet" type="hidden" value={identifiantProjetValue} />

<input
name="identifiantGestionnaireReseauActuel"
type="hidden"
value={identifiantGestionnaireRéseauActuel}
/>
{alreadyHasAGestionnaireRéseau ? (
{!estGestionnaireInconnu ? (
<div className="flex flex-col">
<input
type="hidden"
name="identifiantGestionnaireReseau"
value={identifiantGestionnaireRéseauActuel}
/>
<div className="flex gap-3">
<legend className="font-bold">Gestionnaire réseau actuel</legend>
{aDéjàTransmisUneDemandeComplèteDeRaccordement ? null : (
Expand All @@ -124,8 +115,8 @@ export const TransmettreDemandeComplèteRaccordementForm = ({
)}
</div>
<div className="flex flex-col">
{gestionnaireActuel?.raisonSociale} (
{gestionnaireActuel?.identifiantGestionnaireRéseau?.codeEIC})
{gestionnaireRéseauActuel.raisonSociale} (
{gestionnaireRéseauActuel.identifiantGestionnaireRéseau?.codeEIC})
</div>
</div>
) : (
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,20 +35,35 @@ const listeGestionnairesRéseau = Array.from({ length: 3 }, (_, i) => ({
contactEmail: Option.none,
}));

listeGestionnairesRéseau[0].aideSaisieRéférenceDossierRaccordement = {
expressionReguliere: ExpressionRegulière.convertirEnValueType('[a-zA-Z]{3}'),
format: 'ABC',
légende: 'légende',
};

export const Default: Story = {
args: {
listeGestionnairesRéseau,
gestionnaireRéseauActuel: Option.none,
gestionnaireRéseauActuel: listeGestionnairesRéseau[1],
identifiantProjet: IdentifiantProjet.convertirEnValueType('PPE2 - Bâtiment#4#1#id-cre-738'),
delaiDemandeDeRaccordementEnMois: { texte: '3 mois', valeur: 3 },
aDéjàTransmisUneDemandeComplèteDeRaccordement: false,
},
};

export const AvecGestionnaire: Story = {
export const GestionnaireRéseauInconnu: Story = {
args: {
listeGestionnairesRéseau,
gestionnaireRéseauActuel: listeGestionnairesRéseau[1],
gestionnaireRéseauActuel: {
aideSaisieRéférenceDossierRaccordement: {
expressionReguliere: ExpressionRegulière.accepteTout,
format: Option.none,
légende: Option.none,
},
contactEmail: Option.none,
identifiantGestionnaireRéseau: GestionnaireRéseau.IdentifiantGestionnaireRéseau.inconnu,
raisonSociale: '',
},
identifiantProjet: IdentifiantProjet.convertirEnValueType('PPE2 - Bâtiment#4#1#id-cre-738'),
delaiDemandeDeRaccordementEnMois: { texte: '3 mois', valeur: 3 },
aDéjàTransmisUneDemandeComplèteDeRaccordement: false,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,7 @@ import { withUtilisateur } from '@/utils/withUtilisateur';
const schema = zod.object({
identifiantProjet: zod.string().min(1),
dateQualification: zod.string().min(1, { message: 'Champ obligatoire' }),
identifiantGestionnaireReseau: zod.string().min(1),
identifiantGestionnaireReseauActuel: zod.string().min(1),
identifiantGestionnaireReseau: zod.string().optional(),
referenceDossier: zod.string().min(1, { message: 'Champ obligatoire' }),
accuseReception: singleDocument({ acceptedFileTypes: ['application/pdf'] }),
});
Expand All @@ -27,13 +26,12 @@ const action: FormAction<FormState, typeof schema> = async (
identifiantProjet,
dateQualification,
identifiantGestionnaireReseau,
identifiantGestionnaireReseauActuel,
referenceDossier,
accuseReception,
},
) =>
withUtilisateur(async (utilisateur) => {
if (identifiantGestionnaireReseauActuel !== identifiantGestionnaireReseau) {
if (identifiantGestionnaireReseau) {
await mediator.send<Raccordement.RaccordementUseCase>({
type: 'Réseau.Raccordement.UseCase.ModifierGestionnaireRéseauRaccordement',
data: {
Expand Down

0 comments on commit 6804062

Please sign in to comment.