From a0c32594b0e4eaae7eec0caf75a07e4888c7d414 Mon Sep 17 00:00:00 2001 From: Yassine R Date: Thu, 15 Feb 2024 15:09:41 +0100 Subject: [PATCH] refactor(frontend): add format phone in a standalone component --- .../usagers/controllers/usagers.controller.ts | 2 +- packages/frontend/angular.json | 6 +-- ...ay-contact-details-decision.component.html | 20 +++++++++ ...contact-details-decision.component.spec.ts | 27 +++++++++++ ...play-contact-details-decision.component.ts | 10 +++++ ...display-etat-civil-decision.component.html | 24 ---------- ...play-etat-civil-decision.component.spec.ts | 3 ++ .../step-decision.component.html | 45 ++++++++++++++++++- .../step-decision/step-decision.component.ts | 1 + .../usager-dossier/usager-dossier.module.ts | 2 + .../usager-profil/usager-profil.module.ts | 3 +- .../form-contact-details.component.css | 0 .../form-contact-details.component.html | 0 .../form-contact-details.component.spec.ts | 10 ++--- .../form-contact-details.component.ts | 12 ++--- .../usager-shared/services/usagers.service.ts | 2 +- .../usager-shared/usager-shared.module.ts | 3 ++ packages/frontend/src/assets/css/main.scss | 4 +- 18 files changed, 129 insertions(+), 45 deletions(-) create mode 100644 packages/frontend/src/app/modules/usager-dossier/components/display-contact-details-decision/display-contact-details-decision.component.html create mode 100644 packages/frontend/src/app/modules/usager-dossier/components/display-contact-details-decision/display-contact-details-decision.component.spec.ts create mode 100644 packages/frontend/src/app/modules/usager-dossier/components/display-contact-details-decision/display-contact-details-decision.component.ts rename packages/frontend/src/app/modules/{usager-profil/components/_general-section => usager-shared/components}/form-contact-details/form-contact-details.component.css (100%) rename packages/frontend/src/app/modules/{usager-profil/components/_general-section => usager-shared/components}/form-contact-details/form-contact-details.component.html (100%) rename packages/frontend/src/app/modules/{usager-profil/components/_general-section => usager-shared/components}/form-contact-details/form-contact-details.component.spec.ts (80%) rename packages/frontend/src/app/modules/{usager-profil/components/_general-section => usager-shared/components}/form-contact-details/form-contact-details.component.ts (93%) diff --git a/packages/backend/src/usagers/controllers/usagers.controller.ts b/packages/backend/src/usagers/controllers/usagers.controller.ts index 3aabae5588..8744cec3c0 100644 --- a/packages/backend/src/usagers/controllers/usagers.controller.ts +++ b/packages/backend/src/usagers/controllers/usagers.controller.ts @@ -198,7 +198,7 @@ export class UsagersController { @UseGuards(UsagerAccessGuard) @AllowUserStructureRoles("simple", "responsable", "admin", "facteur") - @Post("contact-details/:usagerRef") + @Patch("contact-details/:usagerRef") public async patchMailAndPhone( @Body() contactDetails: ContactDetailsDto, @CurrentUser() _user: UserStructureAuthenticated, diff --git a/packages/frontend/angular.json b/packages/frontend/angular.json index c6aec451d6..d48e937b99 100644 --- a/packages/frontend/angular.json +++ b/packages/frontend/angular.json @@ -36,7 +36,7 @@ "extractLicenses": false, "buildOptimizer": false, "sourceMap": true, - "optimization": true, + "optimization": false, "namedChunks": true }, "configurations": { @@ -49,7 +49,7 @@ "buildOptimizer": false }, "analyze": { - "optimization": true, + "optimization": false, "outputHashing": "all", "sourceMap": true, "namedChunks": true, @@ -72,7 +72,7 @@ "with": "./src/environments/environment.prod.ts" } ], - "optimization": true, + "optimization": false, "outputHashing": "all", "sourceMap": false, "namedChunks": true, diff --git a/packages/frontend/src/app/modules/usager-dossier/components/display-contact-details-decision/display-contact-details-decision.component.html b/packages/frontend/src/app/modules/usager-dossier/components/display-contact-details-decision/display-contact-details-decision.component.html new file mode 100644 index 0000000000..0396c21915 --- /dev/null +++ b/packages/frontend/src/app/modules/usager-dossier/components/display-contact-details-decision/display-contact-details-decision.component.html @@ -0,0 +1,20 @@ +

+ Téléphone: + {{ + usager.telephone | formatInternationalPhoneNumber + }} + Non renseigné +

+

+ Adresse e-mail: + + {{ usager.email }} + + Non renseigné +

+

+ Notifications par SMS activés: + + {{ usager.contactByPhone ? "oui" : "non" }} + +

diff --git a/packages/frontend/src/app/modules/usager-dossier/components/display-contact-details-decision/display-contact-details-decision.component.spec.ts b/packages/frontend/src/app/modules/usager-dossier/components/display-contact-details-decision/display-contact-details-decision.component.spec.ts new file mode 100644 index 0000000000..2d9829145f --- /dev/null +++ b/packages/frontend/src/app/modules/usager-dossier/components/display-contact-details-decision/display-contact-details-decision.component.spec.ts @@ -0,0 +1,27 @@ +import { ComponentFixture, TestBed } from "@angular/core/testing"; + +import { DisplayContactDetailsDecisionComponent } from "./display-contact-details-decision.component"; +import { USAGER_ACTIF_MOCK } from "../../../../../_common/mocks"; +import { UsagerFormModel } from "../../../usager-shared/interfaces"; +import { FormatInternationalPhoneNumberPipe } from "../../../usager-shared/formatInternationalPhoneNumber.pipe"; + +describe("DisplayContactDetailsDecisionComponent", () => { + let component: DisplayContactDetailsDecisionComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [DisplayContactDetailsDecisionComponent], + imports: [FormatInternationalPhoneNumberPipe], + }).compileComponents(); + + fixture = TestBed.createComponent(DisplayContactDetailsDecisionComponent); + component = fixture.componentInstance; + component.usager = new UsagerFormModel(USAGER_ACTIF_MOCK); + fixture.detectChanges(); + }); + + it("should create", () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/packages/frontend/src/app/modules/usager-dossier/components/display-contact-details-decision/display-contact-details-decision.component.ts b/packages/frontend/src/app/modules/usager-dossier/components/display-contact-details-decision/display-contact-details-decision.component.ts new file mode 100644 index 0000000000..a450b8a4e5 --- /dev/null +++ b/packages/frontend/src/app/modules/usager-dossier/components/display-contact-details-decision/display-contact-details-decision.component.ts @@ -0,0 +1,10 @@ +import { Component, Input } from "@angular/core"; +import { UsagerFormModel } from "../../../usager-shared/interfaces"; + +@Component({ + selector: "app-display-contact-details-decision", + templateUrl: "./display-contact-details-decision.component.html", +}) +export class DisplayContactDetailsDecisionComponent { + @Input() public usager!: UsagerFormModel; +} diff --git a/packages/frontend/src/app/modules/usager-dossier/components/display-etat-civil-decision/display-etat-civil-decision.component.html b/packages/frontend/src/app/modules/usager-dossier/components/display-etat-civil-decision/display-etat-civil-decision.component.html index 453c6d8715..7d548ae242 100644 --- a/packages/frontend/src/app/modules/usager-dossier/components/display-etat-civil-decision/display-etat-civil-decision.component.html +++ b/packages/frontend/src/app/modules/usager-dossier/components/display-etat-civil-decision/display-etat-civil-decision.component.html @@ -23,30 +23,6 @@ {{ usager.numeroDistribution || "Non renseigné" }}

- -
-
Contact
-

- Téléphone: - {{ - usager.telephone | formatInternationalPhoneNumber - }} - Non renseigné -

-

- Adresse e-mail: - - {{ usager.email }} - - Non renseigné -

-

- Notifications par SMS activés: - - {{ usager.contactByPhone ? "oui" : "non" }} - -

-
diff --git a/packages/frontend/src/app/modules/usager-dossier/components/display-etat-civil-decision/display-etat-civil-decision.component.spec.ts b/packages/frontend/src/app/modules/usager-dossier/components/display-etat-civil-decision/display-etat-civil-decision.component.spec.ts index b457e369b4..57706df47d 100644 --- a/packages/frontend/src/app/modules/usager-dossier/components/display-etat-civil-decision/display-etat-civil-decision.component.spec.ts +++ b/packages/frontend/src/app/modules/usager-dossier/components/display-etat-civil-decision/display-etat-civil-decision.component.spec.ts @@ -3,6 +3,8 @@ import { NO_ERRORS_SCHEMA } from "@angular/core"; import { DisplayEtatCivilDecisionComponent } from "./display-etat-civil-decision.component"; import { FormatInternationalPhoneNumberPipe } from "../../../usager-shared/formatInternationalPhoneNumber.pipe"; +import { USAGER_ACTIF_MOCK } from "../../../../../_common/mocks"; +import { UsagerFormModel } from "../../../usager-shared/interfaces"; describe("DisplayEtatCivilDecisionComponent", () => { let component: DisplayEtatCivilDecisionComponent; @@ -16,6 +18,7 @@ describe("DisplayEtatCivilDecisionComponent", () => { }); fixture = TestBed.createComponent(DisplayEtatCivilDecisionComponent); component = fixture.componentInstance; + component.usager = new UsagerFormModel(USAGER_ACTIF_MOCK); }); it("can load instance", () => { diff --git a/packages/frontend/src/app/modules/usager-dossier/components/step-decision/step-decision.component.html b/packages/frontend/src/app/modules/usager-dossier/components/step-decision/step-decision.component.html index 1fa400696a..92543383de 100644 --- a/packages/frontend/src/app/modules/usager-dossier/components/step-decision/step-decision.component.html +++ b/packages/frontend/src/app/modules/usager-dossier/components/step-decision/step-decision.component.html @@ -61,7 +61,6 @@

Ayants-droits

>l'état-civil et et ayant-droits - + + +
+ + +
+ +
diff --git a/packages/frontend/src/app/modules/usager-dossier/components/step-decision/step-decision.component.ts b/packages/frontend/src/app/modules/usager-dossier/components/step-decision/step-decision.component.ts index 4fe223b183..c44abfc28d 100644 --- a/packages/frontend/src/app/modules/usager-dossier/components/step-decision/step-decision.component.ts +++ b/packages/frontend/src/app/modules/usager-dossier/components/step-decision/step-decision.component.ts @@ -39,6 +39,7 @@ export class StepDecisionComponent { public isAdmin: boolean; public editInfos: boolean; + public editContactDetails = false; public editEntretien: boolean; public editPJ: boolean; diff --git a/packages/frontend/src/app/modules/usager-dossier/usager-dossier.module.ts b/packages/frontend/src/app/modules/usager-dossier/usager-dossier.module.ts index f5f57aff69..c7348783b2 100644 --- a/packages/frontend/src/app/modules/usager-dossier/usager-dossier.module.ts +++ b/packages/frontend/src/app/modules/usager-dossier/usager-dossier.module.ts @@ -28,6 +28,7 @@ import { DecisionValideFormComponent } from "./components/decision-valide-form/d import { UsagerNotesModule } from "../usager-notes/usager-notes.module"; import { BaseUsagerDossierPageComponent } from "./components/base-usager-dossier-page/base-usager-dossier-page.component"; import { FormatInternationalPhoneNumberPipe } from "../usager-shared/formatInternationalPhoneNumber.pipe"; +import { DisplayContactDetailsDecisionComponent } from "./components/display-contact-details-decision/display-contact-details-decision.component"; @NgModule({ declarations: [ @@ -43,6 +44,7 @@ import { FormatInternationalPhoneNumberPipe } from "../usager-shared/formatInter DecisionValideFormComponent, DecisionRefusFormComponent, BaseUsagerDossierPageComponent, + DisplayContactDetailsDecisionComponent, ], imports: [ CommonModule, diff --git a/packages/frontend/src/app/modules/usager-profil/usager-profil.module.ts b/packages/frontend/src/app/modules/usager-profil/usager-profil.module.ts index b6187c0309..42c508bf04 100644 --- a/packages/frontend/src/app/modules/usager-profil/usager-profil.module.ts +++ b/packages/frontend/src/app/modules/usager-profil/usager-profil.module.ts @@ -38,7 +38,7 @@ import { } from "../shared/services"; import { ProfilHistoriqueLoginPortailComponent } from "./components/_historiques/profil-historique-login-portail/profil-historique-login-portail.component"; import { SetNpaiComponent } from "./components/_general-section/set-npai/set-npai.component"; -import { FormContactDetailsComponent } from "./components/_general-section/form-contact-details/form-contact-details.component"; + import { DisplayContactDetailsComponent } from "./components/_general-section/display-contact-details/display-contact-details.component"; import { NgxIntlTelInputModule } from "@khazii/ngx-intl-tel-input"; import { FormatInternationalPhoneNumberPipe } from "../usager-shared/formatInternationalPhoneNumber.pipe"; @@ -66,7 +66,6 @@ import { FormatInternationalPhoneNumberPipe } from "../usager-shared/formatInter ProfilHistoriqueDecisionsComponent, ProfilHistoriqueLoginPortailComponent, SetNpaiComponent, - FormContactDetailsComponent, DisplayContactDetailsComponent, ], imports: [ diff --git a/packages/frontend/src/app/modules/usager-profil/components/_general-section/form-contact-details/form-contact-details.component.css b/packages/frontend/src/app/modules/usager-shared/components/form-contact-details/form-contact-details.component.css similarity index 100% rename from packages/frontend/src/app/modules/usager-profil/components/_general-section/form-contact-details/form-contact-details.component.css rename to packages/frontend/src/app/modules/usager-shared/components/form-contact-details/form-contact-details.component.css diff --git a/packages/frontend/src/app/modules/usager-profil/components/_general-section/form-contact-details/form-contact-details.component.html b/packages/frontend/src/app/modules/usager-shared/components/form-contact-details/form-contact-details.component.html similarity index 100% rename from packages/frontend/src/app/modules/usager-profil/components/_general-section/form-contact-details/form-contact-details.component.html rename to packages/frontend/src/app/modules/usager-shared/components/form-contact-details/form-contact-details.component.html diff --git a/packages/frontend/src/app/modules/usager-profil/components/_general-section/form-contact-details/form-contact-details.component.spec.ts b/packages/frontend/src/app/modules/usager-shared/components/form-contact-details/form-contact-details.component.spec.ts similarity index 80% rename from packages/frontend/src/app/modules/usager-profil/components/_general-section/form-contact-details/form-contact-details.component.spec.ts rename to packages/frontend/src/app/modules/usager-shared/components/form-contact-details/form-contact-details.component.spec.ts index fd516c7a65..f55fca127d 100644 --- a/packages/frontend/src/app/modules/usager-profil/components/_general-section/form-contact-details/form-contact-details.component.spec.ts +++ b/packages/frontend/src/app/modules/usager-shared/components/form-contact-details/form-contact-details.component.spec.ts @@ -2,14 +2,14 @@ import { ComponentFixture, TestBed } from "@angular/core/testing"; import { FormContactDetailsComponent } from "./form-contact-details.component"; import { ReactiveFormsModule, FormsModule } from "@angular/forms"; import { RouterTestingModule } from "@angular/router/testing"; -import { SharedModule } from "../../../../shared/shared.module"; +import { SharedModule } from "../../../shared/shared.module"; import { APP_BASE_HREF } from "@angular/common"; import { HttpClientTestingModule } from "@angular/common/http/testing"; import { StoreModule } from "@ngrx/store"; -import { _usagerReducer } from "../../../../../shared"; -import { NGRX_PROVIDERS_TESTING } from "../../../../../shared/store/tests"; -import { UsagerFormModel } from "../../../../usager-shared/interfaces"; -import { USAGER_ACTIF_MOCK } from "../../../../../../_common/mocks"; +import { _usagerReducer } from "../../../../shared"; +import { NGRX_PROVIDERS_TESTING } from "../../../../shared/store/tests"; +import { UsagerFormModel } from "../../interfaces"; +import { USAGER_ACTIF_MOCK } from "../../../../../_common/mocks"; describe("FormContactDetailsComponent", () => { let component: FormContactDetailsComponent; diff --git a/packages/frontend/src/app/modules/usager-profil/components/_general-section/form-contact-details/form-contact-details.component.ts b/packages/frontend/src/app/modules/usager-shared/components/form-contact-details/form-contact-details.component.ts similarity index 93% rename from packages/frontend/src/app/modules/usager-profil/components/_general-section/form-contact-details/form-contact-details.component.ts rename to packages/frontend/src/app/modules/usager-shared/components/form-contact-details/form-contact-details.component.ts index c842885aca..eb6995c8bb 100644 --- a/packages/frontend/src/app/modules/usager-profil/components/_general-section/form-contact-details/form-contact-details.component.ts +++ b/packages/frontend/src/app/modules/usager-shared/components/form-contact-details/form-contact-details.component.ts @@ -17,16 +17,16 @@ import { Telephone, UsagerEtatCivilFormData, UserStructure, -} from "../../../../../../_common/model"; +} from "../../../../../_common/model"; import { setFormPhone, mobilePhoneValidator, getFormPhone, -} from "../../../../shared/phone"; -import { AuthService, CustomToastService } from "../../../../shared/services"; -import { UsagerFormModel } from "../../../../usager-shared/interfaces"; -import { UsagerService } from "../../../../usager-shared/services"; +} from "../../../shared/phone"; +import { AuthService, CustomToastService } from "../../../shared/services"; +import { UsagerFormModel } from "../../interfaces"; +import { UsagerService } from "../../services"; import { CountryISO, PhoneNumberFormat, @@ -34,7 +34,7 @@ import { } from "@khazii/ngx-intl-tel-input"; import { Observable, Subscription } from "rxjs"; -import { PREFERRED_COUNTRIES, EmailValidator } from "../../../../../shared"; +import { PREFERRED_COUNTRIES, EmailValidator } from "../../../../shared"; @Component({ selector: "app-form-contact-details", diff --git a/packages/frontend/src/app/modules/usager-shared/services/usagers.service.ts b/packages/frontend/src/app/modules/usager-shared/services/usagers.service.ts index 9f4e01dabc..fcbf207100 100644 --- a/packages/frontend/src/app/modules/usager-shared/services/usagers.service.ts +++ b/packages/frontend/src/app/modules/usager-shared/services/usagers.service.ts @@ -73,7 +73,7 @@ export class UsagerService { ): Observable { return this.http .patch( - `${this.endPointUsagers}/contact-detail/${ref}`, + `${this.endPointUsagers}/contact-details/${ref}`, formData ) .pipe( diff --git a/packages/frontend/src/app/modules/usager-shared/usager-shared.module.ts b/packages/frontend/src/app/modules/usager-shared/usager-shared.module.ts index aee3fe3607..c56e6e1434 100644 --- a/packages/frontend/src/app/modules/usager-shared/usager-shared.module.ts +++ b/packages/frontend/src/app/modules/usager-shared/usager-shared.module.ts @@ -30,6 +30,7 @@ import { CustomDatepickerI18n, } from "../shared/services"; import { DisplayAyantsDroitsComponent } from "./components/display-ayants-droits/display-ayants-droits.component"; +import { FormContactDetailsComponent } from "./components/form-contact-details/form-contact-details.component"; @NgModule({ declarations: [ @@ -47,6 +48,7 @@ import { DisplayAyantsDroitsComponent } from "./components/display-ayants-droits DecisionRadiationFormComponent, DeleteUsagerComponent, DisplayAyantsDroitsComponent, + FormContactDetailsComponent, ], imports: [ CommonModule, @@ -73,6 +75,7 @@ import { DisplayAyantsDroitsComponent } from "./components/display-ayants-droits DisplayDuplicatesUsagerComponent, DeleteUsagerComponent, DecisionRadiationFormComponent, + FormContactDetailsComponent, ], schemas: [CUSTOM_ELEMENTS_SCHEMA], providers: [ diff --git a/packages/frontend/src/assets/css/main.scss b/packages/frontend/src/assets/css/main.scss index 0d1f87cf1c..de1919bb18 100644 --- a/packages/frontend/src/assets/css/main.scss +++ b/packages/frontend/src/assets/css/main.scss @@ -57,10 +57,10 @@ caption { .step-form { background-color: white; padding: 1.4rem 1rem; - max-width: 940px; + max-width: 1040px; margin: 1rem auto; border: 1px solid #d1d1d1; - border-radius: 5px; + border-radius: 4px; } .tooltip.show {