Skip to content

Commit

Permalink
🐛 Corriger les composants RSC GF (#1947)
Browse files Browse the repository at this point in the history
  • Loading branch information
benjlevesque committed Jul 8, 2024
1 parent 9aa13e3 commit 018d5eb
Show file tree
Hide file tree
Showing 28 changed files with 307 additions and 320 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import { decodeParameter } from '@/utils/decodeParameter';
import { IdentifiantParameter } from '@/utils/identifiantParameter';
import {
EnregistrerAttestationGarantiesFinancièresPage,
EnregistrerAttestationGarantiesFinancièresProps,
EnregistrerAttestationGarantiesFinancièresPageProps,
} from '@/components/pages/garanties-financières/actuelles/enregistrerAttestation/EnregistrerAttestationGarantiesFinancières.page';
import { projetSoumisAuxGarantiesFinancières } from '@/utils/garanties-financières/vérifierAppelOffreSoumisAuxGarantiesFinancières';
import { ProjetNonSoumisAuxGarantiesFinancièresPage } from '@/components/pages/garanties-financières/ProjetNonSoumisAuxGarantiesFinancières.page';
Expand All @@ -27,20 +27,18 @@ export default async function Page({ params: { identifiant } }: IdentifiantParam
data: { identifiantProjet },
});

const projet = { ...candidature, identifiantProjet };

const soumisAuxGarantiesFinancières = await projetSoumisAuxGarantiesFinancières({
appelOffre: candidature.appelOffre,
famille: candidature.famille,
periode: candidature.période,
});

if (!soumisAuxGarantiesFinancières) {
return <ProjetNonSoumisAuxGarantiesFinancièresPage projet={projet} />;
return <ProjetNonSoumisAuxGarantiesFinancièresPage identifiantProjet={identifiantProjet} />;
}

const props: EnregistrerAttestationGarantiesFinancièresProps = {
projet,
const props: EnregistrerAttestationGarantiesFinancièresPageProps = {
identifiantProjet,
};

return <EnregistrerAttestationGarantiesFinancièresPage {...props} />;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ import { projetSoumisAuxGarantiesFinancières } from '@/utils/garanties-financi
import { ProjetNonSoumisAuxGarantiesFinancièresPage } from '@/components/pages/garanties-financières/ProjetNonSoumisAuxGarantiesFinancières.page';
import {
EnregistrerGarantiesFinancièresPage,
EnregistrerGarantiesFinancièresProps,
} from '@/components/pages/garanties-financières/actuelles/enregistrer/enregistrerGarantiesFinancières.page';
EnregistrerGarantiesFinancièresPageProps,
} from '@/components/pages/garanties-financières/actuelles/enregistrer/EnregistrerGarantiesFinancières.page';
import { typesGarantiesFinancièresSansInconnuPourFormulaire } from '@/utils/garanties-financières/typesGarantiesFinancièresPourFormulaire';

export const metadata: Metadata = {
Expand All @@ -28,20 +28,18 @@ export default async function Page({ params: { identifiant } }: IdentifiantParam
data: { identifiantProjet },
});

const projet = { ...candidature, identifiantProjet };

const soumisAuxGarantiesFinancières = await projetSoumisAuxGarantiesFinancières({
appelOffre: candidature.appelOffre,
famille: candidature.famille,
periode: candidature.période,
});

if (!soumisAuxGarantiesFinancières) {
return <ProjetNonSoumisAuxGarantiesFinancièresPage projet={projet} />;
return <ProjetNonSoumisAuxGarantiesFinancièresPage identifiantProjet={identifiantProjet} />;
}

const props: EnregistrerGarantiesFinancièresProps = {
projet,
const props: EnregistrerGarantiesFinancièresPageProps = {
identifiantProjet,
typesGarantiesFinancières: typesGarantiesFinancièresSansInconnuPourFormulaire,
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,7 @@ import { Metadata } from 'next';
import { mediator } from 'mediateur';
import { notFound } from 'next/navigation';

import {
ConsulterCandidatureQuery,
ConsulterCandidatureReadModel,
} from '@potentiel-domain/candidature';
import { ConsulterCandidatureQuery } from '@potentiel-domain/candidature';
import { GarantiesFinancières } from '@potentiel-domain/laureat';
import { Option } from '@potentiel-libraries/monads';

Expand All @@ -14,7 +11,7 @@ import { decodeParameter } from '@/utils/decodeParameter';
import { IdentifiantParameter } from '@/utils/identifiantParameter';
import {
ModifierGarantiesFinancièresActuellesPage,
ModifierGarantiesFinancièresActuellesProps,
ModifierGarantiesFinancièresActuellesPageProps,
} from '@/components/pages/garanties-financières/actuelles/modifier/ModifierGarantiesFinancièresActuelles.page';
import { projetSoumisAuxGarantiesFinancières } from '@/utils/garanties-financières/vérifierAppelOffreSoumisAuxGarantiesFinancières';
import { ProjetNonSoumisAuxGarantiesFinancièresPage } from '@/components/pages/garanties-financières/ProjetNonSoumisAuxGarantiesFinancières.page';
Expand All @@ -34,16 +31,14 @@ export default async function Page({ params: { identifiant } }: IdentifiantParam
data: { identifiantProjet },
});

const projet = { ...candidature, identifiantProjet };

const soumisAuxGarantiesFinancières = await projetSoumisAuxGarantiesFinancières({
appelOffre: candidature.appelOffre,
famille: candidature.famille,
periode: candidature.période,
});

if (!soumisAuxGarantiesFinancières) {
return <ProjetNonSoumisAuxGarantiesFinancièresPage projet={projet} />;
return <ProjetNonSoumisAuxGarantiesFinancièresPage identifiantProjet={identifiantProjet} />;
}

const garantiesFinancières =
Expand All @@ -56,14 +51,14 @@ export default async function Page({ params: { identifiant } }: IdentifiantParam
return notFound();
}

const props = mapToProps({ ...garantiesFinancières, projet });
const props = mapToProps({ ...garantiesFinancières, identifiantProjet });

return <ModifierGarantiesFinancièresActuellesPage {...props} />;
});
}

const mapToProps = ({
projet,
identifiantProjet,
garantiesFinancières: {
type,
dateÉchéance,
Expand All @@ -72,10 +67,10 @@ const mapToProps = ({
dateConstitution,
attestation,
},
}: GarantiesFinancières.ConsulterGarantiesFinancièresReadModel & {
projet: ConsulterCandidatureReadModel & { identifiantProjet: string };
}): ModifierGarantiesFinancièresActuellesProps => ({
projet,
}: Omit<GarantiesFinancières.ConsulterGarantiesFinancièresReadModel, 'identifiantProjet'> & {
identifiantProjet: string;
}): ModifierGarantiesFinancièresActuellesPageProps => ({
identifiantProjet,
typesGarantiesFinancières: typesGarantiesFinancièresSansInconnuPourFormulaire,
actuelles: {
type: type.type,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,7 @@ import { mediator } from 'mediateur';
import { notFound } from 'next/navigation';

import { Option } from '@potentiel-libraries/monads';
import {
ConsulterCandidatureQuery,
ConsulterCandidatureReadModel,
} from '@potentiel-domain/candidature';
import { ConsulterCandidatureQuery } from '@potentiel-domain/candidature';
import { GarantiesFinancières } from '@potentiel-domain/laureat';
import { Role } from '@potentiel-domain/utilisateur';

Expand All @@ -16,7 +13,7 @@ import { IdentifiantParameter } from '@/utils/identifiantParameter';
import { withUtilisateur } from '@/utils/withUtilisateur';
import {
ModifierDépôtEnCoursGarantiesFinancièresPage,
ModifierDépôtEnCoursGarantiesFinancièresProps,
ModifierDépôtEnCoursGarantiesFinancièresPageProps,
} from '@/components/pages/garanties-financières/dépôt/modifier/ModifierDépôtEnCoursGarantiesFinancières.page';
import { projetSoumisAuxGarantiesFinancières } from '@/utils/garanties-financières/vérifierAppelOffreSoumisAuxGarantiesFinancières';
import { ProjetNonSoumisAuxGarantiesFinancièresPage } from '@/components/pages/garanties-financières/ProjetNonSoumisAuxGarantiesFinancières.page';
Expand All @@ -38,16 +35,14 @@ export default async function Page({ params: { identifiant } }: IdentifiantParam
data: { identifiantProjet },
});

const projet = { ...candidature, identifiantProjet };

if (
!projetSoumisAuxGarantiesFinancières({
appelOffre: candidature.appelOffre,
famille: candidature.famille,
periode: candidature.période,
})
) {
return <ProjetNonSoumisAuxGarantiesFinancièresPage projet={projet} />;
return <ProjetNonSoumisAuxGarantiesFinancièresPage identifiantProjet={identifiantProjet} />;
}

const dépôtGarantiesFinancières =
Expand All @@ -60,22 +55,25 @@ export default async function Page({ params: { identifiant } }: IdentifiantParam
return notFound();
}

const props = mapToProps({ ...dépôtGarantiesFinancières, projet, utilisateur });
const props = mapToProps({ ...dépôtGarantiesFinancières, identifiantProjet, utilisateur });

return <ModifierDépôtEnCoursGarantiesFinancièresPage {...props} />;
}),
);
}

const mapToProps = ({
projet,
identifiantProjet,
dépôt: { type, dateÉchéance, dateConstitution, attestation },
utilisateur,
}: GarantiesFinancières.ConsulterDépôtEnCoursGarantiesFinancièresReadModel & {
projet: ConsulterCandidatureReadModel & { identifiantProjet: string };
}: Omit<
GarantiesFinancières.ConsulterDépôtEnCoursGarantiesFinancièresReadModel,
'identifiantProjet'
> & {
identifiantProjet: string;
utilisateur: AuthenticatedUserReadModel;
}): ModifierDépôtEnCoursGarantiesFinancièresProps => ({
projet,
}): ModifierDépôtEnCoursGarantiesFinancièresPageProps => ({
identifiantProjet,
typesGarantiesFinancières: typesGarantiesFinancièresSansInconnuPourFormulaire,
dépôtEnCours: {
typeGarantiesFinancières: type.type,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,20 +31,18 @@ export default async function Page({ params: { identifiant } }: IdentifiantParam
data: { identifiantProjet },
});

const projet = { ...candidature, identifiantProjet };

const soumisAuxGarantiesFinancières = await projetSoumisAuxGarantiesFinancières({
appelOffre: candidature.appelOffre,
famille: candidature.famille,
periode: candidature.période,
});

if (!soumisAuxGarantiesFinancières) {
return <ProjetNonSoumisAuxGarantiesFinancièresPage projet={projet} />;
return <ProjetNonSoumisAuxGarantiesFinancièresPage identifiantProjet={identifiantProjet} />;
}

const props: SoumettreGarantiesFinancièresProps = {
projet,
identifiantProjet,
typesGarantiesFinancières: typesGarantiesFinancièresSansInconnuPourFormulaire,
};

Expand All @@ -55,7 +53,7 @@ export default async function Page({ params: { identifiant } }: IdentifiantParam
});

return Option.isSome(dépôtGarantiesFinancières) ? (
<ProjetADéjàUnDépôtEnCoursPage projet={projet} />
<ProjetADéjàUnDépôtEnCoursPage identifiantProjet={identifiantProjet} />
) : (
<SoumettreGarantiesFinancièresPage {...props} />
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,11 @@ import { Metadata } from 'next';
import { mediator } from 'mediateur';

import { Option } from '@potentiel-libraries/monads';
import {
ConsulterCandidatureQuery,
ConsulterCandidatureReadModel,
} from '@potentiel-domain/candidature';
import { ConsulterCandidatureQuery } from '@potentiel-domain/candidature';
import { Achèvement, GarantiesFinancières } from '@potentiel-domain/laureat';
import { Role } from '@potentiel-domain/utilisateur';
import { AppelOffre, ConsulterAppelOffreQuery } from '@potentiel-domain/appel-offre';
import { StatutProjet } from '@potentiel-domain/common';

import { PageWithErrorHandling } from '@/utils/PageWithErrorHandling';
import { decodeParameter } from '@/utils/decodeParameter';
Expand Down Expand Up @@ -42,8 +40,6 @@ export default async function Page({ params: { identifiant } }: IdentifiantParam
data: { identifiantProjet },
});

const projet = { ...candidature, identifiantProjet };

const appelOffreDetails = await mediator.send<ConsulterAppelOffreQuery>({
type: 'AppelOffre.Query.ConsulterAppelOffre',
data: { identifiantAppelOffre: candidature.appelOffre },
Expand All @@ -56,7 +52,7 @@ export default async function Page({ params: { identifiant } }: IdentifiantParam
});

if (!soumisAuxGarantiesFinancières) {
return <ProjetNonSoumisAuxGarantiesFinancièresPage projet={projet} />;
return <ProjetNonSoumisAuxGarantiesFinancièresPage identifiantProjet={identifiantProjet} />;
}

const garantiesFinancièresActuelles =
Expand Down Expand Up @@ -95,14 +91,15 @@ export default async function Page({ params: { identifiant } }: IdentifiantParam
);

const props = mapToProps({
projet,
identifiantProjet,
utilisateur,
garantiesFinancièresActuelles,
dépôtEnCoursGarantiesFinancières,
achèvement,
mainlevée,
appelOffreDetails,
historiqueMainlevée,
statut: candidature.statut,
});

return <DétailsGarantiesFinancièresPage {...props} />;
Expand All @@ -111,32 +108,34 @@ export default async function Page({ params: { identifiant } }: IdentifiantParam
}

type MapToProps = (args: {
projet: ConsulterCandidatureReadModel & { identifiantProjet: string };
identifiantProjet: string;
utilisateur: AuthenticatedUserReadModel;
garantiesFinancièresActuelles: Option.Type<GarantiesFinancières.ConsulterGarantiesFinancièresReadModel>;
dépôtEnCoursGarantiesFinancières: Option.Type<GarantiesFinancières.ConsulterDépôtEnCoursGarantiesFinancièresReadModel>;
achèvement: Option.Type<Achèvement.ConsulterAttestationConformitéReadModel>;
mainlevée: Option.Type<GarantiesFinancières.ConsulterDemandeMainlevéeGarantiesFinancièresReadModel>;
appelOffreDetails: AppelOffre;
historiqueMainlevée: Option.Type<GarantiesFinancières.ConsulterHistoriqueDemandeMainlevéeRejetéeGarantiesFinancièresReadModel>;
statut: StatutProjet.RawType;
}) => DétailsGarantiesFinancièresPageProps;

const mapToProps: MapToProps = ({
projet,
identifiantProjet,
utilisateur,
garantiesFinancièresActuelles,
dépôtEnCoursGarantiesFinancières,
achèvement,
mainlevée,
appelOffreDetails,
historiqueMainlevée,
statut,
}) => {
if (
Option.isNone(garantiesFinancièresActuelles) &&
Option.isNone(dépôtEnCoursGarantiesFinancières)
) {
return {
projet,
identifiantProjet,
action: utilisateur.role.estÉgaleÀ(Role.porteur)
? 'soumettre'
: utilisateur.role.estÉgaleÀ(Role.admin) ||
Expand Down Expand Up @@ -176,7 +175,7 @@ const mapToProps: MapToProps = ({
garantiesFinancièresActuelles.garantiesFinancières.attestation &&
Option.isNone(dépôtEnCoursGarantiesFinancières) &&
Option.isNone(mainlevée);
const projetAbandonne = projet.statut === 'abandonné';
const projetAbandonne = statut === 'abandonné';
const projetAcheve = Option.isSome(achèvement);
const mainlevéeDemandée = Option.isSome(mainlevée) && mainlevée.statut.estDemandé();
const mainlevéeEnInstruction = Option.isSome(mainlevée) && mainlevée.statut.estEnInstruction();
Expand Down Expand Up @@ -221,7 +220,7 @@ const mapToProps: MapToProps = ({
: undefined;

return {
projet,
identifiantProjet,
actuelles: Option.isSome(garantiesFinancièresActuelles)
? {
type: getGarantiesFinancièresTypeLabel(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
'use client';

import { FC, useState } from 'react';
import Button from '@codegouvfr/react-dsfr/Button';
import { useRouter } from 'next/navigation';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,22 +3,22 @@ import CallOut from '@codegouvfr/react-dsfr/CallOut';

import { Routes } from '@potentiel-applications/routes';

import { ProjetBanner, ProjetBannerProps } from '@/components/molecules/projet/ProjetBanner';
import { ProjetBanner } from '@/components/molecules/projet/ProjetBanner';
import { PageTemplate } from '@/components/templates/Page.template';

export type ProjetNonSoumisAuxGarantiesFinancièresProps = {
projet: ProjetBannerProps;
identifiantProjet: string;
};

export const ProjetNonSoumisAuxGarantiesFinancièresPage: FC<
ProjetNonSoumisAuxGarantiesFinancièresProps
> = ({ projet }) => (
<PageTemplate banner={<ProjetBanner {...projet} />}>
> = ({ identifiantProjet }) => (
<PageTemplate banner={<ProjetBanner identifiantProjet={identifiantProjet} />}>
<CallOut
buttonProps={{
children: 'Retourner au projet',
linkProps: {
href: Routes.Projet.details(projet.identifiantProjet),
href: Routes.Projet.details(identifiantProjet),
},
}}
iconId="ri-information-line"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,6 @@ type Story = StoryObj<typeof meta>;

export const ProjetNonSoumisAuxGarantiesFinancières: Story = {
args: {
projet: {
identifiantProjet: 'identifiantProjet#1',
},
identifiantProjet: 'identifiantProjet#1',
},
};
Loading

0 comments on commit 018d5eb

Please sign in to comment.