{"version":3,"file":"agora-core-framework.mjs","sources":["../../../projects/agora-core-framework/src/lib/auth/components/register/register-page/register-page.component.ts","../../../projects/agora-core-framework/src/lib/auth/components/register/register-page/register-page.component.html","../../../projects/agora-core-framework/src/lib/validators/password.validator.ts","../../../projects/agora-core-framework/src/lib/enums/routePaths.ts","../../../projects/agora-core-framework/src/lib/config.token.ts","../../../projects/agora-core-framework/src/lib/enums/data.store.ts","../../../projects/agora-core-framework/src/lib/services/data-store.service.ts","../../../projects/agora-core-framework/src/lib/services/account.service.ts","../../../projects/agora-core-framework/src/lib/services/mandate.service.ts","../../../projects/agora-core-framework/src/lib/services/google-places.service.ts","../../../projects/agora-core-framework/src/lib/services/cookie.service.ts","../../../projects/agora-core-framework/src/lib/services/security-cookie.service.ts","../../../projects/agora-core-framework/src/lib/services/referential.service.ts","../../../projects/agora-core-framework/src/lib/shared/components/address-form/address-form.component.ts","../../../projects/agora-core-framework/src/lib/shared/components/address-form/address-form.component.html","../../../projects/agora-core-framework/src/lib/auth/components/register/register-from/register-from.component.ts","../../../projects/agora-core-framework/src/lib/auth/components/register/register-from/register-from.component.html","../../../projects/agora-core-framework/src/lib/auth/components/login/login-page/login-page.component.ts","../../../projects/agora-core-framework/src/lib/auth/components/login/login-page/login-page.component.html","../../../projects/agora-core-framework/src/lib/auth/components/login/login-section/login-section.component.ts","../../../projects/agora-core-framework/src/lib/auth/components/login/login-section/login-section.component.html","../../../projects/agora-core-framework/src/lib/auth/components/login/login-form/login-form.component.ts","../../../projects/agora-core-framework/src/lib/auth/components/login/login-form/login-form.component.html","../../../projects/agora-core-framework/src/lib/auth/components/register/register-section/register-section.component.ts","../../../projects/agora-core-framework/src/lib/auth/components/register/register-section/register-section.component.html","../../../projects/agora-core-framework/src/lib/auth/components/forget-password/forget-password-form/forget-password-form.component.ts","../../../projects/agora-core-framework/src/lib/auth/components/forget-password/forget-password-form/forget-password-form.component.html","../../../projects/agora-core-framework/src/lib/prime-ng-components.module.ts","../../../projects/agora-core-framework/src/lib/auth/components/reset-password/reset-password-form/reset-password-form.component.ts","../../../projects/agora-core-framework/src/lib/auth/components/reset-password/reset-password-form/reset-password-form.component.html","../../../projects/agora-core-framework/src/lib/auth/components/forget-password/forget-password-section/forget-password-section.component.ts","../../../projects/agora-core-framework/src/lib/auth/components/forget-password/forget-password-section/forget-password-section.component.html","../../../projects/agora-core-framework/src/lib/auth/components/reset-password/reset-password-error/reset-password-error.component.ts","../../../projects/agora-core-framework/src/lib/auth/components/reset-password/reset-password-error/reset-password-error.component.html","../../../projects/agora-core-framework/src/lib/auth/components/reset-password/reset-password-success/reset-password-success.component.ts","../../../projects/agora-core-framework/src/lib/auth/components/reset-password/reset-password-success/reset-password-success.component.html","../../../projects/agora-core-framework/src/lib/auth/components/register/register-success/register-success.component.ts","../../../projects/agora-core-framework/src/lib/auth/components/register/register-success/register-success.component.html","../../../projects/agora-core-framework/src/lib/auth/components/register/register-error/register-error.component.ts","../../../projects/agora-core-framework/src/lib/auth/components/register/register-error/register-error.component.html","../../../projects/agora-core-framework/src/lib/auth/components/reset-password/reset-password-check-inbox/reset-password-check-inbox.component.ts","../../../projects/agora-core-framework/src/lib/auth/components/reset-password/reset-password-check-inbox/reset-password-check-inbox.component.html","../../../projects/agora-core-framework/src/lib/auth/components/register/register-check-inbox/register-check-inbox.component.ts","../../../projects/agora-core-framework/src/lib/auth/components/register/register-check-inbox/register-check-inbox.component.html","../../../projects/agora-core-framework/src/lib/auth/components/register/register-ask-for-new-link/register-ask-for-new-link.component.ts","../../../projects/agora-core-framework/src/lib/auth/components/register/register-ask-for-new-link/register-ask-for-new-link.component.html","../../../projects/agora-core-framework/src/lib/auth/components/login/login-popup/login-popup.component.ts","../../../projects/agora-core-framework/src/lib/auth/components/login/login-popup/login-popup.component.html","../../../projects/agora-core-framework/src/lib/auth/components/register/register-popup/register-popup.component.ts","../../../projects/agora-core-framework/src/lib/auth/components/register/register-popup/register-popup.component.html","../../../projects/agora-core-framework/src/lib/shared/components/generic-section/generic-section.component.ts","../../../projects/agora-core-framework/src/lib/shared/components/generic-section/generic-section.component.html","../../../projects/agora-core-framework/src/lib/shared/components/page-not-found/page-not-found.component.ts","../../../projects/agora-core-framework/src/lib/shared/components/page-not-found/page-not-found.component.html","../../../projects/agora-core-framework/src/lib/shared/components/rounded-chart/rounded-chart.component.ts","../../../projects/agora-core-framework/src/lib/shared/components/rounded-chart/rounded-chart.component.html","../../../projects/agora-core-framework/src/lib/directives/click.outside.ts","../../../projects/agora-core-framework/src/lib/services/file.service.ts","../../../projects/agora-core-framework/src/lib/shared/components/file-upload/file-upload.component.ts","../../../projects/agora-core-framework/src/lib/shared/components/file-upload/file-upload.component.html","../../../projects/agora-core-framework/src/lib/shared/components/genereic-device-add/genereic-device-add.component.ts","../../../projects/agora-core-framework/src/lib/shared/components/genereic-device-add/genereic-device-add.component.html","../../../projects/agora-core-framework/src/lib/shared/shared.module.ts","../../../projects/agora-core-framework/src/lib/auth/components/register/register-link-already-used-error/register-link-already-used-error.component.ts","../../../projects/agora-core-framework/src/lib/auth/components/register/register-link-already-used-error/register-link-already-used-error.component.html","../../../projects/agora-core-framework/src/lib/enums/roles.ts","../../../projects/agora-core-framework/src/lib/auth/components/login/login-page-50-50/login-page-50-50.component.ts","../../../projects/agora-core-framework/src/lib/auth/components/login/login-page-50-50/login-page-50-50.component.html","../../../projects/agora-core-framework/src/lib/auth/components/forget-password/form-password-50-50/form-password-50-50.component.ts","../../../projects/agora-core-framework/src/lib/auth/components/forget-password/form-password-50-50/form-password-50-50.component.html","../../../projects/agora-core-framework/src/lib/auth/auth.module.ts","../../../projects/agora-core-framework/src/lib/guest/layout/header/header.component.ts","../../../projects/agora-core-framework/src/lib/guest/layout/header/header.component.html","../../../projects/agora-core-framework/src/lib/guest/layout/footer/footer.component.ts","../../../projects/agora-core-framework/src/lib/guest/layout/footer/footer.component.html","../../../projects/agora-core-framework/src/lib/guest/layout/layout.component.ts","../../../projects/agora-core-framework/src/lib/guest/layout/layout.component.html","../../../projects/agora-core-framework/src/lib/guest/step-three/step-three.component.ts","../../../projects/agora-core-framework/src/lib/guest/step-three/step-three.component.html","../../../projects/agora-core-framework/src/lib/guest/step-two/step-two.component.ts","../../../projects/agora-core-framework/src/lib/guest/step-two/step-two.component.html","../../../projects/agora-core-framework/src/lib/guest/step-one/step-one-popup/step-one-popup.component.ts","../../../projects/agora-core-framework/src/lib/guest/step-one/step-one-popup/step-one-popup.component.html","../../../projects/agora-core-framework/src/lib/guest/invoice-attachement/invoice-attachement.component.ts","../../../projects/agora-core-framework/src/lib/guest/invoice-attachement/invoice-attachement.component.html","../../../projects/agora-core-framework/src/lib/pipes/file-size.pipe.ts","../../../projects/agora-core-framework/src/lib/guest/step-one/step-one.component.ts","../../../projects/agora-core-framework/src/lib/guest/step-one/step-one.component.html","../../../projects/agora-core-framework/src/lib/services/google-map.service.ts","../../../projects/agora-core-framework/src/lib/guest/step-four/step-four.component.ts","../../../projects/agora-core-framework/src/lib/guest/step-four/step-four.component.html","../../../projects/agora-core-framework/src/lib/guest/step-five/step-five.component.ts","../../../projects/agora-core-framework/src/lib/guest/step-five/step-five.component.html","../../../projects/agora-core-framework/src/lib/guest/step-six/step-six.component.ts","../../../projects/agora-core-framework/src/lib/guest/step-six/step-six.component.html","../../../projects/agora-core-framework/src/lib/guest/loader/loader.component.ts","../../../projects/agora-core-framework/src/lib/guest/loader/loader.component.html","../../../projects/agora-core-framework/src/lib/guest/guest.module.ts","../../../projects/agora-core-framework/src/lib/models/shared/mandate.ts","../../../projects/agora-core-framework/src/lib/connected/connected.pages.ts","../../../projects/agora-core-framework/src/lib/connected/navbar.items.ts","../../../projects/agora-core-framework/src/lib/services/auth.service.ts","../../../projects/agora-core-framework/src/lib/connected/layout/connected-sidebar/connected-sidebar.component.ts","../../../projects/agora-core-framework/src/lib/connected/layout/connected-sidebar/connected-sidebar.component.html","../../../projects/agora-core-framework/src/lib/connected/layout/connected-header/connected-header.component.ts","../../../projects/agora-core-framework/src/lib/connected/layout/connected-header/connected-header.component.html","../../../projects/agora-core-framework/src/lib/connected/delete-account-popup/delete-account-popup.component.ts","../../../projects/agora-core-framework/src/lib/connected/delete-account-popup/delete-account-popup.component.html","../../../projects/agora-core-framework/src/lib/connected/delete-account-error-popup/delete-account-error-popup.component.ts","../../../projects/agora-core-framework/src/lib/connected/delete-account-error-popup/delete-account-error-popup.component.html","../../../projects/agora-core-framework/src/lib/connected/layout/connected-footer/connected-footer.component.ts","../../../projects/agora-core-framework/src/lib/connected/layout/connected-footer/connected-footer.component.html","../../../projects/agora-core-framework/src/lib/connected/layout/connected-layout/connected-layout.component.ts","../../../projects/agora-core-framework/src/lib/connected/layout/connected-layout/connected-layout.component.html","../../../projects/agora-core-framework/src/lib/connected/dashboard/dashboard.component.ts","../../../projects/agora-core-framework/src/lib/connected/dashboard/dashboard.component.html","../../../projects/agora-core-framework/src/lib/connected/account/account.component.ts","../../../projects/agora-core-framework/src/lib/connected/account/account.component.html","../../../projects/agora-core-framework/src/lib/connected/devices/device-popup/is-gem-popup/is-gem-popup.component.ts","../../../projects/agora-core-framework/src/lib/connected/devices/device-popup/is-gem-popup/is-gem-popup.component.html","../../../projects/agora-core-framework/src/lib/connected/devices/device-attachement/device-attachement.component.ts","../../../projects/agora-core-framework/src/lib/connected/devices/device-attachement/device-attachement.component.html","../../../projects/agora-core-framework/src/lib/connected/devices/device-popup/device-popup.component.ts","../../../projects/agora-core-framework/src/lib/connected/devices/device-popup/device-popup.component.html","../../../projects/agora-core-framework/src/lib/connected/connected-oow-popup/connected-oow-popup.component.ts","../../../projects/agora-core-framework/src/lib/connected/connected-oow-popup/connected-oow-popup.component.html","../../../projects/agora-core-framework/src/lib/connected/connected-iw-popup/connected-iw-popup.component.ts","../../../projects/agora-core-framework/src/lib/connected/connected-iw-popup/connected-iw-popup.component.html","../../../projects/agora-core-framework/src/lib/connected/devices/devices-table/devices-table.component.ts","../../../projects/agora-core-framework/src/lib/connected/devices/devices-table/devices-table.component.html","../../../projects/agora-core-framework/src/lib/services/chart.service.ts","../../../projects/agora-core-framework/src/lib/connected/devices/device-chart/device-chart.component.ts","../../../projects/agora-core-framework/src/lib/connected/devices/device-chart/device-chart.component.html","../../../projects/agora-core-framework/src/lib/connected/devices/device-card/device-card.component.ts","../../../projects/agora-core-framework/src/lib/connected/devices/device-card/device-card.component.html","../../../projects/agora-core-framework/src/lib/connected/devices/devices-grid/devices-grid.component.ts","../../../projects/agora-core-framework/src/lib/connected/devices/devices-grid/devices-grid.component.html","../../../projects/agora-core-framework/src/lib/connected/devices/devices.component.ts","../../../projects/agora-core-framework/src/lib/connected/devices/devices.component.html","../../../projects/agora-core-framework/src/lib/connected/incident-report/incident-report.component.ts","../../../projects/agora-core-framework/src/lib/connected/incident-report/incident-report.component.html","../../../projects/agora-core-framework/src/lib/connected/incident-tracking/incident-tracking.component.ts","../../../projects/agora-core-framework/src/lib/connected/incident-tracking/incident-tracking.component.html","../../../projects/agora-core-framework/src/lib/connected/contract/contract.component.ts","../../../projects/agora-core-framework/src/lib/connected/contract/contract.component.html","../../../projects/agora-core-framework/src/lib/connected/customer-service/customer-service.component.ts","../../../projects/agora-core-framework/src/lib/connected/customer-service/customer-service.component.html","../../../projects/agora-core-framework/src/lib/connected/layout/connected-steps-layout/connected-steps-layout.component.ts","../../../projects/agora-core-framework/src/lib/connected/layout/connected-steps-layout/connected-steps-layout.component.html","../../../projects/agora-core-framework/src/lib/connected/connected-step-one/connected-step-one.component.ts","../../../projects/agora-core-framework/src/lib/connected/connected-step-one/connected-step-one.component.html","../../../projects/agora-core-framework/src/lib/connected/connected-step-two/connected-step-two.component.ts","../../../projects/agora-core-framework/src/lib/connected/connected-step-two/connected-step-two.component.html","../../../projects/agora-core-framework/src/lib/connected/connected-step-three/connected-step-three.component.ts","../../../projects/agora-core-framework/src/lib/connected/connected-step-three/connected-step-three.component.html","../../../projects/agora-core-framework/src/lib/connected/connected-step-four/connected-step-four.component.ts","../../../projects/agora-core-framework/src/lib/connected/connected-step-four/connected-step-four.component.html","../../../projects/agora-core-framework/src/lib/connected/connected-step-five/connected-step-five.component.ts","../../../projects/agora-core-framework/src/lib/connected/connected-step-five/connected-step-five.component.html","../../../projects/agora-core-framework/src/lib/connected/connected-step-six/connected-step-six.component.ts","../../../projects/agora-core-framework/src/lib/connected/connected-step-six/connected-step-six.component.html","../../../projects/agora-core-framework/src/lib/connected/incident-details/incident-details.component.ts","../../../projects/agora-core-framework/src/lib/connected/incident-details/incident-details.component.html","../../../projects/agora-core-framework/src/lib/connected/incident-report-success/incident-report-success.component.ts","../../../projects/agora-core-framework/src/lib/connected/incident-report-success/incident-report-success.component.html","../../../projects/agora-core-framework/src/lib/connected/device-details/device-details.component.ts","../../../projects/agora-core-framework/src/lib/connected/device-details/device-details.component.html","../../../projects/agora-core-framework/src/lib/connected/connected.module.ts","../../../projects/agora-core-framework/src/lib/helpers/auth.guards.ts","../../../projects/agora-core-framework/src/lib/helpers/reseller.guard.ts","../../../projects/agora-core-framework/src/lib/helpers/user.guard.ts","../../../projects/agora-core-framework/src/lib/helpers/jwt.interceptor.ts","../../../projects/agora-core-framework/src/lib/helpers/error.interceptor.ts","../../../projects/agora-core-framework/src/lib/helpers/secure-inner-pages.guard.ts","../../../projects/agora-core-framework/src/lib/helpers/payment-auth.guard.ts","../../../projects/agora-core-framework/src/public-api.ts","../../../projects/agora-core-framework/src/agora-core-framework.ts"],"sourcesContent":["import { Component } from '@angular/core';\r\n\r\n@Component({\n    selector: 'acf-register-page',\n    templateUrl: './register-page.component.html',\n    styleUrl: './register-page.component.scss',\n    standalone: false\n})\r\nexport class RegisterPageComponent {\r\n\r\n}\r\n","<p>register-page works!</p>\r\n","import { FormGroup } from \"@angular/forms\";\r\n\r\nexport function PasswordValidator(controlName: string, matchingControlName: string) {\r\n    return (formGroup: FormGroup) => {\r\n        let control = formGroup.controls[controlName];\r\n        let matchingControl = formGroup.controls[matchingControlName]\r\n        if (\r\n            matchingControl.errors &&\r\n        !matchingControl.errors[\"confirmPasswordValidator\"]\r\n        ) {\r\n            return;\r\n        }\r\n        if (control.value !== matchingControl.value) {\r\n            matchingControl.setErrors({ confirmPasswordValidator: true });\r\n        } else {\r\n            matchingControl.setErrors(null);\r\n        }\r\n    };\r\n}","export enum RoutesPaths {\r\n    home = \"accueil\",\r\n    login = \"connexion\",\r\n    register = \"inscription\",\r\n    forgetPassword = \"mot-de-passe-oublie\",\r\n    resetPassword = \"reinitialisation-mot-de-passe\",\r\n    notfound = \"page-introuvable\",\r\n\r\n    step = \"etape\",\r\n    step1 = \"etape/1\",\r\n    step2 = \"etape/2\",\r\n    step3 = \"etape/3\",\r\n    step4 = \"etape/4\",\r\n    step5 = \"etape/5\",\r\n    step6 = \"etape/6\",\r\n\r\n    resetPasswordError = \"erreur-reinitialisation-mot-de-passe\",\r\n    resetPasswordSuccess = \"reinitialisation-mot-de-passe-reussie\",\r\n    resetPasswordCheckInbox = \"verifier-boite-reinitialisation\",\r\n    registerError = \"erreur-inscription\",\r\n    registerlinkAlreadyUsedError = \"erreur-inscription-lien-utilisé\",\r\n    registerSuccess = \"inscription-reussie\",\r\n    registerCheckInbox = \"verifier-boite-inscription\",\r\n    registerAskForNewLink = \"demander-nouveau-lien-inscription\",\r\n\r\n    dashboard = \"tableau-de-bord\",\r\n    account = \"mon-compte\",\r\n    devices = \"mes-appareils\",\r\n    device_details = \"services-appareil\",\r\n    customer_service = \"service-client\",\r\n    incident_report = \"declaration-incident\",\r\n    incident_report_success = \"declaration-incident-succes/\",\r\n\r\n    incident_tracking = \"suivi-incidents\",\r\n    incident_tracking_overview = \"resume-incident/\",\r\n    contract = \"mes-contrats\",\r\n    connectedStep = \"declaration-incident/etape\",\r\n    connectedStep1 = \"declaration-incident/etape/1\",\r\n    connectedStep2 = \"declaration-incident/etape/2\",\r\n    connectedStep3 = \"declaration-incident/etape/3\",\r\n    connectedStep4 = \"declaration-incident/etape/4\",\r\n    connectedStep5 = \"declaration-incident/etape/5\",\r\n    connectedStep6 = \"declaration-incident/etape/6\",\r\n    redirectionStep6 = \"declaration-incident/etape/6/:status\",\r\n    paiementCancelUrl = \"paiement-annule\",\r\n    paiementSuccessUrl = \"paiement-reussi\",\r\n    mandateCreation = \"creation-mandat\",\r\n    reseller = \"re-vendeur\",\r\n\r\n    reseller_dashboard = \"re-vendeur/tableau-de-bord\",\r\n    reseller_devices = \"re-vendeur/mes-appareils\",\r\n    reseller_contracts = \"re-vendeur/mes-contrats\",\r\n    reseller_contract = \"re-vendeur/contrat\",\r\n    reseller_account = \"re-vendeur/mon-compte\",\r\n    consumer = \"consommateur\",\r\n    consumer_dashboard = \"consommateur/mes-interventions\",\r\n    consumer_account = \"consommateur/mon-compte\",\r\n    consumer_confirm_payment= \"consommateur/autoriser-paiement\",\r\n    consumer_activate_account= \"consommateur/activer-compte\",\r\n\r\n    consumer_devices = \"consommateur/mes-appareils\",\r\n    add = \"ajouter\",\r\n    details = \"details\",\r\n    validate = \"valider\",\r\n    success = \"succes\",\r\n    error = \"erreur\",\r\n    admin = \"admin\",\r\n    admin_dashboard = \"admin/tableau-de-bord\",\r\n    contracts = \"mes-contrats\",\r\n    contrat = \"contrat\",\r\n    faq = \"faq\",\r\n    interventions = \"mes-interventions\",\r\n    refused = \"refused\",\r\n    contact = \"contact\",\r\n    helpCenter = \"support-client\"\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport interface LibConfig {\r\n  ENV: string;\r\n  CONSUMER_URL: string;\r\n  SECURITY_URL: string;\r\n  REF_URL: string;\r\n  AFTERSALES_URL: string;\r\n  CONSUMER_STRIPE_URL: string;\r\n  WARRANTY_URL: string;\r\n  MANDATE_URL: string;\r\n  CONSUMER_REF_URL: string;\r\n  MAP_ID: string;\r\n  support: {\r\n    phone: string;\r\n    email: string;\r\n  };\r\n  WARRANTY_PORTAL: string;\r\n  cookieSettings: {\r\n    secure: boolean;\r\n    sameSite: 'Strict' | 'Lax' | 'None';\r\n    path: string;\r\n  };\r\n  bosch_services_uri: string;\r\n}\r\n\r\nexport const LIB_CONFIG = new InjectionToken<LibConfig>('LIB_CONFIG');","export enum DataStore {\r\n    application = \"application\",\r\n    // login_info = \"login_info\",\r\n    username = \"username\",\r\n    userlogin = \"userlogin\",\r\n\r\n    email = \"email\",\r\n    access_token = \"access_token\",\r\n    refresh_token = \"refresh_token\",\r\n    first_name = \"first_name\",\r\n    last_name = \"last_name\",\r\n    city = \"city\",\r\n    address = \"address\",\r\n    zip = \"zip\",\r\n    phone_number = \"phone_number\",\r\n    country_code = \"country_code\",\r\n    title = \"title\",\r\n    lat = \"lat\",\r\n    lng = \"lng\",\r\n    step1_form = \"step1_form\",\r\n    step2_form = \"step2_form\",\r\n    step3_form = \"step3_form\",\r\n    step4_form = \"step4_form\",\r\n    step5_form = \"step5_form\",\r\n    file_id = \"file_id\",\r\n    register_from_steps = \"register_from_steps\",\r\n    login_from_steps = \"login_from_steps\",\r\n    description = \"description\",\r\n    remember_me = \"r_m\",\r\n    original_r_m = \"original_r_m\",\r\n    mandate_id = \"m_id\",\r\n    create_mandate = \"create_mandate\",\r\n    mandate_details = \"mandate_details\",\r\n    mandate_cancelled_navigation = \"mandate_cancelled_navigation\",\r\n    om_nb = \"om_nb\",\r\n    ats_code = \"ats_code\",\r\n    cont_code = \"cont_code\",\r\n    cont_id = \"cont_id\",\r\n    cont_prd_id = \"cont_prd_id\",\r\n\r\n    /*Temporary data*/\r\n    temp_username = \"temp_username\",\r\n    temp_access_token = \"temp_access_token\",\r\n    temp_address = \"temp_address\",\r\n    temp_first_name = \"temp_first_name\",\r\n    temp_last_name = \"temp_last_name\",\r\n    temp_city = \"temp_city\",\r\n    temp_zip = \"temp_zip\",\r\n    temp_phone_number = \"temp_phone_number\",\r\n    temp_country_code = \"temp_country_code\",\r\n    temp_title = \"temp_title\",\r\n\r\n    /*State*/\r\n    device = \"device\",\r\n    symptom = \"symptom\",\r\n    symptomComment ='symptomComment',\r\n    consumer = \"consumer\",\r\n    shipping_details = \"shipping_details\",\r\n    mandate_id_before_payment = \"mandate_id_before_payment\",\r\n    mandate_state = \"mandate_state\",\r\n    product = \"product\",\r\n    is_out_of_warranty = \"is_out_of_warranty\",\r\n}","import { Injectable } from '@angular/core';\r\nimport { DataStore } from '../enums/data.store';\r\nimport { UserInfo } from '../models/shared/user.info';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { Mandate, MandateBeforePayment } from '../models/shared/mandate';\r\nimport { MappedProduct, Product, TempDevice } from '../models/shared/product';\r\n\r\n@Injectable({\r\n  providedIn: 'root',\r\n})\r\nexport class DataStoreService {\r\n\r\n  constructor() { }\r\n\r\n  /**\r\n   * Application Methods\r\n   */\r\n\r\n  setApplication(app: string): void {\r\n    localStorage.setItem(DataStore.application, app);\r\n  }\r\n\r\n  getApplication(): string {\r\n    return localStorage.getItem(DataStore.application) || '';\r\n  }\r\n\r\n  /* Remember Me Methods */\r\n  setRM(remember_me: boolean): void {\r\n    localStorage.setItem(DataStore.remember_me, JSON.stringify(remember_me));\r\n  }\r\n\r\n  getRM(): string {\r\n    return localStorage.getItem(DataStore.remember_me) || '';\r\n  }\r\n\r\n  setOriginalRememberMe(original_r_m: boolean): void {\r\n    localStorage.setItem(DataStore.original_r_m, JSON.stringify(original_r_m));\r\n  }\r\n\r\n  getOriginalRememberMe(): string {\r\n    return localStorage.getItem(DataStore.original_r_m) || '';\r\n  }\r\n  deleteOriginalRememberMe(): void {\r\n    localStorage.removeItem(DataStore.original_r_m);\r\n  }\r\n\r\n  /**\r\n * UserName Methods\r\n */\r\n  setUserName(userName: string, rememberMe: boolean): void {\r\n    const store = this.getStore(rememberMe);\r\n    store.setItem(DataStore.username, userName);\r\n  }\r\n\r\n  getUserName(): string {\r\n    return this.getStoreFromRM().getItem(DataStore.username) || localStorage.getItem(DataStore.temp_username) || '';\r\n  }\r\n\r\n  deleteUserName(): void {\r\n    this.getStoreFromRM().removeItem(DataStore.username);\r\n  }\r\n\r\n\r\n  public saveUserLogin(userlogin: string): void {\r\n    localStorage.removeItem(DataStore.userlogin);\r\n    localStorage.setItem(DataStore.userlogin, userlogin);\r\n  }\r\n  public getUserLogin(): string | null {\r\n    return localStorage.getItem(DataStore.userlogin) !== null ? localStorage.getItem(DataStore.userlogin) : null;\r\n  }\r\n\r\n  /**\r\n   * Token Methods\r\n   */\r\n  setToken(token: string, rememberMe: boolean): void {\r\n    const store = this.getStore(rememberMe);\r\n    store.setItem(DataStore.access_token, token);\r\n  }\r\n  getToken(): string {\r\n    return this.getStoreFromRM().getItem(DataStore.access_token) || '';\r\n  }\r\n\r\n\r\n  /**\r\n   * Temporary Methods\r\n   */\r\n  getTempToken(): string {\r\n    return localStorage.getItem(DataStore.temp_access_token) || '';\r\n  }\r\n  /**\r\n * Refresh Token Methods\r\n */\r\n  setRefreshToken(token: string, rememberMe: boolean): void {\r\n    const store = this.getStore(rememberMe);\r\n    store.setItem(DataStore.refresh_token, token);\r\n  }\r\n  getRefreshToken(): string {\r\n    return this.getStoreFromRM().getItem(DataStore.refresh_token) || '';\r\n  }\r\n  /**\r\n   * User Information Methods\r\n   */\r\n  setUserInformation(user: UserInfo, rememberMe: boolean): void {\r\n    const store = this.getStore(rememberMe);\r\n    if (user.email) {\r\n      store.setItem(DataStore.email, user.email);\r\n    }\r\n    if (user.userName) {\r\n      store.setItem(DataStore.username, user.userName);\r\n    }\r\n    if (user.firstName) {\r\n      store.setItem(DataStore.first_name, user.firstName);\r\n    }\r\n    if (user.lastName) {\r\n      store.setItem(DataStore.last_name, user.lastName);\r\n    }\r\n    if (user.city) {\r\n      store.setItem(DataStore.city, user.city);\r\n    }\r\n    if (user.address) {\r\n      store.setItem(DataStore.address, user.address);\r\n    }\r\n    if (user.zipPostalCode) {\r\n      store.setItem(DataStore.zip, user.zipPostalCode);\r\n    }\r\n    if (user.phoneNumber) {\r\n      store.setItem(DataStore.phone_number, user.phoneNumber);\r\n    }\r\n    if (user.countryCode) {\r\n      store.setItem(DataStore.country_code, user.countryCode);\r\n    }\r\n    if (user.title) {\r\n      store.setItem(DataStore.title, user.title);\r\n    }\r\n  }\r\n\r\n  setEmail(email: string): void {\r\n    localStorage.setItem(DataStore.email, email);\r\n  }\r\n  getEmail(): string {\r\n    return localStorage.getItem(DataStore.email) || '';\r\n  }\r\n\r\n  getFirstName(): string {\r\n    return this.getStoreFromRM().getItem(DataStore.first_name) || localStorage.getItem(DataStore.temp_first_name) || '';\r\n  }\r\n\r\n  getLastName(): string {\r\n    return this.getStoreFromRM().getItem(DataStore.last_name) || localStorage.getItem(DataStore.temp_last_name) || '';\r\n  }\r\n\r\n  getCity(): string {\r\n    return this.getStoreFromRM().getItem(DataStore.city) || localStorage.getItem(DataStore.temp_city) || '';\r\n  }\r\n\r\n  getZip(): string {\r\n    return this.getStoreFromRM().getItem(DataStore.zip) || localStorage.getItem(DataStore.temp_zip) || '';\r\n  }\r\n\r\n  getPhoneNumber(): string {\r\n    return this.getStoreFromRM().getItem(DataStore.phone_number) || localStorage.getItem(DataStore.temp_phone_number) || '';\r\n  }\r\n\r\n  getCountryCode(): string {\r\n    return this.getStoreFromRM().getItem(DataStore.country_code) || localStorage.getItem(DataStore.temp_country_code) || '';\r\n  }\r\n\r\n  getTitle(): string {\r\n    return this.getStoreFromRM().getItem(DataStore.title) || localStorage.getItem(DataStore.temp_title) || '';\r\n  }\r\n\r\n  getUserAddress(): string {\r\n    return this.getStoreFromRM().getItem(DataStore.address) || localStorage.getItem(DataStore.temp_address) || '';\r\n  }\r\n  getATS(): string {\r\n    return this.getStoreFromRM().getItem(DataStore.ats_code) || '';\r\n  }\r\n  setATS(ats: string): void {\r\n    this.getStoreFromRM().setItem(DataStore.ats_code, ats);\r\n  }\r\n  deleteUserInformation(): void {\r\n    localStorage.removeItem(DataStore.access_token);\r\n    localStorage.removeItem(DataStore.refresh_token);\r\n    localStorage.removeItem(DataStore.email);\r\n    localStorage.removeItem(DataStore.username);\r\n    localStorage.removeItem(DataStore.first_name);\r\n    localStorage.removeItem(DataStore.last_name);\r\n    localStorage.removeItem(DataStore.city);\r\n    localStorage.removeItem(DataStore.address);\r\n    localStorage.removeItem(DataStore.zip);\r\n    localStorage.removeItem(DataStore.phone_number);\r\n    localStorage.removeItem(DataStore.country_code);\r\n    localStorage.removeItem(DataStore.title);\r\n    localStorage.removeItem(DataStore.remember_me);\r\n    localStorage.removeItem(DataStore.ats_code);\r\n\r\n    sessionStorage.removeItem(DataStore.access_token);\r\n    sessionStorage.removeItem(DataStore.refresh_token);\r\n    sessionStorage.removeItem(DataStore.email);\r\n    sessionStorage.removeItem(DataStore.username);\r\n    sessionStorage.removeItem(DataStore.first_name);\r\n    sessionStorage.removeItem(DataStore.last_name);\r\n    sessionStorage.removeItem(DataStore.city);\r\n    sessionStorage.removeItem(DataStore.address);\r\n    sessionStorage.removeItem(DataStore.zip);\r\n    sessionStorage.removeItem(DataStore.phone_number);\r\n    sessionStorage.removeItem(DataStore.country_code);\r\n    sessionStorage.removeItem(DataStore.title);\r\n    sessionStorage.removeItem(DataStore.ats_code);\r\n\r\n    localStorage.removeItem(DataStore.temp_access_token);\r\n    localStorage.removeItem(DataStore.temp_username);\r\n    localStorage.removeItem(DataStore.temp_first_name);\r\n    localStorage.removeItem(DataStore.temp_last_name);\r\n    localStorage.removeItem(DataStore.temp_city);\r\n    localStorage.removeItem(DataStore.temp_address);\r\n    localStorage.removeItem(DataStore.temp_zip);\r\n    localStorage.removeItem(DataStore.temp_phone_number);\r\n    localStorage.removeItem(DataStore.temp_country_code);\r\n    localStorage.removeItem(DataStore.temp_title);\r\n\r\n  }\r\n\r\n  setAgreementNumber(agreement_nb: string): void {\r\n    localStorage.setItem(\"r-agreement_nb\", agreement_nb);\r\n  }\r\n\r\n  getAgreementNumber(): string | null {\r\n    return localStorage.getItem(\"r-agreement_nb\");\r\n\r\n  }\r\n\r\n  removeAgreementId(): void {\r\n    localStorage.removeItem(\"r-agreement_id\");\r\n  }\r\n\r\n  /**\r\n * Map Methods\r\n */\r\n  setLat(lat: string): void {\r\n    localStorage.setItem(DataStore.lat, lat);\r\n  }\r\n\r\n  getLat(): string {\r\n    return localStorage.getItem(DataStore.lat) || '';\r\n  }\r\n\r\n  setLng(lng: string): void {\r\n    localStorage.setItem(DataStore.lng, lng);\r\n  }\r\n\r\n  getLng(): string {\r\n    return localStorage.getItem(DataStore.lng) || '';\r\n  }\r\n\r\n  setAddress(Address: string): void {\r\n    localStorage.setItem(DataStore.address, Address);\r\n  }\r\n\r\n  getAddress(): string {\r\n    return localStorage.getItem(DataStore.address) || '';\r\n  }\r\n\r\n  /* Steps Methods*/\r\n\r\n  saveFormToLocalStorage(form: FormGroup, storageKey: string): void {\r\n    const formData = form.getRawValue();\r\n    localStorage.setItem(storageKey, JSON.stringify(formData));\r\n  }\r\n  setDescription(description: string): void {\r\n    localStorage.setItem(DataStore.description, description);\r\n  }\r\n\r\n  getDescription(): string {\r\n    return localStorage.getItem(DataStore.description) || '';\r\n  }\r\n  deleteFormsFromLocalStorage(): void {\r\n    localStorage.removeItem(DataStore.step1_form);\r\n    localStorage.removeItem(DataStore.step2_form);\r\n    localStorage.removeItem(DataStore.step3_form);\r\n    localStorage.removeItem(DataStore.step4_form);\r\n    localStorage.removeItem(DataStore.step5_form);\r\n  }\r\n\r\n  getStep1Form(): any {\r\n    return this.parseJsonSafely(localStorage.getItem(DataStore.step1_form)) || '';\r\n  }\r\n  getStep2Form(): any {\r\n    return this.parseJsonSafely(localStorage.getItem(DataStore.step2_form)) || '';\r\n  }\r\n  getStep3Form(): any {\r\n    return this.parseJsonSafely(localStorage.getItem(DataStore.step3_form)) || '';\r\n  }\r\n  getStep4Form(): any {\r\n    return this.parseJsonSafely(localStorage.getItem(DataStore.step4_form)) || '';\r\n  }\r\n  getStep5Form(): any {\r\n    return this.parseJsonSafely(localStorage.getItem(DataStore.step5_form)) || '';\r\n  }\r\n\r\n  getStore = (rememberMe: boolean) => rememberMe ? localStorage : sessionStorage;\r\n  getStoreFromRM = () => this.getRM() == 'true' ? localStorage : sessionStorage;\r\n\r\n\r\n  /**\r\n* Mandate ID Methods\r\n*/\r\n  setMandateID(mandate_id: number): void {\r\n    localStorage.setItem(DataStore.mandate_id, String(mandate_id));\r\n  }\r\n\r\n  getMandateID(): number {\r\n    const mandateID = localStorage.getItem(DataStore.mandate_id);\r\n    return Number(mandateID) || 0;\r\n  }\r\n\r\n  deleteMandateID(): void {\r\n    localStorage.removeItem(DataStore.mandate_id);\r\n  }\r\n\r\n  /**\r\n* Mandate Methods\r\n*/\r\n  saveMandate(mandate: MandateBeforePayment): void {\r\n    localStorage.setItem(DataStore.create_mandate, JSON.stringify(mandate));\r\n  }\r\n\r\n  getMandate(): string {\r\n    return localStorage.getItem(DataStore.create_mandate) || '';\r\n  }\r\n\r\n  deleteMandate(): void {\r\n    localStorage.removeItem(DataStore.create_mandate);\r\n  }\r\n\r\n  /**\r\n* Mandate Number Methods\r\n*/\r\n  setOmNumber(om_nb: string): void {\r\n    localStorage.setItem(DataStore.om_nb, om_nb);\r\n  }\r\n\r\n  getOmNumber(): string {\r\n    const om_nb = localStorage.getItem(DataStore.om_nb);\r\n    return om_nb || '';\r\n  }\r\n\r\n  deleteOmNumber(): void {\r\n    localStorage.removeItem(DataStore.om_nb);\r\n  }\r\n\r\n  /**\r\n* File Id Methods\r\n*/\r\n  setFileId(file_id: string): void {\r\n    localStorage.setItem(DataStore.file_id, file_id);\r\n  }\r\n\r\n  getFileId(): string {\r\n    const file_id = localStorage.getItem(DataStore.file_id);\r\n    return file_id || '';\r\n  }\r\n\r\n  deleteFileId(): void {\r\n    localStorage.removeItem(DataStore.file_id);\r\n  }\r\n\r\n\r\n  /**\r\n* Mandate Details Methods\r\n*/\r\n  saveMandateDetails(mandate: Mandate): void {\r\n    localStorage.setItem(DataStore.mandate_details, JSON.stringify(mandate));\r\n  }\r\n\r\n  getMandateDetails(): string {\r\n    return localStorage.getItem(DataStore.mandate_details) || '';\r\n  }\r\n  /**\r\n* Warranty/Contract Code Methods\r\n*/\r\n  setContCode(cont_code: string): void {\r\n    localStorage.setItem(DataStore.cont_code, cont_code);\r\n  }\r\n\r\n  getContCode(): string {\r\n    const cont_code = localStorage.getItem(DataStore.cont_code);\r\n    return cont_code || '';\r\n  }\r\n\r\n  deleteContCode(): void {\r\n    localStorage.removeItem(DataStore.cont_code);\r\n  }\r\n\r\n  setContId(cont_id: number): void {\r\n    localStorage.setItem(DataStore.cont_id, String(cont_id));\r\n  }\r\n\r\n  getContId(): number {\r\n    const cont_id = localStorage.getItem(DataStore.cont_id);\r\n    return Number(cont_id) || 0;\r\n  }\r\n\r\n  deleteContId(): void {\r\n    localStorage.removeItem(DataStore.cont_id);\r\n  }\r\n\r\n  setContPrdId(cont_prd_id: number): void {\r\n    localStorage.setItem(DataStore.cont_prd_id, String(cont_prd_id));\r\n  }\r\n\r\n  getContPrdId(): number {\r\n    const cont_prd_id = localStorage.getItem(DataStore.cont_prd_id);\r\n    return Number(cont_prd_id) || 0;\r\n  }\r\n\r\n  deleteContPrdId(): void {\r\n    localStorage.removeItem(DataStore.cont_prd_id);\r\n  }\r\n  /**\r\n* Mandate Details Methods\r\n*/\r\n  saveMandateCancelledNavigation(mandate_cancelled_navigation: string): void {\r\n    localStorage.setItem(DataStore.mandate_cancelled_navigation, mandate_cancelled_navigation);\r\n  }\r\n\r\n  getMandateCancelledNavigation(): string {\r\n    return localStorage.getItem(DataStore.mandate_cancelled_navigation) || '';\r\n  }\r\n\r\n  deleteMandateCancelledNavigation(): void {\r\n    localStorage.removeItem(DataStore.mandate_cancelled_navigation);\r\n  }\r\n\r\n  /* State Management */\r\n  saveDevice(device: MappedProduct): void {\r\n    localStorage.setItem(DataStore.device, JSON.stringify(device));\r\n  }\r\n\r\n  getDevice(): string {\r\n    return localStorage.getItem(DataStore.device) || '';\r\n  }\r\n\r\n  saveProduct(product: Product): void {\r\n    localStorage.setItem(DataStore.product, JSON.stringify(product));\r\n  }\r\n\r\n  getProduct(): string {\r\n    return localStorage.getItem(DataStore.product) || '';\r\n  }\r\n\r\n\r\n  saveSymptom(symptom: any): void {\r\n    localStorage.setItem(DataStore.symptom, JSON.stringify(symptom));\r\n  }\r\n\r\n  getSymptom(): string {\r\n    return localStorage.getItem(DataStore.symptom) || '';\r\n  }\r\n\r\n  saveConsumer(consumer: any): void {\r\n    localStorage.setItem(DataStore.consumer, JSON.stringify(consumer));\r\n  }\r\n\r\n  getConsumer(): string {\r\n    return localStorage.getItem(DataStore.consumer) || '';\r\n  }\r\n\r\n  saveShippingDetails(shipping_details: any): void {\r\n    localStorage.setItem(DataStore.shipping_details, JSON.stringify(shipping_details));\r\n  }\r\n\r\n  getShippingDetails(): string {\r\n    return localStorage.getItem(DataStore.shipping_details) || '';\r\n  }\r\n\r\n  saveMandateState(mandate_state: any): void {\r\n    localStorage.setItem(DataStore.mandate_state, JSON.stringify(mandate_state));\r\n  }\r\n\r\n  getMandateState(): string {\r\n    return localStorage.getItem(DataStore.mandate_state) || '';\r\n  }\r\n\r\n\r\n  setMandateIDBeforePayment(mandate_id: string): void {\r\n    localStorage.setItem(DataStore.mandate_id_before_payment, mandate_id);\r\n  }\r\n\r\n  getMandateIDBeforePayment(): string {\r\n    const mandateID = localStorage.getItem(DataStore.mandate_id_before_payment);\r\n    return mandateID || '';\r\n  }\r\n\r\n  deleteState(): void {\r\n    localStorage.removeItem(DataStore.mandate_id_before_payment);\r\n    localStorage.removeItem(DataStore.mandate_state);\r\n    localStorage.removeItem(DataStore.shipping_details);\r\n    localStorage.removeItem(DataStore.consumer);\r\n    localStorage.removeItem(DataStore.symptom);\r\n    localStorage.removeItem(DataStore.device);\r\n    localStorage.removeItem(DataStore.is_out_of_warranty);\r\n\r\n  }\r\n  isOutWaranty(): boolean {\r\n   return  localStorage.getItem(DataStore.is_out_of_warranty) === 'true';\r\n  }\r\n  updateIsOutWaranty(isOutWaranty: boolean): void {\r\n    localStorage.setItem(DataStore.is_out_of_warranty, String(isOutWaranty));\r\n  }\r\n\r\n  private parseJsonSafely(data: string | null): any {\r\n    try {\r\n      return data ? JSON.parse(data) : null;\r\n    } catch (error) {\r\n      console.error('Error parsing JSON for key:', data, error);\r\n      return null;\r\n    }\r\n  }\r\n\r\n  saveSessionToLocalStorage() {\r\n    Object.keys(sessionStorage).forEach((key) => {\r\n      localStorage.setItem(`temp_${key}`, sessionStorage.getItem(key) || '');\r\n    });\r\n  }\r\n\r\n  restoreSessionFromLocalStorage() {\r\n    Object.keys(localStorage).forEach((key) => {\r\n      if (key.startsWith('temp_')) {\r\n        const sessionKey = key.replace('temp_', '');\r\n        sessionStorage.setItem(sessionKey, localStorage.getItem(key) || '');\r\n        localStorage.removeItem(key); // Clean up temporary data\r\n      }\r\n    });\r\n  }\r\n  /* Begin Temporary Methods */\r\n  private readonly KEY = 'temp_device';\r\n  setTempDevice(device: TempDevice): void {\r\n    localStorage.setItem(this.KEY, JSON.stringify(device));\r\n  }\r\n\r\n  getTempDevice(): TempDevice | null {\r\n    const data = localStorage.getItem(this.KEY);\r\n    return data ? JSON.parse(data) as TempDevice : null;\r\n  }\r\n\r\n  clearTempDevice(): void {\r\n    localStorage.removeItem(this.KEY);\r\n    localStorage.removeItem(DataStore.symptom);\r\n    localStorage.removeItem(DataStore.device);\r\n    localStorage.removeItem(DataStore.symptomComment);\r\n  }\r\n\r\n  set_cui_eco_token(token: string, refresh_token:string): void {\r\n    sessionStorage.setItem('ce_token', token);\r\n    sessionStorage.setItem('ce_refresh_token', refresh_token);\r\n  }\r\n  get_cui_eco_token(): string | null {\r\n    return sessionStorage.getItem('ce_token');\r\n  }\r\n  clear_cui_eco_token(): void {\r\n    sessionStorage.removeItem('ce_token');\r\n    sessionStorage.removeItem('ce_refresh_token');\r\n  }\r\n   set_cui_eco_rm(rm: boolean): void {\r\n    localStorage.setItem('ce_rm', rm.toString());\r\n  }\r\n  get_cui_eco_rm(): string | null {\r\n    return localStorage.getItem('ce_rm') ;\r\n  }\r\n  set_cui_eco_user_data(user_data : string): void {\r\n    sessionStorage.setItem('ce_user_data', user_data);\r\n  }\r\n  get_cui_eco_user_data() {\r\n    const data =  sessionStorage.getItem('ce_user_data');\r\n     return data ?? null;\r\n  }\r\n  clear_cui_eco_user_data() {\r\n    sessionStorage.removeItem('ce_user_data');\r\n  }\r\n  /* End Temporary Methods */\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { RegisterRequest } from '../models/request/register.request';\r\nimport { Inject } from '@angular/core';\r\nimport { LIB_CONFIG, LibConfig } from '../config.token';;\r\nimport { ResetPasswordRequest } from '../models/request/reset-password.request';\r\nimport { ForgetPasswordResponse } from '../models/response/forget-password.response';\r\nimport { ResetForgottenPasswordRequest } from '../models/request/reset-forgotten-password.request';\r\nimport { ForgetPasswordLinkRequest } from '../models/request/forget-password-link.request';\r\nimport { LoginRequest } from '../models/request/login.request';\r\nimport { LoginResponse } from '../models/response/login.response';\r\nimport { RegisterAskForNewLinkRequest } from '../models/request/register-ask-for-new-link.request';\r\nimport { UserInfo } from '../models/shared/user.info';\r\nimport { DataStoreService } from './data-store.service';\r\nimport { GeneralInfoChangeRequest } from '../models/request/general-information-change.request';\r\n\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class AccountService {\r\n\r\n  constructor(\r\n    private readonly http: HttpClient,\r\n    private readonly store: DataStoreService,\r\n    @Inject(LIB_CONFIG) private config: LibConfig\r\n  ) { }\r\n\r\n  login(request: LoginRequest): Observable<LoginResponse> {\r\n    return this.http.post<LoginResponse>(`${this.config.SECURITY_URL}/Account/Login`, request);\r\n  }\r\n\r\n  refreshToken(): Observable<LoginResponse> {\r\n    const refreshToken = this.store.getRefreshToken();\r\n    const applicationName = this.store.getApplication();\r\n    return this.http.post<LoginResponse>(`${this.config.SECURITY_URL}/Account/RefreshToken`, { refreshToken, applicationName })\r\n  }\r\n\r\n  createAccount(request: RegisterRequest): Observable<any> {\r\n    return this.http.post<any>(`${this.config.CONSUMER_URL}/CreateCDMCustomer`, request);\r\n  }\r\n\r\n  resetPassword(request: ResetPasswordRequest): Observable<ForgetPasswordResponse> {\r\n    return this.http.post<ForgetPasswordResponse>(`${this.config.CONSUMER_URL}/ResetPassword`, request);\r\n  }\r\n\r\n  checkEmail(email: string): Observable<boolean> {\r\n    const app = this.store.getApplication();\r\n    return this.http.post<boolean>(`${this.config.CONSUMER_URL}/CheckCDMIfEmailExists?applicationName=${app}&email=${email}`, {});\r\n  }\r\n\r\n  checkPhoneNumber(phone: string, app: string): Observable<boolean> {\r\n    const applicationName = app || this.store.getApplication();\r\n    return this.http.post<boolean>(`${this.config.CONSUMER_URL}/CheckCDMIfPhoneExists?applicationName=${applicationName}&phone=${phone}`, {});\r\n  }\r\n  \r\n checkEmailValidity(email: string): Observable<boolean> {\r\n    const app = this.store.getApplication();\r\n    return this.http.post<boolean>(`${this.config.CONSUMER_URL}/CheckCDMIfEmailExistsAndValid?applicationName=${app}&email=${email}`, {});\r\n  }\r\n  sendForgetPasswordLink(request: ForgetPasswordLinkRequest): Observable<ForgetPasswordResponse> {\r\n    return this.http.post<ForgetPasswordResponse>(`${this.config.CONSUMER_URL}/GenerateLinkForgetPassword`, request);\r\n  }\r\n\r\n  registerAskForNewLinkForm(request: RegisterAskForNewLinkRequest): Observable<any> {\r\n    return this.http.post<any>(`${this.config.CONSUMER_URL}/AskCDMForNewLink`, request);\r\n  }\r\n\r\n  validateKey(key: string): Observable<any> {\r\n    const encodedKey = encodeURIComponent(key);\r\n    return this.http.post<any>(`${this.config.CONSUMER_URL}/ValidateLinkForgetPassword?key=${encodedKey}`, {});\r\n  }\r\n  validateCDMCustomer(key: string): Observable<any> {\r\n    const encodedKey = encodeURIComponent(key);\r\n    return this.http.post<any>(`${this.config.CONSUMER_URL}/ValidateCDMCustomer?key=${encodedKey}`, {});\r\n  }\r\n  resetForgottenPassword(request: ResetForgottenPasswordRequest): Observable<ForgetPasswordResponse> {\r\n    request.applicationName = this.store.getApplication();\r\n    return this.http.post<ForgetPasswordResponse>(`${this.config.CONSUMER_URL}/UpdateCDMPasswordFP`, request);\r\n  }\r\n\r\n  getCDMCustomerInfo(): Observable<UserInfo> {\r\n    const payload = {\r\n      applicationName: this.store.getApplication(),\r\n      userName: this.store.getUserName()\r\n    }\r\n    return this.http.post<UserInfo>(`${this.config.CONSUMER_URL}/GetCDMCustomerInfo`, payload);\r\n  }\r\n  \r\n  changeGeneralInformation(request: GeneralInfoChangeRequest): Observable<ForgetPasswordResponse> {\r\n    return this.http.post<ForgetPasswordResponse>(`${this.config.CONSUMER_URL}/SetCDMCustomerInfo`, request);\r\n  }\r\n\r\n  requestAccountDeletion(): Observable<string> {\r\n    const userName = this.store.getUserName();\r\n    const applicationName = this.store.getApplication();\r\n    return this.http.post(`${this.config.CONSUMER_URL}/CustomerRemoveRequest?userName=${encodeURIComponent(userName)}&applicationName=${encodeURIComponent(applicationName)}`, {}, { responseType: 'text' });\r\n  }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { RepairersAssignedRequest } from '../models/request/repairers-assigned.request';\r\nimport { RepairerInfo } from '../models/response/repairer-info.response';\r\nimport { RepairAndShippingPricesRequest } from '../models/request/repair-shipping-prices.request';\r\nimport { Inject } from '@angular/core';\r\nimport { LIB_CONFIG, LibConfig } from '../config.token';;\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { RepairAndShippingPrices, RepairResponse } from '../models/response/repair-shipping-prices.response';\r\nimport {\r\n  CreateMandateBeforePaymentRequest,\r\n  CreateMandateRequest,\r\n} from '../models/request/create-mandate.request';\r\nimport { CreateMandateResponse } from '../models/response/create-mandate.response';\r\nimport { DataStoreService } from './data-store.service';\r\nimport { Mandates } from '../models/shared/mandate';\r\nimport { GetMandateOnHoldResponse, GetMandateResponse } from '../models/response/get-mandate.response';\r\nimport { StripePaymentRequest } from '../models/request/payment.request';\r\nimport { GetMandateDetailsResponse } from '../models/response/get-mandate-details.response';\r\nimport { Products } from '../models/shared/product';\r\nimport { CreateWarrantyRequest } from '../models/request/create-warranty.request';\r\nimport { CreateWarrantyResponse } from '../models/response/create-warranty.response';\r\nimport { MandateBeforePaymentResponse } from '../models/response/get-mandate-before-payment';\r\nimport { DeleteContractProductRequest } from '../models/request/delete-product.request';\r\nimport { DeleteContractProductResponse } from '../models/response/delete-product.response';\r\nimport { DeviceDetailsRequest } from '../models/request/device-details.request';\r\nimport { DeviceDetailsResponse } from '../models/response/device-details.response';\r\n@Injectable({\r\n  providedIn: 'root',\r\n})\r\nexport class MandateService {\r\n  constructor(@Inject(LIB_CONFIG) private config: LibConfig,\r\n    private http: HttpClient,\r\n    private readonly store: DataStoreService\r\n  ) { }\r\n\r\n  private _omMandateDetails = new BehaviorSubject<any>('');\r\n  omMandateDetails$ = this._omMandateDetails.asObservable();\r\n\r\n  setOmMandateDetails(value: any) {\r\n    this._omMandateDetails.next(value);\r\n  }\r\n\r\n  getOmMandateDetails() {\r\n    return this._omMandateDetails.value;\r\n  }\r\n\r\n  getRepairers(request: RepairersAssignedRequest): Observable<RepairerInfo> {\r\n    return this.http.post<RepairerInfo>(\r\n      `${this.config.REF_URL}/GetClientAssignmentByZipCountryManufacturer`,\r\n      request\r\n    );\r\n  }\r\n\r\n  GetRepairInformation(\r\n    request: RepairAndShippingPricesRequest\r\n  ): Observable<RepairResponse> {\r\n    return this.http.post<RepairResponse>(\r\n      `${this.config.REF_URL}/GetRepairInformation`,\r\n      request\r\n    );\r\n  }\r\n\r\n  getRepairAndShippingPrices(\r\n    request: RepairAndShippingPricesRequest\r\n  ): Observable<RepairAndShippingPrices> {\r\n    return this.http.post<RepairAndShippingPrices>(\r\n      `${this.config.REF_URL}/GetRepairAndShippingPricesByFilters`,\r\n      request\r\n    );\r\n  }\r\n  setMandatePaid(id: number): Observable<boolean> {\r\n    return this.http.get<boolean>(\r\n      `${this.config.MANDATE_URL}/SetMandatePaidTest?id=${id}`\r\n    );\r\n  }\r\n\r\n  createMandateBeforePayment(\r\n    request: CreateMandateBeforePaymentRequest\r\n  ): Observable<CreateMandateResponse> {\r\n    return this.http.post<CreateMandateResponse>(\r\n      `${this.config.MANDATE_URL}/CreateCDMMandateBeforePayment`,\r\n      request\r\n    );\r\n  }\r\n\r\n  UpdateMandateBeforePayment(\r\n    request: CreateMandateBeforePaymentRequest\r\n  ): Observable<CreateMandateResponse> {\r\n    return this.http.post<CreateMandateResponse>(\r\n      `${this.config.MANDATE_URL}/UpdateMandateBeforePayment`,\r\n      request\r\n    );\r\n  }\r\n\r\n  createCheckoutSession(request: StripePaymentRequest): Observable<string> {\r\n    return this.http.post(\r\n      `${this.config.CONSUMER_STRIPE_URL}/CreateCheckoutStripeSession`,\r\n      request,\r\n      { responseType: 'text' }\r\n    );\r\n  }\r\n\r\n  createMandate(\r\n    request: CreateMandateRequest\r\n  ): Observable<CreateMandateResponse> {\r\n    return this.http.post<CreateMandateResponse>(\r\n      `${this.config.AFTERSALES_URL}Mandate/CreateMandate`,\r\n      request\r\n    );\r\n  }\r\n\r\n  fulfillCheckout(sessionId: string, atsCodeRepairer: string, applicationName: string): Observable<string> {\r\n    return this.http.post(\r\n      `${this.config.CONSUMER_STRIPE_URL}/fulfillCheckout?sessionId=${sessionId}&atsCodeRepairer=${atsCodeRepairer}&applicationName=${applicationName}`,\r\n      {},\r\n      { responseType: 'text' }\r\n    );\r\n  }\r\n\r\n  CreateCDMBaseWarranties(request: CreateWarrantyRequest): Observable<CreateWarrantyResponse[]> {\r\n    return this.http.post<CreateWarrantyResponse[]>(`${this.config.WARRANTY_URL}Warranty/CreateCDMBaseWarranties`, request);\r\n  }\r\n\r\n  getMandates(): Observable<GetMandateResponse> {\r\n    const request = {\r\n      applicationName: this.store.getApplication(),\r\n      username: this.store.getUserName(),\r\n    };\r\n    return this.http.post<GetMandateResponse>(\r\n      `${this.config.AFTERSALES_URL}Mandate/GetMandateListByConsumer`,\r\n      request\r\n    );\r\n  }\r\n\r\n  getMandatesOnHold(): Observable<GetMandateOnHoldResponse> {\r\n    const request = {\r\n      applicationName: this.store.getApplication(),\r\n      username: this.store.getUserName(),\r\n    };\r\n    return this.http.post<GetMandateOnHoldResponse>(\r\n      `${this.config.MANDATE_URL}/GetMandatesOnHoldByConsumer`,\r\n      request\r\n    );\r\n  }\r\n\r\n\r\n  // getFakeMandates(): Observable<Mandates> {\r\n  //   return this.http.get<Mandates>('/assets/temp/madates.json');\r\n  // }\r\n\r\n  getMandateDetails(mandateId: string): Observable<GetMandateDetailsResponse> {\r\n    const applicationName = this.store.getApplication();\r\n    const userName = this.store.getUserName();\r\n\r\n    return this.http.post<GetMandateDetailsResponse>(\r\n      `${this.config.AFTERSALES_URL}Mandate/GetMandateDetails?mandateId=${mandateId}&lngId=1036&userName=${userName}&applicationName=${applicationName}`,\r\n      {}\r\n    );\r\n  }\r\n\r\n  getDevicesWarranty(): Observable<Products> {\r\n    const request = {\r\n      applicationName: this.store.getApplication(),\r\n      username: this.store.getUserName(),\r\n    };\r\n    return this.http.post<Products>(\r\n      `${this.config.WARRANTY_URL}Warranty/GetDevicesWarranty`, request\r\n    );\r\n  }\r\n  getLatestMandate(): Observable<MandateBeforePaymentResponse> {\r\n    const request = {\r\n      applicationName: this.store.getApplication(),\r\n      username: this.store.getUserName(),\r\n    };\r\n    return this.http.post<MandateBeforePaymentResponse>(\r\n      `${this.config.MANDATE_URL}/GetLatestMandate`, request\r\n    );\r\n  }\r\n\r\n  getLatestPaidMandate(): Observable<MandateBeforePaymentResponse> {\r\n    const applicationName = this.store.getApplication();\r\n    const username = this.store.getUserName();\r\n    const id = this.store.getMandateID();\r\n    return this.http.post<MandateBeforePaymentResponse>(\r\n      `${this.config.MANDATE_URL}/GetMandateBeforePaymentById?username=${username}&applicationName=${applicationName}&id=${id}`, {}\r\n    );\r\n  }\r\n\r\n  deleteContractProduct(request: DeleteContractProductRequest): Observable<DeleteContractProductResponse> {\r\n    return this.http.post<DeleteContractProductResponse>(`${this.config.CONSUMER_URL}/DeleteContractProduct`, request);\r\n  }\r\n\r\n  getDeviceDetails(request: DeviceDetailsRequest): Observable<DeviceDetailsResponse> {\r\n    return this.http.post<DeviceDetailsResponse>(`${this.config.CONSUMER_URL}/GetDeviceDetails?lngId=1036`, request);\r\n  }\r\n\r\n  getMandateById(id: string): Observable<MandateBeforePaymentResponse> {\r\n    const applicationName = this.store.getApplication();\r\n    const username = this.store.getUserName();\r\n    return this.http.post<MandateBeforePaymentResponse>(\r\n      `${this.config.MANDATE_URL}/GetMandateBeforePaymentById?username=${username}&applicationName=${applicationName}&id=${id}`, {}\r\n    );\r\n  }\r\n\r\n  GetColissimoLabelByMandate(id: string): Observable<any> {\r\n    const applicationName = this.store.getApplication();\r\n    const username = this.store.getUserName();\r\n    return this.http.post<any>(\r\n      `${this.config.AFTERSALES_URL}Mandate/GetColissimoLabelByMandate?username=${username}&applicationName=${applicationName}&mandateId=${id}`, {}\r\n    );\r\n  }\r\n  deleteMandateBeforePayment(id: string) {\r\n    const applicationName = this.store.getApplication();\r\n    const username = this.store.getUserName();\r\n    return this.http.delete<MandateBeforePaymentResponse>(\r\n      `${this.config.MANDATE_URL}/DeleteMandateBeforePayment?mandateId=${id}&userName=${username}&applicationName=${applicationName}`, {}\r\n    );\r\n  }\r\n}\r\n","import { Injectable } from '@angular/core';\r\ndeclare var google: any;\r\n\r\n@Injectable({\r\n    providedIn: 'root'\r\n})\r\nexport class GooglePlacesService {\r\n\r\n    constructor() { }\r\n\r\n\r\n    getPlacePredictions(query: string): Promise<google.maps.places.AutocompletePrediction[]> {\r\n        return new Promise((resolve, reject) => {\r\n            const service = new google.maps.places.AutocompleteService();\r\n            const request = {\r\n                input: query,\r\n                types: ['address'],\r\n                fields: ['address_components', 'geometry'],\r\n                componentRestrictions: { country: 'fr' },\r\n            };\r\n\r\n            service.getPlacePredictions(request, (predictions: google.maps.places.AutocompletePrediction[], status: google.maps.places.PlacesServiceStatus) => {\r\n                if (status !== google.maps.places.PlacesServiceStatus.OK) {\r\n                    reject(status);\r\n                } else {\r\n                    resolve(predictions || []);\r\n                }\r\n            });\r\n        });\r\n    }\r\n\r\n    getPlaceDetails(placeId: string): Promise<any> {\r\n        return new Promise((resolve, reject) => {\r\n            const service = new google.maps.places.PlacesService(document.createElement('div'));\r\n            const request = {\r\n                placeId: placeId,\r\n                fields: ['address_components', 'geometry'],\r\n            };\r\n\r\n            service.getDetails(request, (place: any, status: string) => {\r\n                if (status !== google.maps.places.PlacesServiceStatus.OK || !place) {\r\n                    reject('Error fetching place details');\r\n                }\r\n                resolve(place);\r\n            });\r\n        });\r\n    }\r\n\r\n\r\n\r\n    isValidAddress(place: any): boolean {\r\n        if (!place?.address_components) return false;\r\n\r\n        let hasZip = false;\r\n        let hasCity = false;\r\n\r\n        for (const component of place.address_components) {\r\n            const componentType = component.types?.[0];\r\n            if (componentType === 'postal_code' && component.long_name) {\r\n                hasZip = true;\r\n            } else if (componentType === 'locality' && component.long_name) {\r\n                hasCity = true;\r\n            }\r\n            if (hasZip && hasCity) return true;\r\n        }\r\n        return false;\r\n    }\r\n\r\n\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n    providedIn: 'root'\r\n})\r\nexport class CookieService {\r\n\r\n    setCookie(name: string, value: string, options: {\r\n        expires?: Date;\r\n        maxAge?: number;\r\n        path?: string;\r\n        domain?: string;\r\n        secure?: boolean;\r\n        sameSite?: 'Strict' | 'Lax' | 'None';\r\n        httpOnly?: boolean;\r\n    } = {}): void {\r\n        let cookieString = `${name}=${encodeURIComponent(value)}`;\r\n\r\n        if (options.expires) {\r\n            cookieString += `; expires=${options.expires.toUTCString()}`;\r\n        }\r\n\r\n        if (options.maxAge) {\r\n            cookieString += `; max-age=${options.maxAge}`;\r\n        }\r\n\r\n        if (options.path) {\r\n            cookieString += `; path=${options.path}`;\r\n        }\r\n\r\n        if (options.domain) {\r\n            cookieString += `; domain=${options.domain}`;\r\n        }\r\n\r\n        if (options.secure) {\r\n            cookieString += `; secure`;\r\n        }\r\n\r\n        if (options.sameSite) {\r\n            cookieString += `; samesite=${options.sameSite}`;\r\n        }\r\n\r\n        document.cookie = cookieString;\r\n    }\r\n\r\n    getCookie(name: string): string | null {\r\n        const nameEQ = name + '=';\r\n        const ca = document.cookie.split(';');\r\n\r\n        for (let i = 0; i < ca.length; i++) {\r\n            let c = ca[i];\r\n            while (c.charAt(0) === ' ') c = c.substring(1, c.length);\r\n            if (c.indexOf(nameEQ) === 0) {\r\n                return decodeURIComponent(c.substring(nameEQ.length, c.length));\r\n            }\r\n        }\r\n        return null;\r\n    }\r\n\r\n    deleteCookie(name: string, path: string = '/', domain?: string): void {\r\n        let cookieString = `${name}=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=${path}`;\r\n\r\n        if (domain) {\r\n            cookieString += `; domain=${domain}`;\r\n        }\r\n\r\n        document.cookie = cookieString;\r\n    }\r\n\r\n    getAllCookies(): { [key: string]: string } {\r\n        const cookies: { [key: string]: string } = {};\r\n        const ca = document.cookie.split(';');\r\n\r\n        for (let i = 0; i < ca.length; i++) {\r\n            let c = ca[i];\r\n            while (c.charAt(0) === ' ') c = c.substring(1, c.length);\r\n            const eqIndex = c.indexOf('=');\r\n            if (eqIndex > 0) {\r\n                const name = c.substring(0, eqIndex);\r\n                const value = decodeURIComponent(c.substring(eqIndex + 1));\r\n                cookies[name] = value;\r\n            }\r\n        }\r\n\r\n        return cookies;\r\n    }\r\n}\r\n","// services/auth.service.ts\r\nimport { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpErrorResponse } from '@angular/common/http';\r\nimport { BehaviorSubject, Observable, throwError } from 'rxjs';\r\nimport { catchError, tap } from 'rxjs/operators';\r\nimport { Router } from '@angular/router';\r\nimport { RoutesPaths } from '../enums/routePaths';\r\nimport { CookieService } from './cookie.service';\r\nimport { LoginRequest } from '../models/request/login.request';\r\nimport { LoginResponse } from '../models/response/login.response';\r\nimport { Role } from '../enums/roles';\r\nimport { DataStoreService } from './data-store.service';\r\nimport { Inject } from '@angular/core';\r\nimport { LIB_CONFIG, LibConfig } from '../config.token';;\r\n\r\n@Injectable({\r\n    providedIn: 'root'\r\n})\r\nexport class SecurityCookieService {\r\n    private currentUserSubject = new BehaviorSubject<LoginResponse | null>(null);\r\n    public currentUser$ = this.currentUserSubject.asObservable();\r\n    // Cookie names\r\n    private readonly ACCESS_TOKEN_COOKIE = 'accessToken';\r\n    private readonly REFRESH_TOKEN_COOKIE = 'refreshToken';\r\n    private readonly USER_DATA_COOKIE = 'userData';\r\n\r\n    constructor(\r\n        private http: HttpClient,\r\n        private router: Router,\r\n        private cookieService: CookieService,\r\n        private store: DataStoreService,\r\n        @Inject(LIB_CONFIG) private config: LibConfig\r\n    ) {\r\n        // Check if user is already logged in on service initialization\r\n        this.initializeAuthState();\r\n    }\r\n\r\n    private initializeAuthState(): void {\r\n        const token = this.getToken();\r\n        const userData = this.getStoredUserData();\r\n        if (token && userData) {\r\n            try {\r\n                const user: LoginResponse = JSON.parse(userData);\r\n                if (this.isTokenValid(token)) {\r\n                    this.currentUserSubject.next(user);\r\n                } else {\r\n                    this.logout();\r\n                }\r\n            } catch (error) {\r\n                this.logout();\r\n            }\r\n        }\r\n    }\r\n\r\n    loginCDM(credentials: Omit<LoginRequest, 'applicationName'>): Observable<LoginResponse> {\r\n        const loginRequest: LoginRequest = {\r\n            ...credentials,\r\n            applicationName: this.store.getApplication()\r\n        };\r\n\r\n        return this.http.post<LoginResponse>(`${this.config.SECURITY_URL}/Account/Login`, loginRequest, {\r\n        })\r\n            .pipe(\r\n                tap(response => {\r\n                    if (response.result) {\r\n                        this.setSession(response);\r\n                    }\r\n                }),\r\n                catchError(this.handleError)\r\n            );\r\n    }\r\n\r\n    isAuthenticated(): boolean {\r\n        const applicationName = this.store.getApplication();\r\n\r\n        if (applicationName == 'BoschConsumerPortal') {\r\n            const token = this.cookieService.getCookie(this.ACCESS_TOKEN_COOKIE);\r\n            return token !== null && this.isTokenValid(token);\r\n        }\r\n        else {\r\n            const rememberMe = this.store.get_cui_eco_rm();\r\n            if (rememberMe == 'true') {\r\n                const token = this.cookieService.getCookie(this.ACCESS_TOKEN_COOKIE);\r\n                return token !== null && this.isTokenValid(token);\r\n            } else {\r\n                const token = this.store.get_cui_eco_token();\r\n                return token !== null && this.isTokenValid(token);\r\n            }\r\n        }\r\n\r\n    }\r\n\r\n    getToken(): string | null {\r\n        const applicationName = this.store.getApplication();\r\n\r\n        if (applicationName == 'BoschConsumerPortal') {\r\n            return this.cookieService.getCookie(this.ACCESS_TOKEN_COOKIE);\r\n        }\r\n        else if(applicationName == 'AgoraConsumerPortal') {\r\n            const rememberMe = this.store.get_cui_eco_rm();\r\n            if (rememberMe == 'true') {\r\n                return this.cookieService.getCookie(this.ACCESS_TOKEN_COOKIE);\r\n            } else {\r\n                return this.store.get_cui_eco_token();\r\n            }\r\n        }else return null\r\n\r\n\r\n    }\r\n\r\n\r\n    login({ userName, password }: { userName: string, password: string }): Observable<LoginResponse> {\r\n        const loginRequest: LoginRequest = {\r\n            userName: userName,\r\n            password: password,\r\n            applicationName: this.store.getApplication()\r\n        };\r\n       \r\n        return this.http.post<LoginResponse>(`${this.config.SECURITY_URL}/Account/Login`, loginRequest, {\r\n        })\r\n            .pipe(\r\n                tap(response => {\r\n                    if (response.result) {\r\n                      const rememberMe = this.store.get_cui_eco_rm();\r\n                      if(rememberMe === 'true'){\r\n                         this.setSession(response);\r\n                      }else {\r\n                         this.setTempSession(response);\r\n                          this.cookieService.deleteCookie(this.USER_DATA_COOKIE);\r\n                          this.cookieService.deleteCookie(this.ACCESS_TOKEN_COOKIE);\r\n                          this.cookieService.deleteCookie(this.REFRESH_TOKEN_COOKIE);       \r\n                      }\r\n                    }\r\n                }),\r\n                catchError(this.handleError)\r\n            );\r\n    }\r\n    private setTempSession(authResult: LoginResponse): void {\r\n         this.store.set_cui_eco_token(authResult.accessToken, authResult.refreshToken);\r\n\r\n        const user: LoginResponse = {\r\n            userName: authResult.userName,\r\n            byEmail: authResult.byEmail,\r\n            role: authResult.role as Role,\r\n            accessToken: authResult.accessToken,\r\n            refreshToken: authResult.refreshToken,\r\n            mobilePhoneNumber: authResult.mobilePhoneNumber,\r\n            consumerDataId: authResult.consumerDataId,\r\n            result: authResult.result,\r\n            errors: authResult.errors\r\n        };\r\n        this.currentUserSubject.next(user);\r\n       \r\n           const userDataForStorage = {\r\n            userName: user.userName,\r\n            byEmail: user.byEmail,\r\n            role: user.role,\r\n            mobilePhoneNumber: user.mobilePhoneNumber,\r\n            consumerDataId: user.consumerDataId,\r\n            result: user.result,\r\n            errors: user.errors\r\n        };\r\n        this.store.set_cui_eco_user_data(JSON.stringify(userDataForStorage));  \r\n    }\r\n    private setSession(authResult: LoginResponse): void {\r\n        const user: LoginResponse = {\r\n            userName: authResult.userName,\r\n            byEmail: authResult.byEmail,\r\n            role: authResult.role as Role,\r\n            accessToken: authResult.accessToken,\r\n            refreshToken: authResult.refreshToken,\r\n            mobilePhoneNumber: authResult.mobilePhoneNumber,\r\n            consumerDataId: authResult.consumerDataId,\r\n            result: authResult.result,\r\n            errors: authResult.errors\r\n        };\r\n\r\n        // Calculate expiration time (default 24 hours if not specified in token)\r\n        const tokenExpiry = this.getTokenExpiry(authResult.accessToken);\r\n        const expirationDate = new Date(tokenExpiry * 1000);\r\n\r\n        // Cookie options for security\r\n        const cookieOptions = {\r\n            expires: expirationDate,\r\n            path: '/',\r\n            secure: window.location.protocol === 'https:', // Only send over HTTPS in production\r\n            sameSite: 'Strict' as const // CSRF protection\r\n        };\r\n\r\n        // Store tokens in secure cookies\r\n        this.cookieService.setCookie(this.ACCESS_TOKEN_COOKIE, authResult.accessToken, cookieOptions);\r\n\r\n        if (authResult.refreshToken) {\r\n            // Refresh token should have longer expiration\r\n            const refreshTokenOptions = {\r\n                ...cookieOptions,\r\n                expires: new Date(Date.now() + 7 * 24 * 60 * 60 * 1000) // 7 days\r\n            };\r\n            this.cookieService.setCookie(this.REFRESH_TOKEN_COOKIE, authResult.refreshToken, refreshTokenOptions);\r\n        }\r\n\r\n        // Store user data (without sensitive token info)\r\n        const userDataForStorage = {\r\n            userName: user.userName,\r\n            byEmail: user.byEmail,\r\n            role: user.role,\r\n            mobilePhoneNumber: user.mobilePhoneNumber,\r\n            consumerDataId: user.consumerDataId,\r\n            result: user.result,\r\n            errors: user.errors\r\n        };\r\n\r\n        this.cookieService.setCookie(this.USER_DATA_COOKIE, JSON.stringify(userDataForStorage), cookieOptions);\r\n\r\n        // Update current user subject\r\n        this.currentUserSubject.next(user);\r\n    }\r\n\r\n    logout(): void {\r\n        // Delete all authentication cookies\r\n        this.cookieService.deleteCookie(this.ACCESS_TOKEN_COOKIE);\r\n        this.cookieService.deleteCookie(this.REFRESH_TOKEN_COOKIE);\r\n        this.cookieService.deleteCookie(this.USER_DATA_COOKIE);\r\n        // Clear current user\r\n        this.currentUserSubject.next(null);\r\n        this.store.clear_cui_eco_token();\r\n        this.store.clear_cui_eco_user_data();\r\n        this.store.set_cui_eco_rm(false);     \r\n        // Redirect to login\r\n        this.router.navigate([RoutesPaths.login]);\r\n    }\r\n\r\n    getStoredUserData(): string | null {\r\n        const applicationName = this.store.getApplication();\r\n        if (applicationName == 'BoschConsumerPortal') {\r\n            return this.cookieService.getCookie(this.USER_DATA_COOKIE);\r\n        }\r\n        else if(applicationName == 'AgoraConsumerPortal') {\r\n            const rememberMe = this.store.get_cui_eco_rm();\r\n            if (rememberMe == 'true') {\r\n                return this.cookieService.getCookie(this.USER_DATA_COOKIE);\r\n            } else {\r\n                return this.store.get_cui_eco_user_data();\r\n            }\r\n        }else return null;\r\n    }\r\n\r\n    getCurrentUser(): LoginResponse | null {\r\n        return this.currentUserSubject.value;\r\n    }\r\n\r\n    hasRole(role: string): boolean {\r\n        const user = this.getCurrentUser();\r\n        return user !== null && user.role === role;\r\n    }\r\n    private getTokenExpiry(token: string): number {\r\n        try {\r\n            const payload = JSON.parse(atob(token.split('.')[1]));\r\n            return payload.exp || (Math.floor(Date.now() / 1000) + 24 * 60 * 60); // Default 24 hours\r\n        } catch (error) {\r\n            return Math.floor(Date.now() / 1000) + 24 * 60 * 60; // Default 24 hours\r\n        }\r\n    }\r\n\r\n    private isTokenValid(token: string): boolean {\r\n        if (!token) return false;\r\n\r\n        try {\r\n            const payload = JSON.parse(atob(token.split('.')[1]));\r\n            const currentTime = Math.floor(Date.now() / 1000);\r\n            return payload.exp > currentTime;\r\n        } catch (error) {\r\n            return false;\r\n        }\r\n    }\r\n\r\n    private handleError(error: HttpErrorResponse): Observable<never> {\r\n        let errorMessage = 'Une erreur est survenue';\r\n\r\n        if (error.status === 401) {\r\n            if (error.error.errors?.includes('AccountNotValid')) {\r\n                errorMessage = \"Merci d'activer votre compte\";\r\n            } else if (error.error.errors?.includes('WrongPassword')) {\r\n                errorMessage = 'Mot de passe incorrect';\r\n            } else if (error.error.errors?.includes('ForceChangePassword')) {\r\n                errorMessage = 'Vous devez changer votre mot de passe';\r\n            } else if (error.error.errors?.includes('ForceResetPassword')) {\r\n                errorMessage = 'Vous devez réinitialiser votre mot de passe';\r\n            } else {\r\n                errorMessage = \"Les informations saisies sont incorrectes\";\r\n            }\r\n        }\r\n\r\n        return throwError(() => ({ ...error, message: errorMessage }));\r\n    }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { Inject } from '@angular/core';\r\nimport { LIB_CONFIG, LibConfig } from '../config.token';;\r\nimport { IrisSymptomsRequest } from '../models/request/iris-symptom.request';\r\nimport { IrisSymptoms } from '../models/shared/iris-symptom';\r\nimport { HexaPosts } from '../models/shared/hexa-post';\r\nimport { DataStoreService } from './data-store.service';\r\nimport { ProductsXS } from '../models/shared/product';\r\nimport { CreateCDMBaseWarrantiesResponse } from '../models/response/create-mandate.response';\r\nimport { Brands } from '../models/shared/brand';\r\nimport { SecurityCookieService } from './security-cookie.service';\r\nimport { CreateContractProductRequest } from '../models/request/create-contract-product';\r\n\r\n@Injectable({\r\n  providedIn: 'root',\r\n})\r\nexport class ReferentialService {\r\n \r\n  constructor(private http: HttpClient, private readonly store: DataStoreService,\r\n    private readonly securityCookieService : SecurityCookieService,\r\n    @Inject(LIB_CONFIG) private config: LibConfig\r\n\r\n  ) { }\r\n\r\n  getHexapostes(): Observable<HexaPosts> {\r\n    return this.http.post<HexaPosts>(`${this.config.REF_URL}/GetHexapostesElasticSearch?countryCode=FR`, {});\r\n  }\r\n\r\n  getIrisSymptoms(request: IrisSymptomsRequest): Observable<IrisSymptoms> {\r\n    return this.http.post<IrisSymptoms>(`${this.config.AFTERSALES_URL}AfterSales/GetIrisSymptoms`, request);\r\n  }\r\n\r\n  searchProductByCommercialRef(commercialRef: string): Observable<ProductsXS> {\r\n    const request = {\r\n      applicationName: this.store.getApplication(),\r\n      commercialRef: commercialRef\r\n      //  isPem: true\r\n    }\r\n    return this.http.post<ProductsXS>(`${this.config.WARRANTY_URL}Warranty/SearchProductByCommercialRef`, request);\r\n  }\r\n  // Cuisine eco\r\n  searchProductByBrandAndCommercialRef(commercialRef: string, brandId: number, manufacturerId: number, isSolmis: boolean): Observable<ProductsXS> {\r\n    // const request = {\r\n    //   applicationName: this.store.getApplication(),\r\n    //   userName: this.store.getUserName(),\r\n    //   commercialRef: commercialRef,\r\n    //   brandId: brandId,\r\n    //   manufacturerId: manufacturerId\r\n    // }\r\n    const  applicationName: string = this.store.getApplication();\r\n    const  userName: string = this.store.getUserName();\r\n    let url : string = `${this.config.CONSUMER_REF_URL}/GetAllDevices?applicationName=${applicationName}&userName=${userName}&deviceRef=${commercialRef}`\r\n    if (isSolmis == true) {\r\n      url = `${url}&isSolmis=${isSolmis}&solmisManufacturerId=${manufacturerId}`\r\n    }\r\n    return this.http.post<ProductsXS>(url, {});\r\n  }\r\n  createCDMBaseWarranties(productReference: string, salesDate: string, fileId: string): Observable<CreateCDMBaseWarrantiesResponse[]> {\r\n    const request = {\r\n      fileId: fileId,\r\n      customer: {\r\n        applicationName: this.store.getApplication(),\r\n        userName: this.store.getUserName(),\r\n        title: this.store.getTitle(),\r\n        firstName: this.store.getFirstName(),\r\n        lastName: this.store.getLastName(),\r\n        city: this.store.getCity(),\r\n        address: this.store.getUserAddress(),\r\n        zipPostalCode: this.store.getZip(),\r\n        phoneNumber: this.store.getPhoneNumber(),\r\n        countryCode: '250'\r\n      },\r\n      products: [{\r\n        productReference: productReference,\r\n        salesDate: salesDate\r\n      }]\r\n    }\r\n    return this.http.post<CreateCDMBaseWarrantiesResponse[]>(`${this.config.WARRANTY_URL}Warranty/CreateCDMBaseWarranties`, request);\r\n  }\r\n\r\n\r\n  // Cuisine eco\r\n   getBrands() : Observable<Brands> {\r\n    const user = this.securityCookieService.getCurrentUser();\r\n    const app : string =  this.store.getApplication();\r\n    return this.http.post<Brands>(`${this.config.WARRANTY_URL}Warranty/GetAllBrands?applicationName=${app}&userName=${user?.userName}`,{});\r\n  }\r\n// Cuisine eco\r\n  createContractProduct(req : CreateContractProductRequest) {\r\n  const user = this.securityCookieService.getCurrentUser();\r\n  const app : string =  this.store.getApplication();\r\n  const body  = {\r\n    applicationName: app,\r\n    userName: user?.userName,\r\n    manufacturerId: req.manufacturerId,\r\n    commercialRef: req.commercialRef,\r\n    technicalRef: req.technicalRef,\r\n    brandDes: req.brand,\r\n    familyDes: req.family,\r\n    prdoductDescription: req.fullDescription,\r\n    isPEM: req.isPEM,\r\n    isForSolmis: req.isForSolmis,\r\n    saleDate: req.saleDate\r\n}\r\n    return this.http.post<any>(`${this.config.WARRANTY_URL}Warranty/CreateContractProduct`, body);\r\n}\r\n}\r\n","import { Component, EventEmitter, inject, Input, OnInit, Output } from '@angular/core';\r\nimport { AbstractControl, ControlContainer, FormGroup, ValidationErrors, ValidatorFn, Validators } from '@angular/forms';\r\nimport { AutoCompleteSelectEvent } from 'primeng/autocomplete';\r\nimport { GooglePlacesService } from '../../../services/google-places.service';\r\nimport { ReferentialService } from '../../../services/referential.service';\r\nimport { HexaPosts } from '../../../models/shared/hexa-post';\r\nimport { DataStoreService } from '../../../services/data-store.service';\r\nexport function zipCodeValidator(selectedPlaceDetails: { zip: any; city: any; countryCode?: string; }): ValidatorFn {\r\n  return (control: AbstractControl): ValidationErrors | null => {\r\n    if (control?.value && typeof control.value === 'object') {\r\n      const { zip } = selectedPlaceDetails || {};\r\n      if (selectedPlaceDetails && control.value.zip !== zip) {\r\n        return { zipMismatch: true };\r\n      }\r\n    }\r\n    return null;\r\n  };\r\n}\r\nexport function cityValidator(selectedPlaceDetails: { zip: any; city: any; countryCode?: string; }): ValidatorFn {\r\n  return (control: AbstractControl): ValidationErrors | null => {\r\n    if (control?.value && typeof control.value === 'object') {\r\n      const { city } = selectedPlaceDetails || {};\r\n      if (selectedPlaceDetails && control.value.city !== city) {\r\n        return { cityMismatch: true };\r\n      }\r\n    }\r\n    return null;\r\n  };\r\n}\r\n\r\nexport function addressValidator(isValid: boolean): ValidatorFn {\r\n  return (control: AbstractControl): ValidationErrors | null => {\r\n    return isValid ? null : { invalidControl: true };\r\n  }\r\n}\r\n\r\n@Component({\r\n  selector: 'acf-address-form',\r\n  templateUrl: './address-form.component.html',\r\n  styleUrl: './address-form.component.scss',\r\n  viewProviders: [\r\n    {\r\n      provide: ControlContainer,\r\n      useFactory: () => inject(ControlContainer, { skipSelf: true })\r\n    }\r\n  ],\r\n  standalone: false\r\n})\r\nexport class AddressFormComponent implements OnInit {\r\n  // Google Api Autocomplete\r\n  @Input() submitted!: boolean;\r\n  @Output() predictionSelected = new EventEmitter<any>();\r\n\r\n  predictions!: any[];\r\n  selectedPlaceDetails!: { zip: string; city: string; countryCode: string; };\r\n  addressInvalid: boolean = false;\r\n  filteredZipCodes: HexaPosts = [];\r\n  filteredCities: HexaPosts = [];\r\n  hexaPosts: HexaPosts = [];\r\n  parentContainer = inject(ControlContainer);\r\n\r\n  get parentFormGroup() {\r\n    return this.parentContainer.control as FormGroup;\r\n  }\r\n  constructor(\r\n    private readonly googlePlacesService: GooglePlacesService,\r\n    private readonly referentialService: ReferentialService,\r\n    private readonly store: DataStoreService) {\r\n\r\n  }\r\n  ngOnInit(): void {\r\n    this.getHexaPosts();\r\n    this.initializeZipAndCity();\r\n    this.checkIfPrefilledValuesMatch();\r\n  }\r\n\r\n  checkIfPrefilledValuesMatch() {\r\n    const addressControl = this.parentFormGroup.get('address'); // Access the address form control\r\n\r\n    if (addressControl?.value) {\r\n      this.googlePlacesService\r\n        .getPlacePredictions(addressControl.value)\r\n        .then((predictions) => {\r\n          const predictionPromises = predictions.map((prediction) => {\r\n            return this.googlePlacesService\r\n              .getPlaceDetails(prediction.place_id)\r\n              .then((place) => ({\r\n                predictionDescription: prediction.description,\r\n                place,\r\n              }));\r\n\r\n          });\r\n\r\n          Promise.all(predictionPromises)\r\n            .then((results) => {\r\n\r\n              let isValid = false; // Flag to check if any prediction matches\r\n              for (const { place } of results) {\r\n                if (place) {\r\n\r\n                  const { address_components } = place;\r\n                  let prefilledZip = this.parentFormGroup.value.zip;\r\n                  let prefilledCity = this.parentFormGroup.value.city;\r\n                  const lat = place.geometry?.location?.lat();\r\n                  const lng = place.geometry?.location?.lng();\r\n                  this.store.setLat(lat.toString())\r\n                  this.store.setLng(lng.toString())\r\n                  let googleZip = '';\r\n                  let googleCity = '';\r\n                  let googleCountry = '';\r\n\r\n                  address_components?.forEach(\r\n                    (component: { types: any[]; long_name: string; short_name: string }) => {\r\n                      const componentType = component.types?.[0];\r\n                      if (componentType === 'postal_code') {\r\n\r\n                        googleZip = component.long_name;\r\n                      } else if (componentType === 'locality') {\r\n                        googleCity = component.long_name;\r\n                      } else if (componentType === 'country') {\r\n                        googleCountry = component.short_name;\r\n                      }\r\n                    }\r\n\r\n                  );\r\n                  // Compare using the original autocomplete description\r\n                  if (\r\n                    prefilledZip.zip === googleZip &&\r\n                    prefilledCity.city.toLowerCase() === googleCity.toLowerCase() &&\r\n                    prefilledCity.countryCode.toLowerCase() === googleCountry.toLowerCase()\r\n                  ) {\r\n                    isValid = true; // A match is found, set isValid to true\r\n                    break; // Exit the loop as we found a match\r\n                  }\r\n                }\r\n              }\r\n              // Set addressInvalid based on whether we found a match\r\n              this.addressInvalid = !isValid;\r\n              this.parentFormGroup.get('address')?.setValidators([\r\n                Validators.required,\r\n                addressValidator(isValid)\r\n              ]);\r\n              this.parentFormGroup.get('address')?.updateValueAndValidity();\r\n            })\r\n            .catch((error) => {\r\n              console.error('Error fetching place details:', error);\r\n              this.addressInvalid = true;\r\n              this.parentFormGroup.get('address')?.setValidators([\r\n                Validators.required,\r\n                addressValidator(false)\r\n              ]);\r\n              this.parentFormGroup.get('address')?.updateValueAndValidity();\r\n            });\r\n        })\r\n        .catch((error) => {\r\n          console.error('Error fetching predictions:', error);\r\n          this.addressInvalid = true;\r\n          this.addressInvalid = true; // Default to invalid if error occurs\r\n          this.parentFormGroup.get('address')?.setValidators([\r\n            Validators.required,\r\n            addressValidator(false)\r\n          ]);\r\n          this.parentFormGroup.get('address')?.updateValueAndValidity();\r\n        });\r\n    }\r\n  }\r\n\r\n  //TODO CHECK A FASTER WAY TO CHARGE\r\n  initializeZipAndCity() {\r\n    const zip = this.parentFormGroup.value.zip\r\n    const city = this.parentFormGroup.value.city\r\n    if (zip && city) {\r\n      this.selectedPlaceDetails = zip\r\n      const isNewEntry = !this.hexaPosts.some(option => option.zip === this.parentFormGroup.value.zip && option.city === city);\r\n      if (isNewEntry && zip && city) {\r\n        this.hexaPosts = [...this.hexaPosts, this.selectedPlaceDetails];\r\n      }\r\n\r\n      // Dynamically set the validators for zip and city\r\n      this.parentFormGroup.get('zip')?.setValidators([\r\n        Validators.required,\r\n        zipCodeValidator(this.selectedPlaceDetails)\r\n      ]);\r\n      this.parentFormGroup.get('city')?.setValidators([\r\n        Validators.required,\r\n        cityValidator(this.selectedPlaceDetails)\r\n      ]);\r\n      this.parentFormGroup.get('zip')?.updateValueAndValidity();\r\n      this.parentFormGroup.get('city')?.updateValueAndValidity();\r\n      this.loadZipCodes(this.selectedPlaceDetails); // Trigger dropdown update (lazy)\r\n      this.loadCities(this.selectedPlaceDetails)\r\n    }\r\n  }\r\n\r\n  getHexaPosts() {\r\n    this.referentialService.getHexapostes().subscribe(\r\n      (data) => {\r\n        this.filteredZipCodes = data.slice(0, 30);\r\n        if (this.selectedPlaceDetails) {\r\n          this.filteredZipCodes = [...this.filteredZipCodes, this.selectedPlaceDetails];\r\n        }\r\n        this.hexaPosts = data;\r\n      },\r\n      (error) => {\r\n        console.error('Erreur lors de la récupération des données', error);\r\n      }\r\n    );\r\n  }\r\n\r\n  loadZipCodes(event: any) {\r\n    const zip = event.filters?.zip?.value || '';\r\n    this.filteredCities = this.hexaPosts;\r\n    this.filteredZipCodes = this.hexaPosts.filter((item) =>\r\n      item.zip.toLowerCase().startsWith(zip.toLowerCase())\r\n    );\r\n  }\r\n\r\n  loadCities(event: any) {\r\n    const city: string = event.filters?.city?.value || '';\r\n    const zip: string = this.parentFormGroup.get('zip')?.value?.zip || '';\r\n    this.filteredCities = this.hexaPosts.filter((item) =>\r\n      item.city.toLowerCase().startsWith(city.toLowerCase())\r\n    );\r\n    if (zip.length > 4) {\r\n      this.filteredCities = this.filteredCities.filter(x => x.zip == zip)\r\n    }\r\n  }\r\n\r\n  onChange(e: any) {\r\n    this.parentFormGroup.patchValue({\r\n      city: e.value\r\n    });\r\n    this.parentFormGroup.get('city')?.updateValueAndValidity();\r\n    this.parentFormGroup.get('city')?.markAsTouched();\r\n    this.parentFormGroup.get('city')?.markAsDirty();\r\n  }\r\n\r\n  onClear() {\r\n    this.parentFormGroup.get('city')?.setValue(null);\r\n  }\r\n\r\n  get f() {\r\n    return this.parentFormGroup.controls;\r\n  }\r\n\r\n  displayPredictions($event: { query: any; }) {\r\n    this.addressInvalid = true\r\n    this.parentFormGroup.get('address')?.setValidators([\r\n      Validators.required,\r\n      addressValidator(true)\r\n    ]);\r\n    this.parentFormGroup.get('address')?.updateValueAndValidity();\r\n    const zip = this.parentFormGroup.value.zip\r\n    const city = this.parentFormGroup.value.city\r\n    if (zip && city) {\r\n      this.parentFormGroup.get('city')?.reset();\r\n      this.parentFormGroup.get('zip')?.reset();\r\n      this.selectedPlaceDetails = { zip: '', city: '', countryCode: '' }; // Reset selectedPlaceDetails\r\n    }\r\n    this.googlePlacesService.getPlacePredictions($event.query)\r\n      .then((predictions) => {\r\n        this.predictions = predictions;\r\n\r\n      })\r\n      .catch((status) => {\r\n        this.addressInvalid = true\r\n      });\r\n  }\r\n\r\n  selectPrediction(event: AutoCompleteSelectEvent): void {\r\n    this.parentFormGroup.patchValue({\r\n      address: event.value.description\r\n    });\r\n    const prediction = event.value as google.maps.places.AutocompletePrediction;\r\n    this.googlePlacesService.getPlaceDetails(prediction.place_id).then(place => {\r\n      if (this.googlePlacesService.isValidAddress(place)) {\r\n        this.addressInvalid = false\r\n\r\n        this.processPlaceDetails(place);\r\n        // Extract latitude and longitude from place details\r\n        const location = place.geometry?.location;\r\n        if (location) {\r\n          const lat = location.lat();\r\n          const lng = location.lng();\r\n          this.predictionSelected.emit({ lat, lng, address: event.value.description });\r\n\r\n          // Save latitude and longitude to localStorage\r\n          this.store.setLat(lat.toString())\r\n          this.store.setLng(lng.toString())\r\n          this.store.setAddress(event.value.description)\r\n        }\r\n      }\r\n      else {\r\n        this.addressInvalid = true\r\n        const zip = this.parentFormGroup.value.zip\r\n        const city = this.parentFormGroup.value.city\r\n        if (zip && city) {\r\n          this.parentFormGroup.get('city')?.reset();\r\n          this.parentFormGroup.get('zip')?.reset();\r\n        }\r\n      }\r\n\r\n    })\r\n  }\r\n\r\n  processPlaceDetails(place: google.maps.places.PlaceResult): void {\r\n    let postalCode = '';\r\n    let address1 = '';\r\n    place?.address_components?.forEach(component => {\r\n      const componentType = component.types?.[0];\r\n      if (componentType === 'postal_code') {\r\n        postalCode = component.long_name || '';\r\n      } else if (componentType === 'locality') {\r\n        address1 = component.long_name || '';\r\n      }\r\n    });\r\n\r\n    //Save Selected Place In order to validate city and zip\r\n    this.selectedPlaceDetails = { zip: postalCode, city: address1, countryCode: 'FR' };\r\n    //add valiidator for missing details ; Quai Branly, Paris, France\r\n    // Add to filtered lists and hexaPosts if not already present\r\n    const isNewEntry = !this.hexaPosts.some(option => option.zip === postalCode && option.city === address1);\r\n    if (isNewEntry && postalCode && address1) {\r\n      this.filteredZipCodes = [...this.filteredZipCodes, this.selectedPlaceDetails];\r\n      this.hexaPosts = [...this.hexaPosts, this.selectedPlaceDetails];\r\n      this.filteredCities = [...this.filteredCities, this.selectedPlaceDetails];\r\n    }\r\n\r\n    // Patch form values if the details are valid\r\n    if (postalCode && address1) {\r\n      this.parentFormGroup.patchValue({\r\n        zip: this.selectedPlaceDetails,\r\n        city: this.selectedPlaceDetails,\r\n      });\r\n\r\n      // Dynamically set the validators for zip and city\r\n      this.parentFormGroup.get('zip')?.setValidators([\r\n        Validators.required,\r\n        zipCodeValidator(this.selectedPlaceDetails)\r\n      ]);\r\n      this.parentFormGroup.get('city')?.setValidators([\r\n        Validators.required,\r\n        cityValidator(this.selectedPlaceDetails)\r\n      ]);\r\n      this.parentFormGroup.get('zip')?.updateValueAndValidity();\r\n      this.parentFormGroup.get('city')?.updateValueAndValidity();\r\n      this.loadZipCodes(this.selectedPlaceDetails); // Trigger dropdown update (lazy)\r\n    }\r\n  }\r\n\r\n}","<div class=\"grid\">\r\n    <div class=\"col-12 pt-3 \">\r\n\r\n\r\n        <label class=\"block  font-bold mb-2 required-input\" for=\"address\">Adresse</label>\r\n        <p-autoComplete class=\"w-full\" [style]=\"{'width':'100%'}\" [inputStyle]=\"{'width':'100%'}\"\r\n            [ngClass]=\"{ 'invalid_select':((submitted || f['address'].dirty) && f['address'].errors) ||addressInvalid  }\"\r\n            field=\"description\" [suggestions]=\"predictions\" formControlName=\"address\"\r\n            (completeMethod)=\"displayPredictions($event)\" (onSelect)=\"selectPrediction($event)\">\r\n            <ng-template let-prediction pTemplate=\"item\">\r\n                <div style=\"display:flex;font-size: 12px;\">\r\n                    <i class=\"pi pi-map-marker\"></i>\r\n                    <div style=\"margin-left:10px;\">{{prediction.description}}</div>\r\n                </div>\r\n            </ng-template>\r\n        </p-autoComplete>\r\n\r\n\r\n        <div class=\"acf-invalid-feedback\" *ngIf=\"addressInvalid\">\r\n            <div> L'adresse saisie semble incorrecte. Veuillez choisir une adresse parmi les suggestions ou vérifier les\r\n                informations saisies.</div>\r\n        </div>\r\n\r\n        <div class=\"acf-invalid-feedback\"\r\n            *ngIf=\"(submitted || f['address'].dirty) && f['address'].errors && f['address'].errors['required']\">\r\n            <div *ngIf=\"f['address'].errors['required']\">Ce champ est obligatoire.</div>\r\n        </div>\r\n    </div>\r\n\r\n    <div class=\"col-12 md:col-6 pb-3\">\r\n        <label class=\"block  font-bold mb-2 required-input\" for=\"cp\">Code postal </label>\r\n        <p-dropdown class=\"w-full\" id=\"cp\" formControlName=\"zip\" [options]=\"filteredZipCodes\" optionLabel=\"zip\"\r\n            [filter]=\"true\" [filterBy]=\"'zip'\" [lazy]=\"true\" [virtualScroll]=\"true\" [itemSize]=\"30\"\r\n            (onLazyLoad)=\"loadZipCodes($event)\" emptyFilterMessage=\"Aucun code postal trouvé\" [showClear]=\"true\"\r\n            emptyMessage=\"Aucun code postal trouvé\" (onClear)=\"onClear()\" (onChange)=\"onChange($event)\"\r\n            [ngClass]=\"{ 'acf-invalid-dropdown': (f['zip'].dirty || submitted) && f['zip'].errors }\">\r\n            <ng-template let-cp pTemplate=\"item\">\r\n                <div class=\"flex align-items-center gap-2\">\r\n                    <div> <p-chip>{{ cp.zip }}</p-chip><b></b> {{ cp.city }}</div>\r\n                </div>\r\n            </ng-template>\r\n        </p-dropdown>\r\n        <div class=\"acf-invalid-feedback\" *ngIf=\"(submitted || f['zip'].dirty) && f['zip'].errors\">\r\n            <div *ngIf=\"f['zip'].errors['required']\">Ce champ est obligatoire.</div>\r\n            <div *ngIf=\"f['zip'].errors['zipMismatch']\">Le code postal ne correspond pas à l'adresse sélectionnée.<br />\r\n                <em>Effacez le code postal et la ville, puis ressaisissez-les en choisissant parmi les\r\n                    suggestions.</em>\r\n            </div>\r\n        </div>\r\n    </div>\r\n\r\n    <div class=\"col-12 md:col-6\">\r\n        <label class=\"block font-bold mb-2 required-input\" for=\"city\">Ville </label>\r\n        <p-dropdown class=\"w-full\" id=\"city\" formControlName=\"city\" [options]=\"filteredCities\" optionLabel=\"city\"\r\n            [filter]=\"true\" [filterBy]=\"'city'\" [lazy]=\"true\" [virtualScroll]=\"true\" [itemSize]=\"30\"\r\n            (onLazyLoad)=\"loadCities($event)\" emptyMessage=\"Aucune ville trouvée\" [showClear]=\"true\"\r\n            emptyFilterMessage=\"Aucune ville trouvée\"\r\n            [ngClass]=\"{ 'acf-invalid-dropdown': (f['city'].dirty || submitted) && f['city'].errors }\">\r\n            <ng-template let-c pTemplate=\"item\">\r\n                <div class=\"flex align-items-center\">\r\n                    <div>{{ c.city }} </div>\r\n                </div>\r\n            </ng-template>\r\n        </p-dropdown>\r\n        <div class=\"acf-invalid-feedback\" *ngIf=\"(submitted || f['city'].dirty) && f['city'].errors\">\r\n            <div *ngIf=\"f['city'].errors['required']\">Ce champ est obligatoire.</div>\r\n            <div *ngIf=\"f['city'].errors['cityMismatch']\">La ville ne correspond\r\n                pas à l'adresse sélectionnée.<br />\r\n                <em>Effacez le code postal et la ville, puis ressaisissez-les en choisissant parmi les\r\n                    suggestions.</em>\r\n            </div>\r\n        </div>\r\n\r\n    </div>\r\n</div>","import { Component, Input, OnInit, Optional } from '@angular/core';\r\nimport {\r\n  FormGroup,\r\n  FormBuilder,\r\n  Validators,\r\n  FormControl,\r\n} from '@angular/forms';\r\nimport { AccountService } from '../../../../services/account.service';\r\nimport { PasswordValidator } from '../../../../validators/password.validator';\r\nimport { RoutesPaths } from '../../../../enums/routePaths';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { RegisterRequest } from '../../../../models/request/register.request';\r\nimport { MessageService } from 'primeng/api';\r\nimport { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';\r\nimport { DataStoreService } from '../../../../services/data-store.service';\r\nimport { MandateService } from '../../../../services/mandate.service';\r\nimport { CreateMandateBeforePaymentRequest } from '../../../../models/request/create-mandate.request';\r\n\r\n@Component({\r\n  selector: 'acf-register-from',\r\n  templateUrl: './register-from.component.html',\r\n  styleUrl: './register-from.component.scss',\r\n  providers: [MessageService],\r\n  standalone: false,\r\n})\r\nexport class RegisterFromComponent implements OnInit {\r\n  @Input() appName: string = '';\r\n  @Input() redirectUrl: string = '';\r\n  applicationName: string = '';\r\n  gender = [\r\n    {\r\n      value: 'Monsieur',\r\n      key: '001',\r\n    },\r\n    {\r\n      value: 'Madame',\r\n      key: '002',\r\n    },\r\n  ];\r\n  registerForm: FormGroup;\r\n  loading = false;\r\n  submitted = false;\r\n  emailInputIcon: string = '';\r\n  phoneInputIcon: string = '';\r\n  showPassword: boolean = false;\r\n  showConfirmPassword: boolean = false;\r\n  registerFromSteps: boolean = false;\r\n\r\n  constructor(\r\n    private readonly formBuilder: FormBuilder,\r\n    private readonly accountService: AccountService,\r\n    private readonly router: Router,\r\n    private readonly route: ActivatedRoute,\r\n    private readonly messageService: MessageService,\r\n    private readonly store: DataStoreService,\r\n    @Optional() public ref: DynamicDialogRef,\r\n    @Optional() public config: DynamicDialogConfig,\r\n    private readonly mandateService: MandateService\r\n  ) {\r\n    this.applicationName = this.store.getApplication();\r\n    this.registerForm = this.onItniFrom();\r\n    if (config?.data?.registerFromSteps) {\r\n      this.registerFromSteps = config.data.registerFromSteps;\r\n      this.loadFormFromLocalStorage();\r\n    } else {\r\n      this.registerFromSteps = false;\r\n    }\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.route.queryParams.subscribe((params) => {\r\n      const key = params['key']?.replace(/ /g, '+');\r\n      if (key) {\r\n        this.accountService.validateCDMCustomer(key).subscribe({\r\n          next: (response) => {\r\n            if (response.result) {\r\n              this.router.navigate([`/${RoutesPaths.registerSuccess}`]);\r\n            } else if (response.errors && response.errors.length > 0) {\r\n              switch (response.errors[0]) {\r\n                case 'InvalidInput':\r\n                case 'EmailAndCodeDontMatch':\r\n                case 'LinkExpired':\r\n                  this.router.navigate([`/${RoutesPaths.registerError}`]);\r\n                  break;\r\n                case 'LinkIsAlreadyUsed':\r\n                  this.router.navigate([\r\n                    `/${RoutesPaths.registerlinkAlreadyUsedError}`,\r\n                  ]);\r\n                  break;\r\n                default:\r\n                  this.router.navigate([`/${RoutesPaths.registerError}`]);\r\n                  break;\r\n              }\r\n            } else {\r\n              this.router.navigate([`/${RoutesPaths.registerError}`]);\r\n            }\r\n          },\r\n          error: () => {\r\n            this.router.navigate([`/${RoutesPaths.registerError}`]);\r\n          },\r\n        });\r\n      }\r\n    });\r\n  }\r\n\r\n  onItniFrom() {\r\n    return this.formBuilder.group(\r\n      {\r\n        title: ['', Validators.required],\r\n        password: [\r\n          '',\r\n          [\r\n            Validators.required,\r\n            Validators.pattern(\r\n              /^(?=\\D*\\d)(?=[^a-z]*[a-z])(?=[^A-Z]*[A-Z])(?=.*[$@$!%*?&.+-/(){}\"']).{8,}$/\r\n            ),\r\n          ],\r\n        ],\r\n        confirmPassword: ['', Validators.required],\r\n        firstName: ['', Validators.required],\r\n        lastName: ['', Validators.required],\r\n        city: [null, Validators.required],\r\n        address: ['', Validators.required],\r\n        zip: [null, Validators.required],\r\n        phoneNumber: new FormControl('', [\r\n          Validators.required,\r\n          Validators.pattern(/^[1-7]([\\s\\d]*\\d){8}$/),\r\n        ]),\r\n        email: new FormControl('', [\r\n          Validators.required,\r\n          Validators.email,\r\n          Validators.pattern('^[A-Za-z0-9._%+-]+@[a-z0-9.-]+\\\\.[a-z]{2,4}$'),\r\n        ]),\r\n        ischecked: [false],\r\n      },\r\n      {\r\n        validator: PasswordValidator('password', 'confirmPassword'),\r\n      }\r\n    );\r\n  }\r\n\r\n  loadFormFromLocalStorage(): void {\r\n    const savedFormData = this.store.getStep3Form();\r\n    if (savedFormData) {\r\n      this.registerForm.patchValue(savedFormData);\r\n      this.checkEmail();\r\n      this.checkPhone();\r\n    }\r\n  }\r\n\r\n  checkEmail() {\r\n    const email = this.registerForm.get('email');\r\n    if (email && email.status == 'VALID' && !email.errors) {\r\n      this.emailInputIcon = 'pi pi-spinner pi-spin';\r\n      this.accountService.checkEmail(email.value).subscribe(\r\n        (data) => {\r\n          this.emailInputIcon = data ? 'pi pi-times' : 'pi pi-check';\r\n        },\r\n        (_) => (this.emailInputIcon = 'pi pi-times')\r\n      );\r\n    } else {\r\n      this.emailInputIcon = '';\r\n    }\r\n  }\r\n\r\n  checkPhone() {\r\n    let rawValue = this.registerForm.value.phoneNumber.replace(/\\s+/g, ''); // Remove spaces\r\n    this.registerForm.get('phoneNumber')?.setValue(rawValue);\r\n    const phoneNumber = this.registerForm.get('phoneNumber');\r\n    if (phoneNumber && phoneNumber.status == 'VALID' && !phoneNumber.errors) {\r\n      this.phoneInputIcon = 'pi pi-spinner pi-spin';\r\n      this.accountService\r\n        .checkPhoneNumber(phoneNumber.value, this.applicationName)\r\n        .subscribe(\r\n          (data) => {\r\n            this.phoneInputIcon = data ? 'pi pi-times' : 'pi pi-check';\r\n          },\r\n          (_) => (this.phoneInputIcon = '')\r\n        );\r\n    } else {\r\n      this.phoneInputIcon = '';\r\n    }\r\n  }\r\n\r\n  onSubmit(): void {\r\n    this.submitted = true;\r\n    const isFromValid =\r\n      this.registerForm.valid &&\r\n      this.registerForm.get('ischecked')?.value === true &&\r\n      this.emailInputIcon === 'pi pi-check' &&\r\n      this.phoneInputIcon === 'pi pi-check';\r\n    if (isFromValid) {\r\n      this.loading = true;\r\n      const registerRequest: RegisterRequest = {\r\n        applicationName: this.applicationName,\r\n        title: this.registerForm.get('title')?.value,\r\n        password: this.registerForm.get('password')?.value,\r\n        firstName: this.registerForm.get('firstName')?.value,\r\n        lastName: this.registerForm.get('lastName')?.value,\r\n        city: this.registerForm.get('city')?.value.city,\r\n        address: this.registerForm.get('address')?.value,\r\n        zipPostalCode: this.registerForm.get('zip')?.value.zip,\r\n        phoneNumber: this.registerForm\r\n          .get('phoneNumber')\r\n          ?.value.replace(/\\s/g, ''),\r\n        email: this.registerForm.get('email')?.value,\r\n        username: this.registerForm.get('email')?.value,\r\n        countryCode: '250',\r\n      };\r\n      this.accountService.createAccount(registerRequest).subscribe(\r\n        (response) => {\r\n          if (response.result === true) {\r\n            // this.messageService.add({ severity: 'success', detail: 'Votre compte a été créé avec succès. Veuillez vérifier votre email pour finaliser l\\'activation.' });\r\n            if (this.registerFromSteps) {\r\n              this.closePopup();\r\n              this.router.navigate([`/${RoutesPaths.registerCheckInbox}`]);\r\n              this.createMandateBeforePayment(registerRequest.email);\r\n              this.store.deleteFormsFromLocalStorage();\r\n            } else {\r\n              this.router.navigate([`/${RoutesPaths.registerCheckInbox}`]);\r\n            }\r\n          } else {\r\n            this.messageService.add({\r\n              severity: 'error',\r\n              detail:\r\n                'Une erreur est survenue lors de la création de votre compte. Veuillez réessayer ou contacter le support si le problème persiste.',\r\n            });\r\n          }\r\n          this.loading = false;\r\n        },\r\n        (error) => {\r\n          this.messageService.add({\r\n            severity: 'error',\r\n            detail:\r\n              'Une erreur est survenue lors de la création de votre compte. Veuillez réessayer ou contacter le support si le problème persiste.',\r\n          });\r\n          this.loading = false;\r\n        }\r\n      );\r\n      this.registerForm = this.onItniFrom();\r\n      this.submitted = false;\r\n      this.emailInputIcon = '';\r\n      this.phoneInputIcon = '';\r\n    }\r\n  }\r\n\r\n  login() {\r\n    this.router.navigate([RoutesPaths.login]);\r\n  }\r\n\r\n  togglePasswordVisibility(): void {\r\n    this.showPassword = !this.showPassword;\r\n  }\r\n\r\n  toggleConfirmPasswordVisibility(): void {\r\n    this.showConfirmPassword = !this.showConfirmPassword;\r\n  }\r\n\r\n  get f() {\r\n    return this.registerForm.controls;\r\n  }\r\n\r\n  closePopup() {\r\n    this.ref.close();\r\n  }\r\n\r\n  createMandateBeforePayment(UserEmail: string) {\r\n    const step1Values = this.store.getStep1Form();\r\n    const step2Values = this.store.getStep2Form();\r\n    const step3Values = this.store.getStep3Form();\r\n    const step4Values = this.store.getStep4Form();\r\n    this.submitted = true;\r\n    const today = new Date();\r\n\r\n    // Warranty check logic directly in interventionTypeId\r\n    // const purchaseDate = new Date(step1Values.date);\r\n    // const yearsDifference = today.getFullYear() - purchaseDate.getFullYear();\r\n    // const isDateInFuture = today < purchaseDate;\r\n    // const interventionTypeId = !isDateInFuture && yearsDifference <= 2 ? 1 : 0;\r\n    const oof = this.store.isOutWaranty();  \r\n    const interventionTypeId = oof ? 0 : 1;\r\n    const createMandateBeforePayment: CreateMandateBeforePaymentRequest = {\r\n      applicationName: this.store.getApplication(),\r\n      clientCode: step4Values.clientCode, //! STEP 4\r\n      orderMission: (Date.now() + Math.floor(Math.random() * 1000))\r\n        .toString()\r\n        .slice(0, 10),\r\n      interventionTypeId: interventionTypeId,\r\n      userName: UserEmail, //& User Email in Register Form\r\n      brandCode: step1Values.brand, //STEP 1\r\n      weight: step4Values.weight, //todo\r\n      commercialRef: step1Values.refComm, //STEP 1\r\n      technicalRef: step1Values.refTech,\r\n      fileId: step1Values.fileId, //STEP 1\r\n      familyCode: step1Values.family, //STEP 1\r\n      labelRef: step1Values.fullDescription, //STEP 1\r\n      purchaseDate: step1Values.date, //STEP 1\r\n      irisSymptom: step2Values.symptom, //?STEP 2\r\n      failureDescription: step2Values.comment, //?STEP 2\r\n      createDate: new Date(today.toISOString()),\r\n      repairPrice: step4Values.repairPrice, //! STEP 4\r\n      shippingPrice: step4Values.shippingPrice, //! STEP 4\r\n      consumer: {\r\n        title: step3Values.title, //&STEP 3\r\n        lastName: step3Values.lastName, //&STEP 3\r\n        firstName: step3Values.firstName, //&STEP 3\r\n        address1: step3Values.address, //&STEP 3\r\n        zip: step3Values.zip.zip, //&STEP 3\r\n        city: step3Values.city.city, //&STEP 3\r\n        countryCode: step3Values.countryCode, //&STEP 3\r\n        countryLabel: 'FR',\r\n        phoneNumber: step3Values.phoneNumber, //&STEP 3\r\n        email: step3Values.email, //& Email saisie dans le formulaire\r\n      },\r\n      pickupInfo:\r\n        step4Values.pickUpChoice === 'FROMSTORE'\r\n          ? {\r\n              carrierCode: step4Values.carrierCode,\r\n              pickupChoice: step4Values.pickUpChoice,\r\n              fromName: step4Values.fromName,\r\n              fromAddress1: step4Values.fromAddress1,\r\n              fromZip: step4Values.fromZip,\r\n              fromCity: step4Values.fromCity,\r\n              fromCountryCode: step4Values.fromCountryCode,\r\n              fromPhone: step4Values.fromPhone,\r\n              toName: step4Values.toName,\r\n              toAddress1: step4Values.toAddress1,\r\n              toZip: step4Values.toZip,\r\n              toCity: step4Values.toCity,\r\n              toCountryCode: step4Values.toCountryCode,\r\n              toPhone: step4Values.toPhone,\r\n            }\r\n          : null, // If not 'FROMSTORE' (Poste), send a null object\r\n      ecoSupport: step4Values.ecoSupport, //! STEP 4\r\n      currencyCode: step4Values.currencyCode, //! STEP 4\r\n      currencySymbol: step4Values.currencySymbol, //! STEP 4\r\n      atsCodeForStripe: step4Values.atsCode, //! STEP 4\r\n    };\r\n    this.mandateService\r\n      .createMandateBeforePayment(createMandateBeforePayment)\r\n      .subscribe((response) => {\r\n        // this.store.setMandateID(response.mandateId);\r\n        this.store.setOmNumber(createMandateBeforePayment.orderMission);\r\n      });\r\n  }\r\n}\r\n","<div class=\"register-form\">\r\n  <form [formGroup]=\"registerForm\">\r\n\r\n    <div class=\"text-left mb-5 flex\">\r\n      <div class=\" text-2xl font-bold \">Créer un compte</div>\r\n      @if(this.registerFromSteps){ <img class=\"img ml-auto cursor-pointer\" (click)=\"closePopup()\"\r\n        [src]=\"'assets/' + this.applicationName + '/close-icon.svg'\" alt=\"close\">\r\n      }\r\n    </div>\r\n\r\n\r\n    <div class=\"grid\">\r\n      <div class=\"col-12 md:col-6\">\r\n        <label class=\"block font-bold mb-2 required-input\" for=\"firstName\">Civilité </label>\r\n        <p-dropdown [style]=\"{'width':'100%','border-radius':'0cm'}\" formControlName=\"title\" optionValue=\"key\"\r\n          optionLabel=\"value\" [options]=\"gender\" [ngStyle]=\"{'width.em': 100}\"\r\n          [ngClass]=\"{ 'acf-invalid-dropdown':(submitted || f['title'].dirty) && f['title'].errors }\"></p-dropdown>\r\n        <div *ngIf=\"(submitted || f['title'].dirty) && f['title'].errors\" class=\"acf-invalid-feedback\">\r\n          <div *ngIf=\"f['title'].errors['required']\"> Ce champ est obligatoire.\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n    <div class=\"grid\">\r\n\r\n      <div class=\"col-12 md:col-6\">\r\n        <label class=\"block font-bold mb-2 required-input\" for=\"firstName\">Prénom </label>\r\n        <input pInputText class=\"w-full acf-input\" id=\"firstName\" formControlName=\"firstName\"\r\n          [ngClass]=\"{ 'acf-invalid-input':(submitted || f['firstName'].dirty) && f['firstName'].errors }\" />\r\n        <div class=\"acf-invalid-feedback\" *ngIf=\"(submitted || f['firstName'].dirty) && f['firstName'].errors\">\r\n          <div *ngIf=\"f['firstName'].errors['required']\">Ce champ est obligatoire.</div>\r\n        </div>\r\n      </div>\r\n\r\n      <div class=\"col-12 md:col-6\">\r\n        <label class=\"block font-bold mb-2 required-input\" for=\"lastName\">Nom </label>\r\n        <input pInputText class=\"w-full acf-input\" id=\"lastName\" formControlName=\"lastName\"\r\n          [ngClass]=\"{ 'acf-invalid-input':(submitted || f['lastName'].dirty) && f['lastName'].errors }\" />\r\n        <div class=\"acf-invalid-feedback\" *ngIf=\"(submitted || f['lastName'].dirty) && f['lastName'].errors\">\r\n          <div *ngIf=\"f['lastName'].errors['required']\">Ce champ est obligatoire.</div>\r\n        </div>\r\n      </div>\r\n\r\n      <div class=\"col-12 md:col-6\">\r\n        <label class=\"block font-bold mb-2 required-input\" for=\"email\">Email </label>\r\n        <p-iconField iconPosition=\"right\">\r\n          <input pInputText class=\"w-full acf-input\" id=\"email\" formControlName=\"email\" (blur)=\"checkEmail()\"\r\n            [ngClass]=\"{ 'acf-invalid-input': (submitted || f['email'].dirty) && (f['email'].errors || emailInputIcon === 'pi pi-times') }\" />\r\n          <p-inputIcon [styleClass]=\"emailInputIcon\" />\r\n\r\n        </p-iconField>\r\n        <div class=\"acf-invalid-feedback\" *ngIf=\"(submitted || f['email'].dirty) && f['email'].errors\">\r\n          <div *ngIf=\"f['email'].errors['required']\">Ce champ est obligatoire.</div>\r\n          <div *ngIf=\"f['email'].errors['pattern']\">Email incorrect. </div>\r\n        </div>\r\n        <div class=\"acf-invalid-feedback\" *ngIf=\"emailInputIcon === 'pi pi-times'\">\r\n          Adresse e-mail déjà existante.\r\n        </div>\r\n      </div>\r\n\r\n      <div class=\"col-12 md:col-6\">\r\n        <label class=\"block font-bold mb-2 required-input\" for=\"phoneNumber\">Téléphone </label>\r\n        <div class=\"flex\">\r\n          <input type=\"text\" pInputText value=\"+33\" class=\"acf-input-prefix acf-input\" readonly>\r\n          <p-iconField iconPosition=\"right\" class=\"w-full\">\r\n            <p-inputMask id=\"phoneNumber\" formControlName=\"phoneNumber\" mask=\"9 99 99 99 99\"\r\n              class=\"w-full acf-input-mask\" slotChar=\"_\" (onBlur)=\"checkPhone()\"\r\n              [ngClass]=\"{ 'acf-invalid-inputmask': (submitted || f['phoneNumber'].dirty) && (f['phoneNumber'].errors || phoneInputIcon === 'pi pi-times') }\"></p-inputMask>\r\n            <p-inputIcon [styleClass]=\"phoneInputIcon\" />\r\n\r\n          </p-iconField>\r\n        </div>\r\n        <div *ngIf=\"(f['phoneNumber'].dirty || submitted) && f['phoneNumber'].errors\" class=\"acf-invalid-feedback\">\r\n          <div *ngIf=\"f['phoneNumber'].errors['required']\"> Ce champ est obligatoire. </div>\r\n          <div *ngIf=\"f['phoneNumber'].errors['pattern']\">Le numéro de téléphone doit être un numéro français valide,\r\n            commencer par 1, 2, 3, 4, 5, 6 ou 7 et contenir exactement 9 chiffres. </div>\r\n        </div>\r\n        <div class=\"acf-invalid-feedback\" *ngIf=\"phoneInputIcon === 'pi pi-times'\"> Numéro de téléphone déjà existant.\r\n        </div>\r\n      </div>\r\n    </div>\r\n\r\n    <acf-address-form [submitted]=\"submitted\"></acf-address-form>\r\n\r\n    <div class=\"grid\">\r\n\r\n      <div class=\"col-12 md:col-6\">\r\n        <label class=\"block font-bold mb-2 required-input\" for=\"password\">Mot de passe </label>\r\n        <p-iconField iconPosition=\"right\">\r\n\r\n          <input pInputText [type]=\"showPassword ? 'text' : 'password'\" class=\"w-full acf-input\" id=\"password\"\r\n            autocomplete=\"new-password\" formControlName=\"password\"\r\n            [ngClass]=\"{ 'acf-invalid-input':(submitted || f['password'].dirty) && f['password'].errors }\" />\r\n          <p-inputIcon [styleClass]=\"showPassword ? 'pi pi-eye':'pi pi-eye-slash'\"\r\n            (click)=\"togglePasswordVisibility()\" />\r\n        </p-iconField>\r\n        <div class=\"acf-invalid-feedback\" *ngIf=\"(submitted || f['password'].dirty) && f['password'].errors\">\r\n          <div *ngIf=\"f['password'].errors['required']\">Ce champ est obligatoire.</div>\r\n          <div *ngIf=\"f['password'].errors['pattern']\">Le mot de passe doit contenir au moins 8 caractères : 1\r\n            minuscule, 1 majuscule, 1 chiffre et 1 caractére spécial.</div>\r\n        </div>\r\n      </div>\r\n\r\n      <div class=\"col-12 md:col-6\">\r\n        <label class=\"block font-bold mb-2 required-input\" for=\"confirmPassword\">Confirmer le mot de\r\n          passe </label>\r\n        <p-iconField iconPosition=\"right\">\r\n\r\n          <input pInputText [type]=\"showConfirmPassword ? 'text' : 'password'\" class=\"w-full acf-input\"\r\n            id=\"confirmPassword\" formControlName=\"confirmPassword\"\r\n            [ngClass]=\"{ 'acf-invalid-input':(submitted || f['confirmPassword'].dirty) && f['confirmPassword'].errors }\" />\r\n          <p-inputIcon [styleClass]=\"showConfirmPassword ? 'pi pi-eye':'pi pi-eye-slash'\"\r\n            (click)=\"toggleConfirmPasswordVisibility()\" />\r\n        </p-iconField>\r\n        <div class=\"acf-invalid-feedback\"\r\n          *ngIf=\"(submitted || f['confirmPassword'].dirty) && f['confirmPassword'].errors\">\r\n          <div *ngIf=\"f['confirmPassword'].errors['required']\">Ce champ est obligatoire.</div>\r\n          <div *ngIf=\"f['confirmPassword'].errors['confirmPasswordValidator']\">Les mots de passe ne correspondent pas.\r\n          </div>\r\n        </div>\r\n      </div>\r\n\r\n      <div class=\"col-12 md:col-12\">\r\n        <div class=\"my-3\">\r\n          <p-checkbox formControlName=\"ischecked\" binary=\"true\" class=\"mr-3\"\r\n            [ngClass]=\"{ 'acf-invalid-checkbox': (f['ischecked'].dirty || f['ischecked'].touched || submitted) && f['ischecked'].value == false}\"></p-checkbox>\r\n          <span class=\"text-sm font-semibold\">En vous inscrivant, vous acceptez nos\r\n            <a [href]=\"'assets/' + applicationName + '/documents/CGV.pdf'\" class=\"cursor-pointer acf-primary-link\" target=\"_blank\" >Conditions générales</a>\r\n          </span>\r\n        </div>\r\n      </div>\r\n\r\n      <div class=\"col-12 md:col-12\">\r\n        <button pButton pRipple type=\"submit\" label=\"Créer un compte\" class=\"acf-primary-button\"\r\n          (click)=\"onSubmit()\"></button>\r\n        <!-- Hide redirection to login when coming from steps  -->\r\n        @if(!this.registerFromSteps){ <p class=\"text-sm font-semibold\">Déjà membre ? <a (click)=\"login()\"\r\n            class=\"acf-primary-link\">Se connecter</a>\r\n        </p>}\r\n      </div>\r\n\r\n    </div>\r\n\r\n  </form>\r\n</div>\r\n\r\n<p-toast></p-toast>","import { Component } from '@angular/core';\r\n\r\n@Component({\n    selector: 'acf-login-page',\n    templateUrl: './login-page.component.html',\n    styleUrl: './login-page.component.scss',\n    standalone: false\n})\r\nexport class LoginPageComponent {\r\n\r\n}\r\n","<p>login-page works!</p>\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\n    selector: 'acf-login-section',\n    templateUrl: './login-section.component.html',\n    styleUrl: './login-section.component.scss',\n    standalone: false\n})\r\nexport class LoginSectionComponent {\r\n\r\n}\r\n","<p>login-section works!</p>\r\n","import { Component, Input, Optional } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { RoutesPaths } from '../../../../enums/routePaths';\r\nimport { Router } from '@angular/router';\r\nimport { MessageService } from 'primeng/api';\r\nimport { AccountService } from '../../../../services/account.service';\r\nimport { DataStoreService } from '../../../../services/data-store.service';\r\nimport { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';\r\nimport { MandateService } from '../../../../services/mandate.service';\r\nimport { CreateMandateBeforePaymentRequest } from '../../../../models/request/create-mandate.request';\r\nimport { Observable, switchMap, tap } from 'rxjs';\r\nimport { CreateMandateResponse } from '../../../../models/response/create-mandate.response';\r\nimport { DataStore } from '../../../../enums/data.store';\r\nimport { SecurityCookieService } from '../../../../services/security-cookie.service';\r\nimport { MappedProduct } from '../../../../models/shared/product';\r\n\r\n@Component({\r\n  selector: 'acf-login-form',\r\n  templateUrl: './login-form.component.html',\r\n  styleUrl: './login-form.component.scss',\r\n  providers: [MessageService],\r\n  standalone: false\r\n})\r\nexport class LoginFormComponent {\r\n  @Input() appName: string = '';\r\n  @Input() redirectUrl: string = '';\r\n  applicationName: string = '';\r\n\r\n  loginForm: FormGroup;\r\n  submitted = false;\r\n  showPassword: boolean = false;\r\n  loginFromSteps: boolean = false;\r\n  device!: MappedProduct;\r\n\r\n  constructor(\r\n    private readonly formBuilder: FormBuilder,\r\n    private readonly accountService: AccountService,\r\n    private readonly router: Router,\r\n    private readonly messageService: MessageService,\r\n    private readonly store: DataStoreService,\r\n    private readonly securityCookieService: SecurityCookieService,\r\n    @Optional() public ref: DynamicDialogRef,\r\n    private readonly mandateService: MandateService,\r\n    @Optional() public config: DynamicDialogConfig\r\n  ) {\r\n    this.loginForm = this.onItniFrom();\r\n    if (config?.data?.loginFromSteps) {\r\n      this.loginFromSteps = config.data.loginFromSteps;\r\n      const step3 = this.store.getStep3Form();\r\n      this.loginForm.patchValue({ userName: step3?.email || '' });\r\n    } else {\r\n      this.loginFromSteps = false;\r\n    }\r\n    this.applicationName = this.store.getApplication();\r\n  }\r\n\r\n  onItniFrom() {\r\n    return this.formBuilder.group({\r\n      password: ['', [Validators.required]],\r\n      userName: [this.store.getUserLogin(), Validators.required],\r\n      ischecked: [true],\r\n    });\r\n  }\r\n\r\n  togglePasswordVisibility(): void {\r\n    this.showPassword = !this.showPassword;\r\n  }\r\n\r\n  onSubmit(): void {\r\n    this.submitted = true;\r\n    // if (this.loginForm.valid) {\r\n    //   const request: LoginRequest = {\r\n    //     applicationName: this.applicationName,\r\n    //     password: this.loginForm.get('password')?.value,\r\n    //     userName: this.loginForm.get('userName')?.value,\r\n    //   };\r\n    //   this.accountService.login(request).subscribe(\r\n    //     (response) => {\r\n    //       if (response.result === true) {\r\n    //         const rememberMe: boolean = this.loginForm.value.ischecked;\r\n    //         this.store.setRM(rememberMe);\r\n    //         this.store.setUserName(response.userName, rememberMe);\r\n    //         this.store.setToken(response.accessToken, rememberMe);\r\n    //         this.setUserInfo(rememberMe);\r\n    //         this.store.deleteMandateID();\r\n    //         this.store.deleteOmNumber();\r\n\r\n    //         rememberMe ? this.store.saveUserLogin(this.loginForm.value.userName) : localStorage.removeItem(DataStore.userlogin);\r\n    //       }\r\n    //       if (response.result === false) {\r\n    //         this.messageService.add({\r\n    //           severity: 'error',\r\n    //           detail:\r\n    //             'Une erreur est survenue. Veuillez réessayer ou contacter le support si le problème persiste.',\r\n    //         });\r\n    //       }\r\n    //     },\r\n    //     (error) => {\r\n    //       if (error.status == 401) {\r\n    //         if (error.error?.errors?.includes('NotActive')) {\r\n    //           this.messageService.add({\r\n    //             severity: 'error',\r\n    //             detail: 'Merci de valider votre compte',\r\n    //           });\r\n    //         } else {\r\n    //           this.messageService.add({\r\n    //             severity: 'error',\r\n    //             detail:\r\n    //               \"L'identifiant ou le mot de passe que vous avez entré n'est pas valide. Veuillez réessayer.\",\r\n    //           });\r\n    //         }\r\n    //       }\r\n    //     }\r\n    //   );\r\n    // }\r\n\r\n\r\n\r\n    if (this.loginForm.valid) {\r\n      const { userName, password } = this.loginForm.value;\r\n      this.securityCookieService.loginCDM({ userName, password }).subscribe({\r\n        next: (response) => {\r\n          if (response.result === true) {\r\n            const rememberMe: boolean = this.loginForm.value.ischecked;\r\n            this.store.setRM(rememberMe);\r\n            this.store.setUserName(response.userName, rememberMe);\r\n            // this.store.setToken(response.accessToken, rememberMe);\r\n            this.setUserInfo(rememberMe);\r\n            this.store.deleteMandateID();\r\n            this.store.deleteOmNumber();\r\n            rememberMe ? this.store.saveUserLogin(this.loginForm.value.userName) : localStorage.removeItem(DataStore.userlogin);\r\n          }\r\n          if (response.result === false) {\r\n            this.messageService.add({\r\n              severity: 'error',\r\n              detail:\r\n                'Une erreur est survenue. Veuillez réessayer ou contacter le support si le problème persiste.',\r\n            });\r\n          }\r\n        },\r\n        error: (error) => {\r\n          if (error.status == 401) {\r\n            if (error.error?.errors?.includes('NotActive')) {\r\n              this.messageService.add({\r\n                severity: 'error',\r\n                detail: 'Merci de valider votre compte',\r\n              });\r\n            } else {\r\n              this.messageService.add({\r\n                severity: 'error',\r\n                detail:\r\n                  \"L'identifiant ou le mot de passe que vous avez entré n'est pas valide. Veuillez réessayer.\",\r\n              });\r\n            }\r\n          }\r\n        }\r\n      });\r\n    }\r\n  }\r\n\r\n  register() {\r\n    this.router.navigate([RoutesPaths.register]);\r\n  }\r\n\r\n  closePopup() {\r\n    this.ref.close();\r\n  }\r\n\r\n  setUserInfo(rememberMe: boolean) {\r\n    this.accountService.getCDMCustomerInfo().subscribe(\r\n      (user) => {\r\n        this.store.setUserInformation(user, rememberMe);\r\n        if (this.loginFromSteps) {\r\n          this.closePopup();\r\n\r\n          // Ensure createMandateBeforePayment completes before calling getLatestMandate\r\n          this.createMandateBeforePayment(this.loginForm.value.userName).pipe(\r\n            switchMap(() => this.mandateService.getLatestMandate())\r\n          ).subscribe(\r\n            (mandate) => {\r\n              if (mandate.result === true) {\r\n                const device: MappedProduct = {\r\n                  fileId: mandate.mandateBeforePayment?.fileId || '',\r\n                  name: mandate.mandateBeforePayment?.labelRef || '',\r\n                  saleDate: mandate.mandateBeforePayment?.purchaseDate || '',\r\n                  commref: mandate.mandateBeforePayment?.commercialRef || '',\r\n                  refTech: mandate.mandateBeforePayment?.technicalRef || '',\r\n                  brand: mandate.mandateBeforePayment?.brandCode || '',\r\n                  family: mandate.mandateBeforePayment?.familyCode || '',\r\n                };\r\n\r\n                const oof = mandate.mandateBeforePayment?.interventionTypeId === 0 ? true : false;\r\n                this.store.updateIsOutWaranty(oof);\r\n\r\n                this.store.saveDevice(device);\r\n                this.router.navigate([RoutesPaths.connectedStep5]);\r\n              } else {\r\n                this.router.navigate([RoutesPaths.dashboard]);\r\n              }\r\n            },\r\n            (error) => {\r\n              this.router.navigate([RoutesPaths.dashboard]);\r\n            }\r\n          );\r\n          this.store.deleteFormsFromLocalStorage();\r\n\r\n\r\n        } else {\r\n          // If loginFromSteps is false, directly call getLatestMandate\r\n          this.mandateService.getLatestMandate().subscribe(\r\n            (mandate) => {\r\n              if (mandate.result === true) {\r\n                this.router.navigate([RoutesPaths.connectedStep5]);\r\n                const device: MappedProduct = {\r\n                  fileId: mandate.mandateBeforePayment?.fileId || '',\r\n                  name: mandate.mandateBeforePayment?.labelRef || '',\r\n                  saleDate: mandate.mandateBeforePayment?.purchaseDate || '',\r\n                  commref: mandate.mandateBeforePayment?.commercialRef || '',\r\n                  refTech: mandate.mandateBeforePayment?.technicalRef || '',\r\n                  brand: mandate.mandateBeforePayment?.brandCode || '',\r\n                  family: mandate.mandateBeforePayment?.familyCode || '',\r\n                };\r\n                const oof = mandate.mandateBeforePayment?.interventionTypeId === 0 ? true : false;\r\n                this.store.updateIsOutWaranty(oof);\r\n                this.store.saveDevice(device);\r\n\r\n              } else {\r\n                this.router.navigate([RoutesPaths.dashboard]);\r\n              }\r\n            },\r\n            (error) => {\r\n              this.router.navigate([RoutesPaths.dashboard]);\r\n            }\r\n          );\r\n        }\r\n      },\r\n      (error) => console.error(error)\r\n    );\r\n  }\r\n\r\n  reset() {\r\n    if (this.ref) {\r\n      this.ref.close();\r\n    }\r\n    this.router.navigate([RoutesPaths.forgetPassword]);\r\n  }\r\n\r\n  get f() {\r\n    return this.loginForm.controls;\r\n  }\r\n\r\n  createMandateBeforePayment(UserEmail: string): Observable<CreateMandateResponse> {\r\n    const step1Values = this.store.getStep1Form();\r\n    const step2Values = this.store.getStep2Form();\r\n    const step3Values = this.store.getStep3Form();\r\n    const step4Values = this.store.getStep4Form();\r\n    this.submitted = true;\r\n    const today = new Date();\r\n\r\n    // Warranty check logic directly in interventionTypeId\r\n    // const purchaseDate = new Date(step1Values.date);\r\n    // const yearsDifference = today.getFullYear() - purchaseDate.getFullYear();\r\n    // const isDateInFuture = today < purchaseDate;\r\n    // const interventionTypeId = !isDateInFuture && yearsDifference <= 2 ? 1 : 0;\r\n    const oof = this.store.isOutWaranty();  \r\n    const interventionTypeId = oof ? 0 : 1; \r\n    const createMandateBeforePayment: CreateMandateBeforePaymentRequest = {\r\n      applicationName: this.store.getApplication(),\r\n      clientCode: step4Values.clientCode, //! STEP 4\r\n      orderMission: (Date.now() + Math.floor(Math.random() * 1000)).toString().slice(0, 10),\r\n      interventionTypeId: interventionTypeId,\r\n      userName: UserEmail, //& User Email in Register Form\r\n      weight: step4Values.weight, //todo\r\n      brandCode: step1Values.brand, //STEP 1\r\n      commercialRef: step1Values.refComm,//STEP 1\r\n      technicalRef: step1Values.refTech,\r\n      fileId: step1Values.fileId, //STEP 1\r\n      familyCode: step1Values.family,//STEP 1\r\n      labelRef: step1Values.fullDescription,//STEP 1\r\n      purchaseDate: step1Values.date, //STEP 1\r\n      irisSymptom: step2Values.symptom, //?STEP 2\r\n      failureDescription: step2Values.comment,//?STEP 2\r\n      createDate: new Date(today.toISOString()),\r\n      repairPrice: step4Values.repairPrice, //! STEP 4\r\n      shippingPrice: step4Values.shippingPrice, //! STEP 4\r\n      consumer: {\r\n        title: step3Values.title, //&STEP 3\r\n        lastName: step3Values.lastName,//&STEP 3\r\n        firstName: step3Values.firstName,//&STEP 3\r\n        address1: step3Values.address,//&STEP 3\r\n        zip: step3Values.zip.zip,//&STEP 3\r\n        city: step3Values.city.city,//&STEP 3\r\n        countryCode: step3Values.countryCode,//&STEP 3\r\n        countryLabel: 'FR',\r\n        phoneNumber: step3Values.phoneNumber,//&STEP 3\r\n        email: step3Values.email //& Email saisie dans le formulaire\r\n      },\r\n      pickupInfo:\r\n        step4Values.pickUpChoice === 'FROMSTORE'\r\n          ? {\r\n            carrierCode: step4Values.carrierCode,\r\n            pickupChoice: step4Values.pickUpChoice,\r\n            fromName: step4Values.fromName,\r\n            fromAddress1: step4Values.fromAddress1,\r\n            fromZip: step4Values.fromZip,\r\n            fromCity: step4Values.fromCity,\r\n            fromCountryCode: step4Values.fromCountryCode,\r\n            fromPhone: step4Values.fromPhone,\r\n            toName: step4Values.toName,\r\n            toAddress1: step4Values.toAddress1,\r\n            toZip: step4Values.toZip,\r\n            toCity: step4Values.toCity,\r\n            toCountryCode: step4Values.toCountryCode,\r\n            toPhone: step4Values.toPhone\r\n          }\r\n          : null, // If not 'FROMSTORE' (Poste), send a null object\r\n      ecoSupport: step4Values.ecoSupport, //! STEP 4 \r\n      currencyCode: step4Values.currencyCode, //! STEP 4 \r\n      currencySymbol: step4Values.currencySymbol, //! STEP 4 \r\n      atsCodeForStripe: step4Values.atsCode, //! STEP 4 \r\n      ContractExtensionCode:null,\r\n      IsContractGCplus:false\r\n    };\r\n    return this.mandateService.createMandateBeforePayment(createMandateBeforePayment).pipe(\r\n      tap((response) => {\r\n        this.store.setOmNumber(createMandateBeforePayment.orderMission);\r\n      })\r\n    );\r\n  }\r\n\r\n}\r\n","<div class=\"login-form\">\r\n    <form [formGroup]=\"loginForm\">\r\n        @if(this.loginFromSteps){<div class=\"text-left mb-5 flex\">\r\n            <div class=\" text-2xl font-bold mb-3\">Identifiant</div>\r\n            <img class=\"img ml-auto cursor-pointer\" (click)=\"closePopup()\"\r\n                [src]=\"'assets/' + this.applicationName + '/close-icon.svg'\" alt=\"close\">\r\n\r\n        </div>}\r\n\r\n        <div class=\"grid\">\r\n\r\n            <div class=\"col-12\">\r\n                <label class=\"block text-900 font-bold mb-2 required-input\" for=\"userName\">Email </label>\r\n                <input pInputText class=\"w-full acf-input\" id=\"userName\" formControlName=\"userName\"\r\n                    [ngClass]=\"{ 'acf-invalid-input':(submitted || f['userName'].dirty) && f['userName'].errors }\" />\r\n                <div class=\"acf-invalid-feedback\" *ngIf=\"(submitted || f['userName'].dirty) && f['userName'].errors\">\r\n                    <div *ngIf=\"f['userName'].errors['required']\">Ce champ est obligatoire.</div>\r\n                </div>\r\n            </div>\r\n\r\n            <div class=\"col-12\">\r\n                <label class=\"block text-900 font-bold mb-2 required-input\" for=\"password\">Mot de passe\r\n                </label>\r\n                <p-iconField>\r\n\r\n                    <input pInputText [type]=\"showPassword ? 'text' : 'password'\" class=\"w-full acf-input\" id=\"password\"\r\n                        formControlName=\"password\"\r\n                        [ngClass]=\"{ 'acf-invalid-input':(submitted || f['password'].dirty) && f['password'].errors }\" />\r\n                    <p-inputIcon [styleClass]=\"showPassword ? 'pi pi-eye':'pi pi-eye-slash'\"\r\n                        (click)=\"togglePasswordVisibility()\" />\r\n                </p-iconField>\r\n                <div class=\"acf-invalid-feedback\" *ngIf=\"(submitted || f['password'].dirty) && f['password'].errors\">\r\n                    <div *ngIf=\"f['password'].errors['required']\">Ce champ est obligatoire.</div>\r\n                </div>\r\n            </div>\r\n            <div class=\"col-12 md:col-12\">\r\n                <div class=\"flex align-items-center justify-content-between w-full\">\r\n                    <div class=\"my-3\">\r\n                        <p-checkbox formControlName=\"ischecked\" binary=\"true\" class=\"mr-3\"></p-checkbox>\r\n                        <span class=\"text-sm font-semibold\">Se souvenir de moi </span>\r\n                    </div>\r\n                    <a class=\"acf-primary-link font-semibold\" (click)=\"reset()\">Mot de passe oublié</a>\r\n                </div>\r\n            </div>\r\n\r\n            <div class=\"col-12 md:col-12\">\r\n                <button pButton pRipple type=\"submit\" label=\"Se connecter\" class=\"acf-primary-button\"\r\n                    (click)=\"onSubmit()\"></button>\r\n                @if(!this.loginFromSteps){ <p class=\"text-sm font-semibold\">Vous n’êtes pas membre ? <a\r\n                        (click)=\"register()\" class=\"acf-primary-link\">Créer un compte</a>\r\n                </p>}\r\n            </div>\r\n        </div>\r\n    </form>\r\n</div>\r\n<p-toast></p-toast>","import { Component } from '@angular/core';\r\n\r\n@Component({\n    selector: 'acf-register-section',\n    templateUrl: './register-section.component.html',\n    styleUrl: './register-section.component.scss',\n    standalone: false\n})\r\nexport class RegisterSectionComponent {\r\n\r\n}\r\n","<p>register-section works!</p>\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators, FormControl } from '@angular/forms';\r\nimport { AccountService } from '../../../../services/account.service';\r\nimport { MessageService } from 'primeng/api';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { RoutesPaths } from '../../../../enums/routePaths';\r\nimport { ForgetPasswordLinkRequest } from '../../../../models/request/forget-password-link.request';\r\n\r\n@Component({\n    selector: 'acf-forget-password-form',\n    templateUrl: './forget-password-form.component.html',\n    styleUrl: './forget-password-form.component.scss',\n    providers: [MessageService],\n    standalone: false\n})\r\nexport class ForgetPasswordFormComponent implements OnInit {\r\n\r\n  @Input() appName: string = '';\r\n  @Input() redirectUrl: string = '';\r\n\r\n  forgetPasswordForm: FormGroup;\r\n  submitted = false;\r\n  loading = false;\r\n  emailInputIcon: string = '';\r\n\r\n  constructor(\r\n    private readonly formBuilder: FormBuilder,\r\n    private readonly accountService: AccountService,\r\n    private readonly messageService: MessageService,\r\n    private readonly route: ActivatedRoute,\r\n    private readonly router: Router,\r\n\r\n  ) {\r\n    this.forgetPasswordForm = this.initForm();\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.route.queryParams.subscribe(params => {\r\n      const key = params['key']?.replace(/ /g, '+');\r\n      if (key) {\r\n        this.accountService.validateKey(key).subscribe({\r\n          next: response => {\r\n            if (response.result) {\r\n              this.router.navigate([`/${RoutesPaths.resetPassword}`], { queryParams: { key } });\r\n            } else {\r\n              this.router.navigate([`/${RoutesPaths.resetPasswordError}`]);\r\n            }\r\n          },\r\n          error: () => {\r\n            this.router.navigate([`/${RoutesPaths.resetPasswordError}`]);\r\n          }\r\n        });\r\n      }\r\n    });\r\n  }\r\n\r\n  initForm(): FormGroup {\r\n    return this.formBuilder.group({\r\n      email: new FormControl('', [\r\n        Validators.required,\r\n        Validators.email,\r\n        Validators.pattern('^[A-Za-z0-9._%+-]+@[a-z0-9.-]+\\\\.[a-z]{2,4}$'),\r\n      ])\r\n    });\r\n  }\r\n\r\n  get f() {\r\n    return this.forgetPasswordForm.controls;\r\n  }\r\n\r\n  checkEmail() {\r\n    const email = this.forgetPasswordForm.get('email');\r\n    if (email && email.status == 'VALID' && !email.errors) {\r\n      this.emailInputIcon = 'pi pi-spinner pi-spin';\r\n      this.accountService.checkEmail(email.value).subscribe({\r\n        next: (response: boolean) => {\r\n          this.emailInputIcon = response ? 'pi pi-check' : 'pi pi-times';\r\n        },\r\n        error: () => {\r\n          this.emailInputIcon = 'pi pi-times';\r\n        },\r\n      });\r\n    } else {\r\n      // Clear the icon if the email is no longer valid\r\n      this.emailInputIcon = '';\r\n    }\r\n  }\r\n\r\n  onSubmit() {\r\n    this.submitted = true;\r\n\r\n    if (this.forgetPasswordForm.invalid) {\r\n      return;\r\n    }\r\n\r\n    this.loading = true;\r\n    const forgetPasswordLinkRequest: ForgetPasswordLinkRequest = {\r\n      applicationName: this.appName,\r\n      userName: this.forgetPasswordForm.get('email')?.value\r\n    };\r\n    this.accountService.sendForgetPasswordLink(forgetPasswordLinkRequest).subscribe({\r\n      next: (response: any) => {\r\n        if (response.result) {\r\n          // Success case\r\n          this.router.navigate([`/${RoutesPaths.resetPasswordCheckInbox}`])\r\n\r\n        } else {\r\n          this.messageService.add({\r\n            severity: 'error',\r\n            summary: 'Erreur',\r\n            detail: 'L\\'adresse e-mail n\\'existe pas.',\r\n          });\r\n        }\r\n        this.loading = false;\r\n      },\r\n      error: () => {\r\n        this.messageService.add({\r\n          severity: 'error',\r\n          summary: 'Erreur',\r\n          detail: 'Impossible d’envoyer le lien de réinitialisation.',\r\n        });\r\n        this.loading = false;\r\n      },\r\n    });\r\n  }\r\n\r\n\r\n  async showToast(message: string) {\r\n    this.messageService.add({ severity: 'success', summary: 'Success', detail: message });\r\n\r\n  }\r\n}\r\n","<div class=\"forget-password-form \">\r\n    <form [formGroup]=\"forgetPasswordForm\">\r\n        <div class=\"text-left mb-5\">\r\n            <div class=\"text-2xl font-bold mb-3\">Mot de passe oublié</div>\r\n            <span class=\"font-medium line-height-4\t\">Veuillez renseigner l'adresse e-mail que vous avez\r\n                utilisée à la\r\n                création de\r\n                votre compte. </span>\r\n        </div>\r\n        <div class=\"grid\">\r\n            <div class=\"col-12\">\r\n                <label class=\"block font-bold mb-2 required-input\" for=\"email\">Email </label>\r\n                <p-iconField iconPosition=\"right\">\r\n                    <input pInputText class=\"w-full acf-input\" id=\"email\" formControlName=\"email\" (blur)=\"checkEmail()\"\r\n                        [ngClass]=\"{ 'acf-invalid-input': (submitted || f['email'].dirty) && (f['email'].errors || emailInputIcon === 'pi pi-times') }\" />\r\n                    <p-inputIcon [styleClass]=\"emailInputIcon\" />\r\n\r\n                </p-iconField>\r\n                <div class=\"acf-invalid-feedback\" *ngIf=\"(submitted || f['email'].dirty) && f['email'].errors\">\r\n                    <div *ngIf=\"f['email'].errors['required']\">Ce champ est obligatoire.</div>\r\n                    <div *ngIf=\"f['email'].errors['pattern']\">Email incorrect. </div>\r\n                </div>\r\n                <div class=\"acf-invalid-feedback\" *ngIf=\"emailInputIcon === 'pi pi-times' && !f['email'].errors\">\r\n                    Adresse e-mail introuvable.\r\n                </div>\r\n            </div>\r\n\r\n            <div class=\"col-12\">\r\n                <button pButton pRipple type=\"submit\" label=\"Envoyer\" class=\"acf-primary-button\"\r\n                    (click)=\"onSubmit()\"></button>\r\n            </div>\r\n        </div>\r\n    </form>\r\n</div>\r\n\r\n<p-toast></p-toast>","import { NgModule } from '@angular/core';\r\nimport { RippleModule } from 'primeng/ripple';\r\nimport { DialogModule } from 'primeng/dialog';\r\nimport { CardModule } from 'primeng/card';\r\nimport { DropdownModule } from 'primeng/dropdown';\r\nimport { InputTextModule } from 'primeng/inputtext';\r\nimport { SplitterModule } from 'primeng/splitter';\r\nimport { CheckboxModule } from 'primeng/checkbox';\r\nimport { PasswordModule } from 'primeng/password';\r\nimport { InputSwitchModule } from 'primeng/inputswitch';\r\nimport { AutoCompleteModule } from 'primeng/autocomplete';\r\nimport { CalendarModule } from 'primeng/calendar';\r\nimport { PanelModule } from 'primeng/panel';\r\nimport { PanelMenuModule } from 'primeng/panelmenu'\r\nimport { AccordionModule } from 'primeng/accordion';\r\nimport { AvatarModule } from 'primeng/avatar';\r\nimport { BadgeModule } from 'primeng/badge';\r\nimport { FloatLabelModule } from 'primeng/floatlabel';\r\nimport { DividerModule } from 'primeng/divider';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { TableModule } from 'primeng/table';\r\nimport { TimelineModule } from 'primeng/timeline';\r\nimport { DynamicDialogModule } from 'primeng/dynamicdialog';\r\nimport { ToastModule } from 'primeng/toast';\r\nimport { RadioButtonModule } from 'primeng/radiobutton';\r\nimport { BreadcrumbModule } from 'primeng/breadcrumb';\r\nimport { ScrollTopModule } from 'primeng/scrolltop';\r\nimport { MessagesModule } from 'primeng/messages';\r\nimport { SkeletonModule } from 'primeng/skeleton';\r\nimport { ChipModule } from 'primeng/chip';\r\nimport { ConfirmDialogModule } from 'primeng/confirmdialog';\r\nimport { PaginatorModule } from 'primeng/paginator';\r\nimport { MessageModule } from 'primeng/message';\r\nimport { OverlayPanelModule } from 'primeng/overlaypanel';\r\nimport { IconFieldModule } from 'primeng/iconfield';\r\nimport { InputIconModule } from 'primeng/inputicon';\r\n// import { InputTextareaModule } from 'primeng/inputtextarea';\r\nimport { ChartModule } from 'primeng/chart';\r\nimport { TabViewModule } from 'primeng/tabview';\r\nimport { InputNumberModule } from 'primeng/inputnumber';\r\nimport { InputMaskModule } from 'primeng/inputmask';\r\nimport { TextareaModule } from 'primeng/textarea';\r\nimport { DatePickerModule } from 'primeng/datepicker';\r\n@NgModule({\r\n    exports: [\r\n        RippleModule,\r\n        DialogModule,\r\n        CardModule,\r\n        DropdownModule,\r\n        InputTextModule,\r\n        SplitterModule,\r\n        CheckboxModule,\r\n        PasswordModule,\r\n        InputSwitchModule,\r\n        AutoCompleteModule,\r\n        CalendarModule,\r\n        PanelModule,\r\n        AccordionModule,\r\n        AvatarModule,\r\n        BadgeModule,\r\n        DatePickerModule ,\r\n        FloatLabelModule,\r\n        DividerModule,\r\n        ButtonModule,\r\n        TableModule,\r\n        TimelineModule,\r\n        DynamicDialogModule,\r\n        ToastModule,\r\n        RadioButtonModule,\r\n        BreadcrumbModule,\r\n        ScrollTopModule,\r\n        MessagesModule,\r\n        SkeletonModule,\r\n        ChipModule,\r\n        ConfirmDialogModule,\r\n        PaginatorModule,\r\n        MessageModule,\r\n  //      InputTextareaModule,\r\n  TextareaModule ,\r\n        OverlayPanelModule,\r\n        PanelMenuModule,\r\n        IconFieldModule,\r\n        InputIconModule,\r\n        ChartModule,\r\n        TabViewModule,\r\n        InputNumberModule,\r\n        InputMaskModule\r\n    ],\r\n    declarations: [\r\n    ]\r\n})\r\nexport class PrimeNgComponentsModule { }\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { AccountService } from '../../../../services/account.service';\r\nimport { MessageService } from 'primeng/api';\r\nimport { PasswordValidator } from '../../../../validators/password.validator';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { ResetForgottenPasswordRequest } from '../../../../models/request/reset-forgotten-password.request';\r\nimport { RoutesPaths } from '../../../../enums/routePaths';\r\n\r\n@Component({\r\n    selector: 'acf-reset-password-form',\r\n    templateUrl: './reset-password-form.component.html',\r\n    styleUrl: './reset-password-form.component.scss',\r\n    providers: [MessageService],\r\n    standalone: false\r\n})\r\nexport class ResetPasswordFormComponent implements OnInit {\r\n  @Input() appName: string = \"\";\r\n  @Input() redirectUrl: string = \"\";\r\n  resetPasswordForm: FormGroup;\r\n  resetSuccess!: boolean;\r\n\r\n  resetPasswordKey!: string;\r\n\r\n  loading = false;\r\n  submitted = false;\r\n\r\n  constructor(\r\n    private readonly formBuilder: FormBuilder,\r\n    private readonly accountService: AccountService,\r\n    private readonly messageService: MessageService,\r\n    private readonly route: ActivatedRoute,\r\n    private readonly router: Router\r\n  ) {\r\n    this.resetPasswordForm = this.onitniFrom();\r\n\r\n  }\r\n  ngOnInit(): void {\r\n    // Retrieve the key of password reset from the URL query parameters\r\n    this.route.queryParams.subscribe(params => {\r\n      this.resetPasswordKey = params['key'] || null;\r\n      if (this.resetPasswordKey) {\r\n        this.accountService.validateKey(this.resetPasswordKey).subscribe({\r\n          next: response => {\r\n            if (!response.result) {\r\n              // Redirect to 404 on validation error\r\n              this.router.navigate([`/${RoutesPaths.resetPasswordError}`]);\r\n            }\r\n          },\r\n          error: () => {\r\n            // Redirect to 404 on validation error\r\n            this.router.navigate([`/${RoutesPaths.resetPasswordError}`]);\r\n          }\r\n        });\r\n      } else {\r\n        // Redirect to 404 if key is missing\r\n        this.router.navigate([`/${RoutesPaths.notfound}`]);\r\n      }\r\n    });\r\n  }\r\n\r\n  onitniFrom() {\r\n    return this.formBuilder.group(\r\n      {\r\n        newPassword: ['', [Validators.required, Validators.pattern(/^(?=\\D*\\d)(?=[^a-z]*[a-z])(?=[^A-Z]*[A-Z])(?=.*[$@$!%*?&.+-/(){}\"']).{8,}$/)]],\r\n        confirmPassword: ['', Validators.required],\r\n      },\r\n      {\r\n        validator: PasswordValidator('newPassword', 'confirmPassword'),\r\n      }\r\n    );\r\n  }\r\n  get f() {\r\n    return this.resetPasswordForm.controls;\r\n  }\r\n\r\n\r\n\r\n\r\n  onSubmit() {\r\n    this.submitted = true;\r\n\r\n    if (this.resetPasswordForm.invalid) {\r\n      return;\r\n    }\r\n    this.loading = true;\r\n\r\n    const resetForgottenPasswordRequest: ResetForgottenPasswordRequest = {\r\n      key: this.resetPasswordKey!,\r\n      newPassword: this.resetPasswordForm.get('confirmPassword')?.value,\r\n      applicationName: this.appName\r\n    };\r\n    this.accountService.resetForgottenPassword(resetForgottenPasswordRequest).subscribe({\r\n      next: (response: any) => {\r\n        if (response.result) {\r\n          // Success case\r\n          this.router.navigate([`/${RoutesPaths.resetPasswordSuccess}`]);\r\n\r\n        } else {\r\n          this.messageService.add({\r\n            severity: 'error',\r\n            summary: 'Erreur',\r\n            detail: 'L\\'adresse e-mail n\\'existe pas.',\r\n          });\r\n        }\r\n        this.loading = false;\r\n      },\r\n      error: () => {\r\n        this.messageService.add({\r\n          severity: 'error',\r\n          summary: 'Erreur',\r\n          detail: 'Impossible d’envoyer le lien de réinitialisation.',\r\n        });\r\n        this.loading = false;\r\n      },\r\n    });\r\n  }\r\n\r\n\r\n  async showToast(message: string) {\r\n    this.messageService.add({ severity: 'success', summary: 'Success', detail: message });\r\n\r\n  }\r\n}","<div class=\"reset-password-form\">\r\n    <form [formGroup]=\"resetPasswordForm\">\r\n        <div class=\"text-left mb-5\">\r\n            <div class=\" text-2xl font-bold\">Réinitialisation du mot de passe</div>\r\n        </div>\r\n        <div class=\"grid\">\r\n\r\n            <div class=\"col-12 md:col-12\">\r\n                <label class=\"block  text-base font-bold mb-2 required-input\" for=\"newPassword\">Nouveau mot de\r\n                    passe\r\n                </label>\r\n                <input class=\"w-full acf-input\" pInputText type=\"password\" id=\"newPassword\"\r\n                    formControlName=\"newPassword\" autocomplete=\"new-password\"\r\n                    [ngClass]=\"{ 'acf-invalid-input':(submitted || f['newPassword'].dirty) && f['newPassword'].errors }\" />\r\n                <div class=\"acf-invalid-feedback\"\r\n                    *ngIf=\"(submitted || f['newPassword'].dirty) && f['newPassword'].errors\">\r\n                    <div *ngIf=\"f['newPassword'].errors['required']\">Ce champ est obligatoire.</div>\r\n                    <div *ngIf=\"f['newPassword'].errors['pattern']\">Le mot de passe doit contenir au moins 8 caractères\r\n                        : 1 minuscule, 1 majuscule, 1 chiffre et 1 caractére spécial.</div>\r\n                </div>\r\n            </div>\r\n\r\n            <div class=\"col-12 md:col-12\">\r\n                <label class=\"block  text-base font-bold mb-2 required-input\" for=\"confirmPassword\">Confirmer le\r\n                    mot de passe </label>\r\n                <input class=\"w-full acf-input\" pInputText type=\"password\" id=\"confirmPassword\"\r\n                    formControlName=\"confirmPassword\"\r\n                    [ngClass]=\"{ 'acf-invalid-input':(submitted || f['confirmPassword'].dirty) && f['confirmPassword'].errors }\" />\r\n\r\n                <div class=\"acf-invalid-feedback\"\r\n                    *ngIf=\"(submitted || f['confirmPassword'].dirty) && f['confirmPassword'].errors\">\r\n                    <div *ngIf=\"f['confirmPassword'].errors['required']\">Ce champ est obligatoire.</div>\r\n                    <div *ngIf=\"f['confirmPassword'].errors['confirmPasswordValidator']\">Les mots de passe ne\r\n                        correspondent pas. </div>\r\n                </div>\r\n            </div>\r\n            <div class=\"col-12 md:col-12\">\r\n                <button pButton pRipple type=\"submit\" label=\"Enregistrer votre nouveau mot de passe\"\r\n                    class=\"acf-primary-button\" (click)=\"onSubmit()\"></button>\r\n\r\n            </div>\r\n\r\n        </div>\r\n\r\n    </form>\r\n</div>\r\n\r\n<p-toast></p-toast>","import { Component } from '@angular/core';\r\n\r\n@Component({\n    selector: 'acf-forget-password-section',\n    templateUrl: './forget-password-section.component.html',\n    styleUrl: './forget-password-section.component.scss',\n    standalone: false\n})\r\nexport class ForgetPasswordSectionComponent {\r\n\r\n}\r\n","<p>forget-password-section works!</p>","import { Component, Input } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { RoutesPaths } from '../../../../enums/routePaths';\r\n\r\n@Component({\n    selector: 'acf-reset-password-error',\n    templateUrl: './reset-password-error.component.html',\n    styleUrl: './reset-password-error.component.scss',\n    standalone: false\n})\r\nexport class ResetPasswordErrorComponent {\r\n  @Input() appName: string = '';\r\n  @Input() notFoundImage: string = '';\r\n  constructor(private readonly router: Router) { }\r\n\r\n  onSubmit() {\r\n    this.router.navigate([`/${RoutesPaths.forgetPassword}`])\r\n  }\r\n}\r\n","<div class=\"surface-ground flex align-items-center justify-content-center min-h-screen min-w-screen overflow-hidden\">\r\n    <div class=\"flex flex-column align-items-center justify-content-center\">\r\n        <div class=\"w-full  py-8 px-5 sm:px-8 flex flex-column align-items-center\">\r\n            <div class=\"grid flex flex-column align-items-center\">\r\n                <img [src]=\"notFoundImage\" alt=\"Error\" class=\"h-25rem flex-shrink-0\">\r\n                <span class=\"text-xl mb-2\">Le lien que vous avez utilisé a expiré ou n'est plus valide.</span>\r\n                <span class=\" text-xl mb-6\">Veuillez demander un nouveau lien pour poursuivre la réinitialisation de\r\n                    votre mot de passe.</span>\r\n                <button pButton pRipple type=\"submit\" label=\"Demander un autre lien\" class=\"acf-primary-button\"\r\n                    (click)=\"onSubmit()\"></button>\r\n            </div>\r\n        </div>\r\n    </div>\r\n</div>","import { Component, Input } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { RoutesPaths } from '../../../../enums/routePaths';\r\n\r\n@Component({\n    selector: 'acf-reset-password-success',\n    templateUrl: './reset-password-success.component.html',\n    styleUrl: './reset-password-success.component.scss',\n    standalone: false\n})\r\nexport class ResetPasswordSuccessComponent {\r\n  @Input() appName: string = \"\";\r\n  @Input() successIcon: string = \"\";\r\n\r\n  constructor(private readonly router: Router) { }\r\n\r\n  onSubmit() {\r\n    this.router.navigate([`/${RoutesPaths.login}`])\r\n  }\r\n\r\n}\r\n","<div class=\"text-left mb-8\">\r\n\r\n\r\n    <div class=\" mb-4 flex items-center gap-2\">\r\n        <div class=\" text-2xl flex align-items-end font-bold \">\r\n            Félicitations!\r\n        </div>\r\n        <img [src]=\"successIcon\" alt=\"Logo\" class=\"sm:w-2rem\">\r\n\r\n    </div>\r\n\r\n\r\n    <span class=\" font-medium line-height-4\t\">Votre mot de passe a été modifié avec succès.</span>\r\n</div>\r\n<div class=\"grid\">\r\n\r\n    <div class=\"col-12 md:col-12\">\r\n        <button pButton pRipple type=\"submit\" label=\"Se connecter\" class=\"acf-primary-button\"\r\n            (click)=\"onSubmit()\"></button>\r\n\r\n    </div>\r\n\r\n</div>","import { Component, Input } from '@angular/core';\r\nimport { RoutesPaths } from '../../../../enums/routePaths';\r\nimport { Router } from '@angular/router';\r\n\r\n@Component({\n    selector: 'acf-register-success',\n    templateUrl: './register-success.component.html',\n    styleUrl: './register-success.component.scss',\n    standalone: false\n})\r\nexport class RegisterSuccessComponent {\r\n  @Input() appName: string = \"\";\r\n  @Input() successIcon: string = \"\";\r\n\r\n  constructor(private readonly router: Router) { }\r\n\r\n  onSubmit() {\r\n    this.router.navigate([`/${RoutesPaths.login}`])\r\n  }\r\n\r\n}\r\n","<div class=\"text-left mb-8\">\r\n    <div class=\" mb-4 flex items-center gap-2\">\r\n        <div class=\" text-2xl flex align-items-end font-bold \">\r\n            Félicitations!\r\n        </div>\r\n        <img [src]=\"successIcon\" alt=\"Logo\" class=\"sm:w-2rem\">\r\n    </div>\r\n    <span class=\" font-medium line-height-4\t\">Votre e-mail a été vérifié\r\n        avec succès. </span>\r\n</div>\r\n<div class=\"grid\">\r\n    <div class=\"col-12 md:col-12\">\r\n        <button pButton pRipple type=\"submit\" label=\"Se connecter\"\r\n            class=\"acf-primary-button\" (click)=\"onSubmit()\"></button>\r\n    </div>\r\n</div>","import { Component, Input } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { RoutesPaths } from '../../../../enums/routePaths';\r\n\r\n@Component({\n    selector: 'acf-register-error',\n    templateUrl: './register-error.component.html',\n    styleUrl: './register-error.component.scss',\n    standalone: false\n})\r\nexport class RegisterErrorComponent {\r\n  @Input() appName: string = '';\r\n  @Input() notFoundImage: string = '';\r\n  constructor(private readonly router: Router) { }\r\n\r\n  onSubmit() {\r\n    this.router.navigate([`/${RoutesPaths.registerAskForNewLink}`])\r\n  }\r\n}\r\n","<div\r\n    class=\"surface-ground flex align-items-center justify-content-center min-h-screen min-w-screen overflow-hidden\">\r\n    <div class=\"flex flex-column align-items-center justify-content-center\">\r\n        <div\r\n            class=\"w-full  py-8 px-5 sm:px-8 flex flex-column align-items-center\">\r\n            <div class=\"grid flex flex-column align-items-center\">\r\n                <img [src]=\"notFoundImage\" alt=\"Error\"\r\n                    class=\"h-25rem flex-shrink-0\">\r\n                <span class=\"text-xl mb-2\">Le lien que vous avez utilisé a\r\n                    expiré ou n'est plus valide.</span>\r\n                <span class=\" text-xl mb-6\">Veuillez demander un nouveau lien\r\n                    pour poursuivre la validation de votre compte.</span>\r\n                <button pButton pRipple type=\"submit\"\r\n                    label=\"Demander un autre lien\"\r\n                    class=\"acf-primary-button\"\r\n                    (click)=\"onSubmit()\"></button>\r\n            </div>\r\n        </div>\r\n    </div>\r\n</div>","import { Component, Input } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { RoutesPaths } from '../../../../enums/routePaths';\r\n\r\n@Component({\n    selector: 'acf-reset-password-check-inbox',\n    templateUrl: './reset-password-check-inbox.component.html',\n    styleUrl: './reset-password-check-inbox.component.scss',\n    standalone: false\n})\r\nexport class ResetPasswordCheckInboxComponent {\r\n  @Input() appName: string = '';\r\n  constructor(private readonly router: Router) { }\r\n\r\n  onSubmit() {\r\n    this.router.navigate([`/${RoutesPaths.login}`])\r\n  }\r\n\r\n  onRedirectToForgetPassword() {\r\n    this.router.navigate([`/${RoutesPaths.forgetPassword}`])\r\n\r\n  }\r\n}\r\n","<div class=\"text-left mb-8\">\r\n    <div class=\" text-2xl font-bold mb-3\">Vérifiez votre boîte de\r\n        réception</div>\r\n    <div class=\" font-medium mb-2 line-height-4\">Nous avons envoyé un\r\n        e-mail de récupération à l’adresse fournie. </div>\r\n    <div class=\" font-medium\">Veuillez vérifier\r\n        votre dossier spam ou <a class=\"acf-primary-link\" (click)=\"onRedirectToForgetPassword()\"> envoyer un nouvel\r\n            e-mail </a>\r\n    </div>\r\n</div>\r\n<div class=\"grid\">\r\n\r\n    <div class=\"col-12 md:col-12\">\r\n        <button pButton pRipple type=\"submit\" label=\"Se connecter\"\r\n            class=\"acf-primary-button\"\r\n            (click)=\"onSubmit()\"></button>\r\n\r\n    </div>\r\n\r\n","import { Component, Input } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { RoutesPaths } from '../../../../enums/routePaths';\r\n\r\n@Component({\n    selector: 'acf-register-check-inbox',\n    templateUrl: './register-check-inbox.component.html',\n    styleUrl: './register-check-inbox.component.scss',\n    standalone: false\n})\r\nexport class RegisterCheckInboxComponent {\r\n  @Input() appName: string = '';\r\n  constructor(private readonly router: Router) { }\r\n\r\n  onSubmit() {\r\n    this.router.navigate([`/${RoutesPaths.login}`])\r\n  }\r\n\r\n  onRedirectToGetAnotherValidationLink() {\r\n\r\n    this.router.navigate([`/${RoutesPaths.registerAskForNewLink}`])\r\n\r\n  }\r\n}\r\n","<div class=\"text-left mb-8\">\r\n    <div class=\" text-2xl font-bold mb-3\">Vérifiez votre boîte de\r\n        réception</div>\r\n    <div class=\" font-medium mb-2 line-height-4\">Nous avons envoyé un\r\n        e-mail à l’adresse fournie. </div>\r\n    <div class=\" font-medium\">Veuillez vérifier\r\n        votre dossier spam ou <a class=\"acf-primary-link\"\r\n            (click)=\"onRedirectToGetAnotherValidationLink()\"> envoyer un nouvel\r\n            e-mail </a>\r\n    </div>\r\n</div>\r\n\r\n<div class=\"grid\">\r\n\r\n    <div class=\"col-12 md:col-12\">\r\n        <button pButton pRipple type=\"submit\" label=\"Se connecter\"\r\n            class=\"acf-primary-button\"\r\n            (click)=\"onSubmit()\"></button>\r\n\r\n    </div>\r\n\r\n</div>","import { Component, Input } from '@angular/core';\r\nimport { RoutesPaths } from '../../../../enums/routePaths';\r\nimport { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { AccountService } from '../../../../services/account.service';\r\nimport { MessageService } from 'primeng/api';\r\nimport { Router } from '@angular/router';\r\nimport { RegisterAskForNewLinkRequest } from '../../../../models/request/register-ask-for-new-link.request';\r\n\r\n@Component({\r\n    selector: 'acf-register-ask-for-new-link',\r\n    templateUrl: './register-ask-for-new-link.component.html',\r\n    styleUrl: './register-ask-for-new-link.component.scss',\r\n    providers: [MessageService],\r\n    standalone: false\r\n})\r\nexport class RegisterAskForNewLinkComponent {\r\n\r\n  @Input() appName: string = '';\r\n  @Input() redirectUrl: string = '';\r\n\r\n  registerAskForNewLinkForm: FormGroup;\r\n  submitted = false;\r\n  loading = false;\r\n  emailInputIcon: string = '';\r\n\r\n  constructor(\r\n    private readonly formBuilder: FormBuilder,\r\n    private readonly accountService: AccountService,\r\n    private readonly messageService: MessageService,\r\n    private readonly router: Router,\r\n\r\n  ) {\r\n    this.registerAskForNewLinkForm = this.initForm();\r\n  }\r\n\r\n  initForm(): FormGroup {\r\n    return this.formBuilder.group({\r\n      email: new FormControl('', [\r\n        Validators.required,\r\n        Validators.email,\r\n        Validators.pattern('^[A-Za-z0-9._%+-]+@[a-z0-9.-]+\\\\.[a-z]{2,4}$'),\r\n      ])\r\n    });\r\n  }\r\n\r\n  get f() {\r\n    return this.registerAskForNewLinkForm.controls;\r\n  }\r\n\r\n  checkEmail() {\r\n    const email = this.registerAskForNewLinkForm.get('email');\r\n    if (email && email.status == 'VALID' && !email.errors) {\r\n      this.emailInputIcon = 'pi pi-spinner pi-spin';\r\n      this.accountService.checkEmail(email.value).subscribe({\r\n        next: (response: boolean) => {\r\n          this.emailInputIcon = response ? 'pi pi-check' : 'pi pi-times';\r\n        },\r\n        error: () => {\r\n          this.emailInputIcon = 'pi pi-times';\r\n        },\r\n      });\r\n    } else {\r\n      // Clear the icon if the email is no longer valid\r\n      this.emailInputIcon = '';\r\n    }\r\n  }\r\n\r\n  onSubmit() {\r\n    this.submitted = true;\r\n\r\n    if (this.registerAskForNewLinkForm.invalid) {\r\n      return;\r\n    }\r\n\r\n    this.loading = true;\r\n    const registerAskForNewLinkRequest: RegisterAskForNewLinkRequest = {\r\n      applicationName: this.appName,\r\n      userName: this.registerAskForNewLinkForm.get('email')?.value\r\n    };\r\n    this.accountService.registerAskForNewLinkForm(registerAskForNewLinkRequest).subscribe({\r\n      next: (response: any) => {\r\n        if (response.result) {\r\n          // Success case\r\n          this.router.navigate([`/${RoutesPaths.registerCheckInbox}`])\r\n\r\n        } else {\r\n          this.messageService.add({\r\n            severity: 'error',\r\n            summary: 'Erreur',\r\n            detail: 'Aucun compte n’est associé à cette adresse e-mail. Merci de vérifier votre saisie.',\r\n          });\r\n        }\r\n        this.loading = false;\r\n      },\r\n      error: () => {\r\n        this.messageService.add({\r\n          severity: 'error',\r\n          summary: 'Erreur',\r\n          detail: 'Impossible d’envoyer le lien de réinitialisation.',\r\n        });\r\n        this.loading = false;\r\n      },\r\n    });\r\n  }\r\n\r\n\r\n  async showToast(message: string) {\r\n    this.messageService.add({ severity: 'success', summary: 'Success', detail: message });\r\n\r\n  }\r\n}\r\n","<div class=\"register-ask-for-new-link-form \">\r\n    <form [formGroup]=\"registerAskForNewLinkForm\">\r\n        <div class=\"text-left mb-5\">\r\n            <div class=\"text-2xl font-bold mb-3\">Un nouveau lien de validation</div>\r\n            <span class=\"font-medium line-height-4\t\">Veuillez renseigner l'adresse e-mail que vous avez utilisée à la\r\n                création de votre compte.</span>\r\n        </div>\r\n        <div class=\"grid\">\r\n            <div class=\"col-12\">\r\n                <label class=\"block text-base font-bold mb-2 required-input\" for=\"email\">Email </label>\r\n                <p-iconField iconPosition=\"right\">\r\n                    <input pInputText class=\"w-full acf-input\" id=\"email\" formControlName=\"email\" (blur)=\"checkEmail()\"\r\n                        [ngClass]=\"{ 'acf-invalid-input': (submitted || f['email'].dirty) && (f['email'].errors || emailInputIcon === 'pi pi-times') }\" />\r\n                    <p-inputIcon [styleClass]=\"emailInputIcon\" />\r\n\r\n                </p-iconField>\r\n                <div class=\"acf-invalid-feedback\" *ngIf=\"(submitted || f['email'].dirty) && f['email'].errors\">\r\n                    <div *ngIf=\"f['email'].errors['required']\">Ce champ est obligatoire.</div>\r\n                    <div *ngIf=\"f['email'].errors['pattern']\">Email incorrect. </div>\r\n                </div>\r\n                <div class=\"acf-invalid-feedback\" *ngIf=\"emailInputIcon === 'pi pi-times' && !f['email'].errors\">\r\n                    Adresse e-mail introuvable.\r\n                </div>\r\n            </div>\r\n\r\n            <div class=\"col-12\">\r\n                <button pButton pRipple type=\"submit\" label=\"Envoyer\" class=\"acf-primary-button\"\r\n                    (click)=\"onSubmit()\"></button>\r\n            </div>\r\n        </div>\r\n    </form>\r\n</div>\r\n\r\n<p-toast></p-toast>","import { Component } from '@angular/core';\r\n\r\n@Component({\n    selector: 'acf-login-popup',\n    templateUrl: './login-popup.component.html',\n    styleUrl: './login-popup.component.scss',\n    standalone: false\n})\r\nexport class LoginPopupComponent {\r\n\r\n}\r\n","<p>login-popup works!</p>\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\n    selector: 'acf-register-popup',\n    templateUrl: './register-popup.component.html',\n    styleUrl: './register-popup.component.scss',\n    standalone: false\n})\r\nexport class RegisterPopupComponent {\r\n\r\n}\r\n","<p>register-popup works!</p>\r\n","import { Component, Input } from '@angular/core';\r\nimport { DataStoreService } from '../../../services/data-store.service';\r\n\r\n@Component({\n    selector: 'acf-generic-section',\n    templateUrl: './generic-section.component.html',\n    styleUrl: './generic-section.component.scss',\n    standalone: false\n})\r\nexport class GenericSectionComponent {\r\n  @Input() logo: string = '';\r\n  @Input() guidelinesLogo: string = '';\r\n  appName: string;\r\n  constructor(private readonly store: DataStoreService) {\r\n    this.appName = this.store.getApplication()\r\n  }\r\n}\r\n","<div class=\"acf-box sm:px-8 \">\r\n    <div class=\"  h-1rem w-full top-0 left-0\">\r\n        <!-- Guidelines Logo Image as a Top Border -->\r\n        <img class=\"acf-guidelines\" [src]=\"'assets/'+ this.appName + '/guidelines.png'\" alt=\"Guidelines Logo\"\r\n            *ngIf=\"this.appName == 'BoschConsumerPortal'\">\r\n    </div>\r\n    <div class=\"surface-card pb-5 px-5 \">\r\n        <div class=\"flex align-items-center justify-content-between w-full pt-3 pb-3\">\r\n            <!-- Main Logo Image -->\r\n            <img [src]=\"logo\" alt=\"Logo\" class=\"max-h-5rem\">\r\n            <p class=\"font-bold text-base\" *ngIf=\"this.appName == 'BoschConsumerPortal'\">Electroménager</p>\r\n        </div>\r\n        <ng-content></ng-content>\r\n    </div>\r\n</div>","import { Component, Input } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { RoutesPaths } from '../../../enums/routePaths';\r\n\r\n@Component({\n    selector: 'acf-page-not-found',\n    templateUrl: './page-not-found.component.html',\n    styleUrl: './page-not-found.component.scss',\n    standalone: false\n})\r\nexport class PageNotFoundComponent {\r\n  @Input() appName: string = '';\r\n  @Input() notFoundImage: string = '';\r\n  constructor(private readonly router: Router) { }\r\n\r\n  onSubmit() {\r\n    this.router.navigate([`/${RoutesPaths.forgetPassword}`])\r\n  }\r\n}\r\n","<div class=\"surface-ground flex align-items-center justify-content-center min-h-screen min-w-screen overflow-hidden\">\r\n    <div class=\"flex flex-column align-items-center justify-content-center\">\r\n        <div class=\"w-full  py-8 px-5 sm:px-8 flex flex-column align-items-center\">\r\n            <div class=\"grid flex flex-column align-items-center\">\r\n                <img [src]=\"notFoundImage\" alt=\"Error\" class=\"h-25rem flex-shrink-0\">\r\n            </div>\r\n        </div>\r\n    </div>\r\n</div>","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'acf-rounded-chart',\r\n  standalone: false,\r\n  templateUrl: './rounded-chart.component.html',\r\n  styleUrl: './rounded-chart.component.scss'\r\n})\r\nexport class RoundedChartComponent {\r\n  @Input() donutData: any;\r\n  @Input() donutOptions: any;\r\n}\r\n","<div class=\"chart-container\">\r\n         <ng-content></ng-content>\r\n        <p-chart type=\"doughnut\" [data]=\"donutData\" [options]=\"donutOptions\" class=\"p-chart\"></p-chart>\r\n</div>","import { Directive,  Output, EventEmitter, ElementRef, HostListener } from '@angular/core';\r\n\r\n@Directive({\r\n    selector: '[clickOutside]',\r\n    standalone: false\r\n})\r\n\r\nexport class ClickOutsideDirective {\r\n\r\n    @Output() clickOutside = new EventEmitter<void>();\r\n\r\n    constructor(private elementRef: ElementRef) { }\r\n\r\n    @HostListener('document:click', ['$event.target'])\r\n    public onClick(target: any) {\r\n        const clickedInside = this.elementRef.nativeElement.contains(target);\r\n        if (!clickedInside) {\r\n            this.clickOutside.emit();\r\n        }\r\n    }\r\n}","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { Inject } from '@angular/core';\r\nimport { LIB_CONFIG, LibConfig } from '../config.token';;\r\nimport { DataStoreService } from './data-store.service';\r\n\r\n@Injectable({\r\n  providedIn: 'root',\r\n})\r\nexport class FileService {\r\n  constructor(@Inject(LIB_CONFIG) private config: LibConfig,\r\n    private http: HttpClient,\r\n    private readonly store: DataStoreService\r\n  ) { }\r\n\r\n  extractFileData(file: File, idFile: string): Observable<any> {\r\n    const formData = new FormData();\r\n    formData.append('file', file);\r\n    const applicationName = this.store.getApplication();\r\n\r\n    const fileType = 'INVOICE';\r\n    return this.http.post(\r\n      `${this.config.AFTERSALES_URL}OpenAI/ExtractFileData?idFile=${idFile}&fileType=${fileType}&applicationName=${applicationName}`,\r\n      formData,\r\n      {  }\r\n    );\r\n  }\r\n\r\n  printOm(): Observable<any> {\r\n    const body = {\r\n      $type: 'PrintingServiceRequestMandateParameter',\r\n      applicationName: this.store.getApplication(),\r\n      userName: this.store.getUserName(),\r\n      atsCode: 'RTE',// this.store.getATS(),\r\n      userCode: 'RTE', // this.store.getATS(),\r\n      lngId: 1036,\r\n      isDebug: true,\r\n      MandateId: this.store.getMandateID(),\r\n      MandatePrintTemplateType: 2,\r\n      DisplayBarcode: true,\r\n    };\r\n    return this.http.post<any>(\r\n      `${this.config.AFTERSALES_URL}Printing/PrintingToPdf`, body);\r\n  }\r\n\r\n  print(base64String: string) {\r\n    const pdfWindow = window.open();\r\n    if (pdfWindow) {\r\n      const pdfData = 'data:application/pdf;base64,' + base64String;\r\n      pdfWindow.document.write(\r\n        `<iframe src=\"${pdfData}\" frameborder=\"0\" style=\"width:100%;height:100%;\"></iframe>`\r\n      );\r\n      pdfWindow.document.addEventListener('load', () => {\r\n        pdfWindow.print();\r\n      });\r\n    }\r\n  }\r\n\r\n  printLabel(pickUp: any): Observable<any> {\r\n    const body = {\r\n      applicationName: this.store.getApplication(),\r\n      orderNumber: this.store.getOmNumber(),\r\n      contryCodeIso2From: '250',\r\n      nameFrom: pickUp.fromName,\r\n      addressFrom: pickUp.fromAddress1,\r\n      cityFrom: pickUp.fromCity,\r\n      postalCodeFrom: pickUp.fromZip,\r\n      contryCodeIso2To: '250',\r\n      nameTo: pickUp.toName,\r\n      addressTo: pickUp.toAddress1,\r\n      cityTo: pickUp.toCity,\r\n      postalCodeTo: pickUp.toZip,\r\n      phoneTo: pickUp.toPhone,\r\n      carrierCode: pickUp.carrierCode,\r\n      carrierId: pickUp.carrierCode\r\n    };\r\n    return this.http.post<any>(`${this.config.REF_URL}/GenerateTransportDocument`, body);\r\n  }\r\n}\r\n","import { Component, ElementRef, EventEmitter, Output, ViewChild } from '@angular/core';\r\nimport { MessageService } from 'primeng/api';\r\n\r\n@Component({\r\n  selector: 'acf-file-upload',\r\n  standalone: false,\r\n  templateUrl: './file-upload.component.html',\r\n  styleUrl: './file-upload.component.scss'\r\n})\r\nexport class FileUploadComponent {\r\nfile: File | undefined;  \r\n  readonly ALLOWED_FILE_TYPES = ['application/pdf', 'image/png', 'image/jpeg'];\r\n\r\n  @ViewChild('fileInput') fileInput!: ElementRef<HTMLInputElement>;\r\n  @Output() filesChanged: EventEmitter<File> = new EventEmitter<File>();\r\n\r\n  constructor(\r\n    private readonly messageService: MessageService\r\n  ) { }\r\n\r\n  onFileSelected(event: Event): void {\r\n   const input = event.target as HTMLInputElement;\r\n   this.onFileCheck(input);\r\n  }\r\n  \r\n  onFileCheck(input: HTMLInputElement): void {\r\n    if (input.files && input.files.length > 0) {\r\n      const newFiles = Array.from(input.files);\r\n      const invalidFile = newFiles.find(file => !this.ALLOWED_FILE_TYPES.includes(file.type));\r\n      if (invalidFile) {\r\n        this.show('Supported formats: JPEG, PNG, PDF');\r\n        return;\r\n      }\r\n      this.file = newFiles[0];\r\n      this.filesChanged.emit(this.file);\r\n    }\r\n  }\r\n\r\n  onDragOver(event: DragEvent) {\r\n    event.preventDefault();\r\n  }\r\n\r\n  onDrop(event: DragEvent) {\r\n    event.preventDefault();\r\n    if (event.dataTransfer?.files.length) {\r\n        const newFiles = Array.from(event.dataTransfer.files); \r\n        const invalidFile = newFiles.find(file => !this.ALLOWED_FILE_TYPES.includes(file.type));\r\n        if (invalidFile) {\r\n          this.show('Supported formats: JPEG, PNG, PDF');\r\n          return;\r\n        }\r\n        this.file = newFiles[0]\r\n        this.filesChanged.emit(this.file);\r\n    }\r\n  }\r\n\r\n  onRemoveFile() {\r\n    this.file = undefined;\r\n  }\r\n\r\n  show(message: string) {\r\n    this.messageService.add({ severity: 'error', summary: 'Erreur', detail: message });\r\n  }\r\n\r\n  triggerFileInput() {\r\n    this.fileInput.nativeElement.click();\r\n  }\r\n\r\n}\r\n\r\n","<div class=\"device-attachement\">\r\n    <div class=\"upload-box\" (drop)=\"onDrop($event)\" (dragover)=\"onDragOver($event)\">\r\n        <img src=\"icons/upload_icon.svg\" alt=\"upload icon\" width=\"auto\" height=\"70\">\r\n        <div class=\"ml-4\">\r\n            <p class=\"browse-support\">Formats pris en charge: PDF de 2 à 5 Mo. </p>\r\n            <label for=\"file-upload\" class=\"custom-file-upload\">\r\n                Importer une facture ou\r\n                <span class=\"browse\" tabindex=\"0\" (keydown.enter)=\"triggerFileInput()\"> Parcourir </span>\r\n            </label>\r\n            <input id=\"file-upload\" type=\"file\" (change)=\"onFileSelected($event)\" accept=\".jpeg,.jpg,.png,.pdf\"\r\n                style=\"display: none;\" class=\"display-n\" #fileInput />\r\n        </div>\r\n    </div>\r\n</div>","import { Component, Optional, ViewChild } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { MessageService } from 'primeng/api';\r\nimport { DialogService, DynamicDialogRef } from 'primeng/dynamicdialog';\r\nimport { DataStoreService } from '../../../services/data-store.service';\r\nimport {\r\n  AutoComplete,\r\n  AutoCompleteCompleteEvent,\r\n  AutoCompleteSelectEvent,\r\n} from 'primeng/autocomplete';\r\nimport { FileService } from '../../../services/file.service';\r\nimport {\r\n  ProductOCR,\r\n  Products,\r\n  ProductsOCR,\r\n  ProductsXS,\r\n  ProductXS,\r\n} from '../../../models/shared/product';\r\nimport { ReferentialService } from '../../../services/referential.service';\r\nimport { map, forkJoin } from 'rxjs';\r\nimport { CreateCDMBaseWarrantiesResponse } from '../../../models/response/create-mandate.response';\r\nimport { Brand, Brands } from '../../../models/shared/brand';\r\nimport { DropdownChangeEvent } from 'primeng/dropdown';\r\nimport { Router } from '@angular/router';\r\nimport { RoutesPaths } from '../../../enums/routePaths';\r\nimport { CreateContractProductRequest } from '../../../models/request/create-contract-product';\r\n@Component({\r\n  selector: 'acf-genereic-device-add',\r\n  standalone: false,\r\n  templateUrl: './genereic-device-add.component.html',\r\n  styleUrl: './genereic-device-add.component.scss',\r\n})\r\nexport class GenereicDeviceAddComponent {\r\n  deviceForm: FormGroup;\r\n  loading: boolean = false;\r\n  autoComplete_loading: boolean = false;\r\n  submitted: boolean = false;\r\n  applicationName: string = '';\r\n  @ViewChild('autoComplete') autoComplete!: AutoComplete;\r\n  selectedFile: File | null = null;\r\n  productOCR: ProductOCR = {};\r\n  productByRef: ProductXS = {};\r\n  invalid_ref: boolean = false;\r\n  suggestedCommercialRefs!: string[];\r\n  maxDate: Date = new Date();\r\n  noBrandSelected: boolean = true;\r\n  brandList: Brands = [];\r\n  brandSelected: Brand | null = null;\r\n  ocr_products: ProductsOCR = [];\r\n  onSelectBrand($event: DropdownChangeEvent) {\r\n    this.noBrandSelected = false;\r\n    this.brandSelected = $event.value;\r\n    this.deviceForm = this.onSetFrom({ brand: this.brandSelected || '' });\r\n    this.deviceForm.patchValue({ brand: this.brandSelected });\r\n    if (this.brandSelected && this.ocr_products.length > 0) {\r\n      this.fetchProducts(this.ocr_products, this.brandSelected);\r\n    }\r\n  }\r\n  onClearBrand() {\r\n    this.noBrandSelected = true;\r\n    this.deviceForm = this.onItniFrom();\r\n    this.submitted = false;\r\n    this.brandSelected = null;\r\n  }\r\n  getBrandList() {\r\n    this.noBrandSelected = true;\r\n    this.brandSelected = null;\r\n    this.refencielService.getBrands().subscribe({\r\n      next: (response) => {\r\n        this.brandList = response;\r\n      },\r\n      error: (error) => {\r\n        console.log(error);\r\n      },\r\n    });\r\n  }\r\n  constructor(\r\n    private readonly messageService: MessageService,\r\n    private readonly fileService: FileService,\r\n    private readonly refencielService: ReferentialService,\r\n    private readonly formBuilder: FormBuilder,\r\n    @Optional() public ref: DynamicDialogRef,\r\n    private readonly store: DataStoreService,\r\n    private readonly router: Router\r\n  ) {\r\n    this.applicationName = this.store.getApplication();\r\n    this.deviceForm = this.onItniFrom();\r\n    this.getBrandList();\r\n  }\r\n\r\n  onFilesChanged(file: File): void {\r\n    this.loading = true;\r\n    this.brandSelected = null;\r\n    this.noBrandSelected = true;\r\n    this.selectedFile = file;\r\n    this.deviceForm = this.onItniFrom();\r\n    this.suggestedCommercialRefs = [];\r\n    this.invalid_ref = false;\r\n    if (this.selectedFile) {\r\n      const idFile = (Date.now() + Math.floor(Math.random() * 1000)).toString();\r\n      this.fileService.extractFileData(this.selectedFile, idFile).subscribe({\r\n        next: (response) => {\r\n          const jsonString = response?.choices[0]?.message?.content;\r\n          const cleanedJsonString = jsonString.replace(/```|json/g, '');\r\n          const cleanedResponse = this.parseJsonString(cleanedJsonString);\r\n          this.ocr_products = cleanedResponse.Products;\r\n          this.loading = false;\r\n        },\r\n        error: (error) => {\r\n          console.error('Error uploading file:', error);\r\n          this.loading = false;\r\n        },\r\n      });\r\n    }\r\n  }\r\n\r\n  onItniFrom() {\r\n    return this.formBuilder.group({\r\n      fullDescription: ['', Validators.required],\r\n      productReference: ['', Validators.required],\r\n      productTechReference: ['', Validators.required],\r\n      salesDate: [null, Validators.required],\r\n      brand: [null, Validators.required],\r\n      family: ['', Validators.required],\r\n      isPEM :[''],\r\n      isForSolmis :[''],\r\n    });\r\n  }\r\n\r\n  onSetFrom(prd?: ProductXS) {\r\n    return this.formBuilder.group({\r\n      fullDescription: [prd?.fullDescription],\r\n      productReference: [prd?.commercialRef, Validators.required],\r\n      productTechReference: [prd?.technicalRef, Validators.required],\r\n      brand: [prd?.brand],\r\n      family: [prd?.family],\r\n      salesDate: [\r\n        prd?.PurchaseDate != null ? new Date(prd.PurchaseDate) : null,\r\n        Validators.required,\r\n      ],\r\n      isPEM :[prd?.isPEM],\r\n      isForSolmis :[prd?.isForSolmis],\r\n    });\r\n  }\r\n\r\n  onSelectProduct(event: AutoCompleteSelectEvent) {\r\n    this.invalid_ref = false;\r\n    if (this.brandSelected) {\r\n      this.refencielService\r\n        .searchProductByBrandAndCommercialRef(\r\n          event.value,\r\n          this.brandSelected.brandId,\r\n          this.brandSelected.manufacturerId,\r\n          this.brandSelected.isSolmis\r\n        )\r\n        .subscribe((data: ProductsXS) => {\r\n          if (data) {\r\n            const prd: ProductXS = {\r\n              commercialRef: data[0]?.commercialRef,\r\n              technicalRef: data[0]?.technicalRef,\r\n              brand: this.brandSelected || '',\r\n              family: data[0]?.family,\r\n              fullDescription: data[0]?.fullDescription,\r\n              PurchaseDate: this.deviceForm.value.salesDate,\r\n              isForSolmis : data[0]?.isForSolmis,\r\n              isPEM : data[0]?.isPEM\r\n            };\r\n            this.deviceForm = this.onSetFrom(prd);\r\n          }\r\n        });\r\n    }\r\n  }\r\n\r\n  displayReferences(event: AutoCompleteCompleteEvent) {\r\n    this.invalid_ref = false;\r\n    if (this.noBrandSelected == false) {\r\n      this.suggestedCommercialRefs = [];\r\n      if (\r\n        event.query &&\r\n        event.query.length > 3 &&\r\n        this.noBrandSelected == false\r\n      ) {\r\n        this.getProductsByRefAndBrand(event.query);\r\n      } else {\r\n        this.invalid_ref = false;\r\n      }\r\n    }\r\n  }\r\n\r\n  getProductsByRefAndBrand(ref: string) {\r\n    this.autoComplete_loading = true;\r\n    if (this.brandSelected != null) {\r\n      this.refencielService\r\n        .searchProductByBrandAndCommercialRef(\r\n          ref,\r\n          this.brandSelected.brandId,\r\n          this.brandSelected.manufacturerId,\r\n          this.brandSelected.isSolmis\r\n        )\r\n        .subscribe(\r\n          (data) => {\r\n            this.suggestedCommercialRefs = data\r\n              .map((product) => product.commercialRef)\r\n              .filter((ref): ref is string => ref !== undefined);\r\n            if (this.suggestedCommercialRefs.length == 0 && ref != '') {\r\n              this.invalid_ref = true;\r\n            }\r\n            this.autoComplete_loading = false;\r\n          },\r\n          (_) => {\r\n            console.error('API SearchProductByCommercialRef DOWN');\r\n            this.autoComplete_loading = false;\r\n          }\r\n        );\r\n    }\r\n  }\r\n\r\n  closePopup() {\r\n    this.ref.close(false);\r\n    this.deviceForm = this.onItniFrom();\r\n    this.invalid_ref = false;\r\n  }\r\n\r\n  onRemoveFile() {\r\n    this.selectedFile = null;\r\n    this.invalid_ref = false;\r\n    this.noBrandSelected = true;\r\n    this.brandSelected = null;\r\n    this.ocr_products = [];\r\n    this.deviceForm = this.onItniFrom();\r\n  }\r\n\r\n  submit() {\r\n    let salesDate = new Date(this.deviceForm.value.salesDate);\r\n    const year = salesDate.getFullYear();\r\n    const month = String(salesDate.getMonth() + 1).padStart(2, '0');\r\n    const day = String(salesDate.getDate()).padStart(2, '0');\r\n    const formattedSalesDate = `${year}-${month}-${day}`;\r\n    this.submitted = true;\r\n\r\n    if (this.deviceForm.valid && this.invalid_ref == false) {\r\n      const req : CreateContractProductRequest = {\r\n        manufacturerId: this.deviceForm.value.brand.manufacturerId,\r\n        commercialRef: this.deviceForm.value.productReference,\r\n        technicalRef: this.deviceForm.value.productTechReference,\r\n        saleDate: formattedSalesDate,\r\n        brand: this.deviceForm.value.brand.brandName,\r\n        family: this.deviceForm.value.family,\r\n        fullDescription: this.deviceForm.value.fullDescription,\r\n        isPEM: false,\r\n        isForSolmis: this.deviceForm.value.brand.isSolmis\r\n      }\r\n      this.refencielService.createContractProduct(req).subscribe(\r\n          (response) => {\r\n            if (response.result == false) {\r\n              if (response.error && response.error.length > 0) {\r\n                 this.displayError(response.error[0]);\r\n              }else {\r\n                this.displayError('Une erreur s\\'est produite. Veuillez réessayer plus tard.');\r\n              }\r\n             \r\n            } else if (response.result == true) {\r\n              this.brandSelected = null;\r\n              this.noBrandSelected = true;\r\n              this.selectedFile = null;\r\n              this.deviceForm = this.onItniFrom();\r\n              this.suggestedCommercialRefs = [];\r\n              this.selectedFile = null;\r\n              this.submitted = false;\r\n              this.ref.close(true);\r\n            }\r\n          },\r\n          (error) => {\r\n            this.submitted = false;\r\n            console.log(error);\r\n            this.displayError(error.error);\r\n            this.invalid_ref = false;\r\n          }\r\n        );\r\n    }\r\n  }\r\n  parseJsonString(jsonString: string): any {\r\n    try {\r\n      const parsedData = JSON.parse(jsonString);\r\n      return parsedData;\r\n    } catch (error) {\r\n      this.loading = false;\r\n      console.error('Error parsing JSON string:', error);\r\n      return null;\r\n    }\r\n  }\r\n\r\n  fetchProducts(products: ProductsOCR, brand: Brand) {\r\n    if (products && brand) {\r\n      if (products.length == 1) {\r\n        this.productOCR = products[0];\r\n        if (this.productOCR.CommercialRef) {\r\n          this.refencielService\r\n            .searchProductByBrandAndCommercialRef(\r\n              this.productOCR.CommercialRef,\r\n              brand.brandId,\r\n              brand.manufacturerId,\r\n              brand.isSolmis\r\n            )\r\n            .subscribe(\r\n              (data) => {\r\n                if (data) {\r\n                  this.productByRef = data[0];\r\n                  let prd: ProductXS = {\r\n                    commercialRef: this.productOCR?.CommercialRef,\r\n                    PurchaseDate: this.productOCR?.PurchaseDate,\r\n                    brand: this.brandSelected || '',\r\n                  };\r\n                  if (this.productByRef && this.brandSelected) {\r\n                    prd = {\r\n                      commercialRef: this.productOCR?.CommercialRef,\r\n                      technicalRef: this.productByRef?.technicalRef,\r\n                      brand: this.brandSelected,\r\n                      PurchaseDate: this.productOCR?.PurchaseDate,\r\n                      family: this.productByRef?.family,\r\n                      fullDescription: this.productByRef?.fullDescription,\r\n                      isForSolmis : this.productByRef?.isForSolmis,\r\n                      isPEM : this.productByRef?.isPEM\r\n                    };\r\n                  } else {\r\n                    this.invalid_ref = true;\r\n                  }\r\n                  this.deviceForm = this.onSetFrom(prd);\r\n                } else {\r\n                  this.invalid_ref = true;\r\n                }\r\n              },\r\n              (err) => {\r\n                this.invalid_ref = true;\r\n              }\r\n            );\r\n        }\r\n      } else {\r\n        const commercialRefChecks = products\r\n          .map((product) => product?.CommercialRef)\r\n          .filter((ref): ref is string => ref !== undefined)\r\n          .map((ref) =>\r\n            this.refencielService\r\n              .searchProductByBrandAndCommercialRef(\r\n                ref,\r\n                brand.brandId,\r\n                brand.manufacturerId,\r\n                brand.isSolmis\r\n              )\r\n              .pipe(map((data) => (data && data.length > 0 ? ref : null)))\r\n          );\r\n        forkJoin(commercialRefChecks).subscribe((validRefs) => {\r\n          this.suggestedCommercialRefs = validRefs.filter(\r\n            (ref) => ref !== null\r\n          ) as string[];\r\n        });\r\n        this.deviceForm = this.onSetFrom({\r\n          brand: brand,\r\n          PurchaseDate: products[0]?.PurchaseDate,\r\n        });\r\n        this.autoComplete.show();\r\n      }\r\n    }\r\n  }\r\n  helpCenter() {\r\n    const form = this.deviceForm.value;\r\n    this.store.setTempDevice(form);\r\n    this.ref.close(false);\r\n    this.router.navigate([\r\n      RoutesPaths.consumer,\r\n      RoutesPaths.devices,\r\n      RoutesPaths.helpCenter,\r\n    ]);\r\n  }\r\n  restAll() {\r\n    this.loading = false;\r\n    this.brandSelected = null;\r\n    this.noBrandSelected = true;\r\n    this.selectedFile = null;\r\n    this.deviceForm = this.onItniFrom();\r\n    this.suggestedCommercialRefs = [];\r\n    this.invalid_ref = false;\r\n  }\r\n\r\n  displayError(error: string) {\r\n    switch (error) {\r\n      case 'ProductAlreadyExists':\r\n        this.messageService.add({\r\n          severity: 'error',\r\n          detail:\r\n            'Cet appareil est déjà enregistré dans votre liste des appareils',\r\n        });\r\n        break;\r\n      case 'NoContractCodeFound':\r\n        this.messageService.add({\r\n          severity: 'error',\r\n          detail: 'Aucun contrat trouvé.',\r\n        });\r\n        break;\r\n      default:\r\n        this.messageService.add({\r\n          severity: 'error',\r\n          detail: \"Une erreur s'est produite. Veuillez réessayer plus tard.\",\r\n        });\r\n        break;\r\n    }\r\n  }\r\n  get f() {\r\n    return this.deviceForm.controls;\r\n  }\r\n}\r\n","<div class=\"device-popup\">\r\n  <div class=\"device-popup-header\">\r\n    <div class=\"text-xl font-bold\">Ajouter un appareil</div>\r\n    <img class=\"ml-auto cursor-pointer\" (click)=\"closePopup()\" [src]=\"'icons/close.svg'\" alt=\"close\">\r\n  </div>\r\n  <form [formGroup]=\"deviceForm\" class=\"mt-6\">\r\n\r\n    <p-message severity=\"warn\"  *ngIf=\"invalid_ref && !f['productReference'].errors\">\r\n      <p class=\"text-md font-semibold my-2\">L'appareil que vous tentez d'ajouter ne figure pas dans notre référentiel. Veuillez contacter notre\r\n        <a class=\"link\" (click)=\"helpCenter()\">support client</a>\r\n        pour en demander l'integration au référentiel.\r\n      </p>\r\n    </p-message>\r\n\r\n    <div class=\"grid\">\r\n      <div class=\"col-12 md:col-12\">\r\n        <!-- <label class=\"block text-base font-bold mb-0 required-input\"> Champ obligatoire</label> -->\r\n        <acf-file-upload (filesChanged)=\"onFilesChanged($event)\" *ngIf=\"!loading else loader\"></acf-file-upload>\r\n        <div class=\"file\" *ngIf=\"selectedFile && !loading\">\r\n          <div class=\"flex align-items-center\"> <img src=\"icons/file.svg\" alt=\"file\">\r\n            <p class=\"filename\"> {{ selectedFile.name }} </p>\r\n          </div>\r\n          <img src=\"icons/close.svg\" alt=\"close\" (click)=\"onRemoveFile()\" class=\"cursor-pointer\">\r\n        </div>\r\n      </div>\r\n\r\n      <ng-template #loader>\r\n        <div class=\"lds-dual-ring\"></div>\r\n      </ng-template>\r\n\r\n      <div class=\"col-12\">\r\n        <label class=\"block text-base font-bold mb-0 required-input\" for=\"brand\">Marque </label>\r\n        <p-dropdown class=\"w-full\" id=\"brand\" formControlName=\"brand\" [options]=\"brandList\" optionLabel=\"brandName\"\r\n          [filter]=\"true\" [filterBy]=\"'brandName'\" [lazy]=\"true\" emptyFilterMessage=\"Aucune marque trouvé\"\r\n          [showClear]=\"true\" emptyMessage=\"Aucune marque trouvé\" (onChange)=\"onSelectBrand($event)\"\r\n          (onClear)=\"onClearBrand()\"\r\n          [ngClass]=\"{ 'acf-invalid-dropdown': (f['brand'].dirty || submitted) && f['brand'].errors }\"\r\n          placeholder=\"Saisir la marque de votre appareil\">\r\n          <ng-template let-brand pTemplate=\"item\">\r\n            <div class=\"flex align-items-center gap-2\">\r\n              <div> {{ brand.brandName }}</div>\r\n            </div>\r\n          </ng-template>\r\n        </p-dropdown>\r\n        <div class=\"acf-invalid-feedback\" *ngIf=\"(submitted || f['brand'].dirty) && f['brand'].errors\">\r\n          <div *ngIf=\"f['brand'].errors['required']\">Ce champ est obligatoire.</div>\r\n        </div>\r\n      </div>\r\n\r\n      <div class=\"col-12\">\r\n        <label class=\"block text-base font-bold mb-0 required-input\" for=\"productReference\">Référence commerciale\r\n        </label>\r\n        <p-autoComplete #autoComplete [style]=\"{'width':'100%'}\" [inputStyle]=\"{'width':'100%'}\"\r\n          [suggestions]=\"suggestedCommercialRefs\" (completeMethod)=\"displayReferences($event)\"\r\n          [readonly]=\"noBrandSelected\" formControlName=\"productReference\" (onSelect)=\"onSelectProduct($event)\"\r\n          minLength=\"4\" placeholder=\"Saisir la référence commerciale\"\r\n          [ngClass]=\"{ 'acf-invalid-autocomplete':((submitted || f['productReference'].dirty) && f['productReference'].errors) || invalid_ref, 'reaonly': noBrandSelected }\"\r\n          [emptyMessage]=\"autoComplete_loading ? 'Chargement en cours...': 'Aucune référence trouvée'\">\r\n          <ng-template let-ref pTemplate=\"item\"> {{ref}} </ng-template>\r\n        </p-autoComplete>\r\n        <div class=\"acf-invalid-feedback\"\r\n          *ngIf=\"(submitted || f['productReference'].dirty) && f['productReference'].errors\">\r\n          <div *ngIf=\"f['productReference'].errors['required']\">Ce champ est obligatoire.</div>\r\n        </div>\r\n        <div class=\"acf-invalid-feedback\" *ngIf=\"invalid_ref && !f['productReference'].errors\">La référence commerciale ne figure pas dans notre référentiel.</div>\r\n      </div>\r\n\r\n      <div class=\"col-12\">\r\n        <label class=\"block text-base font-bold mb-0 required-input\" for=\"productTechReference\">Référence technique\r\n        </label>\r\n        <input pInputText class=\"w-full\" id=\"productTechReference\" formControlName=\"productTechReference\"\r\n          [readonly]=\"noBrandSelected\" [disabled]=\"noBrandSelected\" placeholder=\"Saisir la référence technique\"\r\n          [ngClass]=\"{ 'acf-invalid-input':(submitted || f['productTechReference'].dirty) && f['productTechReference'].errors, 'reaonly': noBrandSelected}\" />\r\n        <div class=\"acf-invalid-feedback\"\r\n          *ngIf=\"(submitted || f['productTechReference'].dirty) && f['productTechReference'].errors\">\r\n          <div *ngIf=\"f['productTechReference'].errors['required']\">Ce champ est obligatoire.</div>\r\n        </div>\r\n      </div>\r\n      <!-- \r\n      <div class=\"col-12\">\r\n        <label class=\"block text-base font-bold mb-0 required-input\" for=\"brand\">Marque </label>\r\n        <input pInputText class=\"w-full\" id=\"brand\" formControlName=\"brand\"\r\n          [ngClass]=\"{ 'acf-invalid-input':(submitted || f['brand'].dirty) && f['brand'].errors }\" />\r\n        <div class=\"acf-invalid-feedback\" *ngIf=\"(submitted || f['brand'].dirty) && f['brand'].errors\">\r\n          <div *ngIf=\"f['brand'].errors['required']\">Ce champ est obligatoire.</div>\r\n        </div>\r\n      </div> -->\r\n\r\n      <div class=\"col-12\">\r\n        <label class=\"block text-base font-bold mb-0 required-input\" for=\"family\">Famille </label>\r\n        <input pInputText class=\"w-full\" id=\"family\" formControlName=\"family\" [readonly]=\"noBrandSelected\"\r\n          [ngClass]=\"{ 'acf-invalid-input':(submitted || f['family'].dirty) && f['family'].errors , 'reaonly': noBrandSelected}\"\r\n          placeholder=\"Séléctionnez la famille de votre appareil\" />\r\n        <div class=\"acf-invalid-feedback\" *ngIf=\"(submitted || f['family'].dirty) && f['family'].errors\">\r\n          <div *ngIf=\"f['family'].errors['required']\">Ce champ est obligatoire.</div>\r\n        </div>\r\n      </div>\r\n\r\n      <div class=\"col-12 mb-4\">\r\n        <label class=\"block text-base font-bold mb-0 required-input\" for=\"salesDate\">Date d'achat </label>\r\n        <p-calendar dateFormat=\"dd/mm/yy\"\r\n          [style]=\"{'width':'100%','border-radius':'0cm', 'box-shadow':'none', 'padding':'0'}\"\r\n          formControlName=\"salesDate\" autocomplete=\"one-time-code\" [maxDate]=\"maxDate\"\r\n          placeholder=\"Séléctionnez la date d'achat\" [readonlyInput]=\"noBrandSelected\"\r\n          [ngClass]=\"{ 'acf-invalid-date': (f['salesDate'].dirty || submitted) && f['salesDate'].errors, 'reaonly': noBrandSelected}\">\r\n        </p-calendar>\r\n\r\n        <div class=\"acf-invalid-feedback\" *ngIf=\"(submitted || f['salesDate'].dirty) && f['salesDate'].errors\">\r\n          <div *ngIf=\"f['salesDate'].errors['required']\">Ce champ est obligatoire.</div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n    <div class=\"flex justify-content-end gap-2\">\r\n      <button class=\"acf-secondary-button min-w-[150px]\" pRipple (click)=\"closePopup()\">Annuler</button>\r\n      <button pRipple class=\"acf-primary-button min-w-[150px]\" (click)=\"submit()\">Ajouter</button>\r\n    </div>\r\n  </form>\r\n</div>\r\n<p-toast />","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { GenericSectionComponent } from './components/generic-section/generic-section.component';\r\nimport { PageNotFoundComponent } from './components/page-not-found/page-not-found.component';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport {\r\n  provideHttpClient,\r\n  withInterceptorsFromDi,\r\n} from '@angular/common/http';\r\nimport { PrimeNgComponentsModule } from '../prime-ng-components.module';\r\nimport { AddressFormComponent } from './components/address-form/address-form.component';\r\nimport { RoundedChartComponent } from './components/rounded-chart/rounded-chart.component';\r\nimport { ClickOutsideDirective } from '../directives/click.outside';\r\nimport { GenereicDeviceAddComponent } from './components/genereic-device-add/genereic-device-add.component';\r\nimport { FileUploadComponent } from './components/file-upload/file-upload.component';\r\n\r\n@NgModule({\r\n  declarations: [\r\n    GenericSectionComponent,\r\n    PageNotFoundComponent,\r\n    AddressFormComponent,\r\n    RoundedChartComponent,\r\n    ClickOutsideDirective,\r\n    GenereicDeviceAddComponent,\r\n    FileUploadComponent\r\n  ],\r\n  exports: [\r\n    GenericSectionComponent,\r\n    PageNotFoundComponent,\r\n    AddressFormComponent,\r\n    RoundedChartComponent,\r\n    ClickOutsideDirective,\r\n    GenereicDeviceAddComponent\r\n  ],\r\n  imports: [\r\n    CommonModule,\r\n    FormsModule,\r\n    ReactiveFormsModule,\r\n    PrimeNgComponentsModule,\r\n  ],\r\n  providers: [provideHttpClient(withInterceptorsFromDi())],\r\n})\r\nexport class SharedModule {}\r\n","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\n    selector: 'acf-register-link-already-used-error',\n    templateUrl: './register-link-already-used-error.component.html',\n    styleUrl: './register-link-already-used-error.component.scss',\n    standalone: false\n})\r\nexport class RegisterLinkAlreadyUsedErrorComponent {\r\n  @Input() appName: string = '';\r\n  @Input() notFoundImage: string = '';\r\n  constructor() { }\r\n\r\n\r\n}\r\n","<div class=\"surface-ground flex align-items-center justify-content-center min-h-screen min-w-screen overflow-hidden\">\r\n    <div class=\"flex flex-column align-items-center justify-content-center\">\r\n        <div class=\"w-full  py-8 px-5 sm:px-8 flex flex-column align-items-center\">\r\n            <div class=\"grid flex flex-column align-items-center\">\r\n                <img [src]=\"notFoundImage\" alt=\"Error\" class=\"h-25rem flex-shrink-0\">\r\n                <span class=\"text-xl mb-2\">Ce lien est déjà utilisé.</span>\r\n                <span class=\" text-xl mb-6\"></span>\r\n            </div>\r\n        </div>\r\n    </div>\r\n</div>","export enum Role {\r\n    ADMIN = 'Admin',\r\n    DEALER = 'Dealer',\r\n    BASIC_USER = 'BasicUser'\r\n}","import { Component, OnInit } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { MessageService } from 'primeng/api';\r\nimport { Router } from '@angular/router';\r\nimport { SecurityCookieService } from '../../../../services/security-cookie.service';\r\nimport { RoutesPaths } from '../../../../enums/routePaths';\r\nimport { Role } from '../../../../enums/roles';\r\nimport { DataStoreService } from '../../../../services/data-store.service';\r\nimport { CheckboxChangeEvent } from 'primeng/checkbox';\r\n\r\n@Component({\r\n  selector: 'acf-login-page-50-50',\r\n  standalone: false,\r\n  templateUrl: './login-page-50-50.component.html',\r\n  styleUrls: ['./login-page-50-50.component.scss'],\r\n  providers: [MessageService]\r\n})\r\nexport class LoginPage5050Component implements OnInit {\r\n  loginForm: FormGroup;\r\n  submitted = false;\r\n  showPassword = false;\r\n  loading = false;\r\n  returnUrl!: string;\r\n\r\n  constructor(\r\n    private formBuilder: FormBuilder,\r\n    private securityCookieService: SecurityCookieService,\r\n    private router: Router,\r\n    private messageService: MessageService,\r\n    private store: DataStoreService\r\n  ) {\r\n    this.loginForm = this.initializeForm();\r\n  }\r\n\r\n  ngOnInit(): void {\r\n\r\n    // Redirect if already logged in\r\n    if (this.securityCookieService.isAuthenticated()) {\r\n      this.redirectToUserDashboard();\r\n    }\r\n  }\r\n\r\n  private initializeForm(): FormGroup {\r\n    return this.formBuilder.group({\r\n      userName: ['', [Validators.required]],\r\n      password: ['', [Validators.required]],\r\n      ischecked: [false]\r\n    });\r\n  }\r\n\r\n  togglePasswordVisibility(): void {\r\n    this.showPassword = !this.showPassword;\r\n  }\r\n\r\n  onSubmit(): void {\r\n    this.submitted = true;\r\n    if (this.loginForm.invalid) {\r\n      return;\r\n    }\r\n    this.loading = true;\r\n    const { userName, password } = this.loginForm.value;        \r\n    this.securityCookieService.login({ userName, password }).subscribe({\r\n      next: (response) => {\r\n        if (response.result) {\r\n          this.redirectToUserDashboard();\r\n        } else {\r\n          this.showError('Une erreur est survenue lors de la connexion');\r\n        }\r\n        this.loading = false;\r\n      },\r\n      error: (error) => {\r\n        this.showError(error.message);\r\n        this.loading = false;\r\n      }\r\n    });\r\n  }\r\n\r\n  private redirectToUserDashboard(): void {\r\n    const user = this.securityCookieService.getCurrentUser();\r\n    if (!user) return;\r\n\r\n    let redirectPath: string;\r\n\r\n    switch (user.role) {\r\n      case Role.ADMIN:\r\n        redirectPath = RoutesPaths.admin_dashboard;\r\n        break;\r\n      case Role.DEALER:\r\n        redirectPath = RoutesPaths.reseller_contracts;\r\n        break;\r\n      case Role.BASIC_USER:\r\n        redirectPath = RoutesPaths.consumer_devices;\r\n        break;\r\n      default:\r\n        redirectPath = RoutesPaths.login;\r\n    }\r\n    this.router.navigate([redirectPath]);\r\n  }\r\n\r\n  private showError(message: string): void {\r\n    this.messageService.add({\r\n      severity: 'error',\r\n      summary: 'Erreur',\r\n      detail: message\r\n    });\r\n  }\r\n\r\n  resetPassword(): void {\r\n    this.router.navigate([RoutesPaths.forgetPassword]);\r\n  }\r\n  onCheckboxChange(event : CheckboxChangeEvent ) {\r\n   this.store.set_cui_eco_rm(event.checked);\r\n   }\r\n  get f() {\r\n    return this.loginForm.controls;\r\n  }\r\n}","<div class=\"login-container\">\r\n    <div class=\"w-full image-section\">\r\n    </div>\r\n    <div class=\"flex w-full px-8 form-section\">\r\n        <div class=\"flex flex-col justify-center w-full\">\r\n\r\n            <div class=\"logo\">\r\n                <img src=\"logo.svg\" alt=\"logo\" width=\"250\" height=\"auto\">\r\n            </div>\r\n\r\n            <p class=\"mb-5 mt-10 text-2xl font-bold\">Connexion</p>\r\n\r\n            <form [formGroup]=\"loginForm\">\r\n\r\n                <div class=\"w-full\">\r\n                    <label class=\"font-semibold required-input\" for=\"userName\">Email/Identifiant </label>\r\n                    <p class=\"text-xs m-0 p-0\">Vous êtes revendeur ? Connectez-vous avec votre identifiant GCPlus</p>\r\n                    <input pInputText class=\"w-full mt-2 bg-white acf-input\" id=\"userName\" formControlName=\"userName\"\r\n                        placeholder=\"Email/Identifiant\" type=\"text\"\r\n                        [ngClass]=\"{ 'acf-invalid-input':(submitted || f['userName'].dirty) && f['userName'].errors }\" />\r\n                    <div class=\"acf-invalid-feedback\"\r\n                        *ngIf=\"(submitted || f['userName'].dirty) && f['userName'].errors\">\r\n                        <div *ngIf=\"f['userName'].errors['required']\">Ce champ est obligatoire.</div>\r\n                    </div>\r\n                </div>\r\n\r\n                <div class=\"w-full mt-4\">\r\n                    <label class=\"block font-semibold required-input\" for=\"password\">Mot de passe </label>\r\n                    <p-iconField iconPosition=\"right\">\r\n                        <input pInputText [type]=\"showPassword ? 'text' : 'password'\" class=\"w-full acf-input mt-2\"\r\n                            id=\"password\" formControlName=\"password\" placeholder=\"Entrer votre mot de passe\"\r\n                            [ngClass]=\"{ 'acf-invalid-input':(submitted || f['password'].dirty) && f['password'].errors }\" />\r\n                        <p-inputIcon class=\"p-1\" [styleClass]=\"showPassword ? 'pi pi-eye':'pi pi-eye-slash'\"\r\n                            (click)=\"togglePasswordVisibility()\" />\r\n                    </p-iconField>\r\n                    <div class=\"acf-invalid-feedback\"\r\n                        *ngIf=\"(submitted || f['password'].dirty) && f['password'].errors\">\r\n                        <div *ngIf=\"f['password'].errors['required']\">Ce champ est obligatoire.</div>\r\n                    </div>\r\n                </div>\r\n\r\n                <div class=\"w-full\">\r\n                    <div class=\"flex align-items-center justify-content-between w-full\">\r\n                        <div class=\"my-5\">\r\n                            <p-checkbox formControlName=\"ischecked\" binary=\"true\" class=\"mr-3\" (onChange)=\"onCheckboxChange($event)\"></p-checkbox>\r\n                            <span class=\"text-sm font-semibold\">Se souvenir de moi </span>\r\n                        </div>\r\n                        <a class=\"acf-primary-link font-semibold\" (click)=\"resetPassword()\">Mot de passe oublié</a>\r\n                    </div>\r\n                </div>\r\n\r\n                <div class=\"w-full\">\r\n                    <button type=\"submit\" class=\"acf-primary-button\" (click)=\"onSubmit()\">Se connecter</button>\r\n                </div>\r\n\r\n            </form>\r\n        </div>\r\n    </div>\r\n</div>\r\n<p-toast></p-toast>","import { Component, Input, OnInit } from '@angular/core';\r\nimport { MessageService } from 'primeng/api';\r\nimport { RoutesPaths } from '../../../../enums/routePaths';\r\nimport { ForgetPasswordLinkRequest } from '../../../../models/request/forget-password-link.request';\r\nimport { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { AccountService } from '../../../../services/account.service';\r\nimport { DataStoreService } from '../../../../services/data-store.service';\r\n\r\n@Component({\r\n  selector: 'acf-form-password-50-50',\r\n  standalone: false,\r\n  templateUrl: './form-password-50-50.component.html',\r\n  styleUrl: './form-password-50-50.component.scss' ,\r\n  providers: [MessageService]\r\n})\r\nexport class FormPassword5050Component implements OnInit {\r\n\r\n  @Input() redirectUrl: string = '';\r\n\r\n  forgetPasswordForm: FormGroup;\r\n  submitted = false;\r\n  loading = false;\r\n  emailInputIcon: string = '';\r\n\r\n  constructor(\r\n    private readonly formBuilder: FormBuilder,\r\n    private readonly accountService: AccountService,\r\n    private readonly messageService: MessageService,\r\n    private readonly route: ActivatedRoute,\r\n    private readonly router: Router,\r\n    private readonly store: DataStoreService\r\n\r\n  ) {\r\n    this.forgetPasswordForm = this.initForm();\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.route.queryParams.subscribe(params => {\r\n      const key = params['key']?.replace(/ /g, '+');\r\n      if (key) {\r\n        this.accountService.validateKey(key).subscribe({\r\n          next: response => {\r\n            if (response.result) {\r\n              this.router.navigate([`/${RoutesPaths.resetPassword}`], { queryParams: { key } });\r\n            } else {\r\n              this.router.navigate([`/${RoutesPaths.resetPasswordError}`]);\r\n            }\r\n          },\r\n          error: () => {\r\n           this.router.navigate([`/${RoutesPaths.resetPasswordError}`]);\r\n          }\r\n        });\r\n      }\r\n    });\r\n  }\r\n\r\n  initForm(): FormGroup {\r\n    return this.formBuilder.group({\r\n      email: new FormControl('', [\r\n        Validators.required,\r\n        Validators.email,\r\n        Validators.pattern('^[A-Za-z0-9._%+-]+@[a-z0-9.-]+\\\\.[a-z]{2,4}$'),\r\n      ])\r\n    });\r\n  }\r\n\r\n  get f() {\r\n    return this.forgetPasswordForm.controls;\r\n  }\r\n\r\n  checkEmail() {\r\n    const email = this.forgetPasswordForm.get('email');\r\n    if (email && email.status == 'VALID' && !email.errors) {\r\n      this.emailInputIcon = 'pi pi-spinner pi-spin';\r\n      this.accountService.checkEmail(email.value).subscribe({\r\n        next: (response: boolean) => {\r\n          this.emailInputIcon = response ? 'pi pi-check' : 'pi pi-times';\r\n        },\r\n        error: () => {\r\n          this.emailInputIcon = 'pi pi-times';\r\n        },\r\n      });\r\n    } else {\r\n      // Clear the icon if the email is no longer valid\r\n      this.emailInputIcon = '';\r\n    }\r\n  }\r\n\r\n  onSubmit() {\r\n    this.submitted = true;\r\n\r\n    if (this.forgetPasswordForm.invalid || this.emailInputIcon === 'pi pi-times') {\r\n      return;\r\n    }\r\n\r\n    this.loading = true;\r\n    const forgetPasswordLinkRequest: ForgetPasswordLinkRequest = {\r\n      applicationName: this.store.getApplication(),\r\n      userName: this.forgetPasswordForm.get('email')?.value\r\n    };\r\n    this.accountService.sendForgetPasswordLink(forgetPasswordLinkRequest).subscribe({\r\n      next: (response: any) => {\r\n        if (response.result) {\r\n          // Success case\r\n          this.router.navigate([`/${RoutesPaths.resetPasswordCheckInbox}`])\r\n          \r\n        } else {\r\n          this.messageService.add({\r\n            severity: 'error',\r\n            summary: 'Erreur',\r\n            detail: 'L\\'adresse e-mail n\\'existe pas.',\r\n          });\r\n        }\r\n        this.loading = false;\r\n      },\r\n      error: () => {\r\n        this.messageService.add({\r\n          severity: 'error',\r\n          summary: 'Erreur',\r\n          detail: 'Impossible d’envoyer le lien de réinitialisation.',\r\n        });\r\n        this.loading = false;\r\n      },\r\n    });\r\n  }\r\n\r\n  async showToast(message: string) {\r\n    this.messageService.add({ severity: 'success', summary: 'Success', detail: message });\r\n  }\r\n}\r\n\r\n","<div class=\"forget-password-container\">\r\n    <div class=\"w-full image-section\">\r\n    </div>\r\n    <div class=\"flex w-full px-8 form-section\">\r\n        <div class=\"flex flex-col justify-center w-full\">\r\n\r\n            <div class=\"logo\">\r\n                <img src=\"logo.svg\" alt=\"logo\" width=\"250\" height=\"auto\">\r\n            </div>\r\n\r\n            <form [formGroup]=\"forgetPasswordForm\">\r\n                <div class=\"text-left mb-5\">\r\n                    <div class=\"text-2xl font-bold mb-3 mt-10\">Mot de passe oublié</div>\r\n                    <span class=\"font-medium line-height-4\t\">Veuillez renseigner l'adresse e-mail que vous avez\r\n                        utilisée à la\r\n                        création de\r\n                        votre compte. </span>\r\n                </div>\r\n                <div class=\"grid\">\r\n                    <div class=\"col-12\">\r\n                        <label class=\"block font-bold mb-2 required-input\" for=\"email\">Email </label>\r\n                        <p-iconField iconPosition=\"right\">\r\n                            <input pInputText class=\"w-full acf-input\" id=\"email\" formControlName=\"email\"\r\n                                (blur)=\"checkEmail()\"\r\n                                [ngClass]=\"{ 'acf-invalid-input': (submitted || f['email'].dirty) && (f['email'].errors || emailInputIcon === 'pi pi-times') }\" />\r\n                            <p-inputIcon [styleClass]=\"emailInputIcon\" />\r\n\r\n                        </p-iconField>\r\n                        <div class=\"acf-invalid-feedback\" *ngIf=\"(submitted || f['email'].dirty) && f['email'].errors\">\r\n                            <div *ngIf=\"f['email'].errors['required']\">Ce champ est obligatoire.</div>\r\n                            <div *ngIf=\"f['email'].errors['pattern']\">Email incorrect. </div>\r\n                        </div>\r\n                        <div class=\"acf-invalid-feedback\"\r\n                            *ngIf=\"emailInputIcon === 'pi pi-times' && !f['email'].errors\">\r\n                            Adresse e-mail introuvable.\r\n                        </div>\r\n                    </div>\r\n                    <div class=\"col-12\">\r\n                        <button type=\"submit\" class=\"acf-primary-button\" (click)=\"onSubmit()\">Envoyer</button>\r\n                    </div>\r\n                </div>\r\n            </form>\r\n        </div>\r\n    </div>\r\n</div>\r\n<p-toast></p-toast>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RegisterPageComponent } from './components/register/register-page/register-page.component';\r\nimport { RegisterFromComponent } from './components/register/register-from/register-from.component';\r\nimport { LoginPageComponent } from './components/login/login-page/login-page.component';\r\nimport { LoginSectionComponent } from './components/login/login-section/login-section.component';\r\nimport { LoginFormComponent } from './components/login/login-form/login-form.component';\r\nimport { RegisterSectionComponent } from './components/register/register-section/register-section.component';\r\n//import { TranslateModule } from '@ngx-translate/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';\r\nimport { ForgetPasswordFormComponent } from './components/forget-password/forget-password-form/forget-password-form.component';\r\nimport { PrimeNgComponentsModule } from '../prime-ng-components.module';\r\nimport { ResetPasswordFormComponent } from './components/reset-password/reset-password-form/reset-password-form.component';\r\nimport { ForgetPasswordSectionComponent } from './components/forget-password/forget-password-section/forget-password-section.component';\r\nimport { ResetPasswordErrorComponent } from './components/reset-password/reset-password-error/reset-password-error.component';\r\nimport { ResetPasswordSuccessComponent } from './components/reset-password/reset-password-success/reset-password-success.component';\r\nimport { RegisterSuccessComponent } from './components/register/register-success/register-success.component';\r\nimport { RegisterErrorComponent } from './components/register/register-error/register-error.component';\r\nimport { ResetPasswordCheckInboxComponent } from './components/reset-password/reset-password-check-inbox/reset-password-check-inbox.component';\r\nimport { RegisterCheckInboxComponent } from './components/register/register-check-inbox/register-check-inbox.component';\r\nimport { RegisterAskForNewLinkComponent } from './components/register/register-ask-for-new-link/register-ask-for-new-link.component';\r\nimport { LoginPopupComponent } from './components/login/login-popup/login-popup.component';\r\nimport { RegisterPopupComponent } from './components/register/register-popup/register-popup.component';\r\nimport { MessageService } from 'primeng/api';\r\nimport { DynamicDialogModule } from 'primeng/dynamicdialog';\r\nimport { DialogModule } from 'primeng/dialog';\r\nimport { ConfirmDialogModule } from 'primeng/confirmdialog';\r\nimport { SharedModule } from '../shared/shared.module';\r\nimport { RegisterLinkAlreadyUsedErrorComponent } from './components/register/register-link-already-used-error/register-link-already-used-error.component';\r\nimport { LoginPage5050Component } from './components/login/login-page-50-50/login-page-50-50.component';\r\nimport { FormPassword5050Component } from './components/forget-password/form-password-50-50/form-password-50-50.component';\r\n\r\n\r\n@NgModule({ declarations: [\r\n        RegisterPageComponent,\r\n        RegisterFromComponent,\r\n        RegisterSectionComponent,\r\n        LoginPageComponent,\r\n        LoginSectionComponent,\r\n        LoginFormComponent,\r\n        LoginPage5050Component,\r\n        ForgetPasswordFormComponent,\r\n        ForgetPasswordSectionComponent,\r\n        ResetPasswordFormComponent,\r\n        ResetPasswordErrorComponent,\r\n        ResetPasswordSuccessComponent,\r\n        RegisterSuccessComponent,\r\n        RegisterErrorComponent,\r\n        ResetPasswordCheckInboxComponent,\r\n        RegisterCheckInboxComponent,\r\n        RegisterAskForNewLinkComponent,\r\n        LoginPopupComponent,\r\n        RegisterPopupComponent,\r\n        RegisterLinkAlreadyUsedErrorComponent,\r\n        FormPassword5050Component,\r\n    ],\r\n    exports: [\r\n        RegisterPageComponent,\r\n        RegisterFromComponent,\r\n        LoginPageComponent,\r\n        LoginSectionComponent,\r\n        LoginFormComponent,\r\n        LoginPage5050Component,\r\n        RegisterSectionComponent,\r\n        ForgetPasswordFormComponent,\r\n        ForgetPasswordSectionComponent,\r\n        ResetPasswordFormComponent,\r\n        ResetPasswordErrorComponent,\r\n        ResetPasswordSuccessComponent,\r\n        RegisterSuccessComponent,\r\n        RegisterErrorComponent,\r\n        ResetPasswordCheckInboxComponent,\r\n        RegisterCheckInboxComponent,\r\n        RegisterAskForNewLinkComponent,\r\n        RegisterPopupComponent,\r\n        LoginPopupComponent,\r\n        RegisterLinkAlreadyUsedErrorComponent,\r\n        FormPassword5050Component\r\n    ], imports: [\r\n        CommonModule,\r\n       // TranslateModule,\r\n        FormsModule,\r\n        ReactiveFormsModule,\r\n        PrimeNgComponentsModule,\r\n        SharedModule,\r\n        DynamicDialogModule,\r\n        DialogModule,\r\n        ConfirmDialogModule], providers: [\r\n        MessageService,\r\n        provideHttpClient(withInterceptorsFromDi()),\r\n    ] })\r\nexport class AuthModule { }\r\n","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\n    selector: 'acf-header',\n    templateUrl: './header.component.html',\n    styleUrl: './header.component.scss',\n    standalone: false\n})\r\nexport class HeaderComponent {\r\n  @Input() appName?: string = '';\r\n  @Input() logoUrl?: string = '';\r\n  @Input() guidelinesUrl?: string = '';\r\n}\r\n","<!-- <div class=\"banner\">\r\n    <img class=\"banner-img\" [src]=\"'assets/'+ appName + '/guidelines.png'\" alt=\"Guidelines Logo\">\r\n</div>\r\n<div class=\"header-logo\">\r\n    <img class=\"img-logo\" [src]=\"'assets/'+ appName + '/logo.png'\" alt=\"Guidelines Logo\">\r\n    <h6 class=\"title-header-right\" *ngIf=\"appName == 'siemens'\"> {{ appName | titlecase}}\r\n        Electroménager</h6>\r\n    <p class=\"title-header-right\" *ngIf=\"appName == 'BoschConsumerPortal'\"> Electroménager</p>\r\n</div> -->\r\n\r\n\r\n<div class=\"banner\">\r\n    <img class=\"banner-img\" *ngIf=\"appName == 'BoschConsumerPortal'\" [src]=\"'assets/'+ appName + '/guidelines.png'\"\r\n        alt=\"Guidelines Logo\">\r\n</div>\r\n<div class=\"guest-header-logo container\">\r\n    <div class=\"logo-container flex justify-content-center\">\r\n        <img class=\"h-5rem pr-2\" [src]=\"'assets/'+ appName + '/logo.png'\" alt=\"Guidelines Logo\">\r\n    </div>\r\n    <p class=\"title-header-right\" *ngIf=\"appName == 'BoschConsumerPortal'\"> Electroménager</p>\r\n</div>","import { Component, Input } from '@angular/core';\r\nimport { DataStoreService } from '../../../services/data-store.service';\r\n\r\n@Component({\r\n    selector: 'acf-footer',\r\n    templateUrl: './footer.component.html',\r\n    styleUrl: './footer.component.scss',\r\n    standalone: false\r\n})\r\nexport class FooterComponent {\r\n  @Input() appName?: string = '';\r\n      applicationName: string = '';\r\n  \r\n  constructor(private readonly store: DataStoreService) {\r\n        this.applicationName = this.store.getApplication();\r\n  }\r\n}\r\nexport class links {\r\n  legalMentions!: string;\r\n  dataProtection!: string;\r\n  warrantyConditions!: string;\r\n  onlineSubscription!: string;\r\n  faq!: string;\r\n};\r\n","<footer class=\"acf-footer\">\r\n    <ul class=\"acf-link-footer\">\r\n        <!-- TODO -->\r\n        <li>© Bosch Electroménager <span class=\"vertical-bar\">|</span></li>\r\n        <li> <a [href]=\"'assets/' + this.applicationName + '/MODELE_Mentions_légales_footer_internet_vBosch_Plateforme_PEM.pdf'\"\r\n                class=\"cursor-pointer\" target=\"_blank\">\r\n                Mentions légales</a>\r\n            <span class=\"vertical-bar\">|</span>\r\n        </li>\r\n        <li>\r\n            <a [href]=\"'assets/' + this.applicationName + '/documents/politique_de_protection_des_données.pdf'\" class=\"cursor-pointer\" target=\"_blank\">\r\n               Protection des données</a>\r\n            <span class=\"vertical-bar\">|</span>\r\n        </li>\r\n        <li>\r\n            <a [href]=\"'assets/' + this.applicationName + '/documents/CGV.pdf'\" class=\"cursor-pointer\"\r\n                target=\"_blank\">\r\n                Conditions générales</a>\r\n            <span class=\"vertical-bar\">|</span>\r\n        </li>\r\n\r\n        <li>\r\n            <a [href]=\"'assets/' + this.applicationName + '/MODELE_Organisme_responsable_footer_internet_vdef_2025-09-03_Plateforme_PEM_SAV_hebergee_par_AGORAPLUS.pdf'\"\r\n                class=\"cursor-pointer\" target=\"_blank\">\r\n                Organisme responsable</a>\r\n            <!-- <span class=\"vertical-bar\">|</span> -->\r\n        </li>\r\n    </ul>\r\n</footer>","import { AfterContentInit, Component, Input } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { RoutesPaths } from '../../enums/routePaths';\r\nimport { DataStoreService } from '../../services/data-store.service';\r\nimport { MappedProduct } from '../../models/shared/product';\r\n\r\n@Component({\r\n    selector: 'acf-layout',\r\n    templateUrl: './layout.component.html',\r\n    styleUrl: './layout.component.scss',\r\n    standalone: false\r\n})\r\nexport class LayoutComponent {\r\n  @Input() appName: string = '';\r\n  @Input() step!: number;\r\n  device!: MappedProduct;\r\n  interventionTypeId: number = 0;\r\n\r\n  steps = [\r\n    { number: 1, name: 'Appareil', status: '' },\r\n    { number: 2, name: 'Panne', status: '' },\r\n    { number: 3, name: 'Coordonnées', status: '' },\r\n    { number: 4, name: 'Réparation', status: '' },\r\n    { number: 5, name: 'Validation', status: '' },\r\n    { number: 6, name: 'Paiement', status: '' }\r\n  ];\r\n  constructor(private readonly router: Router, private readonly store: DataStoreService) {\r\n    //  this.updateSteps(this.step)\r\n  }\r\n  ngAfterContentInit(): void {\r\n        this.loadDeviceData();\r\n\r\n    this.updateSteps(this.step)\r\n  }\r\n\r\n\r\n    private loadDeviceData(): void {\r\n    try {\r\n      const deviceData = this.store.getDevice()\r\n      this.device = this.parseJsonSafely(deviceData);\r\n      \r\n      if (this.device && this.device.saleDate) {\r\n        this.calculateInterventionType();\r\n      }\r\n    } catch (error) {\r\n      console.error('Error loading device data:', error);\r\n    }\r\n  }\r\n  private parseJsonSafely(jsonString: string | null): any {\r\n    if (!jsonString) return null;\r\n    try {\r\n      return JSON.parse(jsonString);\r\n    } catch (error) {\r\n      console.error('Error parsing JSON:', error);\r\n      return null;\r\n    }\r\n  }\r\n\r\n  private calculateInterventionType(): void {\r\n    // const today = new Date();\r\n    // const purchaseDate = new Date(this.device.saleDate);\r\n    // const yearsDifference = today.getFullYear() - purchaseDate.getFullYear();\r\n    // const isDateInFuture = today < purchaseDate;\r\n    // this.interventionTypeId = !isDateInFuture && yearsDifference <= 2 ? 1 : 0;\r\n\r\n    const oof = this.store.isOutWaranty();  \r\n    this.interventionTypeId = oof ? 0 : 1;\r\n    \r\n    // Update steps based on intervention type\r\n    this.updateStepsBasedOnInterventionType();\r\n  }\r\n\r\n    private updateStepsBasedOnInterventionType(): void {\r\n    if (this.interventionTypeId === 1) {\r\n      // Remove step 6 (Paiement) if interventionTypeId is 1\r\n      this.steps = this.steps.filter(step => step.number !== 6);\r\n    } else {\r\n      // Ensure step 6 is included if interventionTypeId is not 1\r\n      const hasPaymentStep = this.steps.some(step => step.number === 6);\r\n      if (!hasPaymentStep) {\r\n        this.steps.push({ number: 6, name: 'Paiement', status: '' });\r\n      }\r\n    }\r\n  }\r\n\r\n  updateSteps(_step: number) {\r\n    this.steps = this.steps.map((step) => ({\r\n      ...step,\r\n      status: _step > step.number ? 'completed' :\r\n        _step === step.number ? 'active' : 'pending',\r\n    }));\r\n  }\r\n  prev(): void {\r\n    const page: number = this.step - 1;\r\n    this.navigate(page);\r\n  }\r\n\r\n  next(): void {\r\n    const page = this.step + 1;\r\n    this.navigate(page);\r\n\r\n  }\r\n\r\n  navigate(page: number) {\r\n    if (page > 0 && page < 7) {\r\n      this.updateSteps(page)\r\n      this.router.navigate([`${RoutesPaths.step}/${page}`]);\r\n    }\r\n  }\r\n\r\n  login(){\r\n    this.router.navigate([`${RoutesPaths.login}`]);\r\n  }\r\n}\r\n","<div class=\"guest-header\">\r\n  <acf-header [appName]=\"appName\"></acf-header>\r\n</div>\r\n<div class=\"guest flex justify-content-center min-w-full min-h-full\">\r\n  <div class=\"container acf-container-steps guest-body \">\r\n    <!-- <h1 class=\"acf-text-lg mt-6\"></h1> -->\r\n    <p class=\"title pt-2\">Votre appareil Bosch nécessite une réparation ?</p>\r\n\r\n    <p class=\"acf-text-sm\">En quelques étapes simples, déclarez la panne de votre appareil Bosch. Notre système vous\r\n      guidera pour soumettre votre demande rapidement et être mis en relation avec un réparateur agréé.\r\n      Suivez les étapes ci-dessous pour une prise en charge rapide et efficace de votre appareil.</p>\r\n    <p class=\"acf-text-sm\">Déjà membre ? <span class=\"acf-primary-link\" (click)=\"login()\">Se connecter</span></p>\r\n\r\n    <div class=\"acf-card-title mb-4\">\r\n      <p> Déclarer un incident</p>\r\n    </div>\r\n\r\n    <div class=\"stepper-wrapper\">\r\n      <div class=\"stepper-item\" *ngFor=\"let step of steps\" [class]=\"step.status\">\r\n        <div class=\"step-counter\">{{step.number}}</div>\r\n        <div class=\"step-name\">{{step.name}}</div>\r\n      </div>\r\n    </div>\r\n    <div class=\"guest-content mx-8\">\r\n      <ng-content></ng-content>\r\n    </div>\r\n\r\n    <acf-footer class=\"guest-footer\" [appName]=\"appName\"></acf-footer>\r\n\r\n  </div>\r\n</div>","import { Component, Input, OnInit } from '@angular/core';\r\nimport { FormGroup, FormBuilder, Validators, FormControl } from '@angular/forms';\r\nimport { MessageService } from 'primeng/api';\r\nimport { RoutesPaths } from '../../enums/routePaths';\r\nimport { Router } from '@angular/router';\r\nimport { DataStoreService } from '../../services/data-store.service';\r\nimport { DataStore } from '../../enums/data.store';\r\n\r\n@Component({\r\n  selector: 'acf-step-three',\r\n  templateUrl: './step-three.component.html',\r\n  styleUrl: './step-three.component.scss',\r\n  providers: [MessageService],\r\n  standalone: false\r\n})\r\nexport class StepThreeComponent implements OnInit {\r\n  @Input() appName: string = '';\r\n  Step3Form: FormGroup;\r\n  loading = false;\r\n  submitted = false;\r\n  gender = [\r\n    {\r\n      value: 'Monsieur',\r\n      key: '001',\r\n    },\r\n    {\r\n      value: 'Madame',\r\n      key: '002',\r\n    },\r\n  ];\r\n\r\n  constructor(\r\n    private readonly formBuilder: FormBuilder,\r\n    private readonly store: DataStoreService,\r\n    private readonly router: Router,\r\n  ) {\r\n    this.Step3Form = this.onItniFrom();\r\n    this.loadFormFromLocalStorage();\r\n  }\r\n  ngOnInit(): void {\r\n  }\r\n  onItniFrom() {\r\n    return this.formBuilder.group(\r\n      {\r\n        title: ['', Validators.required],\r\n        firstName: ['', Validators.required],\r\n        lastName: ['', Validators.required],\r\n        city: [null, Validators.required],\r\n        address: ['', Validators.required],\r\n        zip: [null, Validators.required],\r\n        phoneNumber: new FormControl('', [\r\n          Validators.required,\r\n          Validators.pattern(/^[1-7]([\\s\\d]*\\d){8}$/)\r\n        ]),\r\n        email: new FormControl('', [\r\n          Validators.required,\r\n          Validators.email,\r\n          Validators.pattern('^[A-Za-z0-9._%+-]+@[a-z0-9.-]+\\\\.[a-z]{2,4}$'),\r\n        ]),\r\n        countryCode: '250'\r\n      }\r\n    );\r\n  }\r\n  loadFormFromLocalStorage(): void {\r\n    const savedFormData = this.store.getStep3Form();\r\n    if (savedFormData) {\r\n      this.Step3Form.patchValue(savedFormData);\r\n    }\r\n  }\r\n\r\n  get f() {\r\n    return this.Step3Form.controls;\r\n  }\r\n\r\n  next() {\r\n    let rawValue = this.Step3Form.value.phoneNumber.replace(/\\s+/g, ''); // Remove spaces\r\n    this.Step3Form.get('phoneNumber')?.setValue(rawValue);\r\n    this.submitted = true;\r\n\r\n    // Vérifier les erreurs spécifiques au zip/city et afficher un message d'aide\r\n    const zipControl = this.Step3Form.get('zip');\r\n    const cityControl = this.Step3Form.get('city');\r\n\r\n    if (zipControl?.errors?.['zipMismatch'] || cityControl?.errors?.['cityMismatch']) {\r\n      // message d'alerte\r\n      const errorMessage = \"Erreur de validation d'adresse:\\n\\nLe code postal et/ou la ville ne correspondent pas à l'adresse sélectionnée.\\n\\n Veuillez:\\n1. Effacer le code postal et la ville\\n2. Ressaisir le code postal et choisir la ville dans la liste suggérée\";\r\n      alert(errorMessage);\r\n      return;\r\n    }\r\n\r\n    if (this.Step3Form.valid) {\r\n      this.store.setEmail(this.Step3Form.value.email);\r\n      this.store.saveFormToLocalStorage(this.Step3Form, DataStore.step3_form);\r\n      this.router.navigate([`${RoutesPaths.step}/4`]);\r\n    }\r\n  }\r\n\r\n  prev() {\r\n    this.router.navigate([`${RoutesPaths.step}/2`]);\r\n  }\r\n\r\n}\r\n\r\n\r\n","<acf-layout [step]=\"3\" [appName]=\"appName\">\r\n\r\n  <div class=\"step3-form\">\r\n    <form [formGroup]=\"Step3Form\">\r\n      <div class=\"text-left mb-2 mt-3\">\r\n        <p class=\"acf-text-sm \">Merci de renseigner vos coordonnées. </p>\r\n      </div>\r\n      <div class=\"grid\">\r\n        <div class=\"col-12 md:col-6\">\r\n          <label class=\"block font-bold mb-2 required-input\" for=\"firstName\">Civilité </label>\r\n          <p-dropdown [style]=\"{'width':'100%','border-radius':'0cm'}\" formControlName=\"title\" optionValue=\"key\"\r\n            optionLabel=\"value\" [options]=\"gender\" [ngStyle]=\"{'width.em': 100}\"\r\n            [ngClass]=\"{ 'acf-invalid-dropdown':(submitted || f['title'].dirty) && f['title'].errors }\"></p-dropdown>\r\n          <div *ngIf=\"(submitted || f['title'].dirty) && f['title'].errors\" class=\"acf-invalid-feedback\">\r\n            <div *ngIf=\"f['title'].errors['required']\"> Ce champ est obligatoire.\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n      <div class=\"grid\">\r\n        <div class=\"col-12 md:col-6\">\r\n          <label class=\"block  font-bold mb-2 required-input\" for=\"firstName\">Prénom </label>\r\n          <input pInputText class=\"w-full\" id=\"firstName\" formControlName=\"firstName\"\r\n            [ngClass]=\"{ 'acf-invalid-input':(submitted || f['firstName'].dirty) && f['firstName'].errors }\" />\r\n          <div class=\"acf-invalid-feedback\" *ngIf=\"(submitted || f['firstName'].dirty) && f['firstName'].errors\">\r\n            <div *ngIf=\"f['firstName'].errors['required']\">Ce champ est obligatoire.</div>\r\n          </div>\r\n        </div>\r\n\r\n        <div class=\"col-12 md:col-6\">\r\n          <label class=\"block font-bold mb-2 required-input\" for=\"lastName\">Nom </label>\r\n          <input pInputText class=\"w-full\" id=\"lastName\" formControlName=\"lastName\"\r\n            [ngClass]=\"{ 'acf-invalid-input':(submitted || f['lastName'].dirty) && f['lastName'].errors }\" />\r\n          <div class=\"acf-invalid-feedback\" *ngIf=\"(submitted || f['lastName'].dirty) && f['lastName'].errors\">\r\n            <div *ngIf=\"f['lastName'].errors['required']\">Ce champ est obligatoire.</div>\r\n          </div>\r\n        </div>\r\n\r\n        <div class=\"col-12 md:col-6\">\r\n          <label class=\"block  font-bold mb-2 required-input\" for=\"email\">Email </label>\r\n          <p-iconField iconPosition=\"right\">\r\n            <input pInputText class=\"w-full\" id=\"email\" formControlName=\"email\"\r\n              [ngClass]=\"{ 'acf-invalid-input': (submitted || f['email'].dirty) && (f['email'].errors) }\" />\r\n          </p-iconField>\r\n          <div class=\"acf-invalid-feedback\" *ngIf=\"(submitted || f['email'].dirty) && f['email'].errors\">\r\n            <div *ngIf=\"f['email'].errors['required']\">Ce champ est obligatoire.</div>\r\n            <div *ngIf=\"f['email'].errors['pattern']\">Email incorrect. </div>\r\n          </div>\r\n\r\n        </div>\r\n\r\n        <div class=\"col-12 md:col-6\">\r\n          <label class=\"block  font-bold mb-2 required-input\" for=\"phoneNumber\">Téléphone </label>\r\n          <div class=\"flex\">\r\n            <input type=\"text\" pInputText value=\"+33\" class=\"acf-input-prefix\" readonly>\r\n            <p-iconField iconPosition=\"right\" class=\"w-full\">\r\n\r\n              <p-inputMask id=\"phoneNumber\" formControlName=\"phoneNumber\" mask=\"9 99 99 99 99\"\r\n                class=\"w-full acf-input-mask\" slotChar=\"_\"\r\n                [ngClass]=\"{ 'acf-invalid-inputmask':(submitted || f['phoneNumber'].dirty) && (f['phoneNumber'].errors) }\"></p-inputMask>\r\n            </p-iconField>\r\n          </div>\r\n          <div *ngIf=\"(f['phoneNumber'].dirty || submitted) && f['phoneNumber'].errors\" class=\"acf-invalid-feedback\">\r\n            <div *ngIf=\"f['phoneNumber'].errors['required']\"> Ce champ est obligatoire. </div>\r\n            <div *ngIf=\"f['phoneNumber'].errors['pattern']\"> Le numéro de téléphone doit être un numéro français\r\n              valide,\r\n              commencer par 1, 2, 3, 4, 5, 6 ou 7 et contenir exactement 9 chiffres. </div>\r\n          </div>\r\n\r\n        </div>\r\n\r\n      </div>\r\n      <acf-address-form [submitted]=\"submitted\"></acf-address-form>\r\n\r\n    </form>\r\n  </div>\r\n  <div class=\"guest-action\">\r\n    <button pButton label=\"Etape précédente\" class=\"acf-secondary-button mr-3\" (click)=\"prev()\"></button>\r\n\r\n       <button pButton label=\"Etape suivante\" class=\"acf-primary-button \" (click)=\"next()\" ></button> <!--style=\"cursor:not-allowed;\" disabled -->\r\n  </div>\r\n  <p-toast></p-toast>\r\n</acf-layout>","import { Component, Input, OnInit } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { ReferentialService } from '../../services/referential.service';\r\nimport { Router } from '@angular/router';\r\nimport { IrisSymptoms } from '../../models/shared/iris-symptom';\r\nimport { IrisSymptomsRequest } from '../../models/request/iris-symptom.request';\r\nimport { RoutesPaths } from '../../enums/routePaths';\r\nimport { DataStoreService } from '../../services/data-store.service';\r\nimport { DataStore } from '../../enums/data.store';\r\n\r\n@Component({\n    selector: 'acf-step-two',\n    templateUrl: './step-two.component.html',\n    styleUrl: './step-two.component.scss',\n    standalone: false\n})\r\nexport class StepTwoComponent implements OnInit {\r\n  @Input() appName: string = '';\r\n  step2Form: FormGroup;\r\n  submitted = false;\r\n  filteredIrisSymtomsCodes: IrisSymptoms = [];\r\n  IrisSymtoms: IrisSymptoms = [];\r\n  fullDescription: string;\r\n  date: string;\r\n  loading: boolean = true;\r\n\r\n\r\n  constructor(\r\n    private readonly formBuilder: FormBuilder,\r\n    private readonly store: DataStoreService,\r\n    private readonly referentialService: ReferentialService,\r\n    private readonly router: Router) {\r\n    this.step2Form = this.onItniFrom()\r\n    this.loadFormFromLocalStorage();\r\n    this.fullDescription = this.store.getStep1Form()?.fullDescription\r\n    this.date = this.store.getStep1Form()?.date\r\n  }\r\n  ngOnInit(): void {\r\n    this.getIrisSymptoms();\r\n  }\r\n\r\n  loadFormFromLocalStorage(): void {\r\n    const savedFormData = this.store.getStep2Form();\r\n    if (savedFormData) {\r\n      this.step2Form.patchValue(savedFormData);\r\n    }\r\n  }\r\n  onItniFrom() {\r\n    return this.formBuilder.group(\r\n      {\r\n        symptom: [null, Validators.required],\r\n        symptomName: [null, Validators.required],\r\n        comment: ['', [Validators.required, Validators.maxLength(600)]]\r\n      }\r\n    );\r\n  }\r\n\r\n  getIrisSymptoms() {\r\n\r\n    const refComm = this.store.getStep1Form()?.refComm\r\n    const request: IrisSymptomsRequest = {\r\n      applicationName: this.appName,\r\n      commercialRef: refComm\r\n    };\r\n    this.referentialService.getIrisSymptoms(request).subscribe(\r\n      (data) => {\r\n        this.filteredIrisSymtomsCodes = data.slice(0, 30);\r\n        this.IrisSymtoms = data;\r\n        this.loading = false\r\n\r\n\r\n      },\r\n      (error) => {\r\n        console.error('Erreur lors de la récupération des données', error);\r\n      }\r\n    );\r\n  }\r\n\r\n  onSymptomChange(event: any): void {\r\n    const selectedItem = this.filteredIrisSymtomsCodes.find(item => item.code === event.value);\r\n    if (selectedItem) {\r\n      this.step2Form.get('symptomName')?.setValue(selectedItem.label);\r\n    }\r\n  }\r\n\r\n  getImageUrl() {\r\n    const prdCommercialRef = this.store.getStep1Form()?.refComm;\r\n    if (prdCommercialRef && prdCommercialRef.length > 0) {\r\n      return 'assets/' + this.appName + '/products/' + prdCommercialRef + '.jpg'\r\n    } else {\r\n      return 'assets/' + this.appName + '/no-image.svg'\r\n    }\r\n  }\r\n\r\n  handleImageError(event: any) {\r\n    event.target.src = 'assets/' + this.appName + '/no-image.svg';\r\n  }\r\n\r\n  next() {\r\n    this.submitted = true;\r\n    if (this.step2Form.valid) {\r\n      this.store.saveFormToLocalStorage(this.step2Form, DataStore.step2_form)\r\n\r\n      this.router.navigate([`${RoutesPaths.step}/3`]);\r\n    }\r\n  }\r\n\r\n  prev() {\r\n    this.router.navigate([`${RoutesPaths.step}/1`]);\r\n  }\r\n\r\n  get f() {\r\n    return this.step2Form.controls;\r\n  }\r\n\r\n}","<acf-layout [step]=\"2\" [appName]=\"appName\">\r\n  <div class=\"step2-form\">\r\n    <form [formGroup]=\"step2Form\">\r\n      <div class=\"grid\">\r\n        <div class=\"md:col-8  sm:col-12  xs:col-12\">\r\n          <div class=\"text-left mb-5\">\r\n            <p class=\"acf-text-sm mb-4\">Merci de nous expliquer le symptôme de votre panne. </p>\r\n          </div>\r\n          <div class=\"grid\">\r\n            <div class=\"col-12 mb-3\">\r\n              <label class=\"block  font-bold mb-3 required-input\" for=\"symptom\">Symptôme </label>\r\n              <p-dropdown class=\"w-full\" id=\"symptom\" formControlName=\"symptom\" [options]=\"filteredIrisSymtomsCodes\"\r\n                optionLabel=\"label\" optionValue=\"code\" [filter]=\"true\" [filterBy]=\"'label'\" [lazy]=\"true\"\r\n                [virtualScroll]=\"true\" [itemSize]=\"30\" emptyFilterMessage=\"Aucun symptôme trouvé\" [showClear]=\"true\"\r\n                emptyMessage=\"Aucun symptôme trouvé\" (onChange)=\"onSymptomChange($event)\"\r\n                [ngClass]=\"{ 'acf-invalid-dropdown': (f['symptom'].dirty || submitted) && f['symptom'].errors }\">\r\n                <ng-template let-symptom pTemplate=\"item\">\r\n                  <div class=\"flex align-items-center gap-2\">\r\n                    <div> {{ symptom.label }}</div>\r\n                  </div>\r\n                </ng-template>\r\n              </p-dropdown>\r\n              <div class=\"acf-invalid-feedback\" *ngIf=\"(submitted || f['symptom'].dirty) && f['symptom'].errors\">\r\n                <div *ngIf=\"f['symptom'].errors['required']\">Merci de sélectionner un symptôme</div>\r\n              </div>\r\n            </div>\r\n            <div class=\"col-12\">\r\n              <label class=\"block  font-bold mb-3 required-input\" for=\"comment\">Votre commentaire</label>\r\n              <textarea rows=\"5\" cols=\"30\" class=\"w-full h-7rem\" id=\"comment\" maxlength=\"600\" formControlName=\"comment\"\r\n                [ngClass]=\"{ 'acf-invalid-input':(submitted || f['comment'].dirty) && f['comment'].errors }\"\r\n                pInputTextarea></textarea>\r\n              <div class=\"text-group flex justify-content-between \">\r\n                <!-- Character Counter -->\r\n\r\n                <div class=\"acf-invalid-feedback\" *ngIf=\"(submitted || f['comment'].dirty) && f['comment'].errors\">\r\n                  <div *ngIf=\"f['comment'].errors['required']\">Merci de décrire le problème.</div>\r\n                </div>\r\n                <div class=\"character-counter text-right primary-text ml-auto\">\r\n                  {{ step2Form.value?.comment.length || 0 }} / 600\r\n                </div>\r\n              </div>\r\n\r\n            </div>\r\n          </div>\r\n        </div>\r\n        <div class=\"md:col-4 sm:col-12  xs:col-12 mobile-100\">\r\n                  <div class=\"surface-border border-round m-3 p-3 border-round-2xl shadow-2 h-20rem\" style=\"display: flex; flex-direction: column; overflow: hidden;\">                     \r\n  <div class=\"acf-text-md text-center mt-2\" *ngIf=\"fullDescription\">{{fullDescription}}</div>                     \r\n  <div class=\"acf-text-sm font-bold text-center mb-3\" *ngIf=\"date\">{{date | date:'dd/MM/yyyy' }}</div>                     \r\n  <div class=\"flex align-items-center justify-content-center\" style=\"flex: 1; min-height: 0; overflow: hidden;\">                       \r\n    <img [src]=\"getImageUrl()\" \r\n         (error)=\"handleImageError($event)\" \r\n         class=\"product-image border-round\"\r\n         style=\"max-width: 100%; max-height: 100%; width: auto; height: auto; object-fit: contain;\">                     \r\n  </div>                   \r\n</div>\r\n        </div>\r\n      </div>\r\n    </form>\r\n  </div>\r\n  <div class=\"guest-action\">\r\n    <button pButton label=\"Etape précédente\" class=\"acf-secondary-button mr-3\" (click)=\"prev()\"></button>\r\n    <button pButton label=\"Etape suivante\" class=\"acf-primary-button\" (click)=\"next()\"></button>\r\n  </div>\r\n</acf-layout>","import { Component, Optional } from '@angular/core';\r\nimport { DynamicDialogRef } from 'primeng/dynamicdialog';\r\nimport { Inject } from '@angular/core';\r\nimport { LIB_CONFIG, LibConfig } from '../../../config.token';;\r\nimport { DataStoreService } from '../../../services/data-store.service';\r\n\r\n@Component({\r\n    selector: 'acf-step-one-popup',\r\n    templateUrl: './step-one-popup.component.html',\r\n    styleUrl: './step-one-popup.component.scss',\r\n    standalone: false\r\n})\r\nexport class StepOnePopupComponent {\r\n\r\n  applicationName: string = '';\r\n  supportEmail = this.config.support.email;\r\n  supportPhone = this.config.support.phone;\r\n  constructor(@Inject(LIB_CONFIG) private config: LibConfig,\r\n    private readonly store: DataStoreService,\r\n    @Optional() public ref: DynamicDialogRef\r\n  ) {\r\n    this.applicationName = this.store.getApplication();\r\n  }\r\n  closePopup() {\r\n    this.ref.close();\r\n  }\r\n}\r\n\r\n","<div class=\"flex justify-content-end\">\r\n    <img class=\"ml-auto cursor-pointer\" (click)=\"closePopup()\"\r\n        [src]=\"'assets/' + this.applicationName + '/close-icon.svg'\" alt=\"close\">\r\n</div>\r\n<div class=\"is-gem-popup\">\r\n    <p class=\"text-center font-bold mt-4 line-height-3\">Nous tenons à vous informer que, pour le moment, les incidents liés aux gros\r\n        électroménagers ne peuvent pas être traités directement via notre application.<br>\r\n        Nous vous encourageons à contacter notre<a target=\"_blank\"\r\n        href=\"https://www.bosch-home.fr/nos-services/contact-et-info/contact-sav-hotline#tab-navigation\"\r\n        class=\"acf-primary-link\"> service client</a> .\r\n    <div class=\"flex justify-content-center mt-3 mb-3\">\r\n        <button pButton pRipple type=\"submit\" label=\"Fermer\" class=\"acf-secondary-button\"\r\n            (click)=\"closePopup()\"></button>\r\n    </div>\r\n</div>","import { Component, ElementRef, EventEmitter, Output, ViewChild } from '@angular/core';\r\nimport { MessageService } from 'primeng/api';\r\n@Component({\n    selector: 'acf-invoice-attachement',\n    templateUrl: './invoice-attachement.component.html',\n    styleUrl: './invoice-attachement.component.scss',\n    standalone: false\n})\r\nexport class InvoiceAttachementComponent {\r\n  file: File | undefined;  \r\n  readonly ALLOWED_FILE_TYPES = ['application/pdf', 'image/png', 'image/jpeg'];\r\n\r\n  @ViewChild('fileInput') fileInput!: ElementRef<HTMLInputElement>;\r\n  @Output() filesChanged: EventEmitter<File> = new EventEmitter<File>();\r\n\r\n  constructor(\r\n    private readonly messageService: MessageService\r\n  ) { }\r\n\r\n  onFileSelected(event: Event): void {\r\n   const input = event.target as HTMLInputElement;\r\n   this.onFileCheck(input);\r\n  }\r\n  \r\n  onFileCheck(input: HTMLInputElement): void {\r\n    if (input.files && input.files.length > 0) {\r\n      const newFiles = Array.from(input.files);\r\n      const invalidFile = newFiles.find(file => !this.ALLOWED_FILE_TYPES.includes(file.type));\r\n      if (invalidFile) {\r\n        this.show('Supported formats: JPEG, PNG, PDF');\r\n        return;\r\n      }\r\n      this.file = newFiles[0];\r\n      this.filesChanged.emit(this.file);\r\n    }\r\n  }\r\n\r\n  onDragOver(event: DragEvent) {\r\n    event.preventDefault();\r\n  }\r\n\r\n  onDrop(event: DragEvent) {\r\n    event.preventDefault();\r\n    if (event.dataTransfer?.files.length) {\r\n        const newFiles = Array.from(event.dataTransfer.files); \r\n        const invalidFile = newFiles.find(file => !this.ALLOWED_FILE_TYPES.includes(file.type));\r\n        if (invalidFile) {\r\n          this.show('Supported formats: JPEG, PNG, PDF');\r\n          return;\r\n        }\r\n        this.file = newFiles[0]\r\n        this.filesChanged.emit(this.file);\r\n    }\r\n  }\r\n\r\n  onRemoveFile() {\r\n    this.file = undefined;\r\n  }\r\n\r\n  show(message: string) {\r\n    this.messageService.add({ severity: 'error', summary: 'Erreur', detail: message });\r\n  }\r\n\r\n  triggerFileInput() {\r\n    this.fileInput.nativeElement.click();\r\n  }\r\n\r\n}\r\n\r\n\r\n\r\n\r\n","<div class=\"invoice-attachement\">\r\n    <div class=\"grid\">\r\n        <div class=\"col-11\">\r\n            <div class=\"upload-box\" (drop)=\"onDrop($event)\" (dragover)=\"onDragOver($event)\">\r\n                <img src=\"assets/icons/upload-icon.svg\" alt=\"upload icon\" width=\"auto\" height=\"50\">\r\n                <label for=\"file-upload\" class=\"custom-file-upload\">\r\n                    Importer une facture ou \r\n                    <span class=\"browse\" tabindex=\"0\" (keydown.enter)=\"triggerFileInput()\"> Parcourir </span>\r\n                </label>\r\n                <input id=\"file-upload\" type=\"file\" (change)=\"onFileSelected($event)\" accept=\".jpeg,.jpg,.png,.pdf\"\r\n                 style=\"display: none;\" class=\"display-n\" #fileInput/>\r\n                <p class=\"browse-support\">Formats pris en charge: JPEG, PNG, PDF</p>\r\n            </div>\r\n        </div>\r\n        <!-- <div class=\"col-11\">\r\n            <div *ngIf=\"file\">\r\n                <div class=\"file\">\r\n                    <div class=\"flex align-items-center\"> <img src=\"assets/icons/file.svg\" alt=\"file\">\r\n                        <p class=\"filename\"> {{ file.name }} </p>\r\n                        <p class=\"filesize\"> {{ file.size | filesize }} </p>\r\n                    </div>\r\n                    <img src=\"assets/icons/close.svg\" alt=\"close\" (click)=\"onRemoveFile()\" class=\"cursor-pointer\">\r\n                </div>\r\n            </div>\r\n        </div> -->\r\n    </div>\r\n</div>\r\n<p-toast></p-toast>\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\n    name: 'filesize',\n    standalone: false\n})\r\nexport class FilesizePipe implements PipeTransform {\r\n\r\n  transform(sizeInBytes: number): string {\r\n    const sizeInMB = sizeInBytes / (1024 * 1024); // Conversion en Mo\r\n    return sizeInMB.toFixed(2) + ' MB';  // Limiter à 2 décimales\r\n  }\r\n\r\n}\r\n","import { Component, Input, Optional, ViewChild } from '@angular/core';\r\nimport { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { Router } from '@angular/router';\r\nimport { MessageService } from 'primeng/api';\r\nimport { RoutesPaths } from '../../enums/routePaths';\r\nimport { FileService } from '../../services/file.service';\r\nimport { ReferentialService } from '../../services/referential.service';\r\nimport { MappedProduct, ProductOCR, ProductsOCR, ProductsXS, ProductXS } from '../../models/shared/product';\r\nimport { DataStoreService } from '../../services/data-store.service';\r\nimport { DataStore } from '../../enums/data.store';\r\nimport { AutoComplete, AutoCompleteCompleteEvent, AutoCompleteSelectEvent } from 'primeng/autocomplete';\r\nimport { forkJoin, map } from 'rxjs';\r\nimport { UserInfo, UserOCR } from '../../models/shared/user.info';\r\nimport { DialogService, DynamicDialogRef } from 'primeng/dynamicdialog';\r\nimport { StepOnePopupComponent } from './step-one-popup/step-one-popup.component';\r\nimport { Inject } from '@angular/core';\r\nimport { LIB_CONFIG, LibConfig } from '../../config.token';;@Component({\r\n  selector: 'acf-step-one',\r\n  templateUrl: './step-one.component.html',\r\n  styleUrl: './step-one.component.scss',\r\n  providers: [MessageService],\r\n  standalone: false\r\n})\r\nexport class StepOneComponent {\r\n  @Input() appName: string = '';\r\n  @ViewChild('autoComplete') autoComplete!: AutoComplete;\r\n  step1Form: FormGroup;\r\n  loading = false;\r\n  submitted = false;\r\n  isInWarranty: boolean | null = null;\r\n  selectedFile: File | null = null;\r\n  loadedFile: { name: string, size: number } | null = null;\r\n  productOCR: ProductOCR = {};\r\n  productByRef: ProductXS = {};\r\n  invalid_ref: boolean = false;\r\n  invalid_file: boolean = false;\r\n  suggestedCommercialRefs!: string[];\r\n  suggestedTechnicalRefs: string[] = [];\r\n  userOCR: UserOCR = {};\r\n  Step3Form!: FormGroup;\r\n  placeDetailsOCR!: { zip: string; city: string; countryCode: string; };\r\n  maxDate: Date = new Date();\r\n  autoComplete_loading: boolean = false;\r\n  reference_help_center_url: string = this.config.bosch_services_uri;\r\n\r\n  constructor(@Inject(LIB_CONFIG) private config: LibConfig,\r\n    private readonly formBuilder: FormBuilder,\r\n    private readonly router: Router,\r\n    private readonly refencielService: ReferentialService,\r\n    private readonly fileService: FileService,\r\n    private readonly store: DataStoreService,\r\n    private readonly dialogService: DialogService,\r\n    @Optional() public ref: DynamicDialogRef\r\n  ) {\r\n    this.step1Form = this.onItniFrom();\r\n    this.Step3Form = this.onInitStep3Form()\r\n    this.loadFormFromLocalStorage();\r\n    this.step1Form.valueChanges.subscribe(() => {\r\n      if (this.step1Form.valid && this.step1Form.value?.refComm?.length > 4) {\r\n        this.checkWarranty();\r\n      } else if (this.step1Form.value.refComm.length < 4) {\r\n        this.isInWarranty = null;\r\n      }\r\n      else {\r\n        this.isInWarranty = null;\r\n      }\r\n    });\r\n  }\r\n\r\n  loadFormFromLocalStorage(): void {\r\n    const savedFormData = this.store.getStep1Form();\r\n    if (savedFormData) {\r\n      if (savedFormData.date) {\r\n        savedFormData.date = new Date(savedFormData.date);\r\n      }\r\n      if(savedFormData.refComm){\r\n         this.refencielService.searchProductByCommercialRef(savedFormData.refComm).subscribe(\r\n                  data => {\r\n                    this.suggestedTechnicalRefs = data[0]?.technicalRefs ? data[0]?.technicalRefs : [];\r\n                  },\r\n                _ => {\r\n                   this.suggestedTechnicalRefs[0] =savedFormData.refTech;\r\n                });\r\n      }\r\n      this.step1Form.patchValue(savedFormData);\r\n      this.loadedFile = { name: savedFormData.attachementName, size: savedFormData.attachementSize }\r\n    }\r\n  }\r\n\r\n  onItniFrom() {\r\n    return this.formBuilder.group({\r\n      refComm: ['', Validators.required],\r\n      refTech: [null, Validators.required],\r\n      brand: [''],\r\n      family: [''],\r\n      date: [null, Validators.required],\r\n      attachementName: [''],\r\n      attachementSize: [''],\r\n      fullDescription: [''],\r\n      fileId: null,\r\n    });\r\n  }\r\n\r\n  onInitStep3Form() {\r\n    return this.formBuilder.group(\r\n      {\r\n        title: ['', Validators.required],\r\n        firstName: ['', Validators.required],\r\n        lastName: ['', Validators.required],\r\n        city: [null, Validators.required],\r\n        address: ['', Validators.required],\r\n        zip: [null, Validators.required],\r\n        phoneNumber: new FormControl('', [\r\n          Validators.required,\r\n          Validators.pattern(/^(06|07)\\d{8}$/),\r\n        ]),\r\n        email: new FormControl('', [\r\n          Validators.required,\r\n          Validators.email,\r\n          Validators.pattern('^[A-Za-z0-9._%+-]+@[a-z0-9.-]+\\\\.[a-z]{2,4}$'),\r\n        ]),\r\n        countryCode: '250'\r\n      }\r\n    );\r\n  }\r\n\r\n  onSetFrom(prd?: ProductXS) {\r\n    return this.formBuilder.group({\r\n      refComm: [prd?.commercialRef, Validators.required],\r\n      refTech: [prd?.technicalRef  ?? null, Validators.required ],\r\n      brand: [prd?.brand],\r\n      family: [prd?.family],\r\n      date: [prd?.PurchaseDate != null ? new Date(prd.PurchaseDate) : null, Validators.required],\r\n      attachementName: [prd?.attachementName],\r\n      attachementSize: [prd?.attachementSize],\r\n      fullDescription: [prd?.fullDescription],\r\n      fileId: this.step1Form.value.fileId || null\r\n    });\r\n  }\r\n\r\n  onFilesChanged(file: File): void {\r\n    this.loading = true;\r\n    this.invalid_ref = false;\r\n    this.suggestedCommercialRefs = [];\r\n    this.suggestedTechnicalRefs = [];\r\n    this.step1Form = this.onItniFrom();\r\n    this.store.deleteFormsFromLocalStorage();\r\n    this.loadedFile = null;\r\n    this.isInWarranty = null;\r\n    this.selectedFile = file;\r\n    if (this.selectedFile) {\r\n      this.step1Form.patchValue({\r\n        fileId: (Date.now() + Math.floor(Math.random() * 1000)).toString()\r\n      })\r\n      this.fileService.extractFileData(this.selectedFile, this.step1Form.value.fileId).subscribe({\r\n        next: (response) => {\r\n          const jsonString = response?.choices[0]?.message?.content;\r\n          const cleanedJsonString = jsonString.replace(/```|json/g, '');\r\n          const cleanedResponse = this.parseJsonString(cleanedJsonString);\r\n          const products: ProductsOCR = cleanedResponse.Products;\r\n          const userInfo: UserInfo = cleanedResponse.UserInfo;\r\n          if (userInfo) {\r\n            this.userOCR = cleanedResponse.UserInfo;\r\n            if (this.userOCR.PostalCode && this.userOCR.City) {\r\n              this.placeDetailsOCR = { zip: this.userOCR.PostalCode, city: this.userOCR.City, countryCode: 'FR' };\r\n            }\r\n\r\n            this.Step3Form.patchValue({\r\n              firstName: this.userOCR.FirstName || '',\r\n              lastName: this.userOCR.LastName || '',\r\n              city: this.placeDetailsOCR || '',\r\n              address: this.userOCR.Address || '',\r\n              zip: this.placeDetailsOCR || '',\r\n              phoneNumber: this.userOCR.PhoneNumber || '',\r\n              email: this.userOCR.Email || ''\r\n            })\r\n\r\n            this.store.saveFormToLocalStorage(this.Step3Form, DataStore.step3_form);\r\n          }\r\n          if (products) {\r\n            if (products.length == 1) {\r\n              this.productOCR = cleanedResponse.Products[0];\r\n              if (this.productOCR.CommercialRef) {\r\n                this.refencielService.searchProductByCommercialRef(this.productOCR.CommercialRef).subscribe(\r\n                  data => {\r\n                    if (data) {\r\n                      this.productByRef = data[0];\r\n                      let prd: ProductXS = {\r\n                        commercialRef: this.productOCR?.CommercialRef,\r\n                        PurchaseDate: this.productOCR?.PurchaseDate,\r\n                        attachementName: this.selectedFile?.name,\r\n                        attachementSize: this.selectedFile?.size\r\n                      }\r\n                      if (this.productByRef) {\r\n                        this.suggestedTechnicalRefs  = this.productByRef.technicalRefs ? this.productByRef.technicalRefs : [];\r\n                        const techRef  =  this.suggestedTechnicalRefs.length == 1 ? this.suggestedTechnicalRefs[0] : undefined;\r\n                        prd = {\r\n                          commercialRef: this.productOCR?.CommercialRef,\r\n                          technicalRef: techRef,\r\n                          brand: this.productByRef?.brand,\r\n                          PurchaseDate: this.productOCR?.PurchaseDate,\r\n                          family: this.productByRef?.family,\r\n                          attachementName: this.selectedFile?.name,\r\n                          attachementSize: this.selectedFile?.size,\r\n                          fullDescription: this.productByRef?.fullDescription\r\n                        }\r\n                      } else { this.invalid_ref = true; }\r\n                      if (this.productByRef && (this.productByRef.isPEM == false || this.productByRef.isPEM == null)) {\r\n                        this.openIsGEMPopup();\r\n                      } else {\r\n                        this.step1Form = this.onSetFrom(prd);\r\n                        const device: MappedProduct = {\r\n                          name: this.step1Form.value.fullDescription,\r\n                          saleDate: this.step1Form.value.date,\r\n                          commref: this.step1Form.value.refComm,\r\n                          brand: this.step1Form.value.brand,\r\n                          refTech: this.step1Form.value.refTech,\r\n                          family: this.step1Form.value.fullDescription,\r\n                        }\r\n                        this.store.saveDevice(device);\r\n                        this.checkWarranty();\r\n                      }\r\n                    } else {\r\n                      this.invalid_ref = true;\r\n                    }\r\n                  },\r\n                  err => {\r\n                    this.invalid_ref = true;\r\n                  }\r\n                );\r\n              }\r\n            } else {\r\n              const commercialRefChecks = products.map(product => product?.CommercialRef)\r\n                .filter((ref): ref is string => ref !== undefined)\r\n                .map(ref =>\r\n                  this.refencielService.searchProductByCommercialRef(ref).pipe(\r\n                    map(data => (data && data.length > 0 ? ref : null)))\r\n                );\r\n              forkJoin(commercialRefChecks).subscribe(validRefs => {\r\n                this.suggestedCommercialRefs = validRefs.filter(ref => ref !== null) as string[];\r\n              });\r\n              this.step1Form = this.onSetFrom({ PurchaseDate: products[0]?.PurchaseDate });\r\n              const device: MappedProduct = {\r\n                name: this.step1Form.value.fullDescription,\r\n                saleDate: this.step1Form.value.date,\r\n                commref: this.step1Form.value.refComm,\r\n                brand: this.step1Form.value.brand,\r\n                refTech: this.step1Form.value.refTech,\r\n                family: this.step1Form.value.fullDescription,\r\n              }\r\n              this.store.saveDevice(device);\r\n              this.autoComplete.show();\r\n            }\r\n          }\r\n          this.loading = false;\r\n        },\r\n        error: (error) => {\r\n          console.error('Error uploading file:', error);\r\n          this.loading = false;\r\n        },\r\n      });\r\n    }\r\n  }\r\n\r\n  onSelectProduct(event: AutoCompleteSelectEvent) {\r\n    this.invalid_ref = false;\r\n    this.suggestedTechnicalRefs = [];\r\n    this.isInWarranty = null;\r\n    this.store.deleteFormsFromLocalStorage();\r\n    this.store.saveFormToLocalStorage(this.Step3Form, DataStore.step3_form)\r\n    this.loadedFile = null;\r\n    this.refencielService.searchProductByCommercialRef(event.value).subscribe(\r\n      (data: ProductsXS) => {\r\n        if (data && data.length > 0) {\r\n          if (data[0].isPEM == true) {\r\n            this.suggestedTechnicalRefs  = data[0].technicalRefs ? data[0].technicalRefs : [];\r\n            const techRef  =  this.suggestedTechnicalRefs.length == 1 ? this.suggestedTechnicalRefs[0] : undefined;\r\n            const prd: ProductXS = {\r\n              commercialRef: data[0]?.commercialRef,\r\n              technicalRef: techRef,     \r\n              brand: data[0]?.brand,\r\n              family: data[0]?.family,\r\n              fullDescription: data[0]?.fullDescription,\r\n              PurchaseDate: this.step1Form.value.date,\r\n              attachementName: this.selectedFile?.name,\r\n              attachementSize: this.selectedFile?.size\r\n            }\r\n            this.step1Form = this.onSetFrom(prd);\r\n            if (this.step1Form.valid) {\r\n              this.checkWarranty();\r\n            }\r\n          } else {\r\n            this.openIsGEMPopup();\r\n            this.store.deleteFormsFromLocalStorage();\r\n          }\r\n        }\r\n      });\r\n  }\r\n\r\n  displayReferences(event: AutoCompleteCompleteEvent) {\r\n    this.invalid_ref = false;\r\n    this.suggestedCommercialRefs = [];\r\n    if (event.query && event.query.length > 0) {\r\n      this.getProductsByRef(event.query)\r\n    } else {\r\n      this.invalid_ref = false;\r\n    }\r\n  }\r\n\r\n  getProductsByRef(ref: string) {\r\n    this.autoComplete_loading = true;\r\n    this.isInWarranty = null;\r\n    this.store.deleteFormsFromLocalStorage();\r\n    this.store.saveFormToLocalStorage(this.Step3Form, DataStore.step3_form);\r\n    this.loadedFile = null;\r\n    this.refencielService.searchProductByCommercialRef(ref).subscribe(\r\n      data => {\r\n        this.suggestedCommercialRefs = data.map(product => product.commercialRef).filter((ref): ref is string => ref !== undefined);\r\n        if (this.suggestedCommercialRefs.length == 0 && ref != '') {\r\n          this.invalid_ref = true;\r\n          this.checkWarranty();\r\n        }\r\n        this.autoComplete_loading = false;\r\n      },\r\n      _ => {\r\n        console.error(\"API SearchProductByCommercialRef DOWN\");\r\n        this.autoComplete_loading = false;\r\n      }\r\n    )\r\n  }\r\n\r\n  onSelectProductByTechRef(event: any){\r\n\r\n  }\r\n\r\n  openIsGEMPopup() {\r\n    this.step1Form = this.onItniFrom();\r\n    this.invalid_ref = false;\r\n    this.selectedFile = null;\r\n    this.submitted = false;\r\n    this.loadedFile = null;\r\n    this.isInWarranty = null;\r\n    this.dialogService.open(StepOnePopupComponent, {\r\n      width: '42vw',\r\n      dismissableMask: true,\r\n      closeOnEscape: true,\r\n      showHeader: false,\r\n      contentStyle: { overflow: 'auto' },\r\n      breakpoints: {\r\n        '960px': '60vw',\r\n        '640px': '70w',\r\n      },\r\n    });\r\n  }\r\n  next() {\r\n    this.submitted = true;\r\n    this.checkWarranty();\r\n    if (this.step1Form.valid && this.invalid_ref == false && (this.selectedFile !== null || (this.loadedFile && this.loadedFile?.name) )) //&& this.isInWarranty !== true\r\n    {\r\n      this.store.saveFormToLocalStorage(this.step1Form, DataStore.step1_form);\r\n      this.router.navigate([`${RoutesPaths.step}/2`]);\r\n    }\r\n  }\r\n\r\n  checkWarranty(): void {\r\n    const inputDate = new Date(this.step1Form.value.date);\r\n    const currentDate = new Date();\r\n    const dateLimit = new Date();\r\n    dateLimit.setMonth(currentDate.getMonth() - 24);\r\n    this.isInWarranty = inputDate > dateLimit;\r\n    this.store.updateIsOutWaranty(!this.isInWarranty);\r\n  }\r\n\r\n  onRemoveFile() {\r\n    this.selectedFile = null;\r\n    this.invalid_ref = false;\r\n    this.step1Form = this.onItniFrom();\r\n    this.store.deleteFormsFromLocalStorage();\r\n    this.loadedFile = null;\r\n    this.suggestedTechnicalRefs = []; //\r\n    this.suggestedCommercialRefs = []; //\r\n  }\r\n  onDateSelect(): void {\r\n    if (this.step1Form.valid && this.invalid_ref == false) {\r\n      this.checkWarranty();\r\n    }\r\n    const device: MappedProduct = {\r\n      name: this.step1Form.value.fullDescription,\r\n      saleDate: this.step1Form.value.date,\r\n      commref: this.step1Form.value.refComm,\r\n      brand: this.step1Form.value.brand,\r\n      refTech: this.step1Form.value.refTech,\r\n      family: this.step1Form.value.fullDescription,\r\n    }\r\n    this.store.saveDevice(device);\r\n  }\r\n\r\n  ondateBlur() {\r\n    if (this.step1Form.valid && this.invalid_ref == false) {\r\n      this.checkWarranty();\r\n    }\r\n    const device: MappedProduct = {\r\n      name: this.step1Form.value.fullDescription,\r\n      saleDate: this.step1Form.value.date,\r\n      commref: this.step1Form.value.refComm,\r\n      brand: this.step1Form.value.brand,\r\n      refTech: this.step1Form.value.refTech,\r\n      family: this.step1Form.value.fullDescription,\r\n    }\r\n    this.store.saveDevice(device);\r\n  }\r\n\r\n  onBlurEvent() {\r\n    this.suggestedTechnicalRefs = [];\r\n    const ref = this.step1Form.value.refComm;\r\n    if (ref.length > 3) {\r\n      this.invalid_ref = true;\r\n      this.isInWarranty = null;\r\n      this.store.deleteFormsFromLocalStorage();\r\n      this.store.saveFormToLocalStorage(this.Step3Form, DataStore.step3_form)\r\n      this.loadedFile = null;\r\n      this.refencielService.searchProductByCommercialRef(ref).subscribe(\r\n        (data: ProductsXS) => {\r\n          if (data && data.length > 0) {\r\n            if (data[0]?.isPEM == true) {\r\n              this.suggestedTechnicalRefs  = data[0]?.technicalRefs ? data[0]?.technicalRefs : [];\r\n              const techRef  =  this.suggestedTechnicalRefs.length == 1 ? this.suggestedTechnicalRefs[0] : undefined;\r\n              const prd: ProductXS = {\r\n                commercialRef: data[0]?.commercialRef,\r\n                technicalRef: techRef,\r\n                brand: data[0]?.brand,\r\n                family: data[0]?.family,\r\n                fullDescription: data[0]?.fullDescription,\r\n                PurchaseDate: this.step1Form.value.date,\r\n                attachementName: this.selectedFile?.name,\r\n                attachementSize: this.selectedFile?.size\r\n              }\r\n              this.step1Form = this.onSetFrom(prd);\r\n              this.invalid_ref = false;\r\n              if (this.step1Form.valid) {\r\n                this.checkWarranty();\r\n              }\r\n            } else {\r\n              this.openIsGEMPopup();\r\n              this.store.deleteFormsFromLocalStorage();\r\n            }\r\n          }\r\n        },\r\n        err => {\r\n          this.invalid_ref = true;\r\n        });\r\n    } else {\r\n      this.invalid_ref = true;\r\n    }\r\n\r\n  }\r\n  get f() {\r\n    return this.step1Form.controls;\r\n  }\r\n\r\n  parseJsonString(jsonString: string): any {\r\n    try {\r\n      const parsedData = JSON.parse(jsonString);\r\n      return parsedData;\r\n    } catch (error) {\r\n      this.loading = false;\r\n      console.error('Error parsing JSON string:', error);\r\n      return null;\r\n    }\r\n  }\r\n\r\n}\r\n","<acf-layout [step]=\"1\" [appName]=\"appName\">\r\n  <div class=\"px-2\">\r\n    <div *ngIf=\"step1Form.valid && isInWarranty !== null && invalid_ref == false\"\r\n      [ngClass]=\"isInWarranty ? 'acf-card-success' : 'acf-card-warning'\">\r\n      <p *ngIf=\"isInWarranty\">Votre appareil est sous garantie Bosch 2 ans , la réparation est gratuite et prise en\r\n        charge par Bosch.</p>\r\n      <p *ngIf=\"!isInWarranty\">Votre appareil n’est plus sous garantie Bosch 2 ans.</p>\r\n    </div>\r\n\r\n    <div class=\"grid\">\r\n      <div class=\"col-12 md:col-5\">\r\n        <p class=\"acf-text-sm mb-4\">Merci de télécharger la facture d’achat de votre appareil. </p>\r\n        <acf-invoice-attachement (filesChanged)=\"onFilesChanged($event)\"\r\n          *ngIf=\"!loading else loader\"></acf-invoice-attachement>\r\n        <div class=\"file\" *ngIf=\"selectedFile && !loading\">\r\n          <div class=\"flex align-items-center\"> <img src=\"assets/icons/file.svg\" alt=\"file\">\r\n            <p class=\"filename\"> {{ selectedFile.name }} </p>\r\n            <p class=\"filesize\"> {{ selectedFile.size | filesize }} </p>\r\n          </div>\r\n          <img src=\"assets/icons/close.svg\" alt=\"close\" (click)=\"onRemoveFile()\" class=\"cursor-pointer\">\r\n        </div>\r\n        <div class=\"file\" *ngIf=\"loadedFile && loadedFile?.name  && loadedFile?.size && !selectedFile && !loading\">\r\n          <div class=\"flex align-items-center\"> <img src=\"assets/icons/file.svg\" alt=\"file\">\r\n            <p class=\"filename\"> {{ loadedFile.name }} </p>\r\n            <p class=\"filesize\"> {{ loadedFile.size | filesize }} </p>\r\n          </div>\r\n          <img src=\"assets/icons/close.svg\" alt=\"close\" (click)=\"onRemoveFile()\" class=\"cursor-pointer\">\r\n        </div>\r\n        <div class=\"acf-invalid-feedback\" *ngIf=\"submitted && !selectedFile && !loading && !loadedFile?.name \">\r\n          Le téléchargement de la facture est obligatoire. </div>\r\n      </div>\r\n\r\n      <div class=\"col-12 md:col-7 mt-4\">\r\n        <form [formGroup]=\"step1Form\">\r\n          <div class=\"grid mt-5\">\r\n            <div class=\"col-12 md:col-6\">\r\n              <label class=\"block font-bold mb-2 required-input\" for=\"refComm\">Référence commerciale\r\n              </label>\r\n              <p-autoComplete #autoComplete [style]=\"{'width':'100%'}\" [inputStyle]=\"{'width':'100%'}\"\r\n                [suggestions]=\"suggestedCommercialRefs\" (completeMethod)=\"displayReferences($event) \"\r\n                formControlName=\"refComm\" (onSelect)=\"onSelectProduct($event)\" minLength=\"4\" (onBlur)=\"onBlurEvent()\"\r\n                [ngClass]=\"{ 'acf-invalid-autocomplete':((submitted || f['refComm'].dirty) && f['refComm'].errors) || invalid_ref }\"\r\n                [emptyMessage]=\"autoComplete_loading ? 'Chargement en cours...': 'Aucune référence trouvée'\">\r\n                <ng-template let-ref pTemplate=\"item\">\r\n                  {{ref}}\r\n                </ng-template>\r\n              </p-autoComplete>\r\n              <div class=\"acf-invalid-feedback\" *ngIf=\"(submitted || f['refComm'].dirty) && f['refComm'].errors\">\r\n                <div *ngIf=\"f['refComm'].errors['required']\">Ce champ est obligatoire.</div>\r\n              </div>\r\n              <div class=\"acf-invalid-feedback\" *ngIf=\"invalid_ref && !f['refComm'].errors\">La référence commerciale\r\n                saisie n'existe pas.</div>\r\n            </div>\r\n            <div class=\"col-12 md:col-6\">\r\n              <label class=\"block font-bold mb-2\" for=\"brand\">Marque </label>\r\n              <input pInputText class=\"w-full\" id=\"brand\" formControlName=\"brand\" />\r\n            </div>\r\n            <div class=\"col-12 md:col-6\">\r\n              <label class=\"block font-bold mb-2\" for=\"family\">Famille </label>\r\n              <input pInputText class=\"w-full\" id=\"family\" formControlName=\"family\" />\r\n            </div>\r\n            <div class=\"col-12 md:col-6\">\r\n              <label class=\"block font-bold mb-2 required-input\" for=\"date\">Date d'achat </label>\r\n              <p-calendar dateFormat=\"dd/mm/yy\" [style]=\"{'width':'100%','border-radius':'0cm'}\" formControlName=\"date\"\r\n                autocomplete=\"one-time-code\" [maxDate]=\"maxDate\" (onBlur)=\"ondateBlur()\"\r\n                [ngClass]=\"{ 'acf-invalid-date': (f['date'].dirty || submitted) && f['date'].errors}\"\r\n                (onSelect)=\"onDateSelect()\">\r\n              </p-calendar>\r\n              <div class=\"acf-invalid-feedback\" *ngIf=\"(submitted || f['date'].dirty) && f['date'].errors\">\r\n                <div *ngIf=\"f['date'].errors['required']\">Ce champ est obligatoire.</div>\r\n              </div>\r\n            </div>\r\n\r\n             <div class=\"col-12 md:col-6 mb-4\">\r\n              <label class=\"block font-bold  required-input mb-2\" for=\"refTech\">Référence technique </label>\r\n                <p-dropdown class=\"w-full\" id=\"refTech\" formControlName=\"refTech\" [options]=\"suggestedTechnicalRefs\"\r\n                  [filter]=\"true\"  [lazy]=\"true\"\r\n                  emptyFilterMessage=\"Aucune référence trouvée\" [showClear]=\"true\" emptyMessage=\"Aucune référence trouvée\"\r\n                  (onChange)=\"onSelectProductByTechRef($event)\"\r\n                  [ngClass]=\"{ 'acf-invalid-dropdown': (f['refTech'].dirty || submitted) && f['refTech'].errors }\">\r\n                  <ng-template let-ref pTemplate=\"item\">\r\n                    <div class=\"flex align-items-center gap-2\">\r\n                      <div> {{ ref }}</div>\r\n                    </div>\r\n                  </ng-template>\r\n                </p-dropdown>\r\n                <a [href]=\"reference_help_center_url\" target=\"_blank\" class=\"acf-primary-link text-xs mt-2\">Comment trouver la référence de votre appareil ?</a>\r\n            </div>\r\n\r\n\r\n          </div>\r\n        </form>\r\n      </div>\r\n\r\n      <!-- <div *ngIf=\"step1Form.valid && isInWarranty === false && invalid_ref === false\">\r\n        <p class=\"acf-invalid-feedback\">\r\n          **Nous vous informons que, pour le moment, les incidents concernant les petits électroménagers hors garantie ne\r\n          peuvent pas être pris en charge directement via notre application. Nous vous remercions de votre\r\n          compréhension.Nous vous encourageons à contacter notre <a target=\"_blank\"\r\n            href=\"https://www.bosch-home.fr/nos-services/contact-et-info/contact-sav-hotline#tab-navigation\"\r\n            class=\"acf-primary-link\"> service client</a> .\r\n        </p>\r\n      </div> -->  <!-- // UPDATE HG -->\r\n      <!-- <div *ngIf=\"step1Form.valid && isInWarranty === false && invalid_ref === false\">\r\n        <p class=\"acf-invalid-feedback\">\r\n          **Votre produit est hors garantie. Merci de contacter le   <a target=\"_blank\"\r\n            href=\"https://www.bosch-home.fr/nos-services/contact-et-info/contact-sav-hotline#tab-navigation\"\r\n            class=\"acf-primary-link\"> service client Bosch</a> pour toute assistance.\r\n        </p>\r\n      </div> -->\r\n    </div>\r\n  </div>\r\n  <ng-template #loader>\r\n    <div class=\"lds-dual-ring\"></div>\r\n  </ng-template>\r\n  <div class=\"guest-action\">\r\n    <button pButton label=\"Etape suivante\" class=\"acf-primary-button\" (click)=\"next()\"></button>\r\n  </div>\r\n</acf-layout>","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\n\r\n\r\n@Injectable({\r\n    providedIn: 'root',\r\n})\r\nexport class GoogleMapsService {\r\n    constructor(private http: HttpClient) { }\r\n\r\n    calculateTime(\r\n        lat1: number,\r\n        lng1: number,\r\n        lat2: number,\r\n        lng2: number,\r\n        travelMode: google.maps.TravelMode\r\n    ): Promise<{ duration: string; distance: string }> {\r\n        const service = new google.maps.DistanceMatrixService();\r\n        const origin = new google.maps.LatLng(lat1, lng1);\r\n        const destination = new google.maps.LatLng(lat2, lng2);\r\n\r\n        return new Promise((resolve, reject) => {\r\n            service.getDistanceMatrix(\r\n                {\r\n                    origins: [origin],\r\n                    destinations: [destination],\r\n                    travelMode: travelMode,\r\n                },\r\n                (response, status) => {\r\n                    if (status === google.maps.DistanceMatrixStatus.OK) {\r\n                        const row = response?.rows[0];\r\n                        const element = row?.elements[0];\r\n                        if (element && element.status === \"OK\") {\r\n                            resolve({\r\n                                duration: element.duration.text,\r\n                                distance: element.distance.text,\r\n                            });\r\n                        } else {\r\n                            reject();\r\n                        }\r\n                    }\r\n                }\r\n            );\r\n        });\r\n    }\r\n\r\n    nearbySearch(\r\n        request: google.maps.places.PlaceSearchRequest,\r\n        callback: any\r\n    ): void {\r\n        const service = new google.maps.places.PlacesService(\r\n            document.createElement('div')\r\n        );\r\n        service.nearbySearch(request, callback);\r\n    }\r\n    getNearbyPostOffices(\r\n        fixedPoint: { lat: number; lng: number }): Promise<any[]> {\r\n        return new Promise((resolve, reject) => {\r\n            const request = {\r\n                location: new google.maps.LatLng(fixedPoint.lat, fixedPoint.lng),\r\n                radius: 10000,\r\n                type: 'post_office',\r\n                fields: ['place_id', 'name', 'vicinity', 'address_components', 'geometry'],\r\n                componentRestrictions: { country: 'fr' },\r\n            };\r\n\r\n            const service = new google.maps.places.PlacesService(\r\n                document.createElement('div')\r\n            );\r\n\r\n            service.nearbySearch(request, (results, status) => {\r\n                if (status === google.maps.places.PlacesServiceStatus.OK && results) {\r\n                    const postOfficesWithPhoneNumber: any[] = [];\r\n\r\n                    results.forEach((place) => {\r\n                        if (!place.place_id) {\r\n                            console.error('Missing place_id for', place);\r\n                            return; // Skip this place if place_id is missing\r\n                        }\r\n\r\n                        // Create a request to get detailed information for each place\r\n                        const placeDetailsRequest: google.maps.places.PlaceDetailsRequest = {\r\n                            placeId: place.place_id as string,\r\n                            fields: ['place_id', 'name', 'vicinity', 'address_components', 'formatted_phone_number'],\r\n                        };\r\n\r\n                        const placeService = new google.maps.places.PlacesService(document.createElement('div'));\r\n\r\n                        // Fetch detailed information for each place\r\n                        placeService.getDetails(placeDetailsRequest, (details, status) => {\r\n                            if (status === google.maps.places.PlacesServiceStatus.OK && details) {\r\n                                // Extract postal code from address_components\r\n                                const postalCode = details.address_components?.find((component) =>\r\n                                    component.types.includes('postal_code')\r\n                                )?.long_name;\r\n                                const locality = details.address_components?.find((component) =>\r\n                                    component.types.includes('locality')\r\n                                )?.long_name;\r\n                                const country = details.address_components?.find((component) =>\r\n                                    component.types.includes('country')\r\n                                )?.long_name;\r\n                                // Extract phone number\r\n                                const phoneNumber = details.formatted_phone_number || '';\r\n                                // Push the original place details along with phone number and postal code\r\n                                postOfficesWithPhoneNumber.push({\r\n                                    ...place,  // Keep all original data from your original object\r\n                                    postalCode: postalCode,\r\n                                    phoneNumber: phoneNumber,\r\n                                    city: locality,\r\n                                    country: country\r\n                                });\r\n\r\n                                // If we've processed all results, resolve the promise\r\n                                if (postOfficesWithPhoneNumber.length === results.length) {\r\n                                    resolve(postOfficesWithPhoneNumber);\r\n                                }\r\n                            } else {\r\n                                console.error('Failed to get details:', status);\r\n                            }\r\n                        });\r\n                    });\r\n                } else {\r\n                    reject(new Error('Places API request failed: ' + status));\r\n                }\r\n            });\r\n        });\r\n    }\r\n\r\n\r\n    parseDistance(distance: string): number {\r\n        // Replace ',' with '.' for decimal handling, and normalize non-breaking spaces\r\n        distance = distance.replace(',', '.').replace(/\\s+/g, ' ').trim();\r\n\r\n        if (distance.includes('km')) {\r\n            // Convert kilometers to meters\r\n            return parseFloat(distance.replace('km', '').trim().replace(/\\s/g, '')) * 1000;\r\n        } else if (distance.includes('m')) {\r\n            // Parse meters directly\r\n            return parseFloat(distance.replace('m', '').trim().replace(/\\s/g, ''));\r\n        }\r\n\r\n        // Return Infinity for invalid distances\r\n        return Infinity;\r\n    }\r\n    getPlaceId(companyName: string): Observable<string | null> {\r\n        return new Observable(observer => {\r\n            // Create a dummy map (required for PlacesService)\r\n            const map = new google.maps.Map(document.createElement('div'));\r\n\r\n            // Initialize the PlacesService\r\n            const service = new google.maps.places.PlacesService(map);\r\n\r\n            // Request to find the place\r\n            const request = {\r\n                query: companyName,\r\n                fields: ['place_id']\r\n            };\r\n\r\n            service.findPlaceFromQuery(request, (results, status) => {\r\n                if (status === google.maps.places.PlacesServiceStatus.OK && results?.length) {\r\n                    const firstPlaceId = results.find(place => place.place_id)?.place_id || null;\r\n                    observer.next(firstPlaceId);\r\n                    observer.complete();\r\n                } else {\r\n                    observer.next(null);\r\n                    observer.complete();\r\n                }\r\n            });\r\n        });\r\n    }\r\n\r\n}\r\n","import { Component, Input, OnInit, ViewChild } from '@angular/core';\r\nimport { MapAdvancedMarker, MapInfoWindow } from '@angular/google-maps';\r\nimport { GoogleMapsService } from '../../services/google-map.service';\r\nimport { MandateService } from '../../services/mandate.service';\r\nimport { RepairAndShippingPricesRequest } from '../../models/request/repair-shipping-prices.request';\r\nimport { Router } from '@angular/router';\r\nimport { RoutesPaths } from '../../enums/routePaths';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { DataStoreService } from '../../services/data-store.service';\r\nimport { DataStore } from '../../enums/data.store';\r\nimport { AccountService } from '../../services/account.service';\r\nimport { DialogService, DynamicDialogRef } from 'primeng/dynamicdialog';\r\nimport { LoginFormComponent, RegisterFromComponent } from '../../../public-api';\r\nimport { Inject } from '@angular/core';\r\nimport { LIB_CONFIG, LibConfig } from '../../config.token';;\r\nimport {\r\n  DropOffPoint,\r\n  Rapair,\r\n  RepairAndShippingPrices,\r\n} from '../../models/response/repair-shipping-prices.response';\r\n\r\n@Component({\r\n  selector: 'acf-step-four',\r\n  templateUrl: './step-four.component.html',\r\n  styleUrl: './step-four.component.scss',\r\n  standalone: false,\r\n})\r\nexport class StepFourComponent implements OnInit {\r\n  @Input() appName: string = '';\r\n  @ViewChild(MapInfoWindow) infoWindow!: MapInfoWindow;\r\n  repairPrices!: RepairAndShippingPrices;\r\n  selectedDeliveryOption: any = null;\r\n  selectedPostOffice: any = null;\r\n  submitted = false;\r\n  allCalculationsCompleted = false;\r\n\r\n  deliveryOptions: any[] = [];\r\n  myLocation: any;\r\n\r\n  //Lists\r\n  listPostes: any[] = [];\r\n  listPostesSorted: any[] = [];\r\n  listRepairers: Rapair[] = [];\r\n\r\n  fixedPoint = {\r\n    lat: parseFloat(this.store.getLat()),\r\n    lng: parseFloat(this.store.getLng()),\r\n  };\r\n  options: google.maps.MapOptions = {\r\n    mapId: this.config.MAP_ID,\r\n    center: this.fixedPoint,\r\n    zoom: 12,\r\n  };\r\n  step4Form: FormGroup;\r\n  emailValid!: boolean;\r\n  emailExists!: boolean;\r\n\r\n  ref: DynamicDialogRef | undefined;\r\n  loading: boolean = true;\r\n  messages!: any[];\r\n  isOutOfWarranty: boolean ;\r\n  constructor(@Inject(LIB_CONFIG) private config: LibConfig,\r\n    private readonly googleMapsService: GoogleMapsService,\r\n    private readonly mandateService: MandateService,\r\n    private readonly router: Router,\r\n    private readonly formBuilder: FormBuilder,\r\n    private readonly store: DataStoreService,\r\n    private readonly accountService: AccountService,\r\n    private readonly dialogService: DialogService\r\n  ) {\r\n    this.step4Form = this.onItniFrom();\r\n    this.loadFormFromLocalStorage();\r\n    this.checkEmail();\r\n     this.isOutOfWarranty = this.store.isOutWaranty();\r\n    if (!this.isOutOfWarranty) {\r\n      this.deliveryOptions = [\r\n        { name: 'Déposer l’appareil chez le réparateur ', key: 0 },\r\n        { name: 'Envoyer l’appareil par colis', key: 1 }\r\n      ];\r\n       this.step4Form = this.onItniFrom();\r\n    } else {\r\n      this.deliveryOptions = [\r\n        { name: 'Déposer l’appareil chez le réparateur ', key: 0 },\r\n        { name: 'Expédier l’appareil via un transporteur', key: 2}\r\n      ];\r\n      this.step4Form = this.onItniFrom(this.deliveryOptions[0]);\r\n    }\r\n  }\r\n\r\n  onItniFrom(pickUp? :{name: string, key: number}): FormGroup {\r\n    return this.formBuilder.group({\r\n      repairPrice: [''],\r\n      shippingPrice: [''],\r\n      clientCode: [''],\r\n      atsCode: [''],\r\n      currencyCode: [''],\r\n      currencySymbol: [''],\r\n      ecoSupport: 0,\r\n      //&\r\n      pickUp: [pickUp ? pickUp : '', Validators.required],\r\n      pickUpChoice: [''],\r\n      carrierCode: [''],\r\n      fromName: [''],\r\n      fromAddress1: [''],\r\n      fromZip: [''],\r\n      fromCity: [''],\r\n      fromCountryCode: [''],\r\n      fromPhone: [''],\r\n      toName: [''],\r\n      toAddress1: [''],\r\n      toZip: [''],\r\n      toCity: [''],\r\n      toCountryCode: [''],\r\n      toPhone: [''],\r\n      selectedPostOffice: [''],\r\n      weight: [''],\r\n    });\r\n  }\r\n  loadFormFromLocalStorage(): void {\r\n    const savedFormData = this.store.getStep4Form();\r\n    if (savedFormData) {\r\n      this.step4Form.patchValue(savedFormData);\r\n    }\r\n  }\r\n\r\n  addFixedPointIcon() {\r\n    const fixedPointMarker = `../../../assets/${this.appName}/map/map-user-address.png`;\r\n    const imgTag = document.createElement('img');\r\n    imgTag.src = fixedPointMarker;\r\n    imgTag.width = 40;\r\n    this.myLocation = {\r\n      content: imgTag,\r\n      lat: this.fixedPoint.lat,\r\n      lng: this.fixedPoint.lng,\r\n      address: this.store.getAddress() || this.store.getStep3Form()?.address,\r\n    };\r\n  }\r\n\r\n  async onMarkerClick(marker: MapAdvancedMarker, location: any) {\r\n    this.infoWindow.close();\r\n    this.googleMapsService.getPlaceId(location.name).subscribe((placeId) => {\r\n      let googleMapsUrl = '';\r\n      if (placeId) {\r\n        googleMapsUrl = `https://www.google.com/maps/search/?api=1&query=Google&query_place_id=${placeId}`;\r\n      } else {\r\n        googleMapsUrl = `https://www.google.com/maps/search/?api=1&query=${location.latitude},${location.longitude}`;\r\n      }\r\n      const contentString = `\r\n    <div id=\"content\">\r\n      <div>\r\n\r\n       ${\r\n         location.name !== undefined\r\n           ? `\r\n        <div class=\"mt-2\"> <b class=\"mb-2 mr-3\">${location.name}</b></div>\r\n        <div class=\"mt-2\"> <span class=\"mb-2 mr-3\">${location.vicinity}</span></div>\r\n        <div class=\"my-2\"> <span class=\"mb-2 mr-3\">${location.country}</span></div>\r\n            `\r\n           : ''\r\n       }\r\n      </div>\r\n      <div class=\"flex align-items-center justify-content-center\">\r\n        ${\r\n          location.walk !== undefined\r\n            ? `\r\n          <img src=\"assets/${this.appName}/walk-icon.svg\" alt=\"walk\" class=\"mb-2 mx-1\">\r\n          <span class=\"mb-2 mr-3\">${location.walk}</span>\r\n        `\r\n            : ''\r\n        }\r\n        ${\r\n          location.transit !== undefined\r\n            ? `\r\n          <img src=\"assets/${this.appName}/train-icon.svg\" alt=\"transit\" class=\"mb-2 mx-1\">\r\n          <span class=\"mb-2 mr-3\">${location.transit}</span>\r\n        `\r\n            : ''\r\n        }\r\n        ${\r\n          location.drive !== undefined\r\n            ? `\r\n          <img src=\"assets/${this.appName}/car-icon.png\" alt=\"car\" class=\"mb-2 mx-1\" style=\"width: 20px;\">\r\n          <span class=\"mb-2\">${location.drive}</span>\r\n        `\r\n            : ''\r\n        }\r\n      </div>\r\n      <div class=\"mt-1 text-left\">\r\n            <a href=\"${googleMapsUrl}\" target=\"_blank\" class=\"btn btn-primary\">Afficher l'itinéraire</a>\r\n          </div>\r\n    </div>\r\n  `;\r\n      this.infoWindow.openAdvancedMarkerElement(\r\n        marker.advancedMarker,\r\n        contentString\r\n      );\r\n    });\r\n  }\r\n\r\n  async onMarkerMyLocationClick(marker: MapAdvancedMarker, location: any) {\r\n    this.infoWindow.close();\r\n    const contentString = `\r\n    <div id=\"content\">\r\n      <div class=\"flex align-items-center justify-content-center\">\r\n        ${\r\n          location.address !== undefined\r\n            ? `\r\n          <img src=\"assets/${this.appName}/home-icon.svg\" alt=\"home\" class=\"mb-2 ml-1 mr-2\" style=\"width: 15px;\">\r\n          <span class=\"mb-1 mr-3\">${location.address}</span>\r\n        `\r\n            : ''\r\n        }\r\n      </div>\r\n    </div>\r\n  `;\r\n    this.infoWindow.openAdvancedMarkerElement(\r\n      marker.advancedMarker,\r\n      contentString\r\n    );\r\n  }\r\n\r\n  async onMarkerRepairerClick(marker: MapAdvancedMarker, location: any) {\r\n    this.infoWindow.close();\r\n    this.googleMapsService\r\n      .getPlaceId(this.listRepairers[0].companyName)\r\n      .subscribe((placeId) => {\r\n        let googleMapsUrl = '';\r\n\r\n        if (placeId) {\r\n          googleMapsUrl = `https://www.google.com/maps/search/?api=1&query=Google&query_place_id=${placeId}`;\r\n        } else {\r\n          googleMapsUrl = `https://www.google.com/maps/search/?api=1&query=${this.listRepairers[0].latitude},${this.listRepairers[0].longitude}`;\r\n        }\r\n        const contentString = `\r\n        <div id=\"content\">\r\n          <div>\r\n            ${\r\n              this.listRepairers[0]?.companyName !== undefined\r\n                ? `\r\n              <div class=\"mt-2\"> <b class=\"mb-2 mr-3\">${this.listRepairers[0].companyName}</b></div>\r\n              <div class=\"mt-2\"> <span class=\"mb-2 mr-3\">${this.listRepairers[0].address1}</span></div>\r\n            `\r\n                : ''\r\n            }\r\n          </div>\r\n          <div class=\"flex align-items-center justify-content-center\">\r\n            ${\r\n              location.walk !== undefined\r\n                ? `\r\n              <img src=\"assets/${this.appName}/walk-icon.svg\" alt=\"walk\" class=\"mb-2 mx-1\">\r\n              <span class=\"mb-2 mr-3\">${location.walk}</span>\r\n            `\r\n                : ''\r\n            }\r\n            ${\r\n              location.transit !== undefined\r\n                ? `\r\n              <img src=\"assets/${this.appName}/train-icon.svg\" alt=\"transit\" class=\"mb-2 mx-1\">\r\n              <span class=\"mb-2 mr-3\">${location.transit}</span>\r\n            `\r\n                : ''\r\n            }\r\n            ${\r\n              location.drive !== undefined\r\n                ? `\r\n              <img src=\"assets/${this.appName}/car-icon.png\" alt=\"car\" class=\"mb-2 mx-1\" style=\"width: 20px;\">\r\n              <span class=\"mb-2\">${location.drive}</span>\r\n            `\r\n                : ''\r\n            }\r\n          </div>\r\n          <div class=\"mt-1 text-left \">\r\n            <a href=\"${googleMapsUrl}\" target=\"_blank\" class=\"btn btn-primary \">Afficher l'itinéraire</a>\r\n          </div>\r\n        </div>\r\n      `;\r\n\r\n        // Open the Info Window after googleMapsUrl is assigned\r\n        this.infoWindow.openAdvancedMarkerElement(\r\n          marker.advancedMarker,\r\n          contentString\r\n        );\r\n      });\r\n  }\r\n\r\n  onPostOfficeSelect(point: any) {\r\n    this.infoWindow.close();\r\n\r\n    if (this.selectedPostOffice === point) {\r\n      this.selectedPostOffice = null;\r\n      this.step4Form.patchValue({\r\n        selectedPostOffice: null,\r\n      });\r\n    } else {\r\n      this.selectedPostOffice = point;\r\n      this.step4Form.patchValue({\r\n        selectedPostOffice: point,\r\n      });\r\n      const postOfficePoint = {\r\n        lat: point.latitude,\r\n        lng: point.longitude,\r\n      };\r\n      this.onChangeCenter(postOfficePoint);\r\n    }\r\n  }\r\n\r\n  onDeliveryOptionSelect(option: any): void {\r\n    this.selectedPostOffice = null; // reset cards selection\r\n    this.selectedDeliveryOption = option;\r\n    this.step4Form.patchValue({\r\n      selectedPostOffice: null,\r\n    });\r\n    if (option.key == 0 || option.key == 2) {\r\n      //Déposer l’appareil chez le réparateur\r\n      if (this.listRepairers[0]) {\r\n        const repairerPoint = {\r\n          lat: this.listRepairers[0].latitude,\r\n          lng: this.listRepairers[0].longitude,\r\n        };\r\n        this.onChangeCenter(repairerPoint);\r\n      }\r\n    } else {\r\n      //Envoyer l’appareil par colis\r\n      this.onChangeCenter(this.fixedPoint);\r\n    }\r\n  }\r\n\r\n  onChangeCenter(center: any) {\r\n    const options: google.maps.MapOptions = {\r\n      mapId: this.config.MAP_ID,\r\n      center: center,\r\n      zoom: 12,\r\n    };\r\n    this.options = options;\r\n  }\r\n\r\n  // getRepairersAssignedToUser() {\r\n  //   return new Promise<any>((resolve, reject) => {\r\n  //     const request: RepairersAssignedRequest = {\r\n  //       applicationName: this.appName,\r\n  //       zip: this.store.getStep3Form()?.zip.zip,\r\n  //       countryCode: '250',\r\n  //     };\r\n\r\n  //     this.mandateService.getRepairers(request).subscribe(\r\n  //       (data) => {\r\n  //         resolve([data]); // Resolve the promise once processing is done\r\n  //       },\r\n  //       (error) => {\r\n  //         reject(new Error('Erreur lors de la récupération des données: ' + error)); // Reject if there's an error\r\n  //       }\r\n  //     );\r\n  //   });\r\n  // }\r\n\r\n  next() {\r\n    this.submitted = true;\r\n    const pickUpChoice = this.step4Form.value.pickUp.key;\r\n    console.log('pickUpChoice', pickUpChoice);\r\n    if (\r\n       this.step4Form.valid && \r\n        (pickUpChoice === 0 || pickUpChoice === 2 ||  (pickUpChoice === 1 && this.step4Form.value.selectedPostOffice !== null))\r\n    ) {\r\n      this.saveForm4ToLocalStorage();\r\n      if (!this.emailExists && !this.emailValid) {\r\n        const registerFromSteps = true;\r\n        // & Open the dialog with the fetched consumers\r\n        this.ref = this.dialogService.open(RegisterFromComponent, {\r\n          width: '50vw',\r\n          showHeader: false,\r\n          dismissableMask: true,\r\n          closeOnEscape: true,\r\n          contentStyle: { overflow: 'auto' },\r\n          breakpoints: {\r\n            '960px': '75vw',\r\n            '640px': '90vw',\r\n          },\r\n          // & Pass consumers to the dialog\r\n          data: { registerFromSteps },\r\n        });\r\n      } else {\r\n        if (this.emailExists && !this.emailValid) {\r\n          this.router.navigate([RoutesPaths.registerCheckInbox]);\r\n        } else {\r\n          const loginFromSteps = true;\r\n          // & Open the dialog with the fetched consumers\r\n          this.ref = this.dialogService.open(LoginFormComponent, {\r\n            width: '50vw',\r\n            showHeader: false,\r\n            dismissableMask: true,\r\n            closeOnEscape: true,\r\n            contentStyle: { overflow: 'auto' },\r\n            breakpoints: {\r\n              '960px': '75vw',\r\n              '640px': '90vw',\r\n            },\r\n            // & Pass consumers to the dialog\r\n            data: { loginFromSteps },\r\n          });\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n  prev() {\r\n    this.router.navigate([`${RoutesPaths.step}/3`]);\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.addFixedPointIcon();\r\n    this.GetRepairInformation();\r\n\r\n    // Fetch and process post offices\r\n    // this.processPostOffices();\r\n\r\n    // // Fetch and process repairers\r\n    // this.processRepairers();\r\n    // this.getRepairAndShippingPrices();\r\n    this.allCalculationsCompleted = true;\r\n  }\r\n\r\n  // Function to process post offices\r\n  private async processPostOffices(dropOffPoints: DropOffPoint[]) {\r\n    this.listPostes = dropOffPoints.map((point) => ({\r\n      ...point,\r\n      latitude: Number(point.latitude),\r\n      longitude: Number(point.longitude),\r\n    }));\r\n    const postOfficeMarker =\r\n      '../../../assets/' + this.appName + '/map/map-post-office.png';\r\n\r\n    this.listPostes.forEach((element) => {\r\n      let imgTag = document.createElement('img');\r\n      imgTag.src = postOfficeMarker;\r\n      imgTag.width = 40;\r\n      element.content = imgTag;\r\n    });\r\n    await this.calculateDistancesAndDurations(this.listPostes);\r\n    this.listPostesSorted = this.listPostes\r\n      .filter((post) => post.distance) // Ensure distance, walk, and transit exist\r\n      .map((post) => {\r\n        const numericDistance = this.googleMapsService.parseDistance(\r\n          post.distance\r\n        );\r\n        return { ...post, numericDistance };\r\n      })\r\n      .sort((a, b) => a.numericDistance - b.numericDistance)\r\n      .slice(0, 2);\r\n  }\r\n\r\n  // private async getRepairAndShippingPrices() {\r\n  //   // Warranty check logic directly in interventionTypeId\r\n  //   const today = new Date();\r\n  //   const purchaseDate = new Date(this.store.getStep1Form()?.date);\r\n  //   const yearsDifference = today.getFullYear() - purchaseDate.getFullYear();\r\n  //   const isDateInFuture = today < purchaseDate;\r\n  //   const interventionTypeId = !isDateInFuture && yearsDifference <= 2 ? 1 : 0;\r\n  //   // Retrieving and parsing the form data\r\n  //   const request: RepairAndShippingPricesRequest2 = {\r\n  //     applicationName: this.appName,\r\n  //     commercialRef: this.store.getStep1Form()?.refComm,\r\n  //     technicalRef: this.store.getStep1Form()?.refTech,\r\n  //     clientCode: this.listRepairers[0].clientCode,\r\n  //     interventionTypeId: interventionTypeId,\r\n  //     isPem: true,\r\n  //   };\r\n\r\n  //   this.mandateService.getRepairAndShippingPrices(request).subscribe(\r\n  //     (data) => {\r\n  //       this.repairPrices = data;\r\n  //       this.loading = false;\r\n  //     },\r\n  //     (_) => console.log(_)\r\n  //   );\r\n  // }\r\n\r\n  // Function to process repairers\r\n  private async processRepairers(repairer: Rapair) {\r\n    const repairers = [repairer];\r\n    this.listRepairers = await repairers;\r\n    const repairerMarker =\r\n      '../../../assets/' + this.appName + '/map/map-repairer.png';\r\n      if (this.listRepairers && this.listRepairers.length == 1) {\r\n        const repairerPoint = {\r\n          lat: this.listRepairers[0].latitude,\r\n          lng: this.listRepairers[0].longitude,\r\n        };\r\n        this.onChangeCenter(repairerPoint);\r\n      }\r\n    this.listRepairers.forEach((element) => {\r\n      let imgTag = document.createElement('img');\r\n      imgTag.src = repairerMarker;\r\n      imgTag.width = 40;\r\n      element.content = imgTag;\r\n    });\r\n\r\n    await this.calculateDistancesAndDurations(this.listRepairers);\r\n    if (\r\n      this.googleMapsService.parseDistance(this.listRepairers[0].distance) >\r\n      20000 && !this.isOutOfWarranty\r\n    ) {\r\n      this.step4Form.patchValue({\r\n        pickUp: this.deliveryOptions[1],\r\n      });\r\n      this.onDeliveryOptionSelect(this.deliveryOptions[1]);\r\n      this.messages = [\r\n        {\r\n          severity: 'info',\r\n          detail:\r\n            \" Étant donné que la distance entre votre localisation et le réparateur dépasse 20 km,  l'option d'envoi par poste est sélectionnée par défaut.\",\r\n        },\r\n      ];\r\n      setTimeout(() => {\r\n        this.messages = []; // Clear error message after 5 seconds\r\n      }, 15000);\r\n    }\r\n  }\r\n\r\n  private async GetRepairInformation() {\r\n    // Warranty check logic directly in interventionTypeId\r\n    // const today = new Date();\r\n    // const purchaseDate = new Date(this.store.getStep1Form()?.date);\r\n    // const yearsDifference = today.getFullYear() - purchaseDate.getFullYear();\r\n    // const isDateInFuture = today < purchaseDate;\r\n    // const interventionTypeId = !isDateInFuture && yearsDifference <= 2 ? 1 : 0;\r\n    // const isUnderGuarantee =  yearsDifference <= 2 ? true : false;\r\n    const request: RepairAndShippingPricesRequest = {\r\n      applicationName: this.appName,\r\n      commercialRef: this.store.getStep1Form()?.refComm,\r\n      technicalRef: this.store.getStep1Form()?.refTech,\r\n      consumerCity: this.store.getStep3Form()?.city.city,\r\n      consumerZipCode: this.store.getStep3Form()?.zip.zip,\r\n      consumerAddress: this.store.getStep3Form()?.address,\r\n      isUnderGuarantee: !this.isOutOfWarranty,\r\n    };\r\n\r\n    this.mandateService.GetRepairInformation(request).subscribe(\r\n      (data) => {\r\n        const repairPrices = {\r\n          repairPrice: data.repairPrice,\r\n          totalRepairPrice: data.repairPrice,\r\n          currencyCode: data.currencyCode,\r\n          currencySymbol: data.currencySymbol,\r\n          weight: data.deviceWeight,\r\n          shippingPrice: data.shippingPrice,\r\n          ecoSupport: data.ecoSupport,\r\n          shippingCurrencySymbol: data.currencySymbol,\r\n          shippingCurrencyCode: data.currencyCode,\r\n        };\r\n        this.repairPrices = repairPrices;\r\n        // Fetch and process post offices\r\n         const dropOffPoints = data.dropOffPoints;\r\n        if(dropOffPoints && dropOffPoints.length > 0 ){\r\n        this.processPostOffices(dropOffPoints);\r\n        }\r\n  \r\n\r\n        // Fetch and process repairers\r\n        const repairer = data.rapair;\r\n        this.processRepairers(repairer);\r\n        this.loading = false;\r\n      },\r\n      (_) => console.log(_)\r\n    );\r\n  }\r\n  // Function to calculate distances and durations\r\n  private async calculateDistancesAndDurations(points: any[]) {\r\n    const calculationPromises = points.map(async (point) => {\r\n      try {\r\n        const walkResult = await this.googleMapsService.calculateTime(\r\n          this.fixedPoint.lat,\r\n          this.fixedPoint.lng,\r\n          point.latitude || point.geometry.location.lat(),\r\n          point.longitude || point.geometry.location.lng(),\r\n          google.maps.TravelMode.WALKING\r\n        );\r\n        point.walk = walkResult.duration;\r\n        point.distance = walkResult.distance;\r\n\r\n        const transitResult = await this.googleMapsService.calculateTime(\r\n          this.fixedPoint.lat,\r\n          this.fixedPoint.lng,\r\n          point.latitude || point.geometry.location.lat(),\r\n          point.longitude || point.geometry.location.lng(),\r\n          google.maps.TravelMode.TRANSIT\r\n        );\r\n        point.transit = transitResult.duration;\r\n        const driveResult = await this.googleMapsService.calculateTime(\r\n          this.fixedPoint.lat,\r\n          this.fixedPoint.lng,\r\n          point.latitude || point.geometry.location.lat(),\r\n          point.longitude || point.geometry.location.lng(),\r\n          google.maps.TravelMode.DRIVING\r\n        );\r\n        point.drive = driveResult.duration;\r\n      } catch (error) {}\r\n    });\r\n\r\n    await Promise.all(calculationPromises);\r\n  }\r\n\r\n  checkEmail() {\r\n    const email = this.store.getEmail();\r\n    this.accountService.checkEmail(email).subscribe(\r\n      (data) => {\r\n        this.accountService.checkEmailValidity(email).subscribe(\r\n          (x) => {\r\n            this.emailValid = x;\r\n          },\r\n          (_) => console.log(_)\r\n        );\r\n        this.emailExists = data;\r\n      },\r\n      (_) => console.log(_)\r\n    );\r\n  }\r\n\r\n  saveForm4ToLocalStorage() {\r\n    const pickUpChoice = this.step4Form.value.pickUp.key;\r\n    this.step4Form.patchValue({\r\n      repairPrice: this.repairPrices.repairPrice,\r\n      clientCode: this.listRepairers[0].clientCode,\r\n      atsCode: this.listRepairers[0].atsCode,\r\n      shippingPrice: this.repairPrices.shippingPrice,\r\n      currencyCode: this.repairPrices.currencyCode,\r\n      currencySymbol: this.repairPrices.currencySymbol,\r\n      ecoSupport: this.repairPrices.ecoSupport,\r\n      weight: this.repairPrices.weight,\r\n      pickUpChoice: pickUpChoice ? 'FROMSTORE' : '',\r\n      carrierCode: 'Poste',\r\n      fromName: this.selectedPostOffice?.name,\r\n      fromAddress1: this.selectedPostOffice?.adresse1,\r\n      fromZip: this.selectedPostOffice?.zipCode,\r\n      fromCity: this.selectedPostOffice?.city,\r\n      fromCountryCode: this.listRepairers[0].countryCode,\r\n      fromPhone: this.selectedPostOffice?.phoneNumber,\r\n      toName: this.listRepairers[0].companyName,\r\n      toAddress1: this.listRepairers[0].address1,\r\n      toZip: this.listRepairers[0].zipCode,\r\n      toCity: this.listRepairers[0].city,\r\n      toCountryCode: this.listRepairers[0].countryCode,\r\n      toPhone: this.listRepairers[0].phoneNumber,\r\n    });\r\n    this.store.saveFormToLocalStorage(this.step4Form, DataStore.step4_form);\r\n  }\r\n\r\n\r\n  onPhoneClick(phoneNumber?: string) {\r\n    if (!phoneNumber) return;\r\n    window.location.href = `tel:${phoneNumber}`;\r\n  }\r\n\r\n  onEmailClick(emailAddress?: string) {\r\n    if (!emailAddress) return;\r\n    window.location.href = `mailto:${emailAddress}`;\r\n  }\r\n  get f() {\r\n    return this.step4Form.controls;\r\n  }\r\n\r\n}\r\n","<acf-layout [step]=\"4\" [appName]=\"appName\">\r\n\r\n  <div class=\"grid\">\r\n\r\n    <!-- Left Column: Delivery and Repair Details -->\r\n    <div class=\"col-12 md:col-6\">\r\n      <form [formGroup]=\"step4Form\">\r\n\r\n        <!-- Repairer Options Section -->\r\n        <div class=\"delivery-details\">\r\n          @if(!loading && listRepairers && isOutOfWarranty){\r\n          <div class=\"cursor-pointer card-box-primary p-3 h-full flex flex-column border-round-lg mb-3\"\r\n            *ngFor=\"let rep of listRepairers; let i = index\" [ngClass]=\"{'selected-card-box':  i  === 0}\">\r\n            <div class=\"flex gap-2\">\r\n              <img [src]=\"'assets/' + appName + '/map-bnw-icon-blue.svg'\" alt=\"map\" class=\"w-1rem\">\r\n              <div class=\"text-900 font-bold\"> {{listRepairers[0]?.distance}} </div>\r\n            </div>\r\n            <div class=\"text-900 font-bold my-2\"> {{listRepairers[0]?.companyName}} </div>\r\n              <div class=\"my-2\"> {{listRepairers[0]?.address1}} {{listRepairers[0]?.zipCode}} {{listRepairers[0]?.city}}</div>\r\n            <!-- Contact Section -->\r\n            <div class=\"flex items-center py-2\">\r\n              <!-- Phone Section -->\r\n              <div class=\"flex items-center gap-2 cursor-pointer py-2 pl-3 border-left-3 border-900\"\r\n                (click)=\"onPhoneClick(listRepairers[0]?.phoneNumber)\">\r\n                <i class=\"pi pi-phone text-xl\"></i>\r\n                <span class=\"text-gray-800 font-medium\">{{ listRepairers[0]?.phoneNumber }}</span>\r\n              </div>\r\n              <!-- Email Section -->\r\n              <div class=\"flex items-center gap-2 cursor-pointer py-2 ml-6 pl-3 border-left-3 border-900\"\r\n                (click)=\"onEmailClick(listRepairers[0]?.email)\">\r\n                <i class=\"pi pi-envelope text-xl\"></i>\r\n                <span class=\"text-gray-800 font-medium\">Envoyer un email</span>\r\n              </div>\r\n            </div>\r\n          </div>\r\n          }\r\n          <p class=\"font-semibold text-md line-height-4 required-input\">Sélectionnez le mode de livraison</p>\r\n          <div class=\"card\">\r\n            <p-messages [(value)]=\"messages\" [closable]=\"true\" />\r\n          </div>\r\n          <div class=\"flex flex-column gap-1\">\r\n            @if(!loading){\r\n\r\n            <div *ngFor=\"let deliveryOption of deliveryOptions\" class=\"field-checkbox\">\r\n              <p-radioButton [inputId]=\"deliveryOption.key\" formControlName=\"pickUp\" name=\"pickUp\"\r\n                [value]=\"deliveryOption\" (onClick)=\"onDeliveryOptionSelect(deliveryOption)\"\r\n                [ngClass]=\"{ 'ng-invalid ng-dirty': submitted && f['pickUp'].value == ''}\" />\r\n              <label [for]=\"deliveryOption.key\" class=\"ml-2\">\r\n                {{ deliveryOption.name }}\r\n                <span *ngIf=\"deliveryOption?.key === 2\">\r\n                  <br>\r\n                  <span class=\"font-semibold text-xs mt-2\">(les frais d’expédition restent à la charge du\r\n                    consommateur)</span>\r\n                </span>\r\n              </label>\r\n            </div>\r\n            <div class=\"acf-invalid-feedback\" *ngIf=\"submitted && f['pickUp'].errors\">\r\n              <div *ngIf=\"f['pickUp'].errors['required']\">Merci de sélectionner un mode de livraison.</div>\r\n            </div>\r\n            }\r\n          </div>\r\n        </div>\r\n      </form>\r\n      <!-- Nearby Post Offices Section -->\r\n      <div *ngIf=\"selectedDeliveryOption?.key === 1\">\r\n        <p class=\"font-semibold text-md line-height-4 required-input\">Points relais à proximité</p>\r\n        <p class=\"font-medium text-md line-height-2\">Merci de choisir l'emplacement qui vous convient</p>\r\n        @if(listPostesSorted) {\r\n        <div pRipple class=\" cursor-pointer card-box-primary p-3 h-full flex flex-column border-round-lg mb-3\"\r\n          *ngFor=\"let point of listPostesSorted\" [ngClass]=\"{'selected-card-box': selectedPostOffice === point}\"\r\n          (click)=\"onPostOfficeSelect(point)\">\r\n\r\n          <div class=\"flex justify-content-between flex-wrap\">\r\n            <div class=\"flex align-items-center justify-content-center\">\r\n              <img [src]=\"'assets/' + appName + '/map-bnw-icon.svg'\" alt=\"map\" class=\"mb-2 w-1rem mr-1\">\r\n              <div class=\"text-900 font-bold text-md mb-2\">{{ point.distance }}</div>\r\n            </div>\r\n            <div class=\"flex align-items-center justify-content-center\">\r\n              <!-- Walk -->\r\n              <ng-container *ngIf=\"point.walk !== undefined\">\r\n                <img [src]=\"'assets/' + appName + '/walk-icon.svg'\" alt=\"walk\" class=\"mb-2 mx-1\">\r\n                <span class=\"mb-2 mr-3\">{{ point.walk }}</span>\r\n              </ng-container>\r\n\r\n              <!-- Transit -->\r\n              <ng-container *ngIf=\"point.transit !== undefined\">\r\n                <img [src]=\"'assets/' + appName + '/train-icon.svg'\" alt=\"transit\" class=\"mb-2 mx-1\">\r\n                <span class=\"mb-2 mr-3\">{{ point.transit }}</span>\r\n              </ng-container>\r\n\r\n              <!-- Drive -->\r\n              <ng-container *ngIf=\"point.drive !== undefined\">\r\n                <img [src]=\"'assets/' + appName + '/car-icon.png'\" alt=\"car\" class=\"mb-2 mx-1\" style=\"width: 20px;\">\r\n                <span class=\"mb-2\">{{ point.drive }}</span>\r\n              </ng-container>\r\n            </div>\r\n\r\n          </div>\r\n\r\n          <div class=\"text-600\">{{ point.name }}</div>\r\n        </div>\r\n        <div class=\"acf-invalid-feedback\" *ngIf=\"submitted && selectedDeliveryOption.key == 1 && !selectedPostOffice\">\r\n          <div>Merci de sélectionner une adresse parmi les points relais disponibles.</div>\r\n        </div>\r\n        } @else{\r\n        <div class=\"card-box-primary p-3 h-full flex flex-column border-round-lg mb-3\">\r\n\r\n          <div class=\"flex  mb-2\">\r\n            <i class=\"pi pi-map-marker text-600 mr-2 text-lg\"></i>\r\n            <div class=\"text-900 font-bold text-md\">Aucun point relais disponible</div>\r\n          </div>\r\n\r\n          <div class=\"text-600 mt-2\"> Aucun point relais n'est disponible à proximité.\r\n          </div>\r\n        </div>\r\n        }\r\n        <div class=\"acf-invalid-feedback\"\r\n          *ngIf=\"submitted && selectedDeliveryOption.key == 1 && !selectedPostOffice && !listPostesSorted\">\r\n          <div>Aucun point relais n'est disponible à proximité, Merci de choisir un autre mode de livraison.</div>\r\n        </div>\r\n      </div>\r\n\r\n      <!-- Repair Details Section -->\r\n      <div class=\"repair-details\" *ngIf=\"selectedDeliveryOption && repairPrices.totalRepairPrice > 0\">\r\n        <p class=\"font-semibold text-md line-height-4\">Vous pouvez réparer votre appareil avec le pack suivant:</p>\r\n\r\n        <div *ngIf=\"repairPrices; else noForfaits\">\r\n          <div class=\"card-box-primary p-3 border-round-lg w-12rem border-round-lg \">\r\n            <img [src]=\"'assets/' + appName + '/repairer.png'\" alt=\"Guidelines Logo\"\r\n              class=\"w-10rem card-box-primary border-round-lg\">\r\n            <p class=\"text-600 text-md\">Forfait réparation + matériel</p>\r\n            <span class=\"font-bold text-md price\">{{ repairPrices.totalRepairPrice }} {{ repairPrices.currencySymbol\r\n              }}</span>\r\n            <p class=\"acf-h4-title\" *ngIf=\"repairPrices.ecoSupport && repairPrices?.currencySymbol\"> <span\r\n                class=\"font-bold\">- {{ repairPrices.ecoSupport }}\r\n                {{repairPrices.currencySymbol}}</span> Bonus de\r\n              réparation\r\n            </p>\r\n          </div>\r\n          <p class=\"font-semibold text-md line-height-4\">\r\n            Veuillez noter que les frais de transport aller seront à votre charge. En revanche, les frais de retour\r\n            sont\r\n            inclus dans le forfait de réparation.\r\n          </p>\r\n        </div>\r\n\r\n        <!-- No Available Forfaits Template -->\r\n        <ng-template #noForfaits>\r\n          <p class=\"text-600\">Aucun forfait disponible pour ce point relais.</p>\r\n        </ng-template>\r\n      </div>\r\n\r\n\r\n    </div>\r\n    <div class=\"col-12 md:col-6\">\r\n      <google-map [options]=\"options\" class=\"map-container border-round-lg\">\r\n\r\n        <!-- Display Repairer Markers -->\r\n        @if(selectedDeliveryOption?.key !== 1 && !selectedPostOffice){\r\n        @for (location of listRepairers; track location) {\r\n        <map-advanced-marker #markerElem=\"mapAdvancedMarker\"\r\n          [position]=\"{ lat: location.latitude, lng: location.longitude }\" [content]=\"location.content\"\r\n          [title]=\"'Reparateur'\" (mapClick)=\"onMarkerRepairerClick(markerElem, location)\" />\r\n        }\r\n        }\r\n\r\n        <!-- Display Post Office Markers -->\r\n        @if(selectedDeliveryOption?.key !== 0 && !selectedPostOffice){\r\n        @for (postOffice of listPostesSorted; track postOffice; let index = $index) {\r\n        <map-advanced-marker #markerElem=\"mapAdvancedMarker\"\r\n          [position]=\"{ lat: postOffice.latitude, lng: postOffice.longitude }\" [content]=\"postOffice.content\"\r\n          [title]=\"'La Poste ' + (index + 1)\" (mapClick)=\"onMarkerClick(markerElem, postOffice)\" />\r\n        }\r\n        }\r\n\r\n        <!-- My Location Marker -->\r\n        <map-advanced-marker #markerElem=\"mapAdvancedMarker\" [position]=\"{ lat: myLocation.lat, lng: myLocation.lng }\"\r\n          [content]=\"myLocation.content\" [title]=\"'Ma location'\"\r\n          (mapClick)=\"onMarkerMyLocationClick(markerElem, myLocation)\" />\r\n\r\n        <!-- Selected Post Office Marker -->\r\n        <map-advanced-marker *ngIf=\"selectedPostOffice\" #markerElem=\"mapAdvancedMarker\"\r\n          [position]=\"{ lat: selectedPostOffice.latitude, lng: selectedPostOffice.longitude }\"\r\n          [content]=\"selectedPostOffice.content\" [title]=\"'La Poste sélectionnée'\"\r\n          (mapClick)=\"onMarkerClick(markerElem, selectedPostOffice)\" />\r\n\r\n        <map-info-window #infoWindow></map-info-window>\r\n      </google-map>\r\n    </div>\r\n\r\n  </div>\r\n\r\n  <!-- Navigation Buttons -->\r\n  <div class=\"guest-action\">\r\n    <button pButton label=\"Etape précédente\" class=\"acf-secondary-button mr-3\" (click)=\"prev()\"></button>\r\n    <button pButton label=\"Etape suivante\" class=\"acf-primary-button\" (click)=\"next()\"></button>\r\n  </div>\r\n\r\n</acf-layout>","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\n    selector: 'acf-step-five',\n    templateUrl: './step-five.component.html',\n    styleUrl: './step-five.component.scss',\n    standalone: false\n})\r\nexport class StepFiveComponent {\r\n  @Input() appName: string = '';\r\n}\r\n","<acf-layout [step]=\"5\" [appName]=\"appName\">\r\n    <div class=\" \">\r\n        <div class=\"grid \">\r\n            <div class=\"col mx-2 \">\r\n                <div class=\"acf-card grid bloc-mobile mb-3\t\">\r\n                    <div class=\"col mx-2 \">\r\n                        <div class=\"text-lg font-bold mb-4\">\r\n                            <span>Consommateur</span>\r\n                        </div>\r\n\r\n\r\n                        <div class=\"my-2\">\r\n                            <div class=\"  \">\r\n                                <span class=\"font-semibold\">Nom :</span>\r\n                                <span> Alex</span>\r\n                            </div>\r\n\r\n                        </div>\r\n                        <div class=\"my-2\">\r\n                            <div class=\"  \">\r\n                                <span class=\"font-semibold\">Prénom :</span>\r\n                                <span> Alex</span>\r\n                            </div>\r\n\r\n                        </div>\r\n                        <div class=\"my-2\">\r\n                            <div class=\"  \">\r\n                                <span class=\"font-semibold\">Adresse :</span>\r\n                                <span> 20A Grande Rue delouze-Rosières 2110 Paris, France </span>\r\n\r\n                            </div>\r\n\r\n                        </div>\r\n                        <div class=\"my-2\">\r\n                            <div class=\"  \">\r\n                                <span class=\"font-semibold\">Email :</span>\r\n                                <span> ConsomateurBSH.com </span>\r\n\r\n                            </div>\r\n\r\n                        </div>\r\n                        <div class=\"my-2\">\r\n                            <div class=\"\">\r\n                                <span class=\"font-semibold\">Téléphone :</span>\r\n                                <span> +33345724275 </span>\r\n\r\n                            </div>\r\n\r\n                        </div>\r\n\r\n\r\n                    </div>\r\n\r\n                    <div class=\"col mx-2 \">\r\n                        <div class=\"text-lg font-bold mb-4\">\r\n                            <span>Détails appareil</span>\r\n                        </div>\r\n\r\n\r\n                        <div class=\"my-2\">\r\n                            <div class=\"  \">\r\n                                <span class=\"font-semibold\">Constructeur :</span>\r\n                                <span> BSH</span>\r\n                            </div>\r\n\r\n                        </div>\r\n                        <div class=\"my-2\">\r\n                            <div class=\"  \">\r\n                                <span class=\"font-semibold\">Référence commerciale :</span>\r\n                                <span> PG725000/79A</span>\r\n                            </div>\r\n\r\n                        </div>\r\n                        <div class=\"my-2\">\r\n                            <div class=\"  \">\r\n                                <span class=\"font-semibold\">Référence technique :</span>\r\n                                <span> 7211003418 </span>\r\n                            </div>\r\n\r\n                        </div>\r\n                        <div class=\"my-2\">\r\n                            <div class=\"  \">\r\n                                <span class=\"font-semibold\">Marque :</span>\r\n                                <span> Bosch </span>\r\n                            </div>\r\n\r\n                        </div>\r\n\r\n\r\n\r\n                    </div>\r\n                </div>\r\n\r\n                <div class=\"acf-card grid bloc-mobile mb-3 \">\r\n                    <div class=\"col mx-2 \">\r\n                        <div class=\"text-lg font-bold mb-4\">\r\n                            <span>Panne</span>\r\n                        </div>\r\n\r\n\r\n                        <div class=\"my-2\">\r\n                            <div class=\"  \">\r\n                                <span class=\"font-semibold\">Type de panne :</span>\r\n                                <span> Abnormal noise during operation</span>\r\n\r\n                            </div>\r\n\r\n                        </div>\r\n                        <div class=\"my-2\">\r\n                            <div class=\"  \">\r\n                                <span class=\"font-semibold\">Commentaire :</span>\r\n                                <span> Alex noise during operation</span>\r\n                            </div>\r\n\r\n                        </div>\r\n\r\n\r\n\r\n                    </div>\r\n\r\n                    <div class=\"col mx-2 \">\r\n                        <div class=\"text-lg font-bold mb-4\">\r\n                            <span>Réparateur</span>\r\n                        </div>\r\n\r\n\r\n                        <div class=\"my-2\">\r\n                            <div class=\"  \">\r\n                                <span class=\"font-semibold\">Société :</span>\r\n                                <span>Company 1</span>\r\n                            </div>\r\n\r\n                        </div>\r\n\r\n                        <div class=\"my-2\">\r\n                            <div class=\"  \">\r\n                                <span class=\"font-semibold\">Téléphone :</span>\r\n                                <span> +33345724275 </span>\r\n\r\n                            </div>\r\n\r\n                        </div>\r\n                        <div class=\"my-2\">\r\n                            <div class=\"  \">\r\n                                <span class=\"font-semibold\">Adresse de réparation :</span>\r\n                                <span><i class=\"pi pi-map-marker\" style=\"font-size: 1rem ; color: #007BC0;\"></i> 31 rue\r\n                                    de Marsellie\r\n                                    Paris\r\n                                    2000 </span>\r\n                            </div>\r\n\r\n                        </div>\r\n\r\n                    </div>\r\n                </div>\r\n\r\n\r\n                <div class=\"acf-card grid bloc-mobile mb-3\">\r\n                    <div class=\"col-12 sm:col-12 md:col-12 mx-2 \">\r\n                        <div class=\"text-lg font-bold mb-4\">\r\n                            <span>Transporteur</span>\r\n                        </div>\r\n\r\n\r\n                        <div class=\"my-2\">\r\n                            <div class=\"  \">\r\n                                <span class=\"font-semibold\">Société :</span>\r\n                                <span> Company 2</span>\r\n                            </div>\r\n\r\n                        </div>\r\n                        <div class=\"my-2\">\r\n                            <div class=\"  \">\r\n                                <span class=\"font-semibold\">Téléphone :</span>\r\n                                <span> +33 4521680041</span>\r\n                            </div>\r\n\r\n                        </div>\r\n\r\n\r\n\r\n                    </div>\r\n\r\n\r\n                </div>\r\n            </div>\r\n\r\n\r\n        </div>\r\n\r\n\r\n    </div>\r\n\r\n</acf-layout>","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\n    selector: 'acf-step-six',\n    templateUrl: './step-six.component.html',\n    styleUrl: './step-six.component.scss',\n    standalone: false\n})\r\nexport class StepSixComponent {\r\n  @Input() appName: string = '';\r\n\r\n}\r\n","<acf-layout [step]=\"6\" [appName]=\"appName\">\r\n  <div class=\"grid\">\r\n    <div class=\"col-12 md:col-6\">\r\n      <div class=\"acf-card\">\r\n        <h4 class=\"acf-h4-title\">Récapitulatif de votre commande </h4>\r\n\r\n        <div class=\"flex align-items-center justify-content-between border-round-lg border-200 mobile\">\r\n          <img [src]=\"'assets/'+ appName + '/repairer.png'\" alt=\"Guidelines Logo\" class=\"w-10rem\">\r\n\r\n          <p class=\"text-600 text-md\">Forfait réparation + matériel </p>\r\n          <span class=\"font-bold text-lg price\">45,00 € </span>\r\n        </div>\r\n\r\n      </div>\r\n      <div class=\"acf-card mb-0 mt-2\">\r\n        <div class=\"grid \">\r\n          <div class=\"col-9 \">\r\n            <h4 class=\"acf-h4-title mb-0\">Bonus de réparation</h4>\r\n          </div>\r\n          <div class=\"col-3 mt-3  d-flex align-items-end\">\r\n            <span> 15,00 €</span>\r\n          </div>\r\n        </div>\r\n        <p class=\"acf-h4-title\">-30,00 € bonus de réparation</p>\r\n        <p></p>\r\n      </div>\r\n    </div>\r\n    <div class=\"col-12 md:col-6\">\r\n      <div class=\"acf-card\">\r\n        <h4 class=\"acf-h4-title\">Récapitulatif de votre commande </h4>\r\n        <div>\r\n          <div class=\"grid my-2\">\r\n            <div class=\"col-9\">\r\n              <span class=\"font-semibold\">Prix TTC</span>\r\n            </div>\r\n            <div class=\"col-3 d-flex align-items-end\">\r\n              <span> 15,00 €</span>\r\n            </div>\r\n          </div>\r\n          <div class=\"my-3\">\r\n            <p-checkbox formControlName=\"ischecked\" binary=\"true\" class=\"mr-2\"></p-checkbox>\r\n            <span class=\"text-sm\"> J’ai pris connaissance <a href=\"\">des conditions générales de\r\n                souscription </a> et <a href=\"\">des conditions générales de garantie </a> et\r\n              d’extensions de BSH Electroménager SAS situé 26, avenue Michelet,\r\n              93400 Saint-Ouen - France et je comprends et accepte les conditions\r\n              Commande avec obligation de paiement </span>\r\n          </div>\r\n\r\n\r\n        </div>\r\n        <div class=\" text-center\">\r\n          <button pButton pRipple type=\"submit\" label=\"Payer 15,00 €\"\r\n            class=\"acf-primary-button d-block mx-auto\"></button>\r\n          <p class=\"font-bold text-center\"> <img [src]=\"'assets/'+ appName + '/locked.png'\" alt=\"locked\" class=\"\"\r\n              width=\"20\">\r\n            Paiement sécurisé </p>\r\n          <img [src]=\"'assets/'+ appName + '/Mastercard.png'\" alt=\"Mastercard\" class=\"mr-2\" width=\"50\">\r\n          <img [src]=\"'assets/'+ appName + '/Visa.png'\" alt=\"Visa\" class=\"\" width=\"50\">\r\n\r\n        </div>\r\n        <p></p>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</acf-layout>","import { Component } from '@angular/core';\r\n\r\n@Component({\n    selector: 'acf-loader',\n    templateUrl: './loader.component.html',\n    styleUrl: './loader.component.scss',\n    standalone: false\n})\r\nexport class LoaderComponent {\r\n\r\n}\r\n","<div class=\"loading\">\r\n    <div class=\"loading-wave\">\r\n        <div class=\"loading-bar\"></div>\r\n        <div class=\"loading-bar\"></div>\r\n        <div class=\"loading-bar\"></div>\r\n        <div class=\"loading-bar\"></div>\r\n      </div>\r\n</div>","\r\nimport { NgModule } from '@angular/core';\r\nimport { StepThreeComponent } from './step-three/step-three.component';\r\nimport { StepTwoComponent } from './step-two/step-two.component';\r\nimport { StepOneComponent } from './step-one/step-one.component';\r\nimport { LayoutComponent } from './layout/layout.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\n// import { TranslateModule } from '@ngx-translate/core';\r\nimport { HeaderComponent } from './layout/header/header.component';\r\nimport { StepFourComponent } from './step-four/step-four.component';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { StepFiveComponent } from './step-five/step-five.component';\r\nimport { FooterComponent } from './layout/footer/footer.component';\r\nimport { PrimeNgComponentsModule } from '../prime-ng-components.module';\r\nimport { InvoiceAttachementComponent } from './invoice-attachement/invoice-attachement.component';\r\nimport { FilesizePipe } from '../pipes/file-size.pipe';\r\nimport { GoogleMapsModule } from '@angular/google-maps';\r\nimport { StepSixComponent } from './step-six/step-six.component';\r\nimport { LoaderComponent } from './loader/loader.component';\r\nimport { SharedModule } from '../shared/shared.module';\r\nimport { StepOnePopupComponent } from './step-one/step-one-popup/step-one-popup.component';\r\n\r\n@NgModule({ exports: [\r\n        LayoutComponent,\r\n        HeaderComponent,\r\n        StepOneComponent,\r\n        StepTwoComponent,\r\n        StepThreeComponent,\r\n        StepFourComponent,\r\n        StepFiveComponent,\r\n        StepSixComponent,\r\n        StepOnePopupComponent\r\n    ],\r\n    declarations: [\r\n        LayoutComponent,\r\n        HeaderComponent,\r\n        StepOneComponent,\r\n        StepTwoComponent,\r\n        StepThreeComponent,\r\n        StepFourComponent,\r\n        StepFiveComponent,\r\n        FooterComponent,\r\n        InvoiceAttachementComponent,\r\n        FilesizePipe,\r\n        StepSixComponent,\r\n        LoaderComponent,\r\n        StepOnePopupComponent\r\n    ], imports: [CommonModule,\r\n       // TranslateModule,\r\n        FormsModule,\r\n        ReactiveFormsModule,\r\n        PrimeNgComponentsModule,\r\n        ButtonModule,\r\n        GoogleMapsModule,\r\n        SharedModule], providers: [provideHttpClient(withInterceptorsFromDi())] })\r\nexport class GuestModule { }","import { PickupInfo } from \"../request/create-mandate.request\";\r\nimport { IrisSymptom } from \"./iris-symptom\";\r\n\r\nexport interface Mandate {\r\n  mandateId: number;\r\n  orderMission: string;\r\n  labelRef: string;\r\n  brandCode: string;\r\n  familyCode: string;\r\n  createDate: string; // ISO date string format\r\n  mandateStatus: string;\r\n  // repairPrice: number;\r\n  // ecoSupport: number;\r\n  // currencySymbol: string;\r\n}\r\n\r\nexport type Mandates = Mandate[];\r\nexport type MandatesBeforePayment = MandateBeforePayment[];\r\n\r\nexport interface MandateDetails {\r\n  labelRef: string;\r\n  commercialRef: string;\r\n  technicalRef: string;\r\n  brandCode: string;\r\n  familyCode: string;\r\n  createDate?: string;\r\n  failureDescription?: string;\r\n  irisSymptom: string;\r\n  mandateStatus: string;\r\n  orderMission: string;\r\n  pickupInfo: PickupInfo;\r\n  interventionTypeId: number;\r\n  trackingColissimo: TrackingColissimo;\r\n}\r\n\r\n\r\nexport interface TrackingColissimo {\r\n  parcel: {\r\n    parcelNumber: string;\r\n    customerParcelReference: string;\r\n    consigneeInformation: ConsigneeInformation;\r\n    step: {\r\n      stepId: number;\r\n      labelShort: string;\r\n      statusCode: string;\r\n      statusLabel: string;\r\n    }[];\r\n  };\r\n}\r\n\r\nexport interface ConsigneeInformation {\r\n  companyName: string;\r\n  address: {\r\n    address0: string;\r\n    address1: string;\r\n    address2: string;\r\n    address3: string;\r\n    zipCode: string;\r\n    city: string;\r\n    countryCodeISO: string;\r\n  };\r\n};\r\nexport interface MandateBeforePayment {\r\n  id?: number;\r\n  customerId?: number;\r\n  clientCode?: string;\r\n  manufacturerId?: number;\r\n  orderMission?: string;\r\n  interventionTypeId?: number;\r\n  commercialRef?: string;\r\n  technicalRef?: string;\r\n  brandCode?: string;\r\n  familyCode?: string;\r\n  purchaseDate?: string; // ISO date string\r\n  irisSymptom?: string;\r\n  failureDescription?: string;\r\n  createDate?: string; // ISO date string\r\n  repairPrice?: number;\r\n  shippingPrice?: number;\r\n  title?: string;\r\n  lastName?: string;\r\n  firstName?: string;\r\n  address1?: string;\r\n  zip?: string;\r\n  city?: string;\r\n  countryCode?: string;\r\n  phoneNumber?: string;\r\n  email?: string;\r\n  carrierCode?: string;\r\n  pickupChoice?: string;\r\n  fromName?: string;\r\n  fromAddress1?: string;\r\n  fromZip?: string;\r\n  fromCity?: string;\r\n  fromCountryCode?: string;\r\n  fromPhone?: string;\r\n  toName?: string;\r\n  toAddress1?: string;\r\n  toZip?: string;\r\n  toCity?: string;\r\n  toCountryCode?: string;\r\n  toPhone?: string;\r\n  brandId?: number;\r\n  isPaid?: boolean;\r\n  isCreated?: boolean;\r\n  contractExtensionCode?: string | null;\r\n  isContractGCplus?: boolean;\r\n  labelRef?: string;\r\n  // Not retuurned on api\r\n  irisLabel?: string;\r\n  fileId?: string;\r\n  atsCodeForStripe?: string;\r\n  currencySymbol?: string;\r\n  currencyCode?: string;\r\n  ecoSupport?: number;\r\n  irisSymptomResponse?: IrisSymptom;\r\n  repairer?: Repairer;\r\n  weight?: number;\r\n}\r\n\r\nexport interface Repairer {\r\n  clientCode?: string;\r\n  manufacturerId?: number;\r\n  companyName?: string;\r\n  address1?: string;\r\n  address2?: string;\r\n  zipCode?: string;\r\n  city?: string;\r\n  phoneNumber?: string;\r\n  countryCode?: string;\r\n  eMailAddress?: string;\r\n  latitude?: number;\r\n  longitude?: number;\r\n  atsCode?: string;\r\n}\r\n\r\nexport interface WorkflowHistory {\r\n  statusLabel: string;\r\n  interventionWorkflowStatusDate: string;\r\n}\r\n\r\nexport enum MandateStatus {\r\n  WAITING = 'En cours',\r\n  NEW = 'Nouveau',\r\n  CLOSED = 'Terminé',\r\n  REFUSED = 'Refusé',\r\n}\r\n","import { RoutesPaths } from '../enums/routePaths';\r\n\r\nexport const connectedPages = [\r\n  {\r\n    routeLink: `/${RoutesPaths.dashboard}`,\r\n    label: 'Tableau de bord',\r\n  },\r\n  {\r\n    routeLink: `/${RoutesPaths.devices}`,\r\n    label: 'Mes appareils',\r\n  },\r\n  {\r\n    routeLink: `/${RoutesPaths.device_details}`,\r\n    label: 'Mes appareils',\r\n  },\r\n  {\r\n    routeLink: `/${RoutesPaths.incident_report}`,\r\n    label: 'Déclarer un incident',\r\n  },\r\n  {\r\n    routeLink: `/${RoutesPaths.incident_tracking}`,\r\n    label: 'Suivi des incidents'\r\n  },\r\n  {\r\n    routeLink: `/${RoutesPaths.contract}`,\r\n    label: 'Mes contrats'\r\n  },\r\n  {\r\n    routeLink: `/${RoutesPaths.customer_service}`,\r\n    label: 'Contacter le service client'\r\n  },\r\n  {\r\n    routeLink: `/${RoutesPaths.account}`,\r\n    label: 'Mon compte'\r\n  },\r\n  {\r\n    routeLink: `/${RoutesPaths.incident_report_success}`,\r\n    label: 'Ordre de mission'\r\n  },\r\n  {\r\n    routeLink: `/${RoutesPaths.incident_tracking_overview}`,\r\n    label: 'Suivi des incidents'\r\n  }\r\n];\r\n","import { RoutesPaths } from '../enums/routePaths';\r\n\r\nexport const NavbarItems = [\r\n  {\r\n    routeLink: `/${RoutesPaths.dashboard}`,\r\n    icon: 'pi pi-home',\r\n    label: 'Tableau de bord',\r\n  },\r\n  {\r\n    routeLink: `/${RoutesPaths.devices}`,\r\n    icon: 'pi pi-mobile',\r\n    label: 'Mes appareils',\r\n  },\r\n  {\r\n    routeLink: `/${RoutesPaths.incident_report}`,\r\n    icon: 'pi pi-exclamation-triangle',\r\n    label: 'Déclarer un incident',\r\n  },\r\n  {\r\n    routeLink: `/${RoutesPaths.incident_tracking}`,\r\n    icon: 'pi pi-chart-line',\r\n    label: 'Suivi des incidents'\r\n  },\r\n  // {\r\n  //   routeLink: `/${RoutesPaths.contract}`,\r\n  //   icon: 'pi pi-check-circle',\r\n  //   label: 'Mes contrats'\r\n  // },\r\n  {\r\n    routeLink: `/${RoutesPaths.customer_service}`,\r\n    icon: 'pi pi-envelope',\r\n    label: 'Contacter le service client'\r\n  },\r\n  {\r\n    routeLink: `/${RoutesPaths.account}`,\r\n    icon: 'pi pi-user',\r\n    label: 'Mon compte'\r\n  }\r\n];\r\n","import { Injectable } from '@angular/core';\r\nimport { DataStoreService } from './data-store.service';\r\nimport { RoutesPaths } from '../enums/routePaths';\r\nimport { Router } from '@angular/router';\r\nimport { SecurityCookieService } from './security-cookie.service';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class AuthService {\r\n\r\n  constructor(private readonly store: DataStoreService, private readonly router: Router, private readonly securityCookieService: SecurityCookieService) { }\r\n\r\n  logOut(): void {\r\n    this.securityCookieService.logout();\r\n    this.store.deleteUserInformation();\r\n    this.store.deleteFormsFromLocalStorage();\r\n    this.store.deleteContCode();\r\n    this.store.deleteMandateID();\r\n    this.store.deleteOmNumber();\r\n    this.store.deleteMandate();\r\n    this.store.deleteOriginalRememberMe();\r\n    this.store.deleteState();\r\n    this.router.navigate([RoutesPaths.login])\r\n      .then(() => { window.location.reload(); });\r\n  }\r\n\r\n\r\n  isTokenExpired(): boolean {\r\n    const token: string = this.store.getToken() || this.store.getTempToken();\r\n    const decoded = this.decodeToken(token);\r\n    if (!decoded || !decoded.exp) {\r\n      return true;\r\n    }\r\n    const currentTime = Math.floor(Date.now() / 1000);\r\n    return decoded.exp < currentTime;\r\n  }\r\n\r\n  decodeToken(token: string): any {\r\n    if (token) {\r\n      try {\r\n        const payload = token.split('.')[1];\r\n        const decodedPayload = atob(payload);\r\n        return JSON.parse(decodedPayload);\r\n      } catch (e) {\r\n        console.error('Error decoding token', e);\r\n        return null;\r\n      }\r\n    } else { return null }\r\n  }\r\n\r\n\r\n\r\n}","import { Component, input, output } from '@angular/core';\r\nimport { RoutesPaths } from '../../../enums/routePaths';\r\nimport { DataStoreService } from '../../../services/data-store.service';\r\nimport { AuthService } from '../../../services/auth.service';\r\nimport { NavbarItems } from '../../navbar.items';\r\n\r\n@Component({\n    selector: 'acf-connected-sidebar',\n    templateUrl: './connected-sidebar.component.html',\n    styleUrl: './connected-sidebar.component.scss',\n    standalone: false\n})\r\nexport class ConnectedSidebarComponent {\r\n  routesPaths = RoutesPaths;\r\n  userName: string;\r\n  firstName: string;\r\n  lastName: string;\r\n  navData = NavbarItems;\r\n  isLeftSidebarCollapsed = input.required<boolean>();\r\n  changeIsLeftSidebarCollapsed = output<boolean>();\r\n\r\n  constructor(\r\n    private readonly storageService: DataStoreService,\r\n    private readonly authService: AuthService\r\n  ) {\r\n    this.userName = this.storageService.getUserName();\r\n    this.firstName = this.storageService.getFirstName();\r\n    this.lastName = this.storageService.getLastName();\r\n  }\r\n\r\n  logout() {\r\n    this.authService.logOut();\r\n  }\r\n\r\n  toggleCollapse(): void {\r\n    this.changeIsLeftSidebarCollapsed.emit(!this.isLeftSidebarCollapsed());\r\n  }\r\n\r\n  closeSidenav(): void {\r\n    this.changeIsLeftSidebarCollapsed.emit(true);\r\n  }\r\n\r\n  getInitials(firstName: string, lastName: string): string {\r\n    if (!firstName && !lastName) return '';\r\n    const firstInitial = firstName[0]?.charAt(0).toUpperCase();\r\n    const lastInitial = lastName[0]?.charAt(0).toUpperCase();\r\n    return `${firstInitial}${lastInitial}`;\r\n  }\r\n\r\n}\r\n","<div class=\"connected-sidebar connected-layout-sidebar\" [ngClass]=\"isLeftSidebarCollapsed() ? 'sidenav-collapsed' : ''\">\r\n    <ul class=\"navigation-nav\">\r\n        <li class=\"navigation-nav-item\" *ngFor=\"let data of navData\">\r\n            <a class=\"navigation-nav-link\" [routerLink]=\"[data.routeLink]\" routerLinkActive=\"active\"\r\n                [routerLinkActive]=\"['navigation-nav-link-active']\">\r\n                <!-- [routerLink]=\"[data.routeLink]\" routerLinkActive=\"active\"\r\n                [routerLinkActive]=\"['navigation-nav-link-active']\" -->\r\n                <i class=\"navigation-link-icon\" [class]=\"data.icon\"></i>\r\n                <span class=\"navigation-link-text\">\r\n                    {{data.label}}\r\n                </span>\r\n            </a>\r\n        </li>\r\n    </ul>\r\n    <div class=\"navigation-section\">\r\n        @if(!isLeftSidebarCollapsed()){\r\n        <div *ngIf=\"firstName && lastName  && userName\" class=\"user-info \">\r\n            <div class=\"user-info-name mb-1\">{{firstName | titlecase}} {{lastName | titlecase}}</div>\r\n            <div class=\"user-info-email\">{{userName}}</div>\r\n        </div>\r\n        <button pButton pRipple type=\"submit\" label=\"Déconnexion\" class=\"acf-secondary-button mt-3 mb-3\"\r\n            (click)=\"logout()\"> <i class=\"pi pi-sign-out mr-2\"></i></button>\r\n        }\r\n        @else{\r\n        <p-avatar [label]=\"getInitials(firstName,lastName)\"\r\n            [style]=\"{ 'background-color': '#dee9fc', 'color': '#007bc0' }\" size=\"large\" shape=\"circle\"></p-avatar>\r\n        <button pButton pRipple type=\"submit\" class=\"acf-secondary-button m-2 p-2\" (click)=\"logout()\">\r\n            <i class=\"pi pi-sign-out\"></i></button>\r\n        }\r\n    </div>\r\n</div>","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\n    selector: 'acf-connected-header',\n    templateUrl: './connected-header.component.html',\n    styleUrl: './connected-header.component.scss',\n    standalone: false\n})\r\nexport class ConnectedHeaderComponent {\r\n  @Input() app: string = '';\r\n\r\n}\r\n","<div class=\"header\">\r\n    <img class=\"banner-img\" [src]=\"'assets/'+ app + '/guidelines.png'\" alt=\"Guidelines Logo\"\r\n        *ngIf=\"app == 'BoschConsumerPortal'\">\r\n</div>\r\n<div class=\"connected-header-logo\">\r\n    <div class=\"logo-container flex  justify-content-center\">\r\n        <img class=\"h-5rem pr-2\" [src]=\"'assets/'+ app + '/logo.png'\" alt=\"Guidelines Logo\">\r\n    </div>\r\n    <p class=\"title-header-right pr-5\" *ngIf=\"app == 'BoschConsumerPortal'\"> Electroménager</p>\r\n</div>","import { Component, Optional } from '@angular/core';\r\nimport { DynamicDialogRef } from 'primeng/dynamicdialog';\r\nimport { DataStoreService } from '../../services/data-store.service';\r\n\r\n@Component({\r\n    selector: 'acf-delete-account-popup',\r\n    templateUrl: './delete-account-popup.component.html',\r\n    styleUrl: './delete-account-popup.component.scss',\r\n    standalone: false\r\n})\r\nexport class DeleteAccountPopupComponent {\r\n\r\n    applicationName: string = '';\r\n\r\n    constructor(\r\n        private readonly store: DataStoreService,\r\n        @Optional() public ref: DynamicDialogRef\r\n    ) {\r\n        this.applicationName = this.store.getApplication();\r\n    }\r\n\r\n    confirm() {\r\n        this.ref.close(true);\r\n    }\r\n\r\n    cancel() {\r\n        this.ref.close(false);\r\n    }\r\n}\r\n","<div class=\"delete-account-popup\">\r\n  <div class=\"delete-account-popup-header\">\r\n    <div class=\"text-xl font-bold\">Supprimer mon compte</div>\r\n    <img class=\"ml-auto cursor-pointer\" (click)=\"cancel()\"\r\n      [src]=\"'assets/' + this.applicationName + '/close-icon.svg'\" alt=\"close\">\r\n  </div>\r\n    </div>\r\n\r\n  \r\n  <!-- <div class=\"flex justify-content-end\">\r\n    <img class=\"ml-auto cursor-pointer\" (click)=\"cancel()\"\r\n        [src]=\"'assets/' + this.applicationName + '/close-icon.svg'\" alt=\"close\">\r\n</div> -->\r\n<div class=\"delete-account-popup\">\r\n    <p class=\" font-bold mt-4 line-height-3\">\r\n        Vous êtes sur le point de supprimer votre compte.<br>\r\n        Cette action entraînera également la suppression de vos appareils enregistrés et de toutes les données associées.\r\n    </p>\r\n    <p class=\" font-bold mt-3 line-height-3 warning-text\">\r\n        Cette action est définitive.\r\n    </p>\r\n    <p class=\" mt-3 line-height-3\">\r\n        Êtes-vous sûr de vouloir continuer ?\r\n    </p>\r\n    <div class=\"flex justify-content-end gap-3 mt-4 \">\r\n        <button pButton pRipple type=\"button\" label=\"OUI\" class=\"acf-primary-button\"\r\n            (click)=\"confirm()\"></button>\r\n        <button pButton pRipple type=\"button\" label=\"NON\" class=\"acf-secondary-button\"\r\n            (click)=\"cancel()\"></button>\r\n    </div>\r\n</div>\r\n","import { Component, Optional } from '@angular/core';\r\nimport { DynamicDialogRef } from 'primeng/dynamicdialog';\r\nimport { DataStoreService } from '../../services/data-store.service';\r\n\r\n@Component({\r\n    selector: 'acf-delete-account-error-popup',\r\n    templateUrl: './delete-account-error-popup.component.html',\r\n    styleUrl: './delete-account-error-popup.component.scss',\r\n    standalone: false\r\n})\r\nexport class DeleteAccountErrorPopupComponent {\r\n\r\n    applicationName: string = '';\r\n\r\n    constructor(\r\n        private readonly store: DataStoreService,\r\n        @Optional() public ref: DynamicDialogRef\r\n    ) {\r\n        this.applicationName = this.store.getApplication();\r\n    }\r\n\r\n    closePopup() {\r\n        this.ref.close();\r\n    }\r\n}\r\n","<div class=\"flex justify-content-end\">\r\n    <img class=\"ml-auto cursor-pointer\" (click)=\"closePopup()\"\r\n        [src]=\"'assets/' + this.applicationName + '/close-icon.svg'\" alt=\"close\">\r\n</div>\r\n<div class=\"delete-account-error-popup\">\r\n    <p class=\"text-center font-bold mt-4 line-height-3\">\r\n        La suppression de votre compte est actuellement impossible.<br>\r\n        Une ou plusieurs interventions sur vos appareils sont encore en cours.\r\n    </p>\r\n    <p class=\"text-center mt-3 line-height-3\">\r\n        Votre compte pourra être supprimé uniquement lorsque toutes les interventions seront terminées.<br>\r\n        Vous pourrez alors renouveler votre demande de suppression.\r\n    </p>\r\n    <div class=\"flex justify-content-center mt-4 mb-3\">\r\n        <button pButton pRipple type=\"button\" label=\"Fermer\" class=\"acf-secondary-button\"\r\n            (click)=\"closePopup()\"></button>\r\n    </div>\r\n</div>\r\n","import { Component, Input } from '@angular/core';\r\nimport { DataStoreService } from '../../../services/data-store.service';\r\nimport { DialogService, DynamicDialogRef } from 'primeng/dynamicdialog';\r\nimport { DeleteAccountPopupComponent } from '../../delete-account-popup/delete-account-popup.component';\r\nimport { DeleteAccountErrorPopupComponent } from '../../delete-account-error-popup/delete-account-error-popup.component';\r\nimport { AccountService } from '../../../services/account.service';\r\nimport { AuthService } from '../../../services/auth.service';\r\nimport { MessageService } from 'primeng/api';\r\n\r\n@Component({\r\n  selector: 'acf-connected-footer',\r\n  templateUrl: './connected-footer.component.html',\r\n  styleUrl: './connected-footer.component.scss',\r\n  standalone: false\r\n})\r\nexport class ConnectedFooterComponent {\r\n\r\n  applicationName: string = '';\r\n  @Input() app: string = '';\r\n\r\n  constructor(\r\n    private readonly store: DataStoreService,\r\n    private readonly dialogService: DialogService,\r\n    private readonly accountService: AccountService,\r\n    private readonly authService: AuthService,\r\n    private readonly messageService: MessageService\r\n  ) {\r\n    this.applicationName = this.store.getApplication();\r\n  }\r\n\r\n  deleteAccount() {\r\n    const ref: DynamicDialogRef = this.dialogService.open(DeleteAccountPopupComponent, {\r\n      width: '42vw',\r\n      showHeader: false,\r\n      dismissableMask: true,\r\n      closeOnEscape: true,\r\n      contentStyle: { overflow: 'auto' },\r\n      breakpoints: {\r\n        '960px': '60vw',\r\n        '640px': '90vw',\r\n      },\r\n    });\r\n\r\n    ref.onClose.subscribe((confirmed: boolean) => {\r\n      if (confirmed) {\r\n        this.processAccountDeletion();\r\n      }\r\n    });\r\n  }\r\n\r\n  private processAccountDeletion() {\r\n    this.accountService.requestAccountDeletion().subscribe({\r\n      next: (response: string) => {\r\n        const result = response?.trim().toUpperCase();\r\n\r\n        if (result === 'REMOVED') {\r\n          this.messageService.add({\r\n            severity: 'success',\r\n            summary: 'Compte supprimé',\r\n            detail: 'Votre compte a été supprimé avec succès.'\r\n          });\r\n          this.authService.logOut();\r\n        } else if (result === 'NOTALLOWED') {\r\n          this.openErrorPopup();\r\n          \r\n        } else {\r\n          this.showGenericError();\r\n        }\r\n      },\r\n      error: () => {\r\n        this.showGenericError();\r\n      }\r\n    });\r\n  }\r\n\r\n  private openErrorPopup() {\r\n    this.dialogService.open(DeleteAccountErrorPopupComponent, {\r\n      width: '42vw',\r\n      showHeader: false,\r\n      dismissableMask: true,\r\n      closeOnEscape: true,\r\n      contentStyle: { overflow: 'auto' },\r\n      breakpoints: {\r\n        '960px': '60vw',\r\n        '640px': '90vw',\r\n      },\r\n    });\r\n  }\r\n\r\n  private showGenericError() {\r\n    this.messageService.add({\r\n      severity: 'error',\r\n      summary: 'Erreur',\r\n      detail: 'Une erreur est survenue lors de la suppression du compte. Veuillez réessayer ultérieurement.'\r\n    });\r\n  }\r\n}\r\n","<footer class=\"acf-footer\">\r\n    <ul class=\"acf-link-footer\">\r\n        <li>© Bosch Electroménager <span class=\"vertical-bar\">|</span></li>\r\n        <li>\r\n            <a\r\n                [href]=\"'assets/' + this.applicationName + '/MODELE_Mentions_légales_footer_internet_vBosch_Plateforme_PEM.pdf'\"\r\n                class=\"cursor-pointer\" target=\"_blank\">\r\n                Mentions légales</a>\r\n            <span class=\"vertical-bar\">|</span>\r\n        </li>\r\n        <li>\r\n            <a\r\n                [href]=\"'assets/' + this.applicationName + '/documents/politique_de_protection_des_données.pdf'\"\r\n                class=\"cursor-pointer\" target=\"_blank\">\r\n                Protection des données</a>\r\n            <span class=\"vertical-bar\">|</span>\r\n        </li>\r\n        <li>\r\n            <a [href]=\"'assets/' + this.applicationName + '/documents/CGV.pdf'\"\r\n                class=\"cursor-pointer\" target=\"_blank\">\r\n                Conditions générales</a>\r\n            <span class=\"vertical-bar\">|</span>\r\n        </li>\r\n        <li>\r\n            <a\r\n                [href]=\"'assets/' + this.applicationName + '/MODELE_Organisme_responsable_footer_internet_vdef_2025-09-03_Plateforme_PEM_SAV_hebergee_par_AGORAPLUS.pdf'\"\r\n                class=\"cursor-pointer\" target=\"_blank\">\r\n                Organisme responsable</a>\r\n            <span class=\"vertical-bar\">|</span>\r\n\r\n        </li>\r\n\r\n          <li>\r\n            <a\r\n                  class=\"cursor-pointer\" (click)=\"deleteAccount()\">\r\n                Supprimer mon compte</a>\r\n\r\n        </li>\r\n    </ul>\r\n</footer>","import { Component, computed, HostListener, Input, signal } from '@angular/core';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { NavbarItems } from '../../navbar.items';\r\nimport { connectedPages } from '../../connected.pages';\r\nimport { DataStoreService } from '../../../services/data-store.service';\r\nimport { RoutesPaths } from '../../../enums/routePaths';\r\nimport { MandateService } from '../../../services/mandate.service';\r\n\r\n@Component({\r\n  selector: 'acf-connected-layout',\r\n  templateUrl: './connected-layout.component.html',\r\n  styleUrl: './connected-layout.component.scss',\r\n  standalone: false\r\n})\r\nexport class ConnectedLayoutComponent {\r\n  @Input() app: string = '';\r\n  connectedPages = connectedPages;\r\n  title: string = '';\r\n  subTitle: string = '';\r\n  constructor(private router: Router, private readonly store: DataStoreService, private route: ActivatedRoute, private mandateService: MandateService) {\r\n    // Vérifie la route actuelle et met à jour le label en conséquence\r\n    this.router.events.subscribe(() => {\r\n      const routeParts = this.router.url.split('/').filter(Boolean);\r\n      const baseRoute = routeParts[0]; // Use the first part to find the label\r\n      const currentNavItem = this.connectedPages.find(item => item.routeLink.includes(baseRoute));\r\n\r\n      if (currentNavItem) {\r\n        const { label } = currentNavItem;\r\n        const om_nb = this.store.getOmNumber()\r\n        this.title = label === 'Ordre de mission'\r\n          ? `${label} N°${om_nb}`\r\n          : label;\r\n        this.subTitle = label;\r\n\r\n\r\n\r\n        if (currentNavItem.routeLink.includes(RoutesPaths.incident_tracking_overview)) {\r\n          this.mandateService.omMandateDetails$.subscribe(details => {\r\n            const om_nb_details = details;\r\n            this.title = `Réparation N°${om_nb_details}`;\r\n\r\n          });\r\n        }\r\n\r\n      }\r\n\r\n    });\r\n\r\n\r\n  }\r\n\r\n  isLeftSidebarCollapsed = signal<boolean>(false);\r\n  screenWidth = signal<number>(window.innerWidth);\r\n\r\n  @HostListener('window:resize')\r\n  onResize() {\r\n    this.screenWidth.set(window.innerWidth);\r\n    if (this.screenWidth() < 768) {\r\n      this.isLeftSidebarCollapsed.set(true);\r\n    } else {\r\n      this.isLeftSidebarCollapsed.set(false);\r\n\r\n    }\r\n\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.isLeftSidebarCollapsed.set(this.screenWidth() < 768);\r\n  }\r\n\r\n  changeIsLeftSidebarCollapsed(isLeftSidebarCollapsed: boolean): void {\r\n    this.isLeftSidebarCollapsed.set(isLeftSidebarCollapsed);\r\n  }\r\n\r\n\r\n  sizeClass = computed(() => {\r\n    const isLeftSidebarCollapsed = this.isLeftSidebarCollapsed();\r\n    if (isLeftSidebarCollapsed) {\r\n      return 'connected-layout-body-md-screen';\r\n    }\r\n    return this.screenWidth() >= 768 ? 'connected-layout-body-lg-screen' : 'connected-layout-body-md-screen';\r\n  });\r\n}\r\n\r\n","<div class=\"connected-header\">\r\n    <acf-connected-header [app]=\"app\"></acf-connected-header>\r\n</div>\r\n<div class=\"connected-layout\">\r\n    <div>\r\n        <acf-connected-sidebar [isLeftSidebarCollapsed]=\"isLeftSidebarCollapsed()\"\r\n            (changeIsLeftSidebarCollapsed)=\"changeIsLeftSidebarCollapsed($event)\"></acf-connected-sidebar>\r\n    </div>\r\n    <div class=\"connected-layout-body\" [ngClass]=\"sizeClass()\">\r\n        <div class=\"flex justify-content-between align-items-center px-5 py-3\">\r\n            <p class=\"title\">{{title}} </p>\r\n            <ng-content select=\"[section-actions]\"></ng-content>\r\n        </div>\r\n        <div class=\"acf-breadcrumb px-5\">\r\n            <p class=\"inactif\">Accueil &emsp;/&emsp; <span class=\"actif\">{{subTitle}}</span></p>\r\n        </div>\r\n        <div class=\"px-5 py-5\">\r\n            <ng-content></ng-content>\r\n        </div>\r\n        <acf-connected-footer class=\"connected-layout-footer\" [app]=\"app\"></acf-connected-footer>\r\n    </div>\r\n</div>","import { Component, Input } from '@angular/core';\r\nimport { DataStoreService } from '../../services/data-store.service';\r\nimport { Router } from '@angular/router';\r\nimport { MandateService } from '../../services/mandate.service';\r\nimport { Product } from '../../models/shared/product';\r\nimport { Mandates, MandateStatus } from '../../models/shared/mandate';\r\nimport { RoutesPaths } from '../../enums/routePaths';\r\n\r\n\r\ninterface MappedDevice {\r\n  name: string;\r\n  startDate: string;\r\n  endDate: string;\r\n  commref: string;\r\n  saleDate: string;\r\n  brand: string;\r\n  refTech: string;\r\n  family: string;\r\n}\r\n\r\ninterface WarrantyItem {\r\n  name: string;\r\n  monthsRemaining: number;\r\n  status: 'expired' | 'expiring' | 'active';\r\n  endDate: string;\r\n  brand: string;\r\n}\r\ninterface RepairItem {\r\n  name: string;\r\n  status: string;\r\n}\r\n@Component({\r\n  selector: 'acf-dashboard',\r\n  templateUrl: './dashboard.component.html',\r\n  styleUrl: './dashboard.component.scss',\r\n  standalone: false\r\n})\r\nexport class DashboardComponent {\r\n  @Input() app: string = '';\r\n  devices: Product[] = [];\r\n  mappedDevices: MappedDevice[] = [];\r\n  warrantyItems: WarrantyItem[] = [];\r\n  mandates: Mandates = [];\r\n\r\n  loadingDevices = true;\r\n  loadingMandates = true;\r\n\r\n  constructor(private readonly store: DataStoreService, private router: Router, private mandateService: MandateService) {\r\n    this.store.deleteState(); //delete state : incident declatation\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.onGetDevicesWarranty();\r\n    this.getMandates();\r\n  }\r\n\r\n  // Your existing API method\r\n  onGetDevicesWarranty() {\r\n    this.mandateService.getDevicesWarranty().subscribe(\r\n      data => {\r\n        this.devices = data.slice(0, 5);\r\n        this.mappedDevices = this.devices.map((contract) => ({\r\n          name: contract.fullDescription || \"\",\r\n          startDate: contract.startDate || \"\",\r\n          endDate: contract.endDate || \"\",\r\n          commref: contract.commercialReference || \"\",\r\n          saleDate: contract.saleDate || \"\",\r\n          brand: contract.brand || \"\",\r\n          refTech: contract.technicalReference || \"\",\r\n          family: contract.family || \"\",\r\n        }));\r\n        // Convert mapped devices to warranty items\r\n        this.convertToWarrantyItems();\r\n      },\r\n      err => {\r\n        console.log(err);\r\n      }\r\n    );\r\n  }\r\n\r\n  // Convert mapped devices to warranty display format\r\n  convertToWarrantyItems() {\r\n    this.warrantyItems = this.mappedDevices.map(device => {\r\n      const endDate = new Date(device.endDate);\r\n      const currentDate = new Date();\r\n      const timeDiff = endDate.getTime() - currentDate.getTime();\r\n      const monthsRemaining = Math.ceil(timeDiff / (1000 * 3600 * 24 * 30));\r\n\r\n      let status: 'expired' | 'expiring' | 'active';\r\n      if (monthsRemaining <= 0) {\r\n        status = 'expired';\r\n      } else if (monthsRemaining <= 2) {\r\n        status = 'expiring';\r\n      } else {\r\n        status = 'active';\r\n      }\r\n      this.loadingDevices = false;\r\n\r\n      return {\r\n        name: device.name,\r\n        monthsRemaining: Math.max(0, monthsRemaining),\r\n        status: status,\r\n        endDate: device.endDate,\r\n        brand: device.brand\r\n      };\r\n\r\n    });\r\n  }\r\n\r\n  // Navigation methods for the three redirect buttons\r\n  navigateToIncident() {\r\n    // Redirect to incident declaration page\r\n    this.router.navigate([RoutesPaths.incident_report]);\r\n  }\r\n\r\n  navigateToTracking() {\r\n    this.router.navigate([RoutesPaths.incident_tracking]);\r\n\r\n  }\r\n\r\n  navigateToAddDevice() {\r\n    this.router.navigate([RoutesPaths.devices]);\r\n\r\n  }\r\n\r\n  getMandates() {\r\n    this.mandateService.getMandates().subscribe((data) => {\r\n      this.mandates = data.mandates.slice(0, 6);\r\n      this.loadingMandates = false;\r\n    });\r\n  }\r\n\r\n  getStatusLabel(status: keyof typeof MandateStatus): string {\r\n    return MandateStatus[status];\r\n  }\r\n  getWarrantyLabel(item: WarrantyItem): string {\r\n    if (item.monthsRemaining <= 0) {\r\n      return 'Expirée';\r\n    }\r\n    return `${item.monthsRemaining} Mois`;\r\n  }\r\n\r\n  getTagSeverity(status: string): 'success' | 'warning' | 'danger' | 'info' {\r\n    switch (status) {\r\n      case 'active': return 'success';\r\n      case 'expiring': return 'warning';\r\n      case 'expired': return 'danger';\r\n      default: return 'info';\r\n    }\r\n  }\r\n}","<acf-connected-layout [app]=\"app\">\r\n    <div class=\"warranty-dashboard\">\r\n        <!-- Action Buttons -->\r\n        <div class=\"grid p-2 gap-3 pb-4\">\r\n            <div class=\"col text-center text-white text-lg border-round-sm bg-primary font-bold p-3 cursor-pointer\"\r\n                (click)=\"navigateToIncident()\">\r\n                <i class=\"pi pi-exclamation-triangle pr-3 text-white\"></i>\r\n                <span>Déclarer un incident</span>\r\n            </div>\r\n            <div class=\"col text-center text-white text-lg border-round-sm bg-primary font-bold p-3 cursor-pointer\"\r\n                (click)=\"navigateToTracking()\">\r\n                <i class=\"pi pi-file-o pr-3 text-white\"></i>\r\n                <span>Suivre les incidents</span>\r\n            </div>\r\n            <div class=\"col text-center text-white text-lg border-round-sm bg-primary font-bold p-3 cursor-pointer\"\r\n                (click)=\"navigateToAddDevice()\">\r\n                <i class=\"pi pi-plus pr-3 text-white\"></i>\r\n                <span>Ajouter appareil</span>\r\n            </div>\r\n        </div>\r\n\r\n        <div class=\"content-grid\">\r\n\r\n            @if((loadingDevices && loadingMandates)) {\r\n            <!-- Warranty Status Loading -->\r\n            <div class=\"warranty-section\">\r\n                <p-card header=\"État de garantie\">\r\n                    <div class=\"flex\">\r\n                        <p-skeleton width=\"10rem\" styleClass=\"mb-2 mr-2\" height=\"2rem\" />\r\n                        <div class=\"self-center\" style=\"flex: 1\">\r\n                            <p-skeleton width=\"100%\" styleClass=\"mb-2\" height=\"2rem\" />\r\n                        </div>\r\n                    </div>\r\n                    <div class=\"flex\">\r\n                        <p-skeleton width=\"10rem\" styleClass=\"mb-2 mr-2\" height=\"2rem\" />\r\n                        <div class=\"self-center\" style=\"flex: 1\">\r\n                            <p-skeleton width=\"100%\" styleClass=\"mb-2\" height=\"2rem\" />\r\n                        </div>\r\n                    </div>\r\n                    <div class=\"flex\">\r\n                        <p-skeleton width=\"10rem\" styleClass=\"mb-2 mr-2\" height=\"2rem\" />\r\n                        <div class=\"self-center\" style=\"flex: 1\">\r\n                            <p-skeleton width=\"100%\" styleClass=\"mb-2\" height=\"2rem\" />\r\n                        </div>\r\n                    </div>\r\n                    <div class=\"flex\">\r\n                        <p-skeleton width=\"10rem\" styleClass=\"mb-2 mr-2\" height=\"2rem\" />\r\n                        <div class=\"self-center\" style=\"flex: 1\">\r\n                            <p-skeleton width=\"100%\" styleClass=\"mb-2\" height=\"2rem\" />\r\n                        </div>\r\n                    </div>\r\n                    <div class=\"flex\">\r\n                        <p-skeleton width=\"10rem\" styleClass=\"mb-2 mr-2\" height=\"2rem\" />\r\n                        <div class=\"self-center\" style=\"flex: 1\">\r\n                            <p-skeleton width=\"100%\" styleClass=\"mb-2\" height=\"2rem\" />\r\n                        </div>\r\n                    </div>\r\n                </p-card>\r\n            </div>\r\n\r\n            <!-- Repairs in Progress Loading -->\r\n            <div class=\"repairs-section\">\r\n                <p-card header=\"Réparation en cours\">\r\n                    <p-skeleton styleClass=\"mb-2\" height=\"3rem\" />\r\n                    <div class=\"flex\">\r\n                        <p-skeleton width=\"10rem\" styleClass=\"mb-2 mr-2\" height=\"2rem\" />\r\n                        <div class=\"self-center\" style=\"flex: 1\">\r\n                            <p-skeleton width=\"100%\" styleClass=\"mb-2\" height=\"2rem\" />\r\n                        </div>\r\n                    </div>\r\n                    <div class=\"flex\">\r\n                        <p-skeleton width=\"10rem\" styleClass=\"mb-2 mr-2\" />\r\n                        <div class=\"self-center\" style=\"flex: 1\">\r\n                            <p-skeleton width=\"100%\" styleClass=\"mb-2\" />\r\n                        </div>\r\n                    </div>\r\n                    <div class=\"flex\">\r\n                        <p-skeleton width=\"10rem\" styleClass=\"mb-2 mr-2\" height=\"2rem\" />\r\n                        <div class=\"self-center\" style=\"flex: 1\">\r\n                            <p-skeleton width=\"100%\" styleClass=\"mb-2\" height=\"2rem\" />\r\n                        </div>\r\n                    </div>\r\n                </p-card>\r\n            </div>\r\n            }\r\n            @else {\r\n            <!-- Warranty Status Section -->\r\n            <div class=\"warranty-section\">\r\n                <p-card header=\"État de garantie\">\r\n                    @if (warrantyItems && warrantyItems.length > 0) {\r\n                    <div class=\"warranty-list\">\r\n                        <div *ngFor=\"let item of warrantyItems\" class=\"warranty-item\"\r\n                            [ngClass]=\"'status-' + item.status\">\r\n                            <div class=\"item-info\">\r\n                                <span class=\"device-name\">{{ item.name }}</span>\r\n                            </div>\r\n                            <div class=\"warranty-status\">\r\n                                <p-tag [value]=\"getWarrantyLabel(item)\" [severity]=\"getTagSeverity(item.status)\"\r\n                                    class=\"warranty-tag\">\r\n                                </p-tag>\r\n                                <div class=\"progress-bar\" [ngClass]=\"'progress-' + item.status\"></div>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                    } @else {\r\n                    <!-- Modern Creative Empty State for Warranty -->\r\n                    <div class=\"empty-state-modern text-center py-6\">\r\n                        <div class=\"device-icon-container mb-4\">\r\n                            <div class=\"device-circle\">\r\n                                <i class=\"pi pi-mobile\"></i>\r\n                            </div>\r\n                            <div class=\"add-badge\">+</div>\r\n                        </div>\r\n                        <h3 class=\"text-900 font-semibold mb-2\">Aucun appareil enregistré</h3>\r\n                        <p class=\"text-600 mb-5 px-3\">\r\n                            Ajoutez vos appareils pour suivre leur garantie.\r\n                        </p>\r\n\r\n                    </div>\r\n                    }\r\n                </p-card>\r\n            </div>\r\n\r\n            <!-- Repairs in Progress Section -->\r\n            <div class=\"repairs-section\">\r\n                <p-card header=\"Réparation en cours\">\r\n                    @if (mandates && mandates.length > 0) {\r\n                    <p-table [value]=\"mandates\" styleClass=\"repair-table\">\r\n                        <ng-template pTemplate=\"header\">\r\n                            <tr>\r\n                                <th>Nom de l'appareil</th>\r\n                                <th>Statut</th>\r\n                            </tr>\r\n                        </ng-template>\r\n                        <ng-template pTemplate=\"body\" let-mandate>\r\n                            <tr>\r\n                                <td>{{ mandate.labelRef }}</td>\r\n                                <td>\r\n                                    <div [class]=\"'status status-' + mandate.mandateStatus\">\r\n                                        {{ getStatusLabel(mandate.mandateStatus) | uppercase }}\r\n                                    </div>\r\n                                </td>\r\n                            </tr>\r\n                        </ng-template>\r\n                    </p-table>\r\n                    } @else {\r\n                    <!-- Modern Creative Empty State for Repairs -->\r\n                    <div class=\"empty-state-modern text-center py-6\">\r\n                        <div class=\"repair-icon-container mb-4\">\r\n                            <div class=\"repair-circle\">\r\n                                <i class=\"pi pi-cog\"></i>\r\n                            </div>\r\n                            <div class=\"add-badge-green\">+</div>\r\n                        </div>\r\n                        <h3 class=\"text-900 font-semibold mb-2\">Aucune réparation en cours</h3>\r\n                        <p class=\"text-600 mb-5 px-3\">\r\n                            Tous vos appareils fonctionnent correctement.\r\n                        </p>\r\n\r\n                    </div>\r\n                    }\r\n                </p-card>\r\n            </div>\r\n            }\r\n\r\n        </div>\r\n    </div>\r\n\r\n    <style>\r\n        .empty-state-modern {\r\n            padding: 3rem 2rem;\r\n        }\r\n\r\n        /* Device Empty State */\r\n        .device-icon-container {\r\n            position: relative;\r\n            display: inline-block;\r\n        }\r\n\r\n        .device-circle {\r\n            width: 80px;\r\n            height: 80px;\r\n            background: linear-gradient(135deg, #f1f5f9 0%, #e2e8f0 100%);\r\n            border-radius: 50%;\r\n            display: flex;\r\n            align-items: center;\r\n            justify-content: center;\r\n            margin: 0 auto;\r\n            position: relative;\r\n        }\r\n\r\n        .device-circle i {\r\n            font-size: 2rem;\r\n            color: #64748b;\r\n        }\r\n\r\n        .add-badge {\r\n            position: absolute;\r\n            top: -5px;\r\n            right: -5px;\r\n            width: 28px;\r\n            height: 28px;\r\n            background: #007bc0;\r\n            color: white;\r\n            border-radius: 50%;\r\n            display: flex;\r\n            align-items: center;\r\n            justify-content: center;\r\n            font-weight: bold;\r\n            font-size: 1rem;\r\n            box-shadow: 0 2px 8px rgba(59, 130, 246, 0.3);\r\n        }\r\n\r\n        .add-badge-green {\r\n            position: absolute;\r\n            top: -5px;\r\n            right: -5px;\r\n            width: 28px;\r\n            height: 28px;\r\n            background: #22c55e;\r\n            color: white;\r\n            border-radius: 50%;\r\n            display: flex;\r\n            align-items: center;\r\n            justify-content: center;\r\n            font-weight: bold;\r\n            font-size: 1rem;\r\n            box-shadow: 0 2px 8px rgba(34, 197, 94, 0.3);\r\n        }\r\n\r\n        /* Repair Empty State */\r\n        .repair-icon-container {\r\n            position: relative;\r\n            display: inline-block;\r\n        }\r\n\r\n        .repair-circle {\r\n            width: 80px;\r\n            height: 80px;\r\n            background: linear-gradient(135deg, #f0fdf4 0%, #dcfce7 100%);\r\n            border-radius: 50%;\r\n            display: flex;\r\n            align-items: center;\r\n            justify-content: center;\r\n            margin: 0 auto;\r\n            position: relative;\r\n        }\r\n\r\n        .repair-circle i {\r\n            font-size: 2rem;\r\n            color: #22c55e;\r\n        }\r\n\r\n        .status-badge {\r\n            position: absolute;\r\n            top: -8px;\r\n            right: -8px;\r\n            background: #22c55e;\r\n            color: white;\r\n            padding: 4px 8px;\r\n            border-radius: 12px;\r\n            font-size: 0.75rem;\r\n            font-weight: 600;\r\n            box-shadow: 0 2px 8px rgba(34, 197, 94, 0.3);\r\n        }\r\n\r\n        .modern-primary-btn {\r\n            background: linear-gradient(135deg, #3b82f6 0%, #1d4ed8 100%);\r\n            border: none;\r\n            font-weight: 500;\r\n            padding: 0.75rem 1.5rem;\r\n        }\r\n\r\n        .modern-link-btn {\r\n            color: #6366f1 !important;\r\n            font-weight: 500;\r\n        }\r\n\r\n        .modern-link-btn:hover {\r\n            background: rgba(99, 102, 241, 0.05) !important;\r\n        }\r\n    </style>\r\n</acf-connected-layout>","import { Component, Input } from '@angular/core';\r\nimport { MessageService } from 'primeng/api';\r\nimport { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { AccountService } from '../../services/account.service';\r\nimport { PasswordValidator } from '../../validators/password.validator';\r\nimport { GeneralInfoChangeRequest } from '../../models/request/general-information-change.request';\r\nimport { HexaPosts } from '../../models/shared/hexa-post';\r\nimport { DataStoreService } from '../../services/data-store.service';\r\nimport { ResetPasswordRequest } from '../../models/request/reset-password.request';\r\nimport { UserInfo } from '../../models/shared/user.info';\r\n\r\n@Component({\r\n    selector: 'acf-account',\r\n    templateUrl: './account.component.html',\r\n    styleUrl: './account.component.scss',\r\n    providers: [MessageService],\r\n    standalone: false\r\n})\r\nexport class AccountComponent {\r\n  @Input() app: string = '';\r\n\r\n  passwordChangeForm: FormGroup;\r\n  generalInfoForm: FormGroup;\r\n  originalFormValues: any;\r\n\r\n  loading = false;\r\n  submittedPasswordChangeForm = false;\r\n  submittedGeneralInfoForm = false;\r\n  filteredZipCodes: HexaPosts = [];\r\n  filteredCities: HexaPosts = [];\r\n  hexaPosts: HexaPosts = [];\r\n  emailInputIcon: string = '';\r\n  phoneInputIcon: string = '';\r\n  showPassword: boolean = false;\r\n  showOldPassword: boolean = false;\r\n  showConfirmPassword: boolean = false;\r\n  gender = [\r\n    {\r\n      value: 'Monsieur',\r\n      key: '001',\r\n    },\r\n    {\r\n      value: 'Madame',\r\n      key: '002',\r\n    },\r\n  ];\r\n  constructor(\r\n    private readonly formBuilder: FormBuilder,\r\n    private readonly accountService: AccountService,\r\n    private readonly store: DataStoreService,\r\n    private readonly messageService: MessageService\r\n  ) {\r\n    this.passwordChangeForm = this.onInitPasswordChangeForm();\r\n    this.generalInfoForm = this.onInitGeneralInfoForm();\r\n    this.originalFormValues = this.generalInfoForm.getRawValue();\r\n    this.generalInfoForm.get('email')?.disable();\r\n    this.store.deleteState(); //delete state : incident declatation\r\n\r\n\r\n  }\r\n\r\n  ngOnInit(): void {\r\n  }\r\n\r\n  onInitPasswordChangeForm() {\r\n    return this.formBuilder.group(\r\n      {\r\n        oldPassword: ['', Validators.required],\r\n        password: ['', [Validators.required, Validators.pattern(\r\n          /^(?=\\D*\\d)(?=[^a-z]*[a-z])(?=[^A-Z]*[A-Z])(?=.*[$@$!%*?&.+-/(){}\"']).{8,}$/\r\n        )]\r\n        ],\r\n        confirmPassword: ['', Validators.required]\r\n      },\r\n      {\r\n        validator: PasswordValidator('password', 'confirmPassword'),\r\n      }\r\n    );\r\n  }\r\n\r\n  onInitGeneralInfoForm() {\r\n    const zipAndCity = { zip: this.store.getZip(), city: this.store.getCity(), countryCode: 'FR' }\r\n\r\n    return this.formBuilder.group(\r\n      {\r\n        title: [this.store.getTitle() || '', Validators.required],\r\n        firstName: [this.store.getFirstName() || '', Validators.required],\r\n        lastName: [this.store.getLastName() || '', Validators.required],\r\n        phoneNumber: new FormControl(this.store.getPhoneNumber() || '', [\r\n          Validators.required,\r\n          Validators.pattern(/^[1-7]([\\s\\d]*\\d){8}$/)\r\n        ]),\r\n        city: [zipAndCity || null, Validators.required],\r\n        zip: [zipAndCity || null, Validators.required],\r\n        address: [this.store.getUserAddress() || '', Validators.required],\r\n        //TODO getCDMCustomerInfo should get email so we store them and patch them here\r\n        email: new FormControl(this.store.getUserName() || '', [\r\n          Validators.required,\r\n          Validators.email,\r\n          Validators.pattern('^[A-Za-z0-9._%+-]+@[a-z0-9.-]+\\\\.[a-z]{2,4}$'),\r\n        ]),\r\n      }\r\n    );\r\n  }\r\n\r\n  checkPhone() {\r\n    let rawValue = this.generalInfoForm.value.phoneNumber.replace(/\\s+/g, ''); // Remove spaces\r\n    this.generalInfoForm.get('phoneNumber')?.setValue(rawValue);\r\n    const phoneNumber = this.generalInfoForm.get('phoneNumber');\r\n    if (phoneNumber && phoneNumber.status == 'VALID' && !phoneNumber.errors) {\r\n      this.phoneInputIcon = 'pi pi-spinner pi-spin';\r\n      this.accountService\r\n        .checkPhoneNumber(phoneNumber.value, this.app)\r\n        .subscribe(\r\n          (data) => {\r\n            this.phoneInputIcon = data ? 'pi pi-times' : 'pi pi-check';\r\n          },\r\n          (_) => (this.phoneInputIcon = '')\r\n        );\r\n    } else {\r\n      this.phoneInputIcon = '';\r\n    }\r\n  }\r\n\r\n  onSubmitPasswordChange(): void {\r\n    this.submittedPasswordChangeForm = true;\r\n    const isFromValid =\r\n      this.passwordChangeForm.valid;\r\n    if (isFromValid) {\r\n      this.loading = true;\r\n      const resetPasswordRequest: ResetPasswordRequest = {\r\n        applicationName: this.app,\r\n        userName: this.store.getUserName(),\r\n        oldPassword: this.passwordChangeForm.get('oldPassword')?.value,\r\n        newPassword: this.passwordChangeForm.get('password')?.value\r\n      };\r\n      this.accountService.resetPassword(resetPasswordRequest).subscribe(\r\n        (response) => {\r\n          if (response.result) {\r\n            this.messageService.add({\r\n              severity: 'success',\r\n              detail: 'Votre mot de passe a été réinitialisé avec succès.'\r\n            });\r\n          } else {\r\n            this.messageService.add({\r\n              severity: 'error',\r\n              detail: 'Une erreur est survenue lors de la réinitialisation de votre mot de passe. Veuillez vérifier vos informations et réessayer ou contacter le support si le problème persiste.'\r\n            });\r\n          }\r\n          this.loading = false;\r\n        },\r\n        (error) => {\r\n          this.messageService.add({\r\n            severity: 'error',\r\n            detail: 'Une erreur inattendue est survenue. Veuillez réessayer ou contacter le support si le problème persiste.'\r\n          });\r\n          this.loading = false;\r\n        }\r\n      );\r\n      this.passwordChangeForm = this.onInitPasswordChangeForm();\r\n      this.submittedPasswordChangeForm = false;\r\n    }\r\n  }\r\n  onSubmitGeneralInfoChange(): void {\r\n    this.submittedGeneralInfoForm = true;\r\n    const currentFormValues = this.generalInfoForm.getRawValue();\r\n    const isFormModified = JSON.stringify(currentFormValues) !== JSON.stringify(this.originalFormValues)\r\n    const isFromValid =\r\n      this.generalInfoForm.valid &&\r\n      (this.phoneInputIcon === 'pi pi-check' || this.phoneInputIcon === '');\r\n\r\n    if (isFromValid && isFormModified) {\r\n      this.loading = true;\r\n      const generalInfoRequest: GeneralInfoChangeRequest = {\r\n        applicationName: this.app,\r\n        firstName: this.generalInfoForm.get('firstName')?.value,\r\n        lastName: this.generalInfoForm.get('lastName')?.value,\r\n        city: this.generalInfoForm.get('city')?.value.city,\r\n        address: this.generalInfoForm.get('address')?.value,\r\n        zipPostalCode: this.generalInfoForm.get('zip')?.value.zip,\r\n        phoneNumber: this.generalInfoForm.get('phoneNumber')?.value,\r\n        email: this.generalInfoForm.get('email')?.getRawValue(),\r\n        userName: this.generalInfoForm.get('email')?.value,\r\n        title: this.generalInfoForm.get('title')?.value,\r\n        countryCode: '250'\r\n      };\r\n      this.accountService.changeGeneralInformation(generalInfoRequest).subscribe(\r\n        (response) => {\r\n          if (response.result) {\r\n            this.setNewUserInfo()\r\n            this.messageService.add({\r\n              severity: 'success',\r\n              detail: 'Votre compte a été mis à jour avec succès.'\r\n            });\r\n          } else {\r\n            this.messageService.add({\r\n              severity: 'error',\r\n              detail: 'Une erreur est survenue lors de la mise à jour de votre compte. Veuillez réessayer ou contacter le support si le problème persiste.'\r\n            });\r\n          }\r\n          this.loading = false;\r\n        },\r\n        (error) => {\r\n          this.messageService.add({\r\n            severity: 'error',\r\n            detail: 'Une erreur inattendue est survenue. Veuillez réessayer ou contacter le support si le problème persiste.'\r\n          });\r\n          this.loading = false;\r\n        }\r\n      );\r\n\r\n      this.submittedGeneralInfoForm = false;\r\n      this.phoneInputIcon = '';\r\n    }\r\n  }\r\n\r\n  togglePasswordVisibility(): void {\r\n    this.showPassword = !this.showPassword;\r\n  }\r\n\r\n  toggleOldPasswordVisibility(): void {\r\n    this.showOldPassword = !this.showOldPassword;\r\n  }\r\n\r\n  toggleConfirmPasswordVisibility(): void {\r\n    this.showConfirmPassword = !this.showConfirmPassword;\r\n  }\r\n\r\n  setNewUserInfo() {\r\n    this.accountService.getCDMCustomerInfo().subscribe(\r\n      (user: UserInfo) => {\r\n        const rememberMe = this.store.getRM();\r\n        if (rememberMe == 'true') {\r\n          this.store.setUserInformation(user, true);\r\n        } else {\r\n          this.store.setUserInformation(user, false);\r\n        }\r\n        this.generalInfoForm = this.onInitGeneralInfoForm();\r\n        this.originalFormValues = this.generalInfoForm.getRawValue();\r\n      },\r\n      error => console.error(error)\r\n    );\r\n\r\n  }\r\n  get generalInfoF() {\r\n    return this.generalInfoForm.controls;\r\n  }\r\n\r\n  get passwordChangeF() {\r\n    return this.passwordChangeForm.controls;\r\n  }\r\n\r\n}\r\n","<acf-connected-layout [app]=\"app\">\r\n    <!-- General Information Form -->\r\n    <form [formGroup]=\"generalInfoForm\">\r\n        <div class=\"p-3 mb-4 acf-card\">\r\n            <div class=\"text-left mb-4 text-md font-bold\">Information Générale</div>\r\n            <div class=\"grid\">\r\n                <div class=\"col-12 md:col-6\">\r\n                    <label class=\"block font-bold mb-2 required-input\" for=\"firstName\">Civilité </label>\r\n                    <p-dropdown [style]=\"{'width':'100%','border-radius':'0cm'}\" formControlName=\"title\"\r\n                        optionValue=\"key\" optionLabel=\"value\" [options]=\"gender\" [ngStyle]=\"{'width.em': 100}\"\r\n                        [ngClass]=\"{ 'acf-invalid-dropdown':(submittedGeneralInfoForm || generalInfoF['title'].dirty) && generalInfoF['title'].errors }\"></p-dropdown>\r\n                    <div *ngIf=\"(submittedGeneralInfoForm || generalInfoF['title'].dirty) && generalInfoF['title'].errors\"\r\n                        class=\"acf-invalid-feedback\">\r\n                        <div *ngIf=\"generalInfoF['title'].errors['required']\"> Ce champ est obligatoire.\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n            <div class=\"grid\">\r\n                <div class=\"col-12 md:col-6\">\r\n                    <label class=\"block font-bold mb-2 required-input\" for=\"firstName\">Prénom</label>\r\n                    <input pInputText class=\"w-full acf-input\" id=\"firstName\" formControlName=\"firstName\"\r\n                        [ngClass]=\"{ 'acf-invalid-input': (submittedGeneralInfoForm || generalInfoF['firstName'].dirty) && generalInfoF['firstName'].errors }\" />\r\n                    <div class=\"acf-invalid-feedback\"\r\n                        *ngIf=\"(submittedGeneralInfoForm || generalInfoF['firstName'].dirty) && generalInfoF['firstName'].errors\">\r\n                        <div *ngIf=\"generalInfoF['firstName'].errors['required']\">Ce champ est obligatoire.</div>\r\n                    </div>\r\n                </div>\r\n\r\n                <div class=\"col-12 md:col-6\">\r\n                    <label class=\"block font-bold mb-2 required-input\" for=\"lastName\">Nom</label>\r\n                    <input pInputText class=\"w-full acf-input\" id=\"lastName\" formControlName=\"lastName\"\r\n                        [ngClass]=\"{ 'acf-invalid-input': (submittedGeneralInfoForm || generalInfoF['lastName'].dirty) && generalInfoF['lastName'].errors }\" />\r\n                    <div class=\"acf-invalid-feedback\"\r\n                        *ngIf=\"(submittedGeneralInfoForm || generalInfoF['lastName'].dirty) && generalInfoF['lastName'].errors\">\r\n                        <div *ngIf=\"generalInfoF['lastName'].errors['required']\">Ce champ est obligatoire.</div>\r\n                    </div>\r\n                </div>\r\n\r\n                <div class=\"col-12 md:col-6\">\r\n                    <label class=\"block font-bold mb-2 required-input\" for=\"email\">Email</label>\r\n                    <p-iconField iconPosition=\"right\">\r\n                        <input pInputText class=\"w-full acf-input-disabled\" id=\"email\" formControlName=\"email\"\r\n                            [ngClass]=\"{ 'acf-invalid-input': (submittedGeneralInfoForm || generalInfoF['email'].dirty) && (generalInfoF['email'].errors || emailInputIcon === 'pi pi-times') }\" />\r\n                        <p-inputIcon [styleClass]=\"emailInputIcon\" />\r\n\r\n                    </p-iconField>\r\n                    <div class=\"acf-invalid-feedback\"\r\n                        *ngIf=\"(submittedGeneralInfoForm || generalInfoF['email'].dirty) && generalInfoF['email'].errors\">\r\n                        <div *ngIf=\"generalInfoF['email'].errors['required']\">Ce champ est obligatoire.</div>\r\n                        <div *ngIf=\"generalInfoF['email'].errors['pattern']\">Email incorrect.</div>\r\n                    </div>\r\n                    <div class=\"acf-invalid-feedback\" *ngIf=\"emailInputIcon === 'pi pi-times'\">\r\n                        Adresse e-mail déjà existante.\r\n                    </div>\r\n                </div>\r\n\r\n                <div class=\"col-12 md:col-6\">\r\n                    <label class=\"block font-bold mb-2 required-input\" for=\"phoneNumber\">Téléphone</label>\r\n                    <div class=\"flex\">\r\n                        <input type=\"text\" pInputText value=\"+33\" class=\"acf-input-prefix acf-input\" readonly>\r\n                        <p-iconField iconPosition=\"right\" class=\"w-full\">\r\n                            <p-inputMask id=\"phoneNumber\" formControlName=\"phoneNumber\" mask=\"9 99 99 99 99\"\r\n                                class=\"w-full acf-input-mask\" slotChar=\"_\" (onBlur)=\"checkPhone()\"\r\n                                [ngClass]=\"{ 'acf-invalid-inputmask': (submittedGeneralInfoForm || generalInfoF['phoneNumber'].dirty) && (generalInfoF['phoneNumber'].errors || phoneInputIcon === 'pi pi-times') }\"></p-inputMask>\r\n                            <p-inputIcon [styleClass]=\"phoneInputIcon\" />\r\n\r\n                        </p-iconField>\r\n                    </div>\r\n                    <div *ngIf=\"(generalInfoF['phoneNumber'].dirty || submittedGeneralInfoForm) && generalInfoF['phoneNumber'].errors\"\r\n                        class=\"acf-invalid-feedback\">\r\n                        <div *ngIf=\"generalInfoF['phoneNumber'].errors['required']\"> Ce champ est obligatoire.</div>\r\n                        <div *ngIf=\"generalInfoF['phoneNumber'].errors['pattern']\"> Le numéro de téléphone doit être un\r\n                            numéro français valide,\r\n                            commencer par 1, 2, 3, 4, 5, 6 ou 7 et contenir exactement 9 chiffres.\r\n                        </div>\r\n                    </div>\r\n                    <div class=\"acf-invalid-feedback\" *ngIf=\"phoneInputIcon === 'pi pi-times'\">Numéro de téléphone déjà\r\n                        existant.</div>\r\n                </div>\r\n            </div>\r\n            <acf-address-form [submitted]=\"submittedGeneralInfoForm\"></acf-address-form>\r\n\r\n\r\n\r\n            <div class=\"mt-4 flex flex-row-reverse flex-wrap\">\r\n                <button pButton pRipple type=\"submit\" label=\"Enregistrer\" class=\"acf-primary-button\"\r\n                    (click)=\"onSubmitGeneralInfoChange()\"></button>\r\n            </div>\r\n\r\n        </div>\r\n    </form>\r\n    <!-- Change Password Form -->\r\n    <form [formGroup]=\"passwordChangeForm\">\r\n        <div class=\"p-3 acf-card\">\r\n            <div class=\"text-left mb-4 text-md font-bold\">Changer le mot de passe</div>\r\n            <div class=\"grid\">\r\n                <div class=\"col-12 \">\r\n                    <label class=\"block font-bold mb-2 required-input\" for=\"oldPassword\">Mot de passe actuel</label>\r\n                    <p-iconField iconPosition=\"right\">\r\n\r\n                        <input pInputText [type]=\"showOldPassword ? 'text' : 'password'\" class=\"w-full acf-input\"\r\n                            id=\"oldPassword\" autocomplete=\"old-password\" formControlName=\"oldPassword\"\r\n                            [ngClass]=\"{ 'acf-invalid-input': (submittedPasswordChangeForm || passwordChangeF['oldPassword'].dirty) && passwordChangeF['oldPassword'].errors }\" />\r\n                        <p-inputIcon [styleClass]=\"showOldPassword ? 'pi pi-eye' : 'pi pi-eye-slash'\"\r\n                            (click)=\"toggleOldPasswordVisibility()\" />\r\n                    </p-iconField>\r\n                    <div class=\"acf-invalid-feedback\"\r\n                        *ngIf=\"(submittedPasswordChangeForm || passwordChangeF['oldPassword'].dirty) && passwordChangeF['oldPassword'].errors\">\r\n                        <div *ngIf=\"passwordChangeF['oldPassword'].errors['required']\">Ce champ est obligatoire.</div>\r\n                    </div>\r\n                </div>\r\n                <div class=\"col-12  md:col-6\">\r\n                    <label class=\"block font-bold mb-2 required-input\" for=\"password\">Nouveau mot de passe</label>\r\n                    <p-iconField iconPosition=\"right\">\r\n\r\n                        <input pInputText [type]=\"showPassword ? 'text' : 'password'\" class=\"w-full acf-input\"\r\n                            id=\"password\" autocomplete=\"new-password\" formControlName=\"password\"\r\n                            [ngClass]=\"{ 'acf-invalid-input': (submittedPasswordChangeForm || passwordChangeF['password'].dirty) && passwordChangeF['password'].errors }\" />\r\n                        <p-inputIcon [styleClass]=\"showPassword ? 'pi pi-eye' : 'pi pi-eye-slash'\"\r\n                            (click)=\"togglePasswordVisibility()\" />\r\n                    </p-iconField>\r\n                    <div class=\"acf-invalid-feedback\"\r\n                        *ngIf=\"(submittedPasswordChangeForm || passwordChangeF['password'].dirty) && passwordChangeF['password'].errors\">\r\n                        <div *ngIf=\"passwordChangeF['password'].errors['required']\">Ce champ est obligatoire.</div>\r\n                        <div *ngIf=\"passwordChangeF['password'].errors['pattern']\">Le mot de passe doit contenir au\r\n                            moins 8 caractères\r\n                            : 1 minuscule, 1 majuscule, 1 chiffre et 1 caractére spécial.</div>\r\n                    </div>\r\n                </div>\r\n\r\n                <div class=\"col-12 md:col-6\">\r\n                    <label class=\"block font-bold mb-2 required-input\" for=\"confirmPassword\">Confirmer le mot de\r\n                        passe</label>\r\n                    <p-iconField iconPosition=\"right\">\r\n\r\n                        <input pInputText [type]=\"showConfirmPassword ? 'text' : 'password'\" class=\"w-full acf-input\"\r\n                            id=\"confirmPassword\" formControlName=\"confirmPassword\"\r\n                            [ngClass]=\"{ 'acf-invalid-input': (submittedPasswordChangeForm || passwordChangeF['confirmPassword'].dirty) && passwordChangeF['confirmPassword'].errors }\" />\r\n                        <p-inputIcon [styleClass]=\"showConfirmPassword ? 'pi pi-eye' : 'pi pi-eye-slash'\"\r\n                            (click)=\"toggleConfirmPasswordVisibility()\" />\r\n                    </p-iconField>\r\n                    <div class=\"acf-invalid-feedback\"\r\n                        *ngIf=\"(submittedPasswordChangeForm || passwordChangeF['confirmPassword'].dirty) && passwordChangeF['confirmPassword'].errors\">\r\n                        <div *ngIf=\"passwordChangeF['confirmPassword'].errors['required']\">Ce champ est obligatoire.\r\n                        </div>\r\n                        <div *ngIf=\"passwordChangeF['confirmPassword'].errors['confirmPasswordValidator']\">Les mots de\r\n                            passe ne\r\n                            correspondent pas.</div>\r\n                    </div>\r\n                </div>\r\n\r\n            </div>\r\n\r\n            <div class=\"mt-4 flex flex-row-reverse flex-wrap\">\r\n                <button pButton pRipple type=\"submit\" label=\"Enregistrer\" class=\"acf-primary-button\"\r\n                    (click)=\"onSubmitPasswordChange()\"></button>\r\n            </div>\r\n        </div>\r\n    </form>\r\n</acf-connected-layout>\r\n<p-toast></p-toast>","import { Component, Optional } from '@angular/core';\r\nimport { DynamicDialogRef } from 'primeng/dynamicdialog';\r\nimport { DataStoreService } from '../../../../services/data-store.service';\r\nimport { Inject } from '@angular/core';\r\nimport { LIB_CONFIG, LibConfig } from '../../../../config.token';;\r\n@Component({\r\n    selector: 'acf-is-gem-popup',\r\n    templateUrl: './is-gem-popup.component.html',\r\n    styleUrl: './is-gem-popup.component.scss',\r\n    standalone: false\r\n})\r\nexport class IsGEMPopupComponent {\r\n  applicationName: string = '';\r\n  supportEmail = this.config.support.email;\r\n  supportPhone = this.config.support.phone;\r\n  constructor(@Inject(LIB_CONFIG) private config: LibConfig,\r\n    private readonly store: DataStoreService,\r\n    @Optional() public ref: DynamicDialogRef\r\n  ) {\r\n    this.applicationName = this.store.getApplication();\r\n  }\r\n  closePopup() {\r\n    this.ref.close();\r\n  }\r\n}\r\n","<div class=\"flex justify-content-end\">\r\n    <img class=\"ml-auto cursor-pointer\" (click)=\"closePopup()\"\r\n        [src]=\"'assets/' + this.applicationName + '/close-icon.svg'\" alt=\"close\">\r\n</div>\r\n<div class=\"is-gem-popup\">\r\n    <p class=\"text-center font-bold mt-2\">Nous tenons à vous informer que, pour le moment, les incidents liés aux gros\r\n        électroménagers ne peuvent pas être traités directement via notre application.</p>\r\n    <p class=\"text-center font-bold mb-6\">Nous vous encourageons à contacter notre service client au\r\n        <a class=\"acf-primary-link\" [href]=\"'tel:'+ supportPhone\">{{supportPhone}}</a> ou par e-mail [<a\r\n            [href]=\"'mailto:' + supportEmail\" class=\"acf-primary-link\">{{supportEmail}}</a>] pour obtenir une assistance\r\n        rapide et efficace concernant vos demandes.\r\n    </p>\r\n    <div class=\"flex justify-content-center mb-3\">\r\n        <button pButton pRipple type=\"submit\" label=\"Fermer\" class=\"acf-secondary-button\"\r\n            (click)=\"closePopup()\"></button>\r\n    </div>\r\n</div>","import { Component, ElementRef, EventEmitter, Output, ViewChild } from '@angular/core';\r\nimport { MessageService } from 'primeng/api';\r\n@Component({\r\n    selector: 'acf-device-attachement',\r\n    templateUrl: './device-attachement.component.html',\r\n    styleUrl: './device-attachement.component.scss',\r\n    standalone: false\r\n})\r\nexport class DeviceAttachementComponent {\r\n  file: File | undefined;  \r\n  readonly ALLOWED_FILE_TYPES = ['application/pdf', 'image/png', 'image/jpeg'];\r\n\r\n  @ViewChild('fileInput') fileInput!: ElementRef<HTMLInputElement>;\r\n  @Output() filesChanged: EventEmitter<File> = new EventEmitter<File>();\r\n\r\n  constructor(\r\n    private readonly messageService: MessageService\r\n  ) { }\r\n\r\n  onFileSelected(event: Event): void {\r\n   const input = event.target as HTMLInputElement;\r\n   this.onFileCheck(input);\r\n  }\r\n  \r\n  onFileCheck(input: HTMLInputElement): void {\r\n    if (input.files && input.files.length > 0) {\r\n      const newFiles = Array.from(input.files);\r\n      const invalidFile = newFiles.find(file => !this.ALLOWED_FILE_TYPES.includes(file.type));\r\n      if (invalidFile) {\r\n        this.show('Supported formats: JPEG, PNG, PDF');\r\n        return;\r\n      }\r\n      this.file = newFiles[0];\r\n      this.filesChanged.emit(this.file);\r\n    }\r\n  }\r\n\r\n  onDragOver(event: DragEvent) {\r\n    event.preventDefault();\r\n  }\r\n\r\n  onDrop(event: DragEvent) {\r\n    event.preventDefault();\r\n    if (event.dataTransfer?.files.length) {\r\n        const newFiles = Array.from(event.dataTransfer.files); \r\n        const invalidFile = newFiles.find(file => !this.ALLOWED_FILE_TYPES.includes(file.type));\r\n        if (invalidFile) {\r\n          this.show('Supported formats: JPEG, PNG, PDF');\r\n          return;\r\n        }\r\n        this.file = newFiles[0]\r\n        this.filesChanged.emit(this.file);\r\n    }\r\n  }\r\n\r\n  onRemoveFile() {\r\n    this.file = undefined;\r\n  }\r\n\r\n  show(message: string) {\r\n    this.messageService.add({ severity: 'error', summary: 'Erreur', detail: message });\r\n  }\r\n\r\n  triggerFileInput() {\r\n    this.fileInput.nativeElement.click();\r\n  }\r\n\r\n}\r\n\r\n\r\n","<div class=\"device-attachement\">\r\n    <div class=\"grid\">\r\n        <div class=\"col-12 pr-2\">\r\n            <div class=\"upload-box\" (drop)=\"onDrop($event)\" (dragover)=\"onDragOver($event)\">\r\n                <img src=\"assets/icons/upload-icon.svg\" alt=\"upload icon\" width=\"auto\" height=\"50\">\r\n                <div>\r\n                    <label for=\"file-upload\" class=\"custom-file-upload\">\r\n                        Importer une facture ou \r\n                        <span class=\"browse\" tabindex=\"0\" (keydown.enter)=\"triggerFileInput()\"> Parcourir </span>\r\n                    </label>\r\n                    <input id=\"file-upload\" type=\"file\" (change)=\"onFileSelected($event)\" accept=\".jpeg,.jpg,.png,.pdf\"\r\n                     style=\"display: none;\" class=\"display-n\" #fileInput/>\r\n                    <p class=\"browse-support\">Formats pris en charge: JPEG, PNG, PDF</p>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    </div>\r\n</div>\r\n<!-- <p-toast></p-toast> -->","import { Component, Optional, ViewChild } from '@angular/core';\r\nimport {\r\n  FormBuilder,\r\n  FormGroup,\r\n  Validators,\r\n} from '@angular/forms';\r\nimport { MessageService } from 'primeng/api';\r\nimport { DialogService, DynamicDialogRef } from 'primeng/dynamicdialog';\r\nimport { DataStoreService } from '../../../services/data-store.service';\r\nimport { AutoComplete, AutoCompleteCompleteEvent, AutoCompleteSelectEvent } from 'primeng/autocomplete';\r\nimport { FileService } from '../../../services/file.service';\r\nimport { ProductOCR, ProductsOCR, ProductsXS, ProductXS } from '../../../models/shared/product';\r\nimport { ReferentialService } from '../../../services/referential.service';\r\nimport { map, forkJoin } from 'rxjs';\r\nimport { CreateCDMBaseWarrantiesResponse } from '../../../models/response/create-mandate.response';\r\nimport { IsGEMPopupComponent } from './is-gem-popup/is-gem-popup.component';\r\nimport { Inject } from '@angular/core';\r\nimport { LIB_CONFIG, LibConfig } from '../../../config.token';\r\n@Component({\r\n  selector: 'acf-device-popup',\r\n  templateUrl: './device-popup.component.html',\r\n  styleUrl: './device-popup.component.scss',\r\n  providers: [MessageService],\r\n  standalone: false\r\n})\r\n\r\nexport class DevicePopupComponent {\r\n  registerForm: FormGroup;\r\n  loading: boolean = false;\r\n  autoComplete_loading: boolean = false;\r\n  submitted: boolean = false;\r\n  applicationName: string = '';\r\n  @ViewChild('autoComplete') autoComplete!: AutoComplete;\r\n  selectedFile: File | null = null;\r\n  productOCR: ProductOCR = {};\r\n  productByRef: ProductXS = {};\r\n  invalid_ref: boolean = false;\r\n  suggestedCommercialRefs!: string[];\r\n  suggestedTechnicalRefs: string[] = [];\r\n  maxDate: Date = new Date();\r\n  reference_help_center_url: string;\r\n  constructor(\r\n    private readonly messageService: MessageService,\r\n    @Inject(LIB_CONFIG) private config: LibConfig,\r\n    private readonly fileService: FileService,\r\n    private readonly refencielService: ReferentialService,\r\n    private readonly formBuilder: FormBuilder,\r\n    @Optional() public ref: DynamicDialogRef,\r\n    private readonly store: DataStoreService,\r\n    private readonly dialogService: DialogService\r\n  ) {\r\n    this.applicationName = this.store.getApplication()\r\n    this.registerForm = this.onItniFrom();\r\n    this.reference_help_center_url= this.config.bosch_services_uri;\r\n\r\n  }\r\n\r\n  onFilesChanged(file: File): void {\r\n    this.loading = true;\r\n    this.selectedFile = file;\r\n\r\n    this.registerForm.patchValue({\r\n      fileUpload: file\r\n    });\r\n\r\n    this.registerForm = this.onItniFrom();\r\n    this.suggestedCommercialRefs = [];\r\n    this.suggestedTechnicalRefs = [];\r\n    this.invalid_ref = false;\r\n\r\n    if (this.selectedFile) {\r\n      const idFile = (Date.now() + Math.floor(Math.random() * 1000)).toString();\r\n      this.fileService.extractFileData(this.selectedFile, idFile).subscribe({\r\n        next: (response) => {\r\n          const jsonString = response?.choices[0]?.message?.content;\r\n          const cleanedJsonString = jsonString.replace(/```|json/g, '');\r\n          const cleanedResponse = this.parseJsonString(cleanedJsonString);\r\n          const products: ProductsOCR = cleanedResponse.Products;\r\n          this.registerForm.patchValue({\r\n            fileId: idFile\r\n          });\r\n          if (products) {\r\n            if (products.length == 1) {\r\n              this.productOCR = cleanedResponse.Products[0];\r\n              if (this.productOCR.CommercialRef) {\r\n                this.refencielService.searchProductByCommercialRef(this.productOCR.CommercialRef).subscribe(\r\n                  data => {\r\n                    if (data && data.length > 0) {\r\n                      this.productByRef = data[0];\r\n                      this.suggestedTechnicalRefs  = this.productByRef.technicalRefs ? this.productByRef.technicalRefs : [];\r\n                      let prd: ProductXS = {\r\n                        commercialRef: this.productOCR?.CommercialRef,\r\n                        PurchaseDate: this.productOCR?.PurchaseDate,\r\n                      }\r\n                      if (this.productByRef) {\r\n                          const techRef  =  this.suggestedTechnicalRefs.length == 1 ? this.suggestedTechnicalRefs[0] : undefined;\r\n                        prd = {\r\n                          commercialRef: this.productOCR?.CommercialRef,\r\n                          technicalRef: techRef,\r\n                          brand: this.productByRef?.brand,\r\n                          PurchaseDate: this.productOCR?.PurchaseDate,\r\n                          family: this.productByRef?.family,\r\n                          fullDescription: this.productByRef?.fullDescription\r\n                        }\r\n                      }\r\n                      if (this.productByRef && (this.productByRef.isPEM == false || this.productByRef.isPEM == null)) {\r\n                        this.openIsGEMPopup();\r\n                      } else {\r\n                        this.registerForm = this.onSetFrom(prd);\r\n                      }\r\n                    } else {\r\n                      this.handleInvalidInvoice();\r\n                    }\r\n                  },\r\n                  err => {\r\n                    this.handleInvalidInvoice();\r\n                  }\r\n                );\r\n              } else {\r\n                this.handleInvalidInvoice();\r\n              }\r\n            } else {\r\n              const commercialRefChecks = products.map(product => product?.CommercialRef)\r\n                .filter((ref): ref is string => ref !== undefined)\r\n                .map(ref =>\r\n                  this.refencielService.searchProductByCommercialRef(ref).pipe(\r\n                    map(data => (data && data.length > 0 ? ref : null)))\r\n                );\r\n\r\n              forkJoin(commercialRefChecks).subscribe(validRefs => {\r\n                this.suggestedCommercialRefs = validRefs.filter(ref => ref !== null) as string[];\r\n\r\n                if (this.suggestedCommercialRefs.length === 0) {\r\n                  this.handleInvalidInvoice();\r\n                } else {\r\n                  this.registerForm = this.onSetFrom({ PurchaseDate: products[0]?.PurchaseDate });\r\n                  this.autoComplete.show();\r\n                }\r\n              });\r\n            }\r\n          } else {\r\n            this.handleInvalidInvoice();\r\n          }\r\n          this.loading = false;\r\n        },\r\n        error: (error) => {\r\n          console.error('Error uploading file:', error);\r\n          this.handleInvalidInvoice();\r\n          this.loading = false;\r\n        }\r\n      });\r\n    }\r\n  }\r\n  private handleInvalidInvoice(): void {\r\n    this.messageService.add({\r\n      summary: 'Erreur',\r\n\r\n      severity: 'error',\r\n      detail: \"Veuillez télécharger une facture valide avec des références produits reconnues.\"\r\n    });\r\n\r\n    // Reset form and file\r\n    this.selectedFile = null;\r\n    this.registerForm = this.onItniFrom();\r\n    this.invalid_ref = false;\r\n    this.suggestedCommercialRefs = [];\r\n    this.suggestedTechnicalRefs = [];\r\n    this.registerForm.patchValue({\r\n      fileUpload: null\r\n    });\r\n  }\r\n  onItniFrom() {\r\n    return this.formBuilder.group({\r\n      fullDescription: ['', Validators.required],\r\n      productReference: ['', Validators.required],\r\n      productTechReference: [null, Validators.required],\r\n      salesDate: [null, Validators.required],\r\n      brand: ['', Validators.required],\r\n      family: ['', Validators.required],\r\n      fileUpload: [null, Validators.required],\r\n      fileId: ['']\r\n    });\r\n  }\r\n\r\n  onSetFrom(prd?: ProductXS) {\r\n    return this.formBuilder.group({\r\n      fullDescription: [prd?.fullDescription],\r\n      productReference: [prd?.commercialRef, Validators.required],\r\n      productTechReference: [prd?.technicalRef ?? null, Validators.required],\r\n      brand: [prd?.brand],\r\n      family: [prd?.family],\r\n      salesDate: [prd?.PurchaseDate != null ? new Date(prd.PurchaseDate) : null, Validators.required],\r\n      fileUpload: [this.selectedFile, Validators.required] , // Add file upload validation\r\n      fileId: [this.registerForm.value.fileId]\r\n    });\r\n  }\r\n\r\n  onSelectProduct(event: AutoCompleteSelectEvent) {\r\n    this.invalid_ref = false;\r\n    this.suggestedTechnicalRefs = [];\r\n    this.refencielService.searchProductByCommercialRef(event.value).subscribe(\r\n      (data: ProductsXS) => {\r\n        if (data) {\r\n          if (data[0].isPEM == true) {\r\n            this.suggestedTechnicalRefs  = data[0].technicalRefs ? data[0].technicalRefs : [];\r\n            const techRef  =  this.suggestedTechnicalRefs.length == 1 ? this.suggestedTechnicalRefs[0] : undefined;\r\n            const prd: ProductXS = {\r\n              commercialRef: data[0]?.commercialRef,\r\n              technicalRef: techRef ,\r\n              brand: data[0]?.brand,\r\n              family: data[0]?.family,\r\n              fullDescription: data[0]?.fullDescription,\r\n              PurchaseDate: this.registerForm.value.salesDate,\r\n            }\r\n            this.registerForm = this.onSetFrom(prd);\r\n          } else {\r\n            this.openIsGEMPopup();\r\n          }\r\n        }\r\n      });\r\n  }\r\n\r\n  displayReferences(event: AutoCompleteCompleteEvent) {\r\n    this.invalid_ref = false;\r\n    this.suggestedCommercialRefs = [];\r\n    if (event.query && event.query.length > 0) {\r\n      this.getProductsByRef(event.query)\r\n    } else {\r\n      this.invalid_ref = false;\r\n    }\r\n  }\r\n\r\n  getProductsByRef(ref: string) {\r\n    this.autoComplete_loading = true;\r\n    this.refencielService.searchProductByCommercialRef(ref).subscribe(\r\n      data => {\r\n        this.suggestedCommercialRefs = data.map(product => product.commercialRef).filter((ref): ref is string => ref !== undefined);\r\n        if (this.suggestedCommercialRefs.length == 0 && ref != '') {\r\n          this.invalid_ref = true;\r\n        }\r\n        this.autoComplete_loading = false;\r\n      },\r\n      _ => {\r\n        console.error(\"API SearchProductByCommercialRef DOWN\");\r\n        this.autoComplete_loading = false;\r\n      }\r\n    )\r\n  }\r\n\r\n  closePopup() {\r\n    this.ref.close(false);\r\n    this.registerForm = this.onItniFrom();\r\n    this.invalid_ref = false;\r\n    this.suggestedTechnicalRefs = [];\r\n  }\r\n\r\n  onRemoveFile() {\r\n    this.selectedFile = null;\r\n    this.invalid_ref = false;\r\n    this.registerForm = this.onItniFrom();\r\n    this.suggestedTechnicalRefs = [];\r\n  }\r\n\r\n  submit() {\r\n    let salesDate = new Date(this.registerForm.value.salesDate);\r\n    const year = salesDate.getFullYear();\r\n    const month = String(salesDate.getMonth() + 1).padStart(2, '0');\r\n    const day = String(salesDate.getDate()).padStart(2, '0');\r\n    const formattedSalesDate = `${year}-${month}-${day}`;\r\n    this.submitted = true;\r\n\r\n    if (!this.selectedFile) {\r\n      this.messageService.add({\r\n        severity: 'error',\r\n        summary: 'Erreur',\r\n        detail: \"Le téléchargement de la facture est obligatoire.\"\r\n      });\r\n      return;\r\n    }\r\n\r\n    if (this.registerForm.valid && this.invalid_ref == false) {\r\n      this.refencielService.createCDMBaseWarranties(this.registerForm.value.productTechReference, formattedSalesDate, this.registerForm.value.fileId)\r\n        .subscribe(\r\n          (data: CreateCDMBaseWarrantiesResponse[]) => {\r\n            const response: CreateCDMBaseWarrantiesResponse = data[0];\r\n            if (response.result == false) {\r\n              response.errors.forEach(err => {\r\n                switch (err) {\r\n                  case \"ContractExists\":\r\n                    this.messageService.add({\r\n                      summary: 'Erreur',\r\n                      severity: 'error', detail: \"Cet appareil est déjà enregistré dans votre liste des appareils\"\r\n                    });\r\n                    break;\r\n                  case \"ContractYetCreated\":\r\n                    this.messageService.add({\r\n                      summary: 'Erreur',\r\n                      severity: 'error', detail: \"Ce contrat a déjà été créé.\"\r\n                    });\r\n                    break;\r\n                  case \"ContractExistsInGcplus\":\r\n                    this.messageService.add({\r\n                      summary: 'Erreur',\r\n                      severity: 'error', detail: \"Le contrat existe déjà dans Gcplus.\"\r\n                    });\r\n                    break;\r\n                  case \"EmailMandatory\":\r\n                    this.messageService.add({\r\n                      summary: 'Erreur',\r\n                      severity: 'error', detail: \"L'adresse email est obligatoire pour créer un contrat.\"\r\n                    });\r\n                    break;\r\n                  case \"ServiceNotAvailableInDomTom\":\r\n                    this.messageService.add({\r\n                      summary: 'Erreur',\r\n                      severity: 'error', detail: \"Une erreur s'est produite sur le serveur. Veuillez réessayer plus tard.\"\r\n                    });\r\n                    break;\r\n                  case \"RefProductNotValid\":\r\n                    this.messageService.add({\r\n                      summary: 'Erreur',\r\n                      severity: 'error', detail: \"La référence commerciale saisie est incorrecte.\"\r\n                    });\r\n                    this.invalid_ref = true;\r\n                    break;\r\n                  case \"RefProductIsEmty\":\r\n                    this.messageService.add({\r\n                      summary: 'Erreur',\r\n                      severity: 'error', detail: \"La référence produit ne peut pas être vide.\"\r\n                    });\r\n                    break;\r\n                  case \"SaleDateNotValid\":\r\n                    this.messageService.add({\r\n                      summary: 'Erreur',\r\n                      severity: 'error', detail: \"La date d'achat est invalide.\"\r\n                    });\r\n                    break;\r\n                  default:\r\n                    this.messageService.add({\r\n                      summary: 'Erreur',\r\n                      severity: 'error', detail: \"Une erreur inconnue s'est produite.\"\r\n                    });\r\n                    break;\r\n                }\r\n\r\n              });\r\n            } else if (response.result == true) {\r\n                this.registerForm = this.onItniFrom();\r\n                this.suggestedTechnicalRefs = [];\r\n                this.selectedFile = null;\r\n                this.submitted = false;\r\n                this.ref.close(true);\r\n            }\r\n          },\r\n          error => {\r\n            this.submitted = false;\r\n            this.messageService.add({\r\n              summary: 'Erreur',\r\n              severity: 'error', detail: \"Une erreur s'est produite sur le serveur. Veuillez réessayer plus tard.\"\r\n            });\r\n            this.invalid_ref = false;\r\n          }\r\n        )\r\n    }\r\n\r\n  }\r\n  parseJsonString(jsonString: string): any {\r\n    try {\r\n      const parsedData = JSON.parse(jsonString);\r\n      return parsedData;\r\n    } catch (error) {\r\n      this.loading = false;\r\n      console.error('Error parsing JSON string:', error);\r\n      return null;\r\n    }\r\n  }\r\n\r\n  openIsGEMPopup() {\r\n    this.registerForm = this.onItniFrom();\r\n    this.invalid_ref = false;\r\n    this.selectedFile = null;\r\n    this.submitted = false;\r\n    this.dialogService.open(IsGEMPopupComponent, {\r\n      width: '42vw',\r\n      showHeader: false,\r\n      contentStyle: { overflow: 'auto' },\r\n      dismissableMask: true,\r\n      closeOnEscape: true,\r\n      breakpoints: {\r\n        '960px': '60vw',\r\n        '640px': '70w',\r\n      },\r\n    });\r\n  }\r\n  onSelectProductByTechRef(event: any){\r\n\r\n  }\r\n  get f() {\r\n    return this.registerForm.controls;\r\n  }\r\n\r\n}\r\n","<div class=\"device-popup\">\r\n  <div class=\"device-popup-header\">\r\n    <div class=\"text-xl font-bold\">Ajouter un nouvel appareil.</div>\r\n    <img class=\"ml-auto cursor-pointer\" (click)=\"closePopup()\"\r\n      [src]=\"'assets/' + this.applicationName + '/close-icon.svg'\" alt=\"close\">\r\n  </div>\r\n  <form [formGroup]=\"registerForm\">\r\n\r\n    <p class=\"font-bold mt-7\">Vous pouvez ajouter un nouvel appareil en important une facture ou en remplissant le\r\n      formulaire ci-dessous. </p>\r\n    <div class=\"grid\">\r\n      <div class=\"col-12 md:col-12 primary-ligth-bg\">\r\n        <label class=\"block text-base font-bold mb-2 required-input\"> Champ obligatoire</label>\r\n        <acf-device-attachement (filesChanged)=\"onFilesChanged($event)\"\r\n          *ngIf=\"!loading else loader\"></acf-device-attachement>\r\n        <div class=\"acf-invalid-feedback\" *ngIf=\"submitted && !selectedFile\">\r\n          Le téléchargement de la facture est obligatoire. </div>\r\n\r\n        <div class=\"file\" *ngIf=\"selectedFile && !loading\">\r\n          <div class=\"flex align-items-center\"> <img src=\"assets/icons/file.svg\" alt=\"file\">\r\n            <p class=\"filename\"> {{ selectedFile.name }} </p>\r\n          </div>\r\n          <img src=\"assets/icons/close.svg\" alt=\"close\" (click)=\"onRemoveFile()\" class=\"cursor-pointer\">\r\n        </div>\r\n      </div>\r\n\r\n      <ng-template #loader>\r\n        <div class=\"lds-dual-ring\"></div>\r\n      </ng-template>\r\n\r\n      <div class=\"col-12\">\r\n        <label class=\"block text-base font-bold mb-2 required-input\" for=\"productReference\">Référence commerciale\r\n        </label>\r\n        <p-autoComplete #autoComplete [style]=\"{'width':'100%'}\" [inputStyle]=\"{'width':'100%'}\"\r\n          [suggestions]=\"suggestedCommercialRefs\" (completeMethod)=\"displayReferences($event)\"\r\n          formControlName=\"productReference\" (onSelect)=\"onSelectProduct($event)\" minLength=\"4\"\r\n          [ngClass]=\"{ 'acf-invalid-autocomplete':((submitted || f['productReference'].dirty) && f['productReference'].errors) || invalid_ref }\"\r\n          [emptyMessage]=\"autoComplete_loading ? 'Chargement en cours...': 'Aucune référence trouvée'\">\r\n          <ng-template let-ref pTemplate=\"item\"> {{ref}} </ng-template>\r\n        </p-autoComplete>\r\n        <div class=\"acf-invalid-feedback\"\r\n          *ngIf=\"(submitted || f['productReference'].dirty) && f['productReference'].errors\">\r\n          <div *ngIf=\"f['productReference'].errors['required']\">Ce champ est obligatoire.</div>\r\n        </div>\r\n        <div class=\"acf-invalid-feedback\" *ngIf=\"invalid_ref && !f['productReference'].errors\">La référence commerciale\r\n          saisie est incorrecte.</div>\r\n      </div>\r\n\r\n      <div class=\"col-12\">\r\n       \r\n           <label class=\"block text-base font-bold mb-2 required-input\" for=\"productTechReference\">Référence technique\r\n        </label>       \r\n       \r\n           <p-dropdown class=\"w-full\" id=\"productTechReference\" formControlName=\"productTechReference\" [options]=\"suggestedTechnicalRefs\"\r\n                  [filter]=\"true\"  [lazy]=\"true\"\r\n                  emptyFilterMessage=\"Aucune référence trouvée\" [showClear]=\"true\" emptyMessage=\"Aucune référence trouvée\"\r\n                  (onChange)=\"onSelectProductByTechRef($event)\"\r\n                  [ngClass]=\"{ 'acf-invalid-dropdown': (f['productTechReference'].dirty || submitted) && f['productTechReference'].errors }\">\r\n                  <ng-template let-ref pTemplate=\"item\">\r\n                    <div class=\"flex align-items-center gap-2\">\r\n                      <div> {{ ref }}</div>\r\n                    </div>\r\n                  </ng-template>\r\n           </p-dropdown>\r\n\r\n\r\n        <!-- <input pInputText class=\"w-full\" id=\"productTechReference\" formControlName=\"productTechReference\"\r\n          [ngClass]=\"{ 'acf-invalid-input':(submitted || f['productTechReference'].dirty) && f['productTechReference'].errors }\" /> -->\r\n        <div class=\"acf-invalid-feedback\"\r\n          *ngIf=\"(submitted || f['productTechReference'].dirty) && f['productTechReference'].errors\">\r\n          <div *ngIf=\"f['productTechReference'].errors['required']\">Ce champ est obligatoire.</div>\r\n        </div>\r\n         <a [href]=\"reference_help_center_url\" target=\"_blank\" class=\"acf-primary-link text-xs\">Comment trouver la référence de votre appareil ?</a>\r\n      </div>\r\n\r\n      <div class=\"col-12\">\r\n        <label class=\"block text-base font-bold mb-2 required-input\" for=\"brand\">Marque </label>\r\n        <input pInputText class=\"w-full\" id=\"brand\" formControlName=\"brand\"\r\n          [ngClass]=\"{ 'acf-invalid-input':(submitted || f['brand'].dirty) && f['brand'].errors }\" />\r\n        <div class=\"acf-invalid-feedback\" *ngIf=\"(submitted || f['brand'].dirty) && f['brand'].errors\">\r\n          <div *ngIf=\"f['brand'].errors['required']\">Ce champ est obligatoire.</div>\r\n        </div>\r\n      </div>\r\n\r\n      <div class=\"col-12\">\r\n        <label class=\"block text-base font-bold mb-2 required-input\" for=\"family\">Famille </label>\r\n        <input pInputText class=\"w-full\" id=\"family\" formControlName=\"family\"\r\n          [ngClass]=\"{ 'acf-invalid-input':(submitted || f['family'].dirty) && f['family'].errors }\" />\r\n        <div class=\"acf-invalid-feedback\" *ngIf=\"(submitted || f['family'].dirty) && f['family'].errors\">\r\n          <div *ngIf=\"f['family'].errors['required']\">Ce champ est obligatoire.</div>\r\n        </div>\r\n      </div>\r\n\r\n      <div class=\"col-12 mb-4\">\r\n        <label class=\"block text-base font-bold mb-2 required-input\" for=\"salesDate\">Date d'achat </label>\r\n        <p-datepicker  dateFormat=\"dd/mm/yy\" [style]=\"{'width':'100%','border-radius':'0cm'}\" formControlName=\"salesDate\"\r\n          styleClass=\"w-calendar\" autocomplete=\"one-time-code\" [maxDate]=\"maxDate\"\r\n          [ngClass]=\"{ 'acf-invalid-date': (f['salesDate'].dirty || submitted) && f['salesDate'].errors}\">\r\n        </p-datepicker >\r\n\r\n        <div class=\"acf-invalid-feedback\" *ngIf=\"(submitted || f['salesDate'].dirty) && f['salesDate'].errors\">\r\n          <div *ngIf=\"f['salesDate'].errors['required']\">Ce champ est obligatoire.</div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n    <div class=\"flex justify-content-end\">\r\n      <button pButton pRipple type=\"submit\" label=\"Ajouter un appareil\" class=\"acf-primary-button\"\r\n        (click)=\"submit()\"></button>\r\n    </div>\r\n  </form>\r\n</div>\r\n<p-toast />","import { Component, Optional } from '@angular/core';\r\nimport { DynamicDialogRef } from 'primeng/dynamicdialog';\r\nimport { Inject } from '@angular/core';\r\nimport { LIB_CONFIG, LibConfig } from '../../config.token';;\r\nimport { DataStoreService } from '../../services/data-store.service';\r\n\r\n@Component({\r\n    selector: 'acf-connected-oow-popup',\r\n    templateUrl: './connected-oow-popup.component.html',\r\n    styleUrl: './connected-oow-popup.component.scss',\r\n    standalone: false\r\n})\r\nexport class ConnectedOowPopupComponent {\r\n\r\n  applicationName: string = '';\r\n  supportEmail = this.config.support.email;\r\n  supportPhone = this.config.support.phone;\r\n  constructor(\r\n     private readonly store: DataStoreService,\r\n    @Optional() public ref: DynamicDialogRef,\r\n    @Inject(LIB_CONFIG) private config: LibConfig\r\n  ) {\r\n    this.applicationName = this.store.getApplication();\r\n  }\r\n  closePopup() {\r\n    this.ref.close();\r\n  }\r\n}\r\n","<div class=\"flex justify-content-end\">\r\n    <img class=\"ml-auto cursor-pointer\" (click)=\"closePopup()\"\r\n        [src]=\"'assets/' + this.applicationName + '/close-icon.svg'\" alt=\"close\">\r\n</div>\r\n<div class=\"is-gem-popup\">\r\n    <p class=\"text-center font-bold mt-4 line-height-3\">\r\n        Nous vous informons que pour le moment les incidents concernant les petits électroménagers sous garantie ne\r\n        peuvent pas être pris en charge directement via notre application. Nous vous remercions de votre compréhension.<br>\r\n        Nous vous encourageons à contacter notre<a target=\"_blank\"\r\n        href=\"https://www.bosch-home.fr/nos-services/contact-et-info/contact-sav-hotline#tab-navigation\"\r\n        class=\"acf-primary-link\"> service client</a>.\r\n    </p>\r\n    <div class=\"flex justify-content-center mt-3 mb-3\">\r\n        <button pButton pRipple type=\"submit\" label=\"Fermer\" class=\"acf-secondary-button\"\r\n            (click)=\"closePopup()\"></button>\r\n    </div>\r\n</div>","import { Component, Optional } from '@angular/core';\r\nimport { DataStoreService } from '../../services/data-store.service';\r\nimport { DynamicDialogRef } from 'primeng/dynamicdialog';\r\nimport { Inject } from '@angular/core';\r\nimport { LIB_CONFIG, LibConfig } from '../../config.token';;\r\n@Component({\r\n  selector: 'acf-connected-iw-popup',\r\n  standalone: false,\r\n  templateUrl: './connected-iw-popup.component.html',\r\n  styleUrl: './connected-iw-popup.component.scss'\r\n})\r\nexport class ConnectedIwPopupComponent {\r\n\r\n  applicationName: string = '';\r\n  supportEmail = this.config.support.email;\r\n  supportPhone = this.config.support.phone;\r\n  constructor(\r\n     private readonly store: DataStoreService,\r\n    @Optional() public ref: DynamicDialogRef,\r\n    @Inject(LIB_CONFIG) private config: LibConfig\r\n  ) {\r\n    this.applicationName = this.store.getApplication();\r\n  }\r\n  closePopup() {\r\n    this.ref.close();\r\n  }\r\n}\r\n","<div class=\"flex justify-content-end\">\r\n    <img class=\"ml-auto cursor-pointer\" (click)=\"closePopup()\"\r\n        [src]=\"'assets/' + this.applicationName + '/close-icon.svg'\" alt=\"close\">\r\n</div>\r\n<div class=\"is-gem-popup\">\r\n    <p class=\"text-center font-bold mt-4 line-height-3\">\r\n    Nous vous informons que pour le moment les incidents concernant les petits électroménagers hors garantie ne\r\n        peuvent pas être pris en charge directement via notre application. Nous vous remercions de votre compréhension.<br>\r\n        Nous vous encourageons à contacter notre <a target=\"_blank\"\r\n        href=\"https://www.bosch-home.fr/nos-services/contact-et-info/contact-sav-hotline#tab-navigation\"\r\n        class=\"acf-primary-link\"> service client</a>.\r\n    </p>\r\n    <div class=\"flex justify-content-center mt-3 mb-3\">\r\n        <button pButton pRipple type=\"submit\" label=\"Fermer\" class=\"acf-secondary-button\"\r\n            (click)=\"closePopup()\"></button>\r\n    </div>\r\n</div>","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { MappedProduct, MappedProducts, Product, Products } from '../../../models/shared/product';\r\nimport { Router } from '@angular/router';\r\nimport { RoutesPaths } from '../../../enums/routePaths';\r\nimport { MandateService } from '../../../services/mandate.service';\r\nimport { ConfirmationService } from 'primeng/api';\r\nimport { DeleteContractProductRequest } from '../../../models/request/delete-product.request';\r\nimport { DataStoreService } from '../../../services/data-store.service';\r\nimport { ConnectedOowPopupComponent } from '../../connected-oow-popup/connected-oow-popup.component';\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\nimport { ConnectedIwPopupComponent } from '../../connected-iw-popup/connected-iw-popup.component';\r\n\r\n@Component({\r\n  selector: 'acf-devices-table',\r\n  templateUrl: './devices-table.component.html',\r\n  styleUrl: './devices-table.component.scss',\r\n  standalone: false\r\n})\r\nexport class DevicesTableComponent {\r\n  @Input() devices!: MappedProducts;\r\n  @Input() all!: Products;\r\n\r\n  @Output() deletionCompleted = new EventEmitter<string>();\r\n\r\n  constructor(private readonly dialogService: DialogService,\r\n    private confirmationService: ConfirmationService, private readonly router: Router, private readonly mandateService: MandateService, private readonly store: DataStoreService) {\r\n  }\r\n\r\n\r\n  viewServices(device: Product) {\r\n    this.store.saveProduct(device);\r\n    this.router.navigate([RoutesPaths.device_details], {\r\n      state: {\r\n        //  device \r\n      }\r\n    });\r\n  }\r\n\r\n  declareIncident(device: Product) {\r\n    if (device.endDate) {\r\n      const inputDate = new Date(device.endDate);\r\n      const currentDate = new Date();\r\n      if (inputDate > currentDate) {\r\n        // this.open_OOW_Popup();\r\n        this.store.updateIsOutWaranty(false); // UPDATE HG //\r\n        const mappedDevice: MappedProduct = {\r\n          name: device.fullDescription || '',\r\n          brand: device.brand || '',\r\n          family: device.family || '',\r\n          commref: device.commercialReference || '',\r\n          refTech: device.technicalReference || '',\r\n          saleDate: device.saleDate || ''\r\n        }\r\n        this.store.saveDevice(mappedDevice);\r\n        this.router.navigate([RoutesPaths.connectedStep2]);\r\n      } else {\r\n          this.store.updateIsOutWaranty(true); // this.open_IW_Popup(); // UPDATE HG // SAME PROCESS 4 HG & SG\r\n          const mappedDevice: MappedProduct = {\r\n          name: device.fullDescription || '',\r\n          brand: device.brand || '',\r\n          family: device.family || '',\r\n          commref: device.commercialReference || '',\r\n          refTech: device.technicalReference || '',\r\n          saleDate: device.saleDate || ''\r\n        }\r\n        this.store.saveDevice(mappedDevice);\r\n        this.router.navigate([RoutesPaths.connectedStep2]);\r\n      }\r\n    }\r\n  }\r\n\r\n  open_OOW_Popup() {\r\n    this.dialogService.open(ConnectedOowPopupComponent, {\r\n      width: '42vw',\r\n      showHeader: false,\r\n      dismissableMask: true,\r\n      closeOnEscape: true,\r\n      contentStyle: { overflow: 'auto' },\r\n      breakpoints: {\r\n        '960px': '60vw',\r\n        '640px': '70w',\r\n      },\r\n    });\r\n  }\r\n  open_IW_Popup\r\n    () {\r\n    this.dialogService.open(ConnectedIwPopupComponent, {\r\n      width: '42vw',\r\n      dismissableMask: true,\r\n      closeOnEscape: true,\r\n      showHeader: false,\r\n      contentStyle: { overflow: 'auto' },\r\n      breakpoints: {\r\n        '960px': '60vw',\r\n        '640px': '70w',\r\n      },\r\n    });\r\n  }\r\n  deleteDevice(event: Event, device: Product) {\r\n    this.confirmationService.confirm({\r\n      target: event.target as EventTarget,\r\n      message: \"êtes-vous sûr de vouloir supprimer l'appareil ?\",\r\n      header: \"Surpression de l'appareil\",\r\n      acceptButtonStyleClass: 'acf-primary-button',\r\n      rejectButtonStyleClass: 'acf-secondary-button',\r\n      acceptIcon: 'none',\r\n      rejectIcon: 'none',\r\n      acceptLabel: 'Supprimer',\r\n      rejectLabel: 'Annuler',\r\n      accept: () => {\r\n        this.deleteSelectedContracts(device)\r\n      },\r\n      reject: () => { },\r\n    });\r\n\r\n  }\r\n\r\n  deleteSelectedContracts(device: Product) {\r\n    const request: DeleteContractProductRequest = {\r\n      applicationName: this.store.getApplication(),\r\n      userName: this.store.getUserName(),\r\n      contractsToDelete: [{\r\n        contId: device.contractId || 0,\r\n        contPrdId: device.contractProductId || 0\r\n      }]\r\n    };\r\n    this.mandateService.deleteContractProduct(request).subscribe(response => {\r\n      // Filter out contracts with MandateExists errors\r\n      const mandateExistsErrors = response.contractsToDelete.filter(contract => contract.result === false && contract.errors?.includes(\"MandateExists\"));\r\n\r\n      // Check if there are any \"MandateExists\" errors\r\n      if (mandateExistsErrors.length > 0) {\r\n        // Case when there is at least one \"MandateExists\" error\r\n        if (mandateExistsErrors.length === 1) {\r\n          // Only one \"MandateExists\" error\r\n          const contract = mandateExistsErrors[0];\r\n          this.deletionCompleted.emit(`L'appareil n'a pas pu être supprimé car il est lié à une intervention en cours: ${contract.commercialRef}`);\r\n        } else if (mandateExistsErrors.length === response.contractsToDelete.length) {\r\n          // All devices have \"MandateExists\" errors\r\n          const errorMessage = mandateExistsErrors.map(contract => contract.commercialRef).join(', ');\r\n          this.deletionCompleted.emit(`Les appareils n'ont pas pu être supprimés car ils sont tous liés à une intervention en cours: ${errorMessage}.`);\r\n        } else {\r\n          // Partial deletion (some devices failed, others succeeded)\r\n          const errorMessage = mandateExistsErrors.map(contract => contract.commercialRef).join(', ');\r\n          this.deletionCompleted.emit(`Suppression partielle effectuée! Certains appareils n'ont pas pu être supprimés car ils sont liés à une intervention en cours: ${errorMessage}. Les autres appareils ont été supprimés avec succès.`);\r\n        }\r\n      } else {\r\n        // Success case when no \"MandateExists\" errors\r\n        this.deletionCompleted.emit('L\\'appareil a été supprimé avec succès.');\r\n      }\r\n    }, error => {\r\n      console.error('Error deleting contracts:', error);\r\n    });\r\n\r\n\r\n  }\r\n}\r\n","<p-table [value]=\"all\" [first]=\"0\" [paginator]=\"true\" [filterDelay]=\"0\" [rows]=\"10\" responsiveLayout=\"stack\"\r\n    [showCurrentPageReport]=\"true\"\r\n    [currentPageReportTemplate]=\"'Montrer de {first} à {last} des {totalRecords} appareils'\">\r\n    <ng-template pTemplate=\"header\">\r\n        <tr>\r\n            <th pSortableColumn=\"name\">Nom de l'appareil\r\n                <p-sortIcon field=\"name\" tooltipPosition=\"top\"></p-sortIcon>\r\n            </th>\r\n            <th pSortableColumn=\"brand\">Marque\r\n                <p-sortIcon field=\"brand\" tooltipPosition=\"top\"></p-sortIcon>\r\n            </th>\r\n            <th pSortableColumn=\"commref\">Référence commerciale\r\n                <p-sortIcon field=\"commref\" tooltipPosition=\"top\"></p-sortIcon>\r\n            </th>\r\n            <th pSortableColumn=\"remainingMonths\">Statut de garantie\r\n                <p-sortIcon field=\"remainingMonths\" tooltipPosition=\"top\"></p-sortIcon>\r\n            </th>\r\n            <th pSortableColumn=\"saleDate\">Date d'achat\r\n                <p-sortIcon field=\"saleDate\" tooltipPosition=\"top\"></p-sortIcon>\r\n            </th>\r\n            <th>Actions</th>\r\n        </tr>\r\n    </ng-template>\r\n    <ng-template pTemplate=\"body\" let-device>\r\n        <tr>\r\n            <td>{{ device.fullDescription }}</td>\r\n            <td>{{ device.brand }}</td>\r\n            <td>{{ device.commercialReference }}</td>\r\n            <td>\r\n                <div\r\n                    [class]=\"'status'+(device.remainingMonths > 0 ? ' status-OUTOFWARRANTY' : ' status-UNDERWARRANTY')\">\r\n                    {{ device.remainingMonths > 0 ? 'Sous garantie' : 'Hors garantie' }}\r\n                </div>\r\n\r\n            </td>\r\n            <td>\r\n                <div class=\"text-center\">\r\n                    {{ device.saleDate | date:'dd/MM/yyyy' }}\r\n                </div>\r\n            </td>\r\n            <td class=\"flex justify-content-center\">\r\n                <i class=\"pi pi-ellipsis-h cursor-pointer text-center\" style=\"font-size: 2rem\"\r\n                    (click)=\"overlayPanel.toggle($event)\"></i>\r\n\r\n                <p-overlayPanel #overlayPanel>\r\n                    <ng-template pTemplate>\r\n                        <div class=\"w-12rem font-semibold py-2 m-2 cursor-pointer\" (click)=\"viewServices(device)\">Voir\r\n                            services\r\n                        </div>\r\n                        <div class=\"w-12rem font-semibold py-2 m-2 cursor-pointer\" (click)=\"declareIncident(device)\">\r\n                            Déclarer incident</div>\r\n                        <div class=\"w-12rem font-semibold py-2 m-2 cursor-pointer\"\r\n                            (click)=\"deleteDevice($event,device)\">\r\n                            Supprimer\r\n                        </div>\r\n\r\n                    </ng-template>\r\n                </p-overlayPanel>\r\n            </td>\r\n\r\n        </tr>\r\n    </ng-template>\r\n</p-table>\r\n<p-confirmDialog [style]=\"{width: '50vw'}\" />","import { Injectable } from '@angular/core';\r\nimport { Chart, registerables } from 'chart.js';\r\n\r\n@Injectable({\r\n    providedIn: 'root'\r\n})\r\nexport class ChartService {\r\n\r\n    constructor() {\r\n        Chart.register(...registerables); // Register Chart.js components\r\n    }\r\n\r\n    calculateMonths(date1: Date, date2: Date): number {\r\n        return (\r\n            (date2.getFullYear() - date1.getFullYear()) * 12 +\r\n            (date2.getMonth() - date1.getMonth())\r\n        );\r\n    }\r\n\r\n    generateDonutChartData(startDate: string, endDate: string) {\r\n        const totalMonths = 24;\r\n        const remainingMonths = Math.max(this.calculateMonths(new Date(), new Date(endDate)), 0);\r\n        const usedMonths = totalMonths - remainingMonths;\r\n\r\n        // Set color based on the remaining months\r\n        let remainingColor: string;\r\n        if (remainingMonths === 0) {\r\n            remainingColor = '#F5F5F5'; // Gray for no warranty\r\n        } else if (remainingMonths <= 3) {\r\n            remainingColor = '#FF6840'; // Orange for close to end of warranty\r\n        } else if (remainingMonths <= 6) {\r\n            remainingColor = '#f1b402'; // Yellow for nearing the end\r\n        } else {\r\n            remainingColor = '#7CBC56'; // Green for full warranty\r\n        }\r\n\r\n        const donutData = {\r\n            datasets: [\r\n                {\r\n                    data: [remainingMonths, usedMonths],\r\n                    backgroundColor: [remainingColor, '#F5F5F5'], // Remaining vs used months\r\n                }\r\n            ]\r\n        };\r\n\r\n        const donutOptions = {\r\n            plugins: {\r\n                legend: {\r\n                    position: 'bottom',\r\n                },\r\n                customTextAndLine: { remainingColor }, // Pass the color to the plugin\r\n\r\n            },\r\n            cutout: '80%',\r\n            responsive: true,\r\n            layout: {\r\n                padding: { top: 50 }\r\n            },\r\n            events: []\r\n        };\r\n\r\n        return { donutData, donutOptions, remainingColor, remainingMonths };\r\n    }\r\n    getCustomPlugin() {\r\n        return {\r\n            id: 'customTextAndLine',\r\n            afterDraw(chart: any, args: any, pluginOptions: any) {\r\n                // Use pluginOptions to access the color passed in the chart's options\r\n                const color = pluginOptions.remainingColor;\r\n                const { ctx, chartArea } = chart;\r\n                if (!chartArea) return;\r\n\r\n                const centerX = (chartArea.left + chartArea.right) / 2;\r\n                const startY = 0;\r\n                const endY = 74;\r\n\r\n                ctx.save();\r\n                ctx.beginPath();\r\n                ctx.moveTo(centerX, startY);\r\n                ctx.lineTo(centerX, endY);\r\n                ctx.lineWidth = 8;\r\n                ctx.strokeStyle = color; // Use the passed color for the line\r\n                ctx.stroke();\r\n                ctx.restore();\r\n            }\r\n        };\r\n    }\r\n\r\n\r\n}\r\n","import { Component, OnInit, Input, OnDestroy } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { Chart } from 'chart.js';\r\nimport { ChartService } from '../../../services/chart.service';\r\nimport { DataStoreService } from '../../../services/data-store.service';\r\n\r\n@Component({\n    selector: 'acf-device-chart',\n    templateUrl: './device-chart.component.html',\n    styleUrl: './device-chart.component.scss',\n    standalone: false\n})\r\nexport class DeviceChartComponent implements OnInit, OnDestroy {\r\n  appName: string\r\n  @Input() startDate!: string;\r\n  @Input() endDate!: string;\r\n  @Input() commercialRef!: string;\r\n\r\n  donutData: any;\r\n  donutOptions: any;\r\n  subscription!: Subscription;\r\n  remainingMonths!: number;\r\n  constructor(private chartService: ChartService, private readonly store: DataStoreService) {\r\n    this.appName = this.store.getApplication()\r\n  }\r\n  ngOnInit() {\r\n    this.initCharts();\r\n  }\r\n\r\n  initCharts() {\r\n    const { donutData, donutOptions, remainingColor, remainingMonths } = this.chartService.generateDonutChartData(this.startDate, this.endDate);\r\n    this.donutData = donutData;\r\n    this.donutOptions = donutOptions;\r\n    this.remainingMonths = remainingMonths\r\n    const customPlugin = this.chartService.getCustomPlugin();\r\n    Chart.register(customPlugin);\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    if (this.subscription) {\r\n      this.subscription.unsubscribe();\r\n    }\r\n  }\r\n\r\n  getImageUrl() {\r\n    if (this.commercialRef && this.commercialRef.length > 0) {\r\n      return 'assets/' + this.appName + '/products/' + this.commercialRef + '.jpg'\r\n    } else {\r\n      return 'assets/' + this.appName + '/no-image.svg'\r\n    }\r\n  }\r\n\r\n  handleImageError(event: any) {\r\n    event.target.src = 'assets/' + this.appName + '/no-image.svg';\r\n  }\r\n\r\n}\r\n","<div class=\"flex justify-content-center chart-container align-items-center\t\">\r\n    <img [src]=\"getImageUrl()\" (error)=\"handleImageError($event)\" class=\"device-image border-round\" loading=\"lazy\" />\r\n\r\n    <p-chart type=\"doughnut\" class=\"device-chart\" [data]=\"donutData\" [options]=\"donutOptions\"></p-chart>\r\n\r\n    <div id=\"chartText\" class=\"chart-text\">\r\n        <span class=\"device-months-remaining \">{{ remainingMonths }} Mois</span>\r\n        <div class=\"device-status\">\r\n            {{ remainingMonths ? 'Sous Garantie' : 'Hors Garantie' }}\r\n        </div>\r\n    </div>\r\n\r\n</div>","import {\r\n  Component,\r\n  EventEmitter,\r\n  Input,\r\n  Optional,\r\n  Output,\r\n} from '@angular/core';\r\nimport {\r\n  MappedProduct,\r\n  Product\r\n} from '../../../models/shared/product';\r\nimport { Router } from '@angular/router';\r\nimport { RoutesPaths } from '../../../enums/routePaths';\r\nimport { DialogService, DynamicDialogRef } from 'primeng/dynamicdialog';\r\nimport { ConnectedOowPopupComponent } from '../../connected-oow-popup/connected-oow-popup.component';\r\nimport { DataStoreService } from '../../../services/data-store.service';\r\nimport { ConnectedIwPopupComponent } from '../../connected-iw-popup/connected-iw-popup.component';\r\n\r\n@Component({\r\n  selector: 'acf-device-card',\r\n  templateUrl: './device-card.component.html',\r\n  styleUrl: './device-card.component.scss',\r\n  standalone: false\r\n})\r\nexport class DeviceCardComponent {\r\n  @Input() device!: Product;\r\n  @Input() isSelected: boolean = false;\r\n  @Output() selectionChanged = new EventEmitter<any>();\r\n\r\n  constructor(\r\n    private readonly router: Router,\r\n    private readonly dialogService: DialogService,\r\n    private readonly store: DataStoreService,\r\n    @Optional() public ref: DynamicDialogRef\r\n  ) { }\r\n\r\n  navigate(device: Product) {\r\n    if (device.endDate) {\r\n\r\n      const endDate = new Date(device.endDate);\r\n      const currentDate = new Date();\r\n      if (endDate > currentDate) {\r\n        // this.open_OOW_Popup();\r\n         this.store.updateIsOutWaranty(false); // UPDATE HG //\r\n        const mappedDevice: MappedProduct = {\r\n          name: device.fullDescription || '',\r\n          brand: device.brand || '',\r\n          family: device.family || '',\r\n          commref: device.commercialReference || '',\r\n          refTech: device.technicalReference || '',\r\n          saleDate: device.saleDate || ''\r\n        }\r\n        this.store.saveDevice(mappedDevice);\r\n        this.router.navigate([RoutesPaths.connectedStep2]);\r\n      } else {\r\n        this.store.updateIsOutWaranty(true); //this.open_IW_Popup();  // UPDATE HG // SAME PROCESS 4 HG & SG\r\n        const mappedDevice: MappedProduct = {\r\n          name: device.fullDescription || '',\r\n          brand: device.brand || '',\r\n          family: device.family || '',\r\n          commref: device.commercialReference || '',\r\n          refTech: device.technicalReference || '',\r\n          saleDate: device.saleDate || ''\r\n        }\r\n        this.store.saveDevice(mappedDevice);\r\n        this.router.navigate([RoutesPaths.connectedStep2]);\r\n      }\r\n    }\r\n  }\r\n\r\n  toggleSelection() {\r\n    this.selectionChanged.emit(this.device);\r\n  }\r\n\r\n  viewServices(device: Product) {\r\n    this.store.saveProduct(device);\r\n\r\n    this.router.navigate([RoutesPaths.device_details], {\r\n      state: {\r\n        //device \r\n      },\r\n    });\r\n  }\r\n\r\n  open_OOW_Popup() {\r\n    this.dialogService.open(ConnectedOowPopupComponent, {\r\n      width: '42vw',\r\n      dismissableMask: true,\r\n      closeOnEscape: true,\r\n      showHeader: false,\r\n      contentStyle: { overflow: 'auto' },\r\n      breakpoints: {\r\n        '960px': '60vw',\r\n        '640px': '70w',\r\n      },\r\n    });\r\n  }\r\n\r\n  open_IW_Popup() {\r\n    this.dialogService.open(ConnectedIwPopupComponent, {\r\n      width: '42vw',\r\n      dismissableMask: true,\r\n      closeOnEscape: true,\r\n      showHeader: false,\r\n      contentStyle: { overflow: 'auto' },\r\n      breakpoints: {\r\n        '960px': '60vw',\r\n        '640px': '70w',\r\n      },\r\n    });\r\n  }\r\n\r\n}\r\n","<div class=\"device-card flex flex-column\" *ngIf=\"device.commercialReference && device.endDate && device.startDate\">\r\n\r\n    <p class=\"font-bold h-2rem flex align-items-center mb\">\r\n        <p-checkbox [(ngModel)]=\"isSelected\" (onChange)=\"toggleSelection()\" binary=\"true\" class=\"mr-2\"></p-checkbox>\r\n        {{ device.fullDescription }}\r\n    </p>\r\n    <acf-device-chart [startDate]=\"device.startDate\" [commercialRef]=\"device.commercialReference\"\r\n        [endDate]=\"device.endDate\"></acf-device-chart>\r\n    <p class=\"text-center font-bold\tmb-5\">Acheté le {{ device.startDate | date : 'dd/MM/yyyy' }}</p>\r\n    <button pButton pRipple type=\"submit\" label=\"Voir les services\" class=\"acf-secondary-button mb-3\"\r\n        (click)=\"viewServices(device)\"></button>\r\n    <button pButton pRipple type=\"submit\" label=\"Déclarer un incident\" class=\"acf-primary-button\"\r\n        (click)=\"navigate(device)\"></button>\r\n</div>","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { MappedProduct, MappedProducts, Product, Products } from '../../../models/shared/product';\r\nimport { ConfirmationService, MessageService } from 'primeng/api';\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\nimport { DeleteContractProductRequest } from '../../../models/request/delete-product.request';\r\nimport { MandateService } from '../../../services/mandate.service';\r\nimport { DataStoreService } from '../../../services/data-store.service';\r\n\r\n@Component({\n    selector: 'acf-devices-grid',\n    templateUrl: './devices-grid.component.html',\n    styleUrl: './devices-grid.component.scss',\n    providers: [DialogService, MessageService],\n    standalone: false\n})\r\nexport class DevicesGridComponent {\r\n  @Input() devices!: MappedProducts | any;\r\n  @Input() all!: Products;\r\n  @Output() deletionCompleted = new EventEmitter<string>();\r\n\r\n  constructor(private confirmationService: ConfirmationService, private readonly mandateService: MandateService, private readonly store: DataStoreService) {\r\n  }\r\n  selectedDevices: Products = [];\r\n\r\n  toggleDeviceSelection(device: Product) {\r\n    const index =  this.selectedDevices.findIndex(d => d.contractId === device.contractId);\r\n\r\n    if (index === -1) {\r\n      this.selectedDevices.push(device);\r\n    } else {\r\n      this.selectedDevices.splice(index, 1);\r\n    }\r\n  }\r\n\r\n\r\n  clearSelection(event: Event) {\r\n    this.confirmationService.confirm({\r\n      target: event.target as EventTarget,\r\n      message: \"êtes-vous sûr de vouloir supprimer l'appareil ?\",\r\n      header: \"Surpression de l'appareil\",\r\n      acceptButtonStyleClass: 'acf-primary-button',\r\n      rejectButtonStyleClass: 'acf-secondary-button',\r\n      acceptIcon: 'none',\r\n      rejectIcon: 'none',\r\n      acceptLabel: 'Supprimer',\r\n      rejectLabel: 'Annuler',\r\n      accept: () => {\r\n        this.deleteSelectedContracts()\r\n        this.selectedDevices = [];\r\n\r\n      },\r\n      reject: () => { },\r\n    });\r\n\r\n  }\r\n\r\n  deleteSelectedContracts() {\r\n    const request: DeleteContractProductRequest = {\r\n      applicationName: this.store.getApplication(),\r\n      userName: this.store.getUserName(),\r\n      contractsToDelete: this.selectedDevices.map(device => ({\r\n        contId: device.contractId || 0,\r\n        contPrdId: device.contractProductId || 0\r\n\r\n      }))\r\n    };\r\n\r\n    this.mandateService.deleteContractProduct(request).subscribe(response => {\r\n      // Filter out contracts with MandateExists errors\r\n      const mandateExistsErrors = response.contractsToDelete.filter(contract => contract.result === false && contract.errors?.includes(\"MandateExists\"));\r\n\r\n      // Check if there are any \"MandateExists\" errors\r\n      if (mandateExistsErrors.length > 0) {\r\n        // Case when there is at least one \"MandateExists\" error\r\n        if (mandateExistsErrors.length === 1) {\r\n          // Only one \"MandateExists\" error\r\n          const contract = mandateExistsErrors[0];\r\n          this.deletionCompleted.emit(`L'appareil n'a pas pu être supprimé car il est lié à une intervention en cours: ${contract.commercialRef}`);\r\n        } else if (mandateExistsErrors.length === response.contractsToDelete.length) {\r\n          // All devices have \"MandateExists\" errors\r\n          const errorMessage = mandateExistsErrors.map(contract => contract.commercialRef).join(', ');\r\n          this.deletionCompleted.emit(`Les appareils n'ont pas pu être supprimés car ils sont tous liés à une intervention en cours: ${errorMessage}.`);\r\n        } else {\r\n          // Partial deletion (some devices failed, others succeeded)\r\n          const errorMessage = mandateExistsErrors.map(contract => contract.commercialRef).join(', ');\r\n          this.deletionCompleted.emit(`Suppression partielle effectuée! Certains appareils n'ont pas pu être supprimés car ils sont liés à une intervention en cours: ${errorMessage}. Les autres appareils ont été supprimés avec succès.`);\r\n        }\r\n      } else {\r\n        // Success case when no \"MandateExists\" errors\r\n        this.deletionCompleted.emit('L\\'appareil a été supprimé avec succès.');\r\n      }\r\n    }, error => {\r\n      console.error('Error deleting contracts:', error);\r\n    });\r\n\r\n\r\n  }\r\n\r\n\r\n}\r\n","<div *ngIf=\"selectedDevices && selectedDevices.length > 0\" class=\"selection-summary flex align-items-center mb-4\">\r\n    <div class=\"w-11rem\">\r\n        <span class=\"font-semibold mr-1\">{{ selectedDevices.length }}</span>\r\n        {{ selectedDevices.length === 1 ? 'appareil sélectionné' : 'appareils sélectionnés' }}\r\n    </div>\r\n    <div class=\"delete-box flex align-items-center cursor-pointer\" (click)=\"clearSelection($event)\">\r\n        <i class=\"pi pi-trash ml-2 mr-1\" style=\"font-size: 1rem ; color: #df0029\"></i>\r\n        Supprimer\r\n    </div>\r\n</div>\r\n<div class=\"devices-list grid\">\r\n    <div *ngFor=\"let device of all\" class=\"col-12 md:col-12 xs:col-12 sm:col-12 xl:col-4  lg:col-6\">\r\n        <acf-device-card  [device]=\"device\" [isSelected]=\"selectedDevices.includes(device)\"\r\n            (selectionChanged)=\"toggleDeviceSelection($event)\"></acf-device-card>\r\n    </div>\r\n</div>\r\n<p-toast />\r\n<p-confirmDialog [style]=\"{width: '50vw'}\" />","import { Component, Input, OnInit } from '@angular/core';\r\nimport { DialogService, DynamicDialogRef } from 'primeng/dynamicdialog';\r\nimport { DevicePopupComponent } from './device-popup/device-popup.component';\r\nimport { DataStoreService } from '../../services/data-store.service';\r\nimport {  MessageService } from 'primeng/api';\r\nimport { MappedProducts, Product, Products } from '../../models/shared/product';\r\nimport { MandateService } from '../../services/mandate.service';\r\n\r\n@Component({\r\n    selector: 'acf-devices',\r\n    templateUrl: './devices.component.html',\r\n    styleUrl: './devices.component.scss',\r\n    providers: [MessageService],\r\n    standalone: false\r\n})\r\nexport class DevicesComponent implements OnInit {\r\n  @Input() app: string = '';\r\n  mappedDevices: MappedProducts = [];\r\n  messages!: any[]\r\n  ref: DynamicDialogRef | undefined;\r\n  devices: Products = [];\r\n  constructor(private readonly dialogService: DialogService, private readonly store: DataStoreService,\r\n    private readonly mandateService: MandateService) {\r\n    this.onGetDevicesWarranty();\r\n    this.store.deleteState(); //delete state : incident declatation\r\n\r\n  }\r\n\r\n  viewMode = 'grid';\r\n\r\n  viewModes = [\r\n    { type: 'grid', icon: 'pi pi-th-large' },\r\n    { type: 'list', icon: 'pi pi-list' }\r\n  ];\r\n\r\n  setView(mode: string) {\r\n    this.viewMode = mode;\r\n  }\r\n\r\n  onGetDevicesWarranty() {\r\n    this.mandateService.getDevicesWarranty().subscribe(\r\n      data => {\r\n        this.devices = data;\r\n        this.mappedDevices = data.map((contract) => ({\r\n          name: contract.fullDescription || \"\",\r\n          startDate: contract.startDate || \"\",\r\n          endDate: contract.endDate || \"\",\r\n          commref: contract.commercialReference || \"\",\r\n          saleDate: contract.saleDate || \"\",\r\n          brand: contract.brand || \"\",\r\n          refTech: contract.technicalReference || \"\",\r\n          family: contract.family || \"\",\r\n          // contractId: contract.contractId || 0,\r\n          // contractProductId: contract.contractProductId || 0,\r\n          // remainingMonths: contract.remainingMonths || 0,\r\n        }));\r\n        this.mappedDevices.sort((a, b) => {\r\n          const dateA = new Date(a.saleDate);\r\n          const dateB = new Date(b.saleDate);\r\n          return dateB.getTime() - dateA.getTime();\r\n        });\r\n      },\r\n      err => { console.log(err) });\r\n  }\r\n\r\n  openPopup() {\r\n    this.ref = this.dialogService.open(DevicePopupComponent, {\r\n      width: '50vw',\r\n      showHeader: false,\r\n      contentStyle: { overflow: 'auto' },\r\n        dismissableMask: true,\r\n      closeOnEscape: true,\r\n      breakpoints: {\r\n        '960px': '75vw',\r\n        '640px': '90vw',\r\n      },\r\n    });\r\n    this.ref.onClose.subscribe((isCreated) => {\r\n      if (isCreated == true) {\r\n        this.onGetDevicesWarranty();\r\n        this.messages = [{ severity: 'success', detail: 'Votre appareil a été enregistré avec succès.' }];\r\n        setTimeout(() => {\r\n          this.messages = []; // Clear error message after 5 seconds\r\n        }, 4000);\r\n        //this.messageService.add({ severity: 'success', detail: \"Votre appareil a été enregistré avec succès.\" });\r\n      }\r\n    });\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    // Check if the \"Annuler\" button was clicked \r\n    if (this.store.getMandateCancelledNavigation() == 'true') {\r\n      this.store.deleteMandateCancelledNavigation();\r\n      this.messages = [{ severity: 'success', detail: 'La déclaration a été annulée avec succès.' }];\r\n      setTimeout(() => {\r\n        this.messages = []; // Clear error message after 5 seconds\r\n      }, 5000);\r\n    }\r\n\r\n  }\r\n\r\n  handleDeletionMessage(message: string) {\r\n    this.onGetDevicesWarranty();\r\n    // Set severity based on message content (error or success)\r\n    let severity: string = 'success'; // Default to success\r\n    if (message.includes('intervention en cours')) {\r\n      severity = 'error';  // Set to 'error' if message contains error-related words\r\n    }\r\n    // Create the message with severity and detail\r\n    const deletionMessage = message;\r\n    this.messages = [{ severity: severity, detail: deletionMessage }];\r\n    setTimeout(() => {\r\n      this.messages = [];\r\n    }, 5000);\r\n  }\r\n\r\n}\r\n","<acf-connected-layout [app]=\"app\">\r\n    <div section-actions>\r\n        <div class=\"view-toggle flex align-items-center\">\r\n            <span class=\"mr-2 text-sm\">Paramétrage d’affichage</span>\r\n            <button *ngFor=\"let mode of viewModes\" pButton [icon]=\"mode.icon\" class=\"p-button-rounded p-button-text\"\r\n                (click)=\"setView(mode.type)\" [ngStyle]=\"{ \r\n                    'color': viewMode === mode.type ? '#007bc0' : '#395473'\r\n                  }\">\r\n            </button>\r\n        </div>\r\n\r\n\r\n    </div>\r\n    <div class=\"acf-devices-title-btn mb-3\">\r\n        <p class=\"\">Vous pouvez ajouter un appareil en saisissant les informations ou en téléchargeant votre\r\n            facture.\r\n        </p>\r\n        <button pButton pRipple type=\"submit\" label=\"Ajouter un appareil\" class=\"acf-primary-button\"\r\n            (click)=\"openPopup()\"></button>\r\n    </div>\r\n\r\n    <div class=\"card\">\r\n        <p-messages [(value)]=\"messages\" [closable]=\"true\" />\r\n    </div>\r\n\r\n    <div [ngSwitch]=\"viewMode\">\r\n        <acf-devices-grid *ngSwitchCase=\"'grid'\" [all]=\"devices\" [devices]=\"mappedDevices\"\r\n            (deletionCompleted)=\"handleDeletionMessage($event)\"></acf-devices-grid>\r\n        <acf-devices-table *ngSwitchCase=\"'list'\"  [all]=\"devices\" [devices]=\"mappedDevices\"\r\n            (deletionCompleted)=\"handleDeletionMessage($event)\"></acf-devices-table>\r\n    </div>\r\n</acf-connected-layout>","import { Component, Input } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { DataStoreService } from '../../services/data-store.service';\r\nimport { RoutesPaths } from '../../enums/routePaths';\r\n@Component({\r\n    selector: 'acf-incident-report',\r\n    templateUrl: './incident-report.component.html',\r\n    styleUrl: './incident-report.component.scss',\r\n    standalone: false\r\n})\r\nexport class IncidentReportComponent {\r\n  @Input() app: string = '';\r\n\r\n  constructor(private readonly router: Router, private readonly store: DataStoreService) {\r\n    //const currentStep = this.getCurrentStep();\r\n    this.store.deleteState(); //delete state : incident declatation\r\n    this.router.navigate([RoutesPaths.connectedStep1]);\r\n  }\r\n\r\n  // getCurrentStep(): number {\r\n  //   if (this.store.getStep5Form()) return 6;\r\n  //   if (this.store.getStep4Form()) return 5;\r\n  //   if (this.store.getStep3Form()) return 3;\r\n  //   if (this.store.getStep2Form()) return 2;\r\n  //   if (this.store.getStep1Form()) return 1;\r\n  //   return 1;  \r\n  // }\r\n}\r\n","<!-- <acf-connected-layout [app]=\"app\">\r\n    <div class=\"construction\">\r\n        <h1 class=\"items-center\">Cette page sera très bientôt disponible. Merci pour votre patience.  </h1>\r\n        <img class=\"\" [src]=\"'assets/BoschConsumerPortal/construction.jpg'\" width=\"300\" alt=\"404\">\r\n    </div>\r\n</acf-connected-layout> -->\r\n\r\n<!-- <acf-connected-layout [app]=\"app\">\r\n    <acf-connected-steps-layout [appName]=\"app\" [step]=\"1\">\r\n        <acf-connected-step-one></acf-connected-step-one>\r\n    </acf-connected-steps-layout>\r\n</acf-connected-layout> -->","import { Component, Input, ViewChild } from '@angular/core';\r\nimport { Table, TableRowSelectEvent } from 'primeng/table';\r\nimport { MandateService } from '../../services/mandate.service';\r\nimport { Mandates, Mandate, MandateStatus, MandatesBeforePayment, MandateBeforePayment } from '../../models/shared/mandate';\r\nimport { AutoCompleteCompleteEvent, AutoCompleteSelectEvent } from 'primeng/autocomplete';\r\nimport { Router } from '@angular/router';\r\nimport { RoutesPaths } from '../../enums/routePaths';\r\nimport { DataStoreService } from '../../services/data-store.service';\r\n\r\n@Component({\r\n  selector: 'acf-incident-tracking',\r\n  templateUrl: './incident-tracking.component.html',\r\n  styleUrls: ['./incident-tracking.component.scss'],\r\n  standalone: false\r\n})\r\nexport class IncidentTrackingComponent {\r\n  @Input() app: string = '';\r\n  @ViewChild('dt') table!: Table;\r\n  @ViewChild('dtable') datatable!: Table;\r\n\r\n  loading: boolean = true;\r\n  mandates: Mandates = [];\r\n  mandatesOnHold: MandatesBeforePayment = [];\r\n\r\n  searchQuery: string = '';\r\n  MandateStatus = MandateStatus;\r\n\r\n  fieldsToSearch = ['orderMission', 'labelRef', 'brandCode', 'familyCode', 'mandateStatus', 'createDate'];\r\n  filteredItems: { display: string; value: string; }[] = [];\r\n  constructor(private readonly router: Router, private readonly mandateService: MandateService, private readonly store: DataStoreService) {\r\n    this.getMandates();\r\n    this.getMandatesOnHold();\r\n    this.store.deleteState(); //delete state : incident declatation\r\n\r\n\r\n  }\r\n  getMandatesOnHold() {\r\n    this.mandateService.getMandatesOnHold().subscribe((data) => {\r\n      if (data.mandates.length > 0) this.mandatesOnHold = data.mandates;\r\n\r\n      this.loading = false;\r\n    });\r\n  }\r\n\r\n\r\n  getMandates() {\r\n    this.mandateService.getMandates().subscribe((data) => {\r\n      this.mandates = data.mandates;\r\n      this.loading = false;\r\n    });\r\n  }\r\n\r\n  filterItems(event: AutoCompleteCompleteEvent) {\r\n    const query = event.query.toLowerCase();\r\n    this.filteredItems = this.mandates\r\n      .filter((mandate) =>\r\n        this.fieldsToSearch.some((field) =>\r\n          String(mandate[field as keyof Mandate]).toLowerCase().includes(query)\r\n        )\r\n      )\r\n      .map((mandate) => ({\r\n        display: `${mandate.orderMission}`,\r\n        value: mandate.orderMission\r\n      }));\r\n    this.updateTable(query);\r\n  }\r\n\r\n  updateTable(query: string) {\r\n    if (query) {\r\n      const lowerCaseQuery = query.toLowerCase();\r\n      const filteredData = this.mandates.filter((mandate) =>\r\n        this.fieldsToSearch.some((field) =>\r\n          String(mandate[field as keyof Mandate]).toLowerCase().includes(lowerCaseQuery)\r\n        )\r\n      );\r\n\r\n      this.table.filterGlobal(query, 'contains');\r\n      this.table.value = filteredData;\r\n    } else {\r\n      this.table.value = this.mandates;\r\n      this.table.filterGlobal('', 'contains');\r\n    }\r\n  }\r\n  applyGlobalFilter(event: AutoCompleteSelectEvent) {\r\n    const selectedValue = event.value.value;\r\n    if (selectedValue) {\r\n      this.table.filterGlobal(selectedValue, 'contains');\r\n    }\r\n  }\r\n  clearFilter() {\r\n    this.searchQuery = '';\r\n    this.filteredItems = [];\r\n    this.table.value = this.mandates;\r\n    this.table.reset();\r\n  }\r\n\r\n  onOpenDetails(event: any) {\r\n    this.router.navigate([`${RoutesPaths.incident_tracking_overview}`, event.data.mandateId]);\r\n  }\r\n\r\n  getStatusClass(status: keyof typeof MandateStatus): string {\r\n    return `status status-${status.toLowerCase()}`;\r\n  }\r\n\r\n  getStatusLabel(status: keyof typeof MandateStatus): string {\r\n    return MandateStatus[status];\r\n  }\r\n  finalPrice(mandate: MandateBeforePayment): number {\r\n    return (mandate?.repairPrice || 0) - (mandate?.ecoSupport || 0);\r\n  }\r\n\r\n  onOpenStep5(event: TableRowSelectEvent) {\r\n    const mandate = event.data;\r\n    if (mandate) {\r\n      const shipping_details = {\r\n        repairPrice: mandate.repairPrice,\r\n        shippingPrice: mandate.shippingPrice,\r\n        clientCode: mandate.carrierCode,\r\n        atsCode: mandate.atsCodeForStripe,\r\n        currencyCode: mandate.currencyCode,\r\n        currencySymbol: mandate.currencySymbol,\r\n        ecoSupport: mandate.ecoSupport,\r\n        pickUp: {\r\n          key: 0,\r\n          name: ''\r\n        },\r\n        pickUpChoice: mandate.pickupChoice || '',\r\n        carrierCode: mandate.carrierCode || '',\r\n        fromName: mandate.fromName,\r\n        fromAddress1: mandate.fromAddress1,\r\n        fromZip: mandate.fromZip,\r\n        fromCity: mandate.fromCity,\r\n        fromCountryCode: mandate.fromCountryCode,\r\n        fromPhone: mandate.fromPhone,\r\n        toName: mandate.fromName,\r\n        toAddress1: mandate.toAddress1,\r\n        toZip: mandate.toZip,\r\n        toCity: mandate.toCity,\r\n        toCountryCode: mandate.toCountryCode,\r\n        toPhone: mandate.toPhone,\r\n        selectedPostOffice: {\r\n          city: '',\r\n          name: '',\r\n          postalCode: '',\r\n          country: ''\r\n        }\r\n      }\r\n      const zipCode = {\r\n        zip: mandate.zip,\r\n        countryCode: mandate.countryCode,\r\n        city: mandate.city\r\n      };\r\n      const consumer = {\r\n        title: mandate.title,\r\n        lastName: mandate.lastName,\r\n        firstName: mandate.firstName,\r\n        address1: mandate.address1,\r\n        zip: zipCode,\r\n        city: zipCode,\r\n        countryCode: mandate.countryCode,\r\n        countryLabel: '250',\r\n        phoneNumber: mandate.phoneNumber,\r\n        email: mandate.email,\r\n      }\r\n\r\n\r\n    \r\n      const symptom = {\r\n        symptom: {\r\n          label: mandate.irisSymptomResponse?.label || '',\r\n          code: mandate.irisSymptomResponse?.code || ''\r\n        },\r\n        comment: mandate.failureDescription || '',\r\n      }\r\n      const device = {\r\n        name: mandate.labelRef || '',\r\n        saleDate: mandate.purchaseDate || '',\r\n        commref: mandate.commercialRef || '',\r\n        brand: mandate.brandCode || '',\r\n        refTech: mandate.technicalRef || '',\r\n        family: mandate.familyCode || '',\r\n      }\r\n      const mandateBeforePaymentID = mandate.id?.toString() || \"\";\r\n      this.store.setMandateIDBeforePayment(mandateBeforePaymentID);\r\n      this.store.saveSymptom(symptom);\r\n      this.store.saveDevice(device);\r\n      this.store.saveConsumer(consumer);\r\n      this.store.saveShippingDetails(shipping_details);\r\n      // this.store.saveMandateState(mandate);\r\n      this.router.navigate([RoutesPaths.connectedStep5], {\r\n        state: {\r\n          // device: device,\r\n          // symptom: symptom,\r\n          // consumer: consumer,\r\n          // mandateId: mandateBeforePaymentID,\r\n          // shipping_details: shipping_details,\r\n          // mandate: mandate\r\n        },\r\n      });\r\n    }\r\n  }\r\n\r\n}\r\n","<acf-connected-layout [app]=\"app\">\r\n  <div class=\"search-filter\">\r\n    <p-autoComplete [suggestions]=\"filteredItems\" (completeMethod)=\"filterItems($event)\"\r\n      (onSelect)=\"applyGlobalFilter($event)\" (onClear)=\"clearFilter()\" [showClear]=\"true\"\r\n      [emptyMessage]=\"'Aucun résultat trouvé'\" [showEmptyMessage]=\"true\"  placeholder=\"Rechercher\"\r\n      [(ngModel)]=\"searchQuery\" field=\"display\" inputStyleClass=\"pl-5\">\r\n      <ng-template let-item pTemplate=\"item\">\r\n        <div>{{ item.display }}</div>\r\n      </ng-template>\r\n\r\n    </p-autoComplete>\r\n    <i class=\"pi pi-search search-icon\"></i>\r\n\r\n  </div>\r\n  @if(mandatesOnHold.length > 0){ <div class=\"confirmation-message my-4 text-lg \">\r\n    <p class=\"pt-3 pl-3 font-semibold\">En attente </p>\r\n    <p class=\"pb-3 pl-3\">Vous avez des déclarations en attente! Voulez-vous continuer? Cette déclaration est éphémère\r\n      et sera valable pendant les prochaines 72 heures. </p>\r\n  </div>\r\n\r\n  <div class=\"table\">\r\n    <p-table [value]=\"mandatesOnHold\" [rows]=\"10\" [showCurrentPageReport]=\"true\" responsiveLayout=\"stack\" dataKey=\"id\"\r\n      (onRowSelect)=\"onOpenStep5($event)\" selectionMode=\"single\"\r\n      [globalFilterFields]=\"['id','labelRef','commercialRef','remainingMonths', 'mandateStatus','createDate']\"\r\n      [first]=\"0\" [rowHover]=\"true\" [filterDelay]=\"0\"\r\n      [currentPageReportTemplate]=\"'Montrer de {first} à {last} des {totalRecords} incidents suspendus'\"\r\n      [rowsPerPageOptions]=\"[10, 25, 50]\">\r\n\r\n      <ng-template pTemplate=\"header\">\r\n        <tr>\r\n          <th pSortableColumn=\"id\"> #ID\r\n            <p-sortIcon field=\"id\" tooltipPosition=\"top\"></p-sortIcon>\r\n          </th>\r\n          <th pSortableColumn=\"labelRef\"> Nom de l'appareil\r\n            <p-sortIcon field=\"labelRef\" tooltipPosition=\"top\"></p-sortIcon>\r\n          </th>\r\n          <th pSortableColumn=\"commercialRef\">Référence commerciale\r\n            <p-sortIcon field=\"commercialRef\" tooltipPosition=\"top\"></p-sortIcon>\r\n          </th>\r\n          <th pSortableColumn=\"createDate\"> Date de création\r\n            <p-sortIcon field=\"createDate\" tooltipPosition=\"top\"></p-sortIcon>\r\n          </th>\r\n\r\n          <th pSortableColumn=\"mandateStatus\"> Statut\r\n            <p-sortIcon field=\"mandateStatus\" tooltipPosition=\"top\"></p-sortIcon>\r\n          </th>\r\n          <th pSortableColumn=\"remainingMonths\">Etat de garantie\r\n            <p-sortIcon field=\"remainingMonths\" tooltipPosition=\"top\"></p-sortIcon>\r\n          </th>\r\n          <th pSortableColumn=\"dd\">Montant\r\n            <p-sortIcon field=\"dd\" tooltipPosition=\"top\"></p-sortIcon>\r\n          </th>\r\n        </tr>\r\n      </ng-template>\r\n\r\n      <ng-template pTemplate=\"body\" let-mandate>\r\n        <tr [pSelectableRow]=\"mandate\">\r\n          <td class=\"acf-link\" >#{{ mandate.id }}</td>\r\n          <td>{{ mandate.labelRef }}</td>\r\n          <td>{{ mandate.commercialRef }} </td>\r\n          <td>\r\n            <div class=\"right\">{{ mandate.createDate | date : 'dd/MM/yyyy' }}</div>\r\n          </td>\r\n          <td>\r\n            <div class=\"status status-WAITING\">\r\n              En attente\r\n            </div>\r\n          </td>\r\n          <td>\r\n            <div [class]=\"'status'+(mandate.remainingMonths > 0 ? ' status-OUTOFWARRANTY' : ' status-UNDERWARRANTY')\">\r\n              {{ mandate.remainingMonths > 0 ? 'Sous garantie' : 'Hors garantie' }}\r\n            </div>\r\n\r\n          </td>\r\n          <td>\r\n            <span *ngIf=\"finalPrice(mandate) === 0\" class=\"price font-semibold\">Gratuit</span>\r\n            <span *ngIf=\"finalPrice(mandate) !== 0\">\r\n              {{ finalPrice(mandate) }} {{ mandate.currencySymbol }}\r\n            </span>\r\n          </td>\r\n\r\n        </tr>\r\n      </ng-template>\r\n    </p-table>\r\n  </div>}\r\n\r\n\r\n  <div class=\"confirmation-message my-4 text-lg font-semibold\">\r\n    <p class=\"py-3 pl-3\">Liste des incidents </p>\r\n  </div>\r\n\r\n\r\n  <div class=\"table\">\r\n    <p-table #dt [value]=\"mandates\" [rows]=\"10\" [showCurrentPageReport]=\"true\" responsiveLayout=\"stack\"\r\n      dataKey=\"mandateId\" (onRowSelect)=\"onOpenDetails($event)\" selectionMode=\"single\"\r\n      [globalFilterFields]=\"['orderMission','labelRef','brandCode','familyCode', 'mandateStatus','createDate']\"\r\n      [first]=\"0\" [rowHover]=\"true\" [filterDelay]=\"0\"\r\n      [currentPageReportTemplate]=\"'Montrer de {first} à {last} des {totalRecords} incidents'\"\r\n      [rowsPerPageOptions]=\"[10, 25, 50]\">\r\n\r\n      <ng-template pTemplate=\"header\">\r\n        <tr>\r\n          <th pSortableColumn=\"orderMission\"> Numéro d'incident\r\n            <p-sortIcon field=\"orderMission\" tooltipPosition=\"top\"></p-sortIcon>\r\n          </th>\r\n          <th pSortableColumn=\"labelRef\"> Nom de l'appareil\r\n            <p-sortIcon field=\"labelRef\" tooltipPosition=\"top\"></p-sortIcon>\r\n          </th>\r\n          <th pSortableColumn=\"brandCode\">Marque\r\n            <p-sortIcon field=\"brandCode\" tooltipPosition=\"top\"></p-sortIcon>\r\n          </th>\r\n          <th pSortableColumn=\"familyCode\">Type d'appareil\r\n            <p-sortIcon field=\"familyCode\" tooltipPosition=\"top\"></p-sortIcon>\r\n          </th>\r\n          <th pSortableColumn=\"mandateStatus\"> Statut\r\n            <p-sortIcon field=\"mandateStatus\" tooltipPosition=\"top\"></p-sortIcon>\r\n          </th>\r\n          <th pSortableColumn=\"createDate\"> Date de création\r\n            <p-sortIcon field=\"createDate\" tooltipPosition=\"top\"></p-sortIcon>\r\n          </th>\r\n        </tr>\r\n      </ng-template>\r\n\r\n      <ng-template pTemplate=\"body\" let-mandate>\r\n        <tr [pSelectableRow]=\"mandate\">\r\n          <td class=\"acf-link\">{{ mandate.orderMission }}</td>\r\n          <td>{{ mandate.labelRef }}</td>\r\n          <td>\r\n            <span class=\"designation\"> {{ mandate.brandCode }}</span>\r\n          </td>\r\n          <td>{{ mandate.familyCode }}</td>\r\n          <td>\r\n            <div [class]=\"'status status-' + mandate.mandateStatus\">\r\n              {{ getStatusLabel(mandate.mandateStatus) | titlecase }}\r\n            </div>\r\n          </td>\r\n          <td>\r\n            <div class=\"right\">{{ mandate.createDate | date : 'dd/MM/yyyy' }}</div>\r\n          </td>\r\n        </tr>\r\n      </ng-template>\r\n    </p-table>\r\n  </div>\r\n\r\n</acf-connected-layout>","import { Component, Input } from '@angular/core';\r\nimport { DataStoreService } from '../../services/data-store.service';\r\n\r\n@Component({\r\n    selector: 'acf-contract',\r\n    templateUrl: './contract.component.html',\r\n    styleUrl: './contract.component.scss',\r\n    standalone: false\r\n})\r\nexport class ContractComponent {\r\n  @Input() app: string = '';\r\n\r\n  constructor(private readonly store: DataStoreService) {\r\n    this.store.deleteState(); //delete state : incident declatation\r\n\r\n  }\r\n\r\n\r\n}\r\n","<acf-connected-layout [app]=\"app\">\r\n    <div class=\"construction\">\r\n        <h1 class=\"items-center\">Cette page sera très bientôt disponible. Merci pour votre patience.  </h1>\r\n        <img class=\"\" [src]=\"'assets/BoschConsumerPortal/construction.jpg'\" width=\"300\" alt=\"404\">\r\n    </div>\r\n</acf-connected-layout>","import { Component, Input } from '@angular/core';\r\nimport { DataStoreService } from '../../services/data-store.service';\r\nimport { MessageService } from 'primeng/api';\r\n\r\n@Component({\r\n    selector: 'acf-customer-service',\r\n    templateUrl: './customer-service.component.html',\r\n    styleUrl: './customer-service.component.scss',\r\n    standalone: false\r\n})\r\nexport class CustomerServiceComponent {\r\n  @Input() app: string = '';\r\n isLoadingContact = false;\r\n  isLoadingTech = false;\r\n\r\n  constructor(private messageService: MessageService) {}\r\n\r\n  contactClients(): void {\r\n    const email = 'serviceconsommateur.fr@bosch-home.com';\r\n    const mailtoLink = `mailto:${email}`;\r\n\r\n    try {\r\n      window.location.href = mailtoLink;\r\n    } catch (error) {\r\n      console.error('Error opening email client:', error);\r\n      this.copyEmailToClipboard(email);\r\n    }\r\n  }\r\n\r\n  contactTechnicalSupport(): void {\r\n    const email = 'support@agoraplus.com';\r\n    const mailtoLink = `mailto:${email}`;\r\n    try {\r\n      window.location.href = mailtoLink;\r\n    } catch (error) {\r\n      console.error('Error opening email client:', error);\r\n      this.copyEmailToClipboard(email);\r\n    }\r\n  }\r\n\r\n\r\n  private copyEmailToClipboard(email: string): void {\r\n    if (navigator.clipboard && navigator.clipboard.writeText) {\r\n      navigator.clipboard.writeText(email).then(() => {\r\n      }).catch(err => {\r\n        console.error('Failed to copy email:', err);\r\n      });\r\n    }\r\n  }\r\n}","<acf-connected-layout [app]=\"app\">\r\n  <div class=\"customer-service-container\">\r\n    <div class=\"service-options\">\r\n\r\n      <!-- Contact Clients Option -->\r\n      <div class=\"option-card\">\r\n        <div class=\"option-icon\">\r\n          <i class=\"pi pi-envelope\"></i>\r\n        </div>\r\n        <h3 class=\"option-title\">Contact Clients</h3>\r\n        <p class=\"option-description\">\r\n          Pour toute question concernant vos appareils et incidents\r\n        </p>\r\n\r\n        <button label=\"Contacter le Service Client\" pButton pRipple type=\"submit\" class=\"acf-primary-button\"\r\n          (click)=\"contactClients()\">\r\n        </button>\r\n        <div class=\"email-info\">\r\n          <i class=\"pi pi-info-circle\"></i>\r\n          <span>Email: serviceconsommateur.fr&#64;bosch-home.com</span>\r\n        </div>\r\n      </div>\r\n\r\n      <!-- Technical Problem Option -->\r\n      <div class=\"option-card\">\r\n        <div class=\"option-icon technical\">\r\n          <i class=\"pi pi-cog\"></i>\r\n        </div>\r\n        <h3 class=\"option-title\">Problème Informatique</h3>\r\n        <p class=\"option-description\">\r\n          Assistance Informatique\r\n        </p>\r\n        <button label=\"Contacter le Support Informatique\" pButton pRipple type=\"submit\" class=\"acf-primary-button\"\r\n          (click)=\"contactTechnicalSupport()\">\r\n        </button>\r\n        <div class=\"support-info\">\r\n          <i class=\"pi pi-info-circle\"></i>\r\n          <span>Email: support&#64;agoraplus.com</span>\r\n        </div>\r\n      </div>\r\n\r\n    </div>\r\n  </div>\r\n\r\n  \r\n</acf-connected-layout>\r\n\r\n\r\n","import { Component, Input } from '@angular/core';\r\nimport { RoutesPaths } from '../../../enums/routePaths';\r\nimport { Router } from '@angular/router';\r\nimport { DataStoreService } from '../../../services/data-store.service';\r\nimport { MappedProduct } from '../../../models/shared/product';\r\n\r\n@Component({\r\n  selector: 'acf-connected-steps-layout',\r\n  templateUrl: './connected-steps-layout.component.html',\r\n  styleUrl: './connected-steps-layout.component.scss',\r\n  standalone: false\r\n})\r\nexport class ConnectedStepsLayoutComponent {\r\n  @Input() appName: string = '';\r\n  @Input() step!: number;\r\n\r\n  steps = [\r\n    { number: 1, name: 'Appareil', status: '' },\r\n    { number: 2, name: 'Panne', status: '' },\r\n    { number: 3, name: 'Coordonnées', status: '' },\r\n    { number: 4, name: 'Réparation', status: '' },\r\n    { number: 5, name: 'Validation', status: '' },\r\n    // { number: 6, name: 'Paiement', status: '' }, // UPDATE HG //\r\n  ];\r\n\r\n  device!: MappedProduct;\r\n  interventionTypeId: number = 0;\r\n\r\n  constructor(private readonly router: Router, private readonly store: DataStoreService) {}\r\n\r\n  ngAfterContentInit(): void {\r\n    this.loadDeviceData();\r\n    this.updateSteps(this.step);\r\n  }\r\n\r\n  private loadDeviceData(): void {\r\n    try {\r\n      const deviceData = this.store.getDevice()\r\n      this.device = this.parseJsonSafely(deviceData);\r\n      \r\n      if (this.device && this.device.saleDate) {\r\n        this.calculateInterventionType();\r\n      }\r\n    } catch (error) {\r\n      console.error('Error loading device data:', error);\r\n    }\r\n  }\r\n\r\n  private parseJsonSafely(jsonString: string | null): any {\r\n    if (!jsonString) return null;\r\n    try {\r\n      return JSON.parse(jsonString);\r\n    } catch (error) {\r\n      console.error('Error parsing JSON:', error);\r\n      return null;\r\n    }\r\n  }\r\n\r\n  private calculateInterventionType(): void {\r\n    // const today = new Date();\r\n    // const purchaseDate = new Date(this.device.saleDate);\r\n    // const yearsDifference = today.getFullYear() - purchaseDate.getFullYear();\r\n    // const isDateInFuture = today < purchaseDate;\r\n    \r\n    // this.interventionTypeId = !isDateInFuture && yearsDifference <= 2 ? 1 : 0;\r\n    const oof = this.store.isOutWaranty();  \r\n    this.interventionTypeId = oof ? 0 : 1;\r\n    // Update steps based on intervention type\r\n   // this.updateStepsBasedOnInterventionType(); // UPDATE HG //\r\n  }\r\n\r\n  private updateStepsBasedOnInterventionType(): void {\r\n    if (this.interventionTypeId === 1) {\r\n      // Remove step 6 (Paiement) if interventionTypeId is 1\r\n      this.steps = this.steps.filter(step => step.number !== 6);\r\n    } else {\r\n      // Ensure step 6 is included if interventionTypeId is not 1\r\n      const hasPaymentStep = this.steps.some(step => step.number === 6);\r\n      if (!hasPaymentStep) {\r\n        this.steps.push({ number: 6, name: 'Paiement', status: '' });\r\n      }\r\n    }\r\n  }\r\n\r\n  updateSteps(_step: number): void {\r\n    this.steps = this.steps.map((step) => ({\r\n      ...step,\r\n      status: _step > step.number ? 'completed' :\r\n        _step === step.number ? 'active' : 'pending',\r\n    }));\r\n  }\r\n\r\n  prev(): void {\r\n    const page: number = this.step - 1;\r\n    this.navigate(page);\r\n  }\r\n\r\n  next(): void {\r\n    const page = this.step + 1;\r\n    this.navigate(page);\r\n  }\r\n\r\n  navigate(page: number): void {\r\n    const maxStep = 5 //= this.interventionTypeId === 1 ? 5 : 6; // UPDATE HG //\r\n    \r\n    if (page > 0 && page <= maxStep) {\r\n      this.updateSteps(page);\r\n      this.router.navigate([`${RoutesPaths.connectedStep}/${page}`]);\r\n    }\r\n  }\r\n\r\n  // Helper method to get the maximum step number\r\n  getMaxStep(): number {\r\n    return this.interventionTypeId === 1 ? 5 : 6;\r\n  }\r\n\r\n  // Helper method to check if payment step should be shown\r\n  shouldShowPaymentStep(): boolean {\r\n    return this.interventionTypeId !== 1;\r\n  }\r\n}","<div class=\"connected\">\r\n    <div class=\"stepper-wrapper\">\r\n        <div class=\"stepper-item\" *ngFor=\"let step of steps\" [class]=\"step.status\">\r\n            <div class=\"step-counter\">{{step.number}}</div>\r\n            <div class=\"step-name\">{{step.name}}</div>\r\n        </div>\r\n    </div>\r\n\r\n\r\n    <div class=\"connected-content\">\r\n        <ng-content></ng-content>\r\n    </div>\r\n</div>","import { Component, Input } from '@angular/core';\r\nimport { FormGroup, FormBuilder, Validators } from '@angular/forms';\r\nimport { Router } from '@angular/router';\r\nimport { Symptom } from '../../models/shared/iris-symptom';\r\nimport { RoutesPaths } from '../../enums/routePaths';\r\nimport {\r\n  MappedProduct,\r\n  MappedProducts,\r\n  Products,\r\n} from '../../models/shared/product';\r\nimport { MandateService } from '../../services/mandate.service';\r\nimport { DropdownChangeEvent } from 'primeng/dropdown';\r\nimport { Consumer } from '../../models/request/create-mandate.request';\r\nimport { ShippingDetails } from '../../models/shared/shipping-details';\r\nimport { ConnectedOowPopupComponent } from '../connected-oow-popup/connected-oow-popup.component';\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\nimport { DataStoreService } from '../../services/data-store.service';\r\nimport { ConnectedIwPopupComponent } from '../connected-iw-popup/connected-iw-popup.component';\r\nconst parseJsonSafely = (data: string | null) => {\r\n  try {\r\n    return data ? JSON.parse(data) : null;\r\n  } catch (error) {\r\n    console.error('Error parsing JSON:', error);\r\n    return null;\r\n  }\r\n};\r\n@Component({\r\n    selector: 'acf-connected-step-one',\r\n    templateUrl: './connected-step-one.component.html',\r\n    styleUrl: './connected-step-one.component.scss',\r\n    standalone: false\r\n})\r\nexport class ConnectedStepOneComponent {\r\n  @Input() app: string = '';\r\n  step1Form: FormGroup;\r\n  submitted = false;\r\n  products: Products = [];\r\n  mappedDevices: MappedProducts = [];\r\n  device: MappedProduct;\r\n  irisSymtom: Symptom;\r\n  consumer: Consumer;\r\n  mandateBeforePaymentID: string;\r\n  shipping_details: ShippingDetails;\r\n  constructor(\r\n    private readonly formBuilder: FormBuilder,\r\n    private readonly mandateService: MandateService,\r\n    private readonly router: Router,\r\n    private readonly dialogService: DialogService,\r\n    private readonly store: DataStoreService\r\n\r\n  ) {\r\n    this.onGetDevicesWarranty();\r\n    this.device = parseJsonSafely(this.store.getDevice()); // state?.['device'];\r\n    this.irisSymtom = parseJsonSafely(this.store.getSymptom()) //state?.['symptom'];\r\n    this.consumer = parseJsonSafely(this.store.getConsumer())//state?.['consumer'];\r\n    this.mandateBeforePaymentID = this.store.getMandateIDBeforePayment();//state?.['mandateId'];\r\n    this.shipping_details = parseJsonSafely(this.store.getShippingDetails()) //state?.['shipping_details'];\r\n    if (this.device) {\r\n      this.step1Form = this.onSetFrom(this.device);\r\n    } else {\r\n      this.step1Form = this.onItniFrom();\r\n    }\r\n  }\r\n\r\n  onItniFrom() {\r\n    return this.formBuilder.group({\r\n      fullDescription: [null, Validators.required],\r\n    });\r\n  }\r\n\r\n  onSetFrom(p: MappedProduct) {\r\n    return this.formBuilder.group({\r\n      fullDescription: [p, Validators.required],\r\n    });\r\n  }\r\n\r\n  onSelect(event: DropdownChangeEvent) {\r\n    this.device = event.value;\r\n    this.store.deleteFileId();\r\n  }\r\n\r\n  onGetDevicesWarranty() {\r\n    this.mandateService.getDevicesWarranty().subscribe(\r\n      (data) => {\r\n        this.mappedDevices = data.map((contract) => ({\r\n          name: contract.fullDescription || '',\r\n          commref: contract.commercialReference || '',\r\n          saleDate: contract.saleDate || '',\r\n          brand: contract.brand || '',\r\n          refTech: contract.technicalReference || '',\r\n          family: contract.family || ''\r\n        }));\r\n        this.mappedDevices.sort((a, b) => {\r\n          const dateA = new Date(a.saleDate);\r\n          const dateB = new Date(b.saleDate);\r\n          return dateB.getTime() - dateA.getTime();\r\n        });\r\n      },\r\n      (err) => {\r\n        console.log(err);\r\n      }\r\n    );\r\n  }\r\n\r\n  add() {\r\n    this.router.navigate([`${RoutesPaths.devices}`]);\r\n  }\r\n\r\n  next() {\r\n    this.submitted = true;\r\n    if (this.step1Form.valid) {\r\n      if (this.out_of_Warranty() === false) {\r\n        this.store.updateIsOutWaranty(false); // UPDATE HG //\r\n        this.store.setMandateIDBeforePayment(this.mandateBeforePaymentID);\r\n        this.store.saveSymptom(this.irisSymtom);\r\n        this.store.saveDevice(this.device);\r\n        this.store.saveConsumer(this.consumer);\r\n        this.store.saveShippingDetails(this.shipping_details);\r\n        this.router.navigate([RoutesPaths.connectedStep2]);\r\n      } else {\r\n        this.store.updateIsOutWaranty(true); //    this.open_IW_Popup(); // UPDATE HG //\r\n        this.store.setMandateIDBeforePayment(this.mandateBeforePaymentID);\r\n        this.store.saveSymptom(this.irisSymtom);\r\n        this.store.saveDevice(this.device);\r\n        this.store.saveConsumer(this.consumer);\r\n        this.store.saveShippingDetails(this.shipping_details);\r\n        this.router.navigate([RoutesPaths.connectedStep2]);\r\n      }\r\n    }\r\n  }\r\n  open_IW_Popup() {\r\n    this.dialogService.open(ConnectedIwPopupComponent, {\r\n      width: '42vw',\r\n      dismissableMask: true,\r\n      closeOnEscape: true,\r\n      showHeader: false,\r\n      contentStyle: { overflow: 'auto' },\r\n      breakpoints: {\r\n        '960px': '60vw',\r\n        '640px': '70w',\r\n      },\r\n    });\r\n  }\r\n  out_of_Warranty(): boolean {\r\n    const saleDate = this.device.saleDate\r\n    const _saleDateObj = new Date(saleDate);\r\n    const twoYearsBefore = new Date(_saleDateObj);\r\n    twoYearsBefore.setFullYear(_saleDateObj.getFullYear() + 2);\r\n    return new Date() >= twoYearsBefore;\r\n  }\r\n\r\n  open_OOW_Popup() {\r\n    this.dialogService.open(ConnectedOowPopupComponent, {\r\n      width: '42vw',\r\n      showHeader: false,\r\n      contentStyle: { overflow: 'auto' },\r\n      dismissableMask: true,\r\n      closeOnEscape: true,\r\n      breakpoints: {\r\n        '960px': '60vw',\r\n        '640px': '70w',\r\n      },\r\n    });\r\n  }\r\n\r\n  get f() {\r\n    return this.step1Form.controls;\r\n  }\r\n\r\n}\r\n","<acf-connected-layout [app]=\"app\">\r\n    <acf-connected-steps-layout [appName]=\"app\" [step]=\"1\">\r\n\r\n        <div class=\"pt-2\">\r\n            <p>Veuillez choisir un appareil pour lequel vous souhaitez signaler un incident. </p>\r\n            <div class=\"grid\">\r\n                <div class=\"col-12\">\r\n                    <label class=\"block font-bold mb-2 required-input\" for=\"product\">Séléctionner votre appareil\r\n                    </label>\r\n                </div>\r\n            </div>\r\n            <form [formGroup]=\"step1Form\">\r\n                <div class=\"grid align-items-center\">\r\n                    <div class=\"col-12 md:col-4\">\r\n                        <p-dropdown class=\"w-full\" id=\"product\" formControlName=\"fullDescription\"\r\n                            [options]=\"mappedDevices\" optionLabel=\"name\" [filter]=\"true\" [lazy]=\"true\" \r\n                            emptyMessage=\"Aucun appareil trouvé\" emptyFilterMessage=\"Aucun appareil trouvé\"\r\n                            (onChange)=\"onSelect($event)\" [showClear]=\"true\"\r\n                            [ngClass]=\"{ 'acf-invalid-dropdown': (f['fullDescription'].dirty || submitted) && f['fullDescription'].errors }\">\r\n                            <ng-template let-prd pTemplate=\"item\">\r\n                                <div class=\"flex align-items-center gap-2\">\r\n                                    <div> {{ prd.name }}</div>\r\n                                </div>\r\n                            </ng-template>\r\n                        </p-dropdown>\r\n                    </div>\r\n                    <div class=\"col-12 md:col-1\">\r\n                        <p class=\"font-bold text-center\">Ou</p>\r\n                    </div>\r\n                    <div class=\"col-12 md:col-5\">\r\n                        <button pButton label=\"Enregistrer un nouvel appareil\" class=\"acf-secondary-button\"\r\n                            (click)=\"add()\"></button>\r\n                    </div>\r\n                </div>\r\n                <div class=\"grid mb-3\">\r\n                    <div class=\"col-12 md:col-4 p-0\">\r\n                        <div class=\"acf-invalid-feedback\"\r\n                            *ngIf=\"(submitted || f['fullDescription'].dirty) && f['fullDescription'].errors\">\r\n                            <div *ngIf=\"f['fullDescription'].errors['required']\">Ce champ est obligatoire.</div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </form>\r\n            <div class=\"flex justify-content-end align-items-center bloc-mobile\">\r\n                <div class=\"guest-action mx-0\">\r\n                    <button pButton label=\"Etape suivante\" class=\"acf-primary-button\" (click)=\"next()\"></button>\r\n                </div>\r\n            </div>\r\n\r\n        </div>\r\n    </acf-connected-steps-layout>\r\n</acf-connected-layout>","import { Component, Input } from '@angular/core';\r\nimport { MappedProduct } from '../../models/shared/product';\r\nimport { Router } from '@angular/router';\r\nimport { FormGroup, FormBuilder, Validators } from '@angular/forms';\r\nimport { DataStore } from '../../enums/data.store';\r\nimport { RoutesPaths } from '../../enums/routePaths';\r\nimport { IrisSymptomsRequest } from '../../models/request/iris-symptom.request';\r\nimport { IrisSymptoms, Symptom } from '../../models/shared/iris-symptom';\r\nimport { ReferentialService } from '../../services/referential.service';\r\nimport { DataStoreService } from '../../services/data-store.service';\r\nimport { DropdownChangeEvent } from 'primeng/dropdown';\r\nimport { Consumer } from '../../models/request/create-mandate.request';\r\nimport { ShippingDetails } from '../../models/shared/shipping-details';\r\nconst parseJsonSafely = (data: string | null) => {\r\n  try {\r\n    return data ? JSON.parse(data) : null;\r\n  } catch (error) {\r\n    console.error('Error parsing JSON:', error);\r\n    return null;\r\n  }\r\n};\r\n@Component({\r\n    selector: 'acf-connected-step-two',\r\n    templateUrl: './connected-step-two.component.html',\r\n    styleUrl: './connected-step-two.component.scss',\r\n    standalone: false\r\n})\r\nexport class ConnectedStepTwoComponent {\r\n  @Input() app: string = '';\r\n  device: MappedProduct;\r\n  irisSymtom!: Symptom;\r\n  step2Form: FormGroup;\r\n  submitted = false;\r\n  irisSymtoms: IrisSymptoms = [];\r\n  consumer: Consumer;\r\n  mandateBeforePaymentID: string;\r\n  shipping_details: ShippingDetails;\r\n  constructor(\r\n    private readonly formBuilder: FormBuilder,\r\n    private readonly referentialService: ReferentialService,\r\n    private readonly router: Router,\r\n    private readonly store: DataStoreService\r\n  ) {\r\n    this.step2Form = this.onItniFrom();\r\n    const state = this.router.getCurrentNavigation()?.extras?.state || {};\r\n\r\n    this.device = parseJsonSafely(this.store.getDevice()); // state?.['device'];\r\n    this.irisSymtom = parseJsonSafely(this.store.getSymptom()) //state?.['symptom'];\r\n    this.consumer = parseJsonSafely(this.store.getConsumer())//state?.['consumer'];\r\n    this.mandateBeforePaymentID = this.store.getMandateIDBeforePayment();//state?.['mandateId'];\r\n    this.shipping_details = parseJsonSafely(this.store.getShippingDetails()) //state?.['shipping_details'];\r\n    if (this.irisSymtom) {\r\n      this.step2Form = this.onSetFrom(this.irisSymtom);\r\n    } else {\r\n      this.step2Form = this.onItniFrom();\r\n    }\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.getIrisSymptoms();\r\n  }\r\n\r\n  onItniFrom() {\r\n    return this.formBuilder.group({\r\n      symptom: [null, Validators.required],\r\n      comment: ['', [Validators.required, Validators.maxLength(600)]],\r\n    });\r\n  }\r\n\r\n  onSetFrom(i: Symptom) {\r\n    return this.formBuilder.group({\r\n      symptom: [i.symptom, Validators.required],\r\n      comment: [i.comment, [Validators.required, Validators.maxLength(600)]],\r\n    });\r\n  }\r\n\r\n  getIrisSymptoms() {\r\n    const request: IrisSymptomsRequest = {\r\n      applicationName: this.app,\r\n      commercialRef: this.device.commref,\r\n    };\r\n    this.referentialService.getIrisSymptoms(request).subscribe(\r\n      (data) => {\r\n        this.irisSymtoms = data;\r\n      },\r\n      (error) => {\r\n        console.error('Erreur lors de la récupération des données', error);\r\n      }\r\n    );\r\n  }\r\n\r\n  onSymptomChange(event: DropdownChangeEvent): void {\r\n    if (event.value) {\r\n      this.irisSymtom = {\r\n        symptom: event?.value,\r\n        comment: this.step2Form.value.comment\r\n      }\r\n    }\r\n  }\r\n\r\n  getImageUrl() {\r\n    const prdCommercialRef = this.device.commref;\r\n    if (prdCommercialRef && prdCommercialRef.length > 0) {\r\n      return 'assets/' + this.app + '/products/' + prdCommercialRef + '.jpg';\r\n    } else {\r\n      return 'assets/' + this.app + '/no-image.svg';\r\n    }\r\n  }\r\n\r\n  handleImageError(event: any) {\r\n    event.target.src = 'assets/' + this.app + '/no-image.svg';\r\n  }\r\n\r\n  next() {\r\n    this.submitted = true;\r\n    if (this.step2Form.valid) {\r\n      this.irisSymtom.comment = this.step2Form.value.comment;\r\n      this.store.setMandateIDBeforePayment(this.mandateBeforePaymentID);\r\n      this.store.saveSymptom(this.irisSymtom);\r\n      this.store.saveDevice(this.device);\r\n      this.store.saveConsumer(this.consumer);\r\n      this.store.saveShippingDetails(this.shipping_details);\r\n      this.router.navigate([RoutesPaths.connectedStep3], {\r\n        state: {\r\n          // device: this.device,\r\n          // symptom: this.irisSymtom,\r\n          // consumer: this.consumer,\r\n          // mandateId: this.mandateBeforePaymentID,\r\n          // shipping_details: this.shipping_details\r\n        }\r\n      });\r\n    }\r\n  }\r\n\r\n  prev() {\r\n    this.store.setMandateIDBeforePayment(this.mandateBeforePaymentID);\r\n    this.store.saveSymptom(this.irisSymtom);\r\n    this.store.saveDevice(this.device);\r\n    this.store.saveConsumer(this.consumer);\r\n    this.store.saveShippingDetails(this.shipping_details);\r\n    this.router.navigate([RoutesPaths.connectedStep1], {\r\n      state: {\r\n        // device: this.device,\r\n        // symptom: this.irisSymtom,\r\n        // consumer: this.consumer,\r\n        // mandateId: this.mandateBeforePaymentID,\r\n        // shipping_details: this.shipping_details\r\n      }\r\n    });\r\n  }\r\n\r\n  get f() {\r\n    return this.step2Form.controls;\r\n  }\r\n}\r\n","<acf-connected-layout [app]=\"app\">\r\n  <acf-connected-steps-layout [appName]=\"app\" [step]=\"2\">\r\n    <div class=\"step2-form\">\r\n      <form [formGroup]=\"step2Form\">\r\n        <div class=\"grid\">\r\n          <div class=\"md:col-8  sm:col-12  xs:col-12\">\r\n            <div class=\"text-left mb-5\">\r\n              <p class=\"acf-text-sm mb-4\">Merci de nous expliquer le symptôme de votre panne. </p>\r\n            </div>\r\n            <div class=\"grid\">\r\n              <div class=\"col-12 mb-3\">\r\n                <label class=\"block  font-bold mb-3 required-input\" for=\"symptom\">Symptôme </label>\r\n                <p-dropdown class=\"w-full\" id=\"symptom\" formControlName=\"symptom\" [options]=\"irisSymtoms\"\r\n                  optionLabel=\"label\" [filter]=\"true\" [filterBy]=\"'label'\" [lazy]=\"true\"\r\n                  emptyFilterMessage=\"Aucun symptôme trouvé\" [showClear]=\"true\" emptyMessage=\"Aucun symptôme trouvé\"\r\n                  (onChange)=\"onSymptomChange($event)\"\r\n                  [ngClass]=\"{ 'acf-invalid-dropdown': (f['symptom'].dirty || submitted) && f['symptom'].errors }\">\r\n                  <ng-template let-symptom pTemplate=\"item\">\r\n                    <div class=\"flex align-items-center gap-2\">\r\n                      <div> {{ symptom.label }}</div>\r\n                    </div>\r\n                  </ng-template>\r\n                </p-dropdown>\r\n                <div class=\"acf-invalid-feedback\" *ngIf=\"(submitted || f['symptom'].dirty) && f['symptom'].errors\">\r\n                  <div *ngIf=\"f['symptom'].errors['required']\">Merci de sélectionner un symptôme</div>\r\n                </div>\r\n              </div>\r\n              <div class=\"col-12\">\r\n                <label class=\"block  font-bold mb-3 required-input\" for=\"comment\">Votre commentaire</label>\r\n                <textarea rows=\"5\" cols=\"30\" class=\"w-full h-7rem\" id=\"comment\" maxlength=\"600\"\r\n                  formControlName=\"comment\"\r\n                  [ngClass]=\"{ 'acf-invalid-input':(submitted || f['comment'].dirty) && f['comment'].errors }\"\r\n                  pInputTextarea></textarea>\r\n                <div class=\"text-group flex justify-content-between \">\r\n                  <!-- Character Counter -->\r\n\r\n                  <div class=\"acf-invalid-feedback\" *ngIf=\"(submitted || f['comment'].dirty) && f['comment'].errors\">\r\n                    <div *ngIf=\"f['comment'].errors['required']\">Merci de décrire le problème.</div>\r\n                  </div>\r\n                  <div class=\"character-counter text-right primary-text ml-auto\">\r\n                    {{ step2Form.value?.comment.length || 0 }} / 600\r\n                  </div>\r\n                </div>\r\n\r\n              </div>\r\n            </div>\r\n          </div>\r\n          <div class=\"md:col-4 sm:col-12  xs:col-12 mobile-100\">\r\n         <div class=\"surface-border border-round m-3 p-3 border-round-2xl shadow-2 h-20rem\" style=\"display: flex; flex-direction: column; overflow: hidden;\">                     \r\n  <div class=\"acf-text-md text-center mt-2\" *ngIf=\"device?.name\">{{device.name}}</div>                     \r\n  <div class=\"acf-text-sm font-bold text-center mb-3\" *ngIf=\"device?.saleDate\">{{device.saleDate | date:'dd/MM/yyyy' }}</div>                     \r\n  <div class=\"flex align-items-center justify-content-center\" style=\"flex: 1; min-height: 0; overflow: hidden;\">                       \r\n    <img [src]=\"getImageUrl()\" \r\n         (error)=\"handleImageError($event)\" \r\n         class=\"product-image border-round\"\r\n         style=\"max-width: 100%; max-height: 100%; width: auto; height: auto; object-fit: contain;\">                     \r\n  </div>                   \r\n</div>\r\n          </div>\r\n        </div>\r\n      </form>\r\n    </div>\r\n    <div class=\"guest-action\">\r\n      <button pButton label=\"Etape précédente\" class=\"acf-secondary-button mr-3\" (click)=\"prev()\"></button>\r\n      <button pButton label=\"Etape suivante\" class=\"acf-primary-button\" (click)=\"next()\"></button>\r\n    </div>\r\n\r\n  </acf-connected-steps-layout>\r\n</acf-connected-layout>","import { Component, Input } from '@angular/core';\r\nimport {\r\n  FormGroup,\r\n  FormBuilder,\r\n  Validators,\r\n  FormControl,\r\n} from '@angular/forms';\r\nimport { RoutesPaths } from '../../enums/routePaths';\r\nimport { Router } from '@angular/router';\r\nimport { MappedProduct } from '../../models/shared/product';\r\nimport { DataStoreService } from '../../services/data-store.service';\r\nimport { Symptom } from '../../models/shared/iris-symptom';\r\nimport { Consumer } from '../../models/request/create-mandate.request';\r\nimport { ShippingDetails } from '../../models/shared/shipping-details';\r\n\r\nconst parseJsonSafely = (data: string | null) => {\r\n  try {\r\n    return data ? JSON.parse(data) : null;\r\n  } catch (error) {\r\n    console.error('Error parsing JSON:', error);\r\n    return null;\r\n  }\r\n};\r\n@Component({\r\n    selector: 'acf-connected-step-three',\r\n    templateUrl: './connected-step-three.component.html',\r\n    styleUrl: './connected-step-three.component.scss',\r\n    standalone: false\r\n})\r\n\r\nexport class ConnectedStepThreeComponent {\r\n  @Input() app: string = '';\r\n  Step3Form: FormGroup;\r\n  loading = false;\r\n  submitted = false;\r\n  gender = [\r\n    {\r\n      value: 'Monsieur',\r\n      key: '001',\r\n    },\r\n    {\r\n      value: 'Madame',\r\n      key: '002',\r\n    },\r\n  ];\r\n  device: MappedProduct;\r\n  symptom: Symptom;\r\n  consumer: Consumer;\r\n  mandateBeforePaymentID: string;\r\n  shipping_details: ShippingDetails;\r\n\r\n  constructor(\r\n    private readonly formBuilder: FormBuilder,\r\n    private readonly router: Router,\r\n    private readonly store: DataStoreService\r\n  ) {\r\n    const state = this.router.getCurrentNavigation()?.extras?.state;\r\n\r\n    this.device = parseJsonSafely(this.store.getDevice()); // state?.['device'];\r\n    this.symptom = parseJsonSafely(this.store.getSymptom()) //state?.['symptom'];\r\n    this.consumer = parseJsonSafely(this.store.getConsumer())//state?.['consumer'];\r\n    this.mandateBeforePaymentID = this.store.getMandateIDBeforePayment();//state?.['mandateId'];\r\n    this.shipping_details = parseJsonSafely(this.store.getShippingDetails()) //state?.['shipping_details']\r\n    this.Step3Form = this.onInitForm();\r\n  }\r\n\r\n  onInitForm() {\r\n    const zipAndCity = {\r\n      zip: this.store.getZip(),\r\n      city: this.store.getCity(),\r\n      countryCode: 'FR',\r\n    };\r\n    return this.formBuilder.group({\r\n      title: [this.store.getTitle() || '', Validators.required],\r\n      firstName: [this.store.getFirstName() || '', Validators.required],\r\n      lastName: [this.store.getLastName() || '', Validators.required],\r\n      phoneNumber: new FormControl(this.store.getPhoneNumber() || '', [\r\n        Validators.required,\r\n        Validators.pattern(/^[1-7]([\\s\\d]*\\d){8}$/)\r\n      ]),\r\n      city: [zipAndCity || null, Validators.required],\r\n      zip: [zipAndCity || null, Validators.required],\r\n      address: [this.store.getUserAddress() || '', Validators.required],\r\n      email: new FormControl(this.store.getUserName() || '', [\r\n        Validators.required,\r\n        Validators.email,\r\n        Validators.pattern('^[A-Za-z0-9._%+-]+@[a-z0-9.-]+\\\\.[a-z]{2,4}$'),\r\n      ]),\r\n      countryCode: '250',\r\n    });\r\n  }\r\n\r\n  onSetForm(consumer: Consumer) {\r\n    const zipAndCity = {\r\n      zip: consumer.zip,\r\n      city: consumer.city,\r\n      countryCode: 'FR',\r\n    };\r\n    return this.formBuilder.group({\r\n      title: [consumer.title || '', Validators.required],\r\n      firstName: [consumer.firstName || '', Validators.required],\r\n      lastName: [consumer.lastName || '', Validators.required],\r\n      phoneNumber: new FormControl(consumer.phoneNumber || '', [\r\n        Validators.required,\r\n        Validators.pattern(/^[1-7]([\\s\\d]*\\d){8}$/)\r\n      ]),\r\n      city: [zipAndCity || null, Validators.required],\r\n      zip: [zipAndCity || null, Validators.required],\r\n      address: [consumer.address1 || '', Validators.required],\r\n      email: new FormControl(consumer.email || '', [\r\n        Validators.required,\r\n        Validators.email,\r\n        Validators.pattern('^[A-Za-z0-9._%+-]+@[a-z0-9.-]+\\\\.[a-z]{2,4}$'),\r\n      ]),\r\n      countryCode: '250',\r\n    });\r\n  }\r\n\r\n  next() {\r\n    this.submitted = true;\r\n    if (this.Step3Form.valid) {\r\n      this.mapFrom();\r\n      this.store.setMandateIDBeforePayment(this.mandateBeforePaymentID);\r\n      this.store.saveSymptom(this.symptom);\r\n      this.store.saveDevice(this.device);\r\n      this.store.saveConsumer(this.consumer);\r\n      this.store.saveShippingDetails(this.shipping_details);\r\n      this.router.navigate([RoutesPaths.connectedStep4], {\r\n        state: {\r\n          // device: this.device,\r\n          // symptom: this.symptom,\r\n          // consumer: this.consumer,\r\n          // mandateId: this.mandateBeforePaymentID,\r\n          // shipping_details: this.shipping_details\r\n        },\r\n      });\r\n    }\r\n  }\r\n\r\n  prev() {\r\n    this.mapFrom();\r\n    this.store.setMandateIDBeforePayment(this.mandateBeforePaymentID);\r\n    this.store.saveSymptom(this.symptom);\r\n    this.store.saveDevice(this.device);\r\n    this.store.saveConsumer(this.consumer);\r\n    this.store.saveShippingDetails(this.shipping_details);\r\n    this.router.navigate([RoutesPaths.connectedStep2], {\r\n      state: {\r\n        // device: this.device,\r\n        // symptom: this.symptom,\r\n        // consumer: this.consumer,\r\n        // mandateId: this.mandateBeforePaymentID,\r\n        // shipping_details: this.shipping_details\r\n      },\r\n    });\r\n  }\r\n\r\n  mapFrom() {\r\n    let rawValue = this.Step3Form.value.phoneNumber.replace(/\\s+/g, '');\r\n    this.Step3Form.get('phoneNumber')?.setValue(rawValue);\r\n    const formValue = this.Step3Form.value;\r\n    this.consumer = {\r\n      title: formValue.title,\r\n      firstName: formValue.firstName,\r\n      lastName: formValue.lastName,\r\n      address1: formValue.address,\r\n      zip: formValue.zip,\r\n      city: formValue.city,\r\n      countryCode: formValue.countryCode,\r\n      countryLabel: formValue.countryLabel,\r\n      phoneNumber: formValue.phoneNumber,\r\n      email: formValue.email,\r\n    };\r\n  }\r\n\r\n  get f() {\r\n    return this.Step3Form.controls;\r\n  }\r\n}\r\n","<acf-connected-layout [app]=\"app\">\r\n  <acf-connected-steps-layout [appName]=\"app\" [step]=\"3\">\r\n    <div class=\"step3-form\">\r\n      <form [formGroup]=\"Step3Form\">\r\n        <div class=\"text-left mb-2 mt-3\">\r\n          <p class=\"acf-text-sm \">Merci de renseigner vos coordonnées. </p>\r\n        </div>\r\n        <div class=\"grid\">\r\n          <div class=\"col-12 md:col-6\">\r\n            <label class=\"block font-bold mb-2 required-input\" for=\"firstName\">Civilité </label>\r\n            <p-dropdown [style]=\"{'width':'100%','border-radius':'0cm'}\" formControlName=\"title\" optionValue=\"key\"\r\n              optionLabel=\"value\" [options]=\"gender\" [ngStyle]=\"{'width.em': 100}\"\r\n              [ngClass]=\"{ 'acf-invalid-dropdown':(submitted || f['title'].dirty) && f['title'].errors }\"></p-dropdown>\r\n            <div *ngIf=\"(submitted || f['title'].dirty) && f['title'].errors\" class=\"acf-invalid-feedback\">\r\n              <div *ngIf=\"f['title'].errors['required']\"> Ce champ est obligatoire.\r\n              </div>\r\n            </div>\r\n          </div>\r\n        </div>\r\n        <div class=\"grid\">\r\n          <div class=\"col-12 md:col-6\">\r\n            <label class=\"block  font-bold mb-2 required-input\" for=\"firstName\">Prénom </label>\r\n            <input pInputText class=\"w-full\" id=\"firstName\" formControlName=\"firstName\"\r\n              [ngClass]=\"{ 'acf-invalid-input':(submitted || f['firstName'].dirty) && f['firstName'].errors }\" />\r\n            <div class=\"acf-invalid-feedback\" *ngIf=\"(submitted || f['firstName'].dirty) && f['firstName'].errors\">\r\n              <div *ngIf=\"f['firstName'].errors['required']\">Ce champ est obligatoire.</div>\r\n            </div>\r\n          </div>\r\n          <div class=\"col-12 md:col-6\">\r\n            <label class=\"block font-bold mb-2 required-input\" for=\"lastName\">Nom </label>\r\n            <input pInputText class=\"w-full\" id=\"lastName\" formControlName=\"lastName\"\r\n              [ngClass]=\"{ 'acf-invalid-input':(submitted || f['lastName'].dirty) && f['lastName'].errors }\" />\r\n            <div class=\"acf-invalid-feedback\" *ngIf=\"(submitted || f['lastName'].dirty) && f['lastName'].errors\">\r\n              <div *ngIf=\"f['lastName'].errors['required']\">Ce champ est obligatoire.</div>\r\n            </div>\r\n          </div>\r\n          <div class=\"col-12 md:col-6\">\r\n            <label class=\"block  font-bold mb-2 required-input\" for=\"email\">Email </label>\r\n            <p-iconField iconPosition=\"right\">\r\n              <input pInputText class=\"w-full\" id=\"email\" formControlName=\"email\"\r\n                [ngClass]=\"{ 'acf-invalid-input': (submitted || f['email'].dirty) && (f['email'].errors) }\" />\r\n            </p-iconField>\r\n            <div class=\"acf-invalid-feedback\" *ngIf=\"(submitted || f['email'].dirty) && f['email'].errors\">\r\n              <div *ngIf=\"f['email'].errors['required']\">Ce champ est obligatoire.</div>\r\n              <div *ngIf=\"f['email'].errors['pattern']\">Email incorrect. </div>\r\n            </div>\r\n          </div>\r\n          <div class=\"col-12 md:col-6\">\r\n            <label class=\"block  font-bold mb-2 required-input\" for=\"phoneNumber\">Téléphone </label>\r\n            <div class=\"flex\">\r\n              <input type=\"text\" pInputText value=\"+33\" class=\"acf-input-prefix\" readonly>\r\n              <p-iconField iconPosition=\"right\" class=\"w-full\">\r\n                <p-inputMask id=\"phoneNumber\" formControlName=\"phoneNumber\" mask=\"9 99 99 99 99\"\r\n                  class=\"w-full acf-input-mask\" slotChar=\"_\"\r\n                  [ngClass]=\"{ 'acf-invalid-inputmask':(submitted || f['phoneNumber'].dirty) && (f['phoneNumber'].errors) }\"></p-inputMask>\r\n              </p-iconField>\r\n            </div>\r\n            <div *ngIf=\"(f['phoneNumber'].dirty || submitted) && f['phoneNumber'].errors\" class=\"acf-invalid-feedback\">\r\n              <div *ngIf=\"f['phoneNumber'].errors['required']\"> Ce champ est obligatoire. </div>\r\n              <div *ngIf=\"f['phoneNumber'].errors['pattern']\"> Le numéro de téléphone doit être un numéro français\r\n                valide,\r\n                commencer par 1, 2, 3, 4, 5, 6 ou 7 et contenir exactement 9 chiffres. </div>\r\n            </div>\r\n          </div>\r\n        </div>\r\n        <acf-address-form [submitted]=\"submitted\"></acf-address-form>\r\n      </form>\r\n    </div>\r\n    <div class=\"guest-action\">\r\n      <button pButton label=\"Etape précédente\" class=\"acf-secondary-button mr-3\" (click)=\"prev()\"></button>\r\n      <button pButton label=\"Etape suivante\" class=\"acf-primary-button \" (click)=\"next()\" ></button>\r\n    </div>\r\n  </acf-connected-steps-layout>\r\n</acf-connected-layout>","import { Component, Inject, Input, OnInit, ViewChild } from '@angular/core';\r\nimport { MapAdvancedMarker, MapInfoWindow } from '@angular/google-maps';\r\nimport { RepairerInfo, RepairerInfos } from '../../models/response/repairer-info.response';\r\nimport { GoogleMapsService } from '../../services/google-map.service';\r\nimport { MandateService } from '../../services/mandate.service';\r\nimport { RepairAndShippingPricesRequest } from '../../models/request/repair-shipping-prices.request';\r\nimport { RepairersAssignedRequest } from '../../models/request/repairers-assigned.request';\r\nimport { Router } from '@angular/router';\r\nimport { RoutesPaths } from '../../enums/routePaths';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { DataStoreService } from '../../services/data-store.service';\r\nimport { DynamicDialogRef } from 'primeng/dynamicdialog';\r\nimport { MessageService } from 'primeng/api';\r\nimport {\r\n  Consumer,\r\n  CreateMandateBeforePaymentRequest,\r\n  UpdateMandateBeforePaymentRequest,\r\n} from '../../models/request/create-mandate.request';\r\nimport { Symptom } from '../../models/shared/iris-symptom';\r\nimport { MappedProduct } from '../../models/shared/product';\r\nimport { ShippingDetails } from '../../models/shared/shipping-details';\r\nimport { DropOffPoint, Rapair, RepairAndShippingPrices } from '../../models/response/repair-shipping-prices.response';\r\nimport { LIB_CONFIG, LibConfig } from '../../config.token';\r\nconst parseJsonSafely = (data: string | null) => {\r\n  try {\r\n    return data ? JSON.parse(data) : null;\r\n  } catch (error) {\r\n    console.error('Error parsing JSON:', error);\r\n    return null;\r\n  }\r\n};\r\n@Component({\r\n  selector: 'acf-connected-step-four',\r\n  templateUrl: './connected-step-four.component.html',\r\n  styleUrl: './connected-step-four.component.scss',\r\n  standalone: false\r\n})\r\nexport class ConnectedStepFourComponent implements OnInit {\r\n  @Input() app: string = '';\r\n  @ViewChild(MapInfoWindow) infoWindow!: MapInfoWindow;\r\n  repairPrices!: RepairAndShippingPrices;\r\n  selectedDeliveryOption: any = null;\r\n  selectedPostOffice: any = null;\r\n  submitted = false;\r\n  allCalculationsCompleted = false;\r\n  deliveryOptions: any[] = [];\r\n  myLocation: any;\r\n  //Lists\r\n  listPostes: any[] = [];\r\n  listPostesSorted: any[] = [];\r\n  listRepairers: Rapair[] = []; //RepairerInfos\r\n  fixedPoint = {\r\n    lat: parseFloat(this.store.getLat()),\r\n    lng: parseFloat(this.store.getLng()),\r\n  };\r\n  options: google.maps.MapOptions = {\r\n    mapId: this.config.MAP_ID,\r\n    center: this.fixedPoint,\r\n    zoom: 12,\r\n  };\r\n  step4Form: FormGroup;\r\n  loginRedirection!: boolean;\r\n  ref: DynamicDialogRef | undefined;\r\n  loading: boolean = true;\r\n  messages!: any[];\r\n  device: MappedProduct;\r\n  symptom: Symptom;\r\n  consumer: Consumer | any;\r\n  mandateBeforePayment: string;\r\n  shipping_details: ShippingDetails;\r\n  isOutOfWarranty: boolean;\r\n  constructor(\r\n    private readonly googleMapsService: GoogleMapsService,\r\n    private readonly mandateService: MandateService,\r\n    private readonly router: Router,\r\n    private readonly formBuilder: FormBuilder,\r\n    private readonly store: DataStoreService,\r\n    private readonly messageService: MessageService,\r\n    @Inject(LIB_CONFIG) private config: LibConfig\r\n  ) {\r\n    this.step4Form = this.onItniFrom();\r\n    this.device = parseJsonSafely(this.store.getDevice());\r\n    this.symptom = parseJsonSafely(this.store.getSymptom()) \r\n    this.consumer = parseJsonSafely(this.store.getConsumer());\r\n    this.mandateBeforePayment = this.store.getMandateIDBeforePayment();\r\n    this.shipping_details = parseJsonSafely(this.store.getShippingDetails());\r\n     this.isOutOfWarranty = this.store.isOutWaranty();\r\n    if (!this.isOutOfWarranty) {\r\n      this.deliveryOptions = [\r\n        { name: 'Déposer l’appareil chez le réparateur ', key: 0 },\r\n        { name: 'Envoyer l’appareil par colis', key: 1 }\r\n      ];\r\n       this.step4Form = this.onItniFrom();\r\n    } else {\r\n      this.deliveryOptions = [\r\n        { name: 'Déposer l’appareil chez le réparateur ', key: 0 },\r\n        { name: 'Expédier l’appareil via un transporteur', key: 2}\r\n      ];\r\n      this.step4Form = this.onItniFrom(this.deliveryOptions[0]);\r\n    }\r\n  }\r\n\r\n  onItniFrom(pickUp? :{name: string, key: number}): FormGroup {\r\n    return this.formBuilder.group({\r\n      repairPrice: [''],\r\n      shippingPrice: [''],\r\n      clientCode: [''],\r\n      atsCode: [''],\r\n      currencyCode: [''],\r\n      currencySymbol: [''],\r\n      ecoSupport: 0,\r\n      pickUp: [pickUp ? pickUp : '', Validators.required],\r\n      pickUpChoice: [''],\r\n      carrierCode: [''],\r\n      fromName: [''],\r\n      fromAddress1: [''],\r\n      fromZip: [''],\r\n      fromCity: [''],\r\n      fromCountryCode: [''],\r\n      fromPhone: [''],\r\n      toName: [''],\r\n      toAddress1: [''],\r\n      toZip: [''],\r\n      toCity: [''],\r\n      toCountryCode: [''],\r\n      toPhone: [''],\r\n      selectedPostOffice: [''],\r\n      weight: [''],\r\n    });\r\n  }\r\n\r\n  get f() {\r\n    return this.step4Form.controls;\r\n  }\r\n\r\n  addFixedPointIcon() {\r\n    const fixedPointMarker = `../../../assets/${this.app}/map/map-user-address.png`;\r\n    const imgTag = document.createElement('img');\r\n    imgTag.src = fixedPointMarker;\r\n    imgTag.width = 40;\r\n    this.myLocation = {\r\n      content: imgTag,\r\n      lat: this.fixedPoint.lat,\r\n      lng: this.fixedPoint.lng,\r\n      address: this.consumer.address1,\r\n    };\r\n  }\r\n\r\n  async onMarkerClick(marker: MapAdvancedMarker, location: any) {\r\n    this.infoWindow.close();\r\n    this.googleMapsService\r\n      .getPlaceId(location.name)\r\n      .subscribe((placeId) => {\r\n        let googleMapsUrl = '';\r\n        if (placeId) {\r\n          googleMapsUrl = `https://www.google.com/maps/search/?api=1&query=Google&query_place_id=${placeId}`;\r\n        } else {\r\n          googleMapsUrl = `https://www.google.com/maps/search/?api=1&query=${location.latitude},${location.longitude}`;\r\n        }\r\n        const contentString = `\r\n    <div id=\"content\">\r\n      <div>\r\n\r\n       ${location.name !== undefined\r\n            ? `\r\n        <div class=\"mt-2\"> <b class=\"mb-2 mr-3\">${location.name}</b></div>\r\n        <div class=\"mt-2\"> <span class=\"mb-2 mr-3\">${location.adresse1}</span></div>\r\n        <div class=\"my-2\"> <span class=\"mb-2 mr-3\">${location.city}</span></div>\r\n            `\r\n            : ''\r\n          }\r\n      </div>\r\n      <div class=\"flex align-items-center justify-content-center\">\r\n        ${location.walk !== undefined\r\n            ? `\r\n          <img src=\"assets/${this.app}/walk-icon.svg\" alt=\"walk\" class=\"mb-2 mx-1\">\r\n          <span class=\"mb-2 mr-3\">${location.walk}</span>\r\n        `\r\n            : ''\r\n          }\r\n        ${location.transit !== undefined\r\n            ? `\r\n          <img src=\"assets/${this.app}/train-icon.svg\" alt=\"transit\" class=\"mb-2 mx-1\">\r\n          <span class=\"mb-2 mr-3\">${location.transit}</span>\r\n        `\r\n            : ''\r\n          }\r\n        ${location.drive !== undefined\r\n            ? `\r\n          <img src=\"assets/${this.app}/car-icon.png\" alt=\"car\" class=\"mb-2 mx-1\" style=\"width: 20px;\">\r\n          <span class=\"mb-2\">${location.drive}</span>\r\n        `\r\n            : ''\r\n          }\r\n      </div>\r\n      <div class=\"mt-1 text-left\">\r\n            <a href=\"${googleMapsUrl}\" target=\"_blank\" class=\"btn btn-primary\">Afficher l'itinéraire</a>\r\n          </div>\r\n    </div>\r\n  `;\r\n        this.infoWindow.openAdvancedMarkerElement(\r\n          marker.advancedMarker,\r\n          contentString\r\n        );\r\n      });\r\n\r\n  }\r\n\r\n  async onMarkerMyLocationClick(marker: MapAdvancedMarker, location: any) {\r\n    this.infoWindow.close();\r\n    const contentString = `\r\n    <div id=\"content\">\r\n      <div class=\"flex align-items-center justify-content-center\">\r\n        ${location.address !== undefined\r\n        ? `\r\n          <img src=\"assets/${this.app}/home-icon.svg\" alt=\"home\" class=\"mb-2 ml-1 mr-2\" style=\"width: 15px;\">\r\n          <span class=\"mb-1 mr-3\">${location.address}</span>\r\n        `\r\n        : ''\r\n      }\r\n      </div>\r\n    </div>\r\n  `;\r\n    this.infoWindow.openAdvancedMarkerElement(\r\n      marker.advancedMarker,\r\n      contentString\r\n    );\r\n  }\r\n\r\n  async onMarkerRepairerClick(marker: MapAdvancedMarker, location: any) {\r\n    this.infoWindow.close();\r\n    this.googleMapsService\r\n      .getPlaceId(this.listRepairers[0].companyName)\r\n      .subscribe((placeId) => {\r\n        let googleMapsUrl = '';\r\n\r\n        if (placeId) {\r\n          googleMapsUrl = `https://www.google.com/maps/search/?api=1&query=Google&query_place_id=${placeId}`;\r\n        } else {\r\n          googleMapsUrl = `https://www.google.com/maps/search/?api=1&query=${this.listRepairers[0].latitude},${this.listRepairers[0].longitude}`;\r\n        }\r\n        const contentString = `\r\n        <div id=\"content\">\r\n          <div>\r\n            ${this.listRepairers[0]?.companyName !== undefined\r\n            ? `\r\n              <div class=\"mt-2\"> <b class=\"mb-2 mr-3\">${this.listRepairers[0].companyName}</b></div>\r\n              <div class=\"mt-2\"> <span class=\"mb-2 mr-3\">${this.listRepairers[0].address1}</span></div>\r\n            `\r\n            : ''\r\n          }\r\n          </div>\r\n          <div class=\"flex align-items-center justify-content-center\">\r\n            ${location.walk !== undefined\r\n            ? `\r\n              <img src=\"assets/${this.app}/walk-icon.svg\" alt=\"walk\" class=\"mb-2 mx-1\">\r\n              <span class=\"mb-2 mr-3\">${location.walk}</span>\r\n            `\r\n            : ''\r\n          }\r\n            ${location.transit !== undefined\r\n            ? `\r\n              <img src=\"assets/${this.app}/train-icon.svg\" alt=\"transit\" class=\"mb-2 mx-1\">\r\n              <span class=\"mb-2 mr-3\">${location.transit}</span>\r\n            `\r\n            : ''\r\n          }\r\n            ${location.drive !== undefined\r\n            ? `\r\n              <img src=\"assets/${this.app}/car-icon.png\" alt=\"car\" class=\"mb-2 mx-1\" style=\"width: 20px;\">\r\n              <span class=\"mb-2\">${location.drive}</span>\r\n            `\r\n            : ''\r\n          }\r\n          </div>\r\n          <div class=\"mt-1 text-left \">\r\n            <a href=\"${googleMapsUrl}\" target=\"_blank\" class=\"btn btn-primary \">Afficher l'itinéraire</a>\r\n          </div>\r\n        </div>\r\n      `;\r\n\r\n        // Open the Info Window after googleMapsUrl is assigned\r\n        this.infoWindow.openAdvancedMarkerElement(\r\n          marker.advancedMarker,\r\n          contentString\r\n        );\r\n      });\r\n  }\r\n\r\n  onPostOfficeSelect(point: any) {\r\n    this.infoWindow.close();\r\n\r\n    if (this.selectedPostOffice === point) {\r\n      this.selectedPostOffice = null;\r\n      this.step4Form.patchValue({\r\n        selectedPostOffice: null,\r\n      });\r\n    } else {\r\n      this.selectedPostOffice = point;\r\n      this.step4Form.patchValue({\r\n        selectedPostOffice: point,\r\n      });\r\n      const postOfficePoint = {\r\n        lat: point.latitude,\r\n        lng: point.longitude,\r\n      };\r\n      this.onChangeCenter(postOfficePoint);\r\n    }\r\n  }\r\n\r\n  onDeliveryOptionSelect(option: any): void {\r\n    this.selectedPostOffice = null; // reset cards selection\r\n    this.selectedDeliveryOption = option;\r\n    this.step4Form.patchValue({\r\n      selectedPostOffice: null,\r\n    });\r\n    if (option?.key == 0 || option.key == 2) {\r\n      console.log(this.listRepairers,'from change center');\r\n      //Déposer l’appareil chez le réparateur\r\n      if (this.listRepairers[0]) {\r\n        const repairerPoint = {\r\n          lat: this.listRepairers[0].latitude,\r\n          lng: this.listRepairers[0].longitude,\r\n        };\r\n        this.onChangeCenter(repairerPoint);\r\n      }\r\n    } else {\r\n      //Envoyer l’appareil par colis\r\n      this.onChangeCenter(this.fixedPoint);\r\n    }\r\n  }\r\n\r\n  onChangeCenter(center: any) {\r\n    const options: google.maps.MapOptions = {\r\n      mapId: this.config.MAP_ID,\r\n      center: center,\r\n      zoom: 12,\r\n    };\r\n    this.options = options;\r\n  }\r\n\r\n  // getRepairersAssignedToUser() {\r\n  //   return new Promise<any>((resolve, reject) => {\r\n  //     const request: RepairersAssignedRequest = {\r\n  //       applicationName: this.app,\r\n  //       zip: this.consumer.zip.zip ? this.consumer.zip.zip : this.consumer.zip,\r\n  //       countryCode: '250',\r\n  //     };\r\n\r\n  //     this.mandateService.getRepairers(request).subscribe(\r\n  //       (data) => {\r\n  //         resolve([data]); // Resolve the promise once processing is done\r\n  //       },\r\n  //       (error) => {\r\n  //         reject(\r\n  //           new Error('Erreur lors de la récupération des données: ' + error)\r\n  //         ); // Reject if there's an error\r\n  //       }\r\n  //     );\r\n  //   });\r\n  // }\r\n\r\n  next() {\r\n    this.submitted = true;\r\n    const pickUpChoice = this.step4Form.value.pickUp.key;\r\n    if (this.step4Form.valid && (pickUpChoice === 0 || pickUpChoice === 2 || (pickUpChoice === 1 && this.step4Form.value.selectedPostOffice !== null))) {\r\n      this.patchForm();\r\n      this.shipping_details = this.getShippinfDetails();\r\n      if (!this.mandateBeforePayment) {\r\n        const step4Values = this.step4Form.value;\r\n        const today = new Date();\r\n        const oof = this.store.isOutWaranty();  \r\n        const interventionTypeId = oof ? 0 : 1;\r\n        const createMandateBeforePayment: CreateMandateBeforePaymentRequest = {\r\n          applicationName: this.store.getApplication(),\r\n          clientCode: step4Values.clientCode, //! STEP 4\r\n          orderMission: (Date.now() + Math.floor(Math.random() * 1000)).toString().slice(0, 10),\r\n          interventionTypeId: interventionTypeId,\r\n          userName: this.consumer.email,\r\n          weight: step4Values.weight,\r\n          brandCode: this.device.brand,\r\n          commercialRef: this.device.commref,\r\n          technicalRef: this.device.refTech,\r\n          familyCode: this.device.family,\r\n          labelRef: this.device.name,\r\n          purchaseDate: this.device.saleDate,\r\n          irisSymptom: this.symptom.symptom.code,\r\n          failureDescription: this.symptom.comment,\r\n          createDate: new Date(today.toISOString()),\r\n          repairPrice: step4Values.repairPrice,\r\n          shippingPrice: step4Values.shippingPrice,\r\n          consumer: {\r\n            title: this.consumer.title, //&STEP 3\r\n            lastName: this.consumer.lastName, //&STEP 3\r\n            firstName: this.consumer.firstName, //&STEP 3\r\n            address1: this.consumer.address1, //&STEP 3\r\n            zip: this.consumer.zip.zip, //&STEP 3\r\n            city: this.consumer.city.city, //&STEP 3\r\n            countryCode: this.consumer.countryCode, //&STEP 3\r\n            countryLabel: 'FR',\r\n            phoneNumber: this.consumer.phoneNumber, //&STEP 3\r\n            email: this.consumer.email, //& Email saisie dans le formulaire\r\n          },\r\n          pickupInfo:\r\n            step4Values.pickUpChoice === 'FROMSTORE'\r\n              ? {\r\n                carrierCode: step4Values.carrierCode,\r\n                pickupChoice: step4Values.pickUpChoice,\r\n                fromName: step4Values.fromName,\r\n                fromAddress1: step4Values.fromAddress1,\r\n                fromZip: step4Values.fromZip,\r\n                fromCity: step4Values.fromCity,\r\n                fromCountryCode: step4Values.fromCountryCode,\r\n                fromPhone: step4Values.fromPhone,\r\n                toName: step4Values.toName,\r\n                toAddress1: step4Values.toAddress1,\r\n                toZip: step4Values.toZip,\r\n                toCity: step4Values.toCity,\r\n                toCountryCode: step4Values.toCountryCode,\r\n                toPhone: step4Values.toPhone\r\n              }\r\n              : null, // If not 'FROMSTORE' (Poste), send a null object\r\n          ecoSupport: step4Values.ecoSupport,\r\n          currencyCode: step4Values.currencyCode,\r\n          currencySymbol: step4Values.currencySymbol,\r\n          atsCodeForStripe: step4Values.atsCode,\r\n        };\r\n        this.mandateService\r\n          .createMandateBeforePayment(createMandateBeforePayment)\r\n          .subscribe(\r\n            (response) => {\r\n              if (response.result == false) {\r\n                this.messageService.add({\r\n                  severity: 'error',\r\n                  detail:\r\n                    \"Une erreur s'est produite sur le serveur. Veuillez réessayer plus tard.\",\r\n                });\r\n              } else {\r\n                this.store.setMandateID(response.mandateId);\r\n                this.store.setOmNumber(createMandateBeforePayment.orderMission);\r\n                this.store.saveSymptom(this.symptom);\r\n                this.store.saveDevice(this.device);\r\n                this.store.saveConsumer(this.consumer);\r\n                this.store.saveShippingDetails(this.shipping_details);\r\n                this.router.navigate([RoutesPaths.connectedStep5]);\r\n              }\r\n            },\r\n            (err) => {\r\n              this.submitted = false;\r\n            }\r\n          );\r\n      } else {\r\n        this.store.setMandateIDBeforePayment(this.mandateBeforePayment);\r\n        this.store.saveSymptom(this.symptom);\r\n        this.store.saveDevice(this.device);\r\n        this.store.saveConsumer(this.consumer);\r\n        this.store.saveShippingDetails(this.shipping_details);\r\n\r\n        this.UpdateMandateBeforePayment();\r\n\r\n      }\r\n    }\r\n  }\r\n  UpdateMandateBeforePayment() {\r\n    const step4Values = this.step4Form.value;\r\n    const today = new Date();\r\n    // const purchaseDate = new Date(this.device.saleDate);\r\n    // const yearsDifference = today.getFullYear() - purchaseDate.getFullYear();\r\n    // const isDateInFuture = today < purchaseDate;\r\n    // const interventionTypeId = !isDateInFuture && yearsDifference <= 2 ? 1 : 0;\r\n        const oof = this.store.isOutWaranty();  \r\n    const interventionTypeId = oof ? 0 : 1;\r\n    const createMandateBeforePayment: UpdateMandateBeforePaymentRequest = {\r\n      applicationName: this.store.getApplication(),\r\n      clientCode: this.shipping_details.clientCode, //! STEP 4\r\n      orderMission: this.store.getOmNumber(),\r\n      interventionTypeId: interventionTypeId,\r\n      weight: step4Values.weight, //? todo\r\n      userName: this.store.getUserName(),\r\n      brandCode: this.device.brand,\r\n      commercialRef: this.device.commref,\r\n      technicalRef: this.device.refTech,\r\n      familyCode: this.device.family,\r\n      labelRef: this.device.name,\r\n      purchaseDate: this.device.saleDate,\r\n      irisSymptom: this.symptom.symptom.code,\r\n      failureDescription: this.symptom.comment,\r\n      createDate: new Date(today.toISOString()),\r\n      repairPrice: step4Values.repairPrice,\r\n      shippingPrice: step4Values.shippingPrice,\r\n      contId: 0,\r\n      contPrdId: 0,\r\n      consumer: {\r\n        title: this.consumer.title, //&STEP 3\r\n        lastName: this.consumer.lastName, //&STEP 3\r\n        firstName: this.consumer.firstName, //&STEP 3\r\n        address1: this.consumer.address1, //&STEP 3\r\n        zip: this.consumer.zip.zip, //&STEP 3\r\n        city: this.consumer.city.city, //&STEP 3\r\n        countryCode: this.consumer.countryCode, //&STEP 3\r\n        countryLabel: 'FR',\r\n        phoneNumber: this.consumer.phoneNumber, //&STEP 3\r\n        email: this.consumer.email, //& Email saisie dans le formulaire\r\n      },\r\n      pickupInfo:\r\n        step4Values.pickUpChoice === 'FROMSTORE'\r\n          ? {\r\n            carrierCode: step4Values.carrierCode,\r\n            pickupChoice: step4Values.pickUpChoice,\r\n            fromName: step4Values.fromName,\r\n            fromAddress1: step4Values.fromAddress1,\r\n            fromZip: step4Values.fromZip,\r\n            fromCity: step4Values.fromCity,\r\n            fromCountryCode: step4Values.fromCountryCode,\r\n            fromPhone: step4Values.fromPhone,\r\n            toName: step4Values.toName,\r\n            toAddress1: step4Values.toAddress1,\r\n            toZip: step4Values.toZip,\r\n            toCity: step4Values.toCity,\r\n            toCountryCode: step4Values.toCountryCode,\r\n            toPhone: step4Values.toPhone\r\n          }\r\n          : null, // If not 'FROMSTORE' (Poste), send a null object\r\n      ecoSupport: step4Values.ecoSupport,\r\n      currencyCode: step4Values.currencyCode,\r\n      currencySymbol: step4Values.currencySymbol,\r\n      atsCodeForStripe: step4Values.atsCode,\r\n      mandateId: this.store.getMandateID(),\r\n     /*fileId*/\r\n      ...(this.store.getFileId() && { fileId: this.store.getFileId() })\r\n    };\r\n    this.mandateService.UpdateMandateBeforePayment(createMandateBeforePayment).subscribe(\r\n      (response) => {\r\n        if (response.result) {\r\n          // this.createMandate();\r\n          this.router.navigate([RoutesPaths.connectedStep5]);\r\n        }\r\n        else {\r\n          this.messages = [{ severity: 'error', detail: 'Une erreur serveur s\\'est produite lors de la création du contrat.' }];\r\n          setTimeout(() => {\r\n            this.messages = [];\r\n          }, 5000);\r\n        }\r\n\r\n      }\r\n    )\r\n  }\r\n  prev() {\r\n    this.shipping_details = this.getShippinfDetails();\r\n    this.store.setMandateIDBeforePayment(this.mandateBeforePayment);\r\n    this.store.saveSymptom(this.symptom);\r\n    this.store.saveDevice(this.device);\r\n    this.store.saveConsumer(this.consumer);\r\n    this.store.saveShippingDetails(this.shipping_details);\r\n    this.router.navigate([RoutesPaths.connectedStep3]);\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.addFixedPointIcon();\r\n    this.GetRepairInformation();\r\n    this.allCalculationsCompleted = true;\r\n  }\r\n  // Function to process post offices\r\n  private async processPostOffices(dropOffPoints: DropOffPoint[]) {\r\n    this.listPostes = dropOffPoints.map(point => ({\r\n      ...point,\r\n      latitude: Number(point.latitude),\r\n      longitude: Number(point.longitude),\r\n    }));\r\n    const postOfficeMarker =\r\n      '../../../assets/' + this.app + '/map/map-post-office.png';\r\n\r\n    this.listPostes.forEach((element) => {\r\n      let imgTag = document.createElement('img');\r\n      imgTag.src = postOfficeMarker;\r\n      imgTag.width = 40;\r\n      element.content = imgTag;\r\n    });\r\n    await this.calculateDistancesAndDurations(this.listPostes);\r\n    this.listPostesSorted = this.listPostes\r\n      .filter((post) => post.distance) // Ensure distance, walk, and transit exist\r\n      .map((post) => {\r\n        const numericDistance = this.googleMapsService.parseDistance(\r\n          post.distance\r\n        );\r\n        return { ...post, numericDistance };\r\n      })\r\n      .sort((a, b) => a.numericDistance - b.numericDistance)\r\n      .slice(0, 2);\r\n  }\r\n  // private async getRepairAndShippingPrices() {\r\n  //   // Retrieving and parsing the form data\r\n\r\n  //   // Warranty check logic directly in interventionTypeId\r\n  //   const today = new Date();\r\n  //   const purchaseDate = new Date(this.device.saleDate);\r\n  //   const yearsDifference = today.getFullYear() - purchaseDate.getFullYear();\r\n  //   const isDateInFuture = today < purchaseDate;\r\n  //   const interventionTypeId = !isDateInFuture && yearsDifference <= 2 ? 1 : 0;\r\n  //   console.log(interventionTypeId, purchaseDate)\r\n  //   const request: RepairAndShippingPricesRequest = {\r\n  //     applicationName: this.app,\r\n  //     commercialRef: this.device.commref,\r\n  //     technicalRef: this.device.refTech,\r\n  //     clientCode: this.listRepairers[0].clientCode,\r\n  //     interventionTypeId: 0,\r\n  //     isPem: true,\r\n  //   };\r\n\r\n  //   this.mandateService.getRepairAndShippingPrices(request).subscribe(\r\n  //     (data) => {\r\n  //       this.repairPrices = data;\r\n  //       this.loading = false;\r\n  //     },\r\n  //     (_) => console.log(_)\r\n  //   );\r\n  // }\r\n  // Function to process repairers\r\n  private async processRepairers(repairer: Rapair) {\r\n    const repairers = [repairer];\r\n    this.listRepairers = await repairers;\r\n    const repairerMarker =\r\n      '../../../assets/' + this.app + '/map/map-repairer.png';\r\n   if (this.listRepairers && this.listRepairers.length == 1) {\r\n        const repairerPoint = {\r\n          lat: this.listRepairers[0].latitude,\r\n          lng: this.listRepairers[0].longitude,\r\n        };\r\n        this.onChangeCenter(repairerPoint);\r\n      }\r\n    this.listRepairers.forEach((element) => {\r\n      let imgTag = document.createElement('img');\r\n      imgTag.src = repairerMarker;\r\n      imgTag.width = 40;\r\n      element.content = imgTag;\r\n    });\r\n\r\n    await this.calculateDistancesAndDurations(this.listRepairers);\r\n    if (\r\n      this.googleMapsService.parseDistance(this.listRepairers[0].distance) >\r\n      20000  && !this.isOutOfWarranty\r\n    ) {\r\n      this.step4Form.patchValue({\r\n        pickUp: this.deliveryOptions[1],\r\n      });\r\n      this.onDeliveryOptionSelect(this.deliveryOptions[1]);\r\n      this.messages = [\r\n        {\r\n          severity: 'info',\r\n          detail:\r\n            \" Étant donné que la distance entre votre localisation et le réparateur dépasse 20 km,  l'option d'envoi par poste est sélectionnée par défaut.\",\r\n        },\r\n      ];\r\n      setTimeout(() => {\r\n        this.messages = []; // Clear error message after 5 seconds\r\n      }, 15000);\r\n    }\r\n  }\r\n\r\n  private async GetRepairInformation() {\r\n\r\n    const request: RepairAndShippingPricesRequest = {\r\n      applicationName: this.app,\r\n      commercialRef: this.device.commref,\r\n      technicalRef: this.device.refTech,\r\n      consumerCity: this.consumer.city.city,\r\n      consumerZipCode: this.consumer.city.zip,\r\n      consumerAddress: this.consumer.address1,\r\n      isUnderGuarantee: !this.isOutOfWarranty\r\n    };\r\n\r\n    this.mandateService.GetRepairInformation(request).subscribe(\r\n      (data) => {\r\n        const repairPrices = {\r\n          repairPrice: data.repairPrice,\r\n          totalRepairPrice: data.repairPrice,\r\n          currencyCode: data.currencyCode,\r\n          currencySymbol: data.currencySymbol,\r\n          weight: data.deviceWeight,\r\n          shippingPrice: data.shippingPrice,\r\n          ecoSupport: data.ecoSupport,\r\n          shippingCurrencySymbol: data.currencySymbol,\r\n          shippingCurrencyCode: data.currencyCode,\r\n        }\r\n        this.repairPrices = repairPrices;\r\n        // Fetch and process post offices\r\n        const dropOffPoints = data.dropOffPoints;\r\n        if(dropOffPoints && dropOffPoints.length > 0) {\r\n          this.processPostOffices(dropOffPoints);\r\n        }\r\n\r\n        // Fetch and process repairers\r\n        const repairer = data.rapair;\r\n        this.processRepairers(repairer);\r\n        this.loading = false;\r\n      },\r\n      (_) => console.log(_)\r\n    );\r\n  }\r\n  // Function to calculate distances and durations\r\n  private async calculateDistancesAndDurations(points: any[]) {\r\n\r\n    const calculationPromises = points.map(async (point) => {\r\n      try {\r\n        const walkResult = await this.googleMapsService.calculateTime(\r\n          this.fixedPoint.lat,\r\n          this.fixedPoint.lng,\r\n          point.latitude || point.geometry.location.lat(),\r\n          point.longitude || point.geometry.location.lng(),\r\n          google.maps.TravelMode.WALKING\r\n        );\r\n        point.walk = walkResult.duration;\r\n        point.distance = walkResult.distance;\r\n\r\n        const transitResult = await this.googleMapsService.calculateTime(\r\n          this.fixedPoint.lat,\r\n          this.fixedPoint.lng,\r\n          point.latitude || point.geometry.location.lat(),\r\n          point.longitude || point.geometry.location.lng(),\r\n          google.maps.TravelMode.TRANSIT\r\n        );\r\n        point.transit = transitResult.duration;\r\n        const driveResult = await this.googleMapsService.calculateTime(\r\n          this.fixedPoint.lat,\r\n          this.fixedPoint.lng,\r\n          point.latitude || point.geometry.location.lat(),\r\n          point.longitude || point.geometry.location.lng(),\r\n          google.maps.TravelMode.DRIVING\r\n        );\r\n        point.drive = driveResult.duration;\r\n      } catch (error) { }\r\n    });\r\n\r\n    await Promise.all(calculationPromises);\r\n  }\r\n\r\n  patchForm() {\r\n    const pickUpChoice = this.step4Form.value.pickUp.key;\r\n    this.step4Form.patchValue({\r\n      repairPrice: this.repairPrices.repairPrice,\r\n      clientCode: this.listRepairers[0].clientCode,\r\n      atsCode: this.listRepairers[0].atsCode,\r\n      shippingPrice: this.repairPrices.shippingPrice,\r\n      currencyCode: this.repairPrices.currencyCode,\r\n      currencySymbol: this.repairPrices.currencySymbol,\r\n      ecoSupport: this.repairPrices.ecoSupport,\r\n      weight: this.repairPrices.weight,\r\n      pickUpChoice: pickUpChoice ? 'FROMSTORE' : '',\r\n      carrierCode: 'Poste',\r\n      fromName: this.selectedPostOffice?.name,\r\n      fromAddress1: this.selectedPostOffice?.adresse1,\r\n      fromZip: this.selectedPostOffice?.zipCode,\r\n      fromCity: this.selectedPostOffice?.city,\r\n      fromCountryCode: this.listRepairers[0].countryCode,\r\n      fromPhone: this.listRepairers[0].phoneNumber,\r\n      toName: this.listRepairers[0].companyName,\r\n      toAddress1: this.listRepairers[0].address1,\r\n      toZip: this.listRepairers[0].zipCode,\r\n      toCity: this.listRepairers[0].city,\r\n      toCountryCode: this.listRepairers[0].countryCode,\r\n      toPhone: this.listRepairers[0].phoneNumber,\r\n    });\r\n  }\r\n\r\n  getShippinfDetails(): ShippingDetails {\r\n    return {\r\n      repairPrice: this.step4Form.value.repairPrice,\r\n      shippingPrice: this.step4Form.value.shippingPrice,\r\n      clientCode: this.step4Form.value.clientCode,\r\n      atsCode: this.step4Form.value.atsCode,\r\n      currencyCode: this.step4Form.value.currencyCode,\r\n      currencySymbol: this.step4Form.value.currencySymbol,\r\n      ecoSupport: this.step4Form.value.ecoSupport,\r\n      pickUp: this.step4Form.value?.pickUp,\r\n      pickUpChoice: this.step4Form.value.pickUpChoice,\r\n      carrierCode: 'Poste',\r\n      fromName: this.step4Form.value.fromName,\r\n      fromAddress1: this.step4Form.value.fromAddress1,\r\n      fromZip: this.step4Form.value.fromZip,\r\n      fromCity: this.step4Form.value.fromCity,\r\n      fromCountryCode: this.step4Form.value.fromCountryCode,\r\n      fromPhone: this.step4Form.value.fromPhone,\r\n      toName: this.step4Form.value.toName,\r\n      toAddress1: this.step4Form.value.toAddress1,\r\n      toZip: this.step4Form.value.toZip,\r\n      toCity: this.step4Form.value.toCity,\r\n      toCountryCode: this.step4Form.value.toCountryCode,\r\n      toPhone: this.step4Form.value.toPhone,\r\n      selectedPostOffice: {\r\n        city: this.step4Form.value.selectedPostOffice?.city,\r\n        country: this.step4Form.value.selectedPostOffice?.country,\r\n        name: this.step4Form.value.selectedPostOffice?.name,\r\n        postalCode: this.step4Form.value.selectedPostOffice?.postalCode,\r\n      },\r\n    };\r\n  }\r\n\r\n  onPhoneClick(phoneNumber?: string) {\r\n    if (!phoneNumber) return;\r\n    window.location.href = `tel:${phoneNumber}`;\r\n  }\r\n\r\n  onEmailClick(emailAddress?: string) {\r\n    if (!emailAddress) return;\r\n    window.location.href = `mailto:${emailAddress}`;\r\n  }\r\n}\r\n","<acf-connected-layout [app]=\"app\">\r\n  <acf-connected-steps-layout [appName]=\"app\" [step]=\"4\">\r\n    <div class=\"grid\">\r\n      <!-- Left Column: Delivery and Repair Details -->\r\n      <div class=\"col-12 md:col-6\">\r\n        <form [formGroup]=\"step4Form\">\r\n\r\n          <!-- Delivery Options Section -->\r\n          <div class=\"delivery-details\">\r\n            @if(!loading && listRepairers && isOutOfWarranty){\r\n            <div class=\"cursor-pointer card-box-primary p-3 h-full flex flex-column border-round-lg mb-3\"\r\n              *ngFor=\"let rep of listRepairers; let i = index\" [ngClass]=\"{'selected-card-box':  i  === 0}\">\r\n              <div class=\"flex gap-2\">\r\n                <img [src]=\"'assets/' + app + '/map-bnw-icon-blue.svg'\" alt=\"map\" class=\"w-1rem\">\r\n                <div class=\"text-900 font-bold\"> {{listRepairers[0]?.distance}} </div>\r\n              </div>\r\n              <div class=\"text-900 font-bold my-2\"> {{listRepairers[0]?.companyName}} </div>\r\n              <div class=\"my-2\"> {{listRepairers[0]?.address1}} {{listRepairers[0]?.zipCode}} {{listRepairers[0]?.city}}</div>\r\n              <!-- Contact Section -->\r\n              <div class=\"flex items-center py-2\">\r\n                <!-- Phone Section -->\r\n                <div *ngIf=\"listRepairers[0]?.phoneNumber\" class=\"flex items-center gap-2 cursor-pointer py-2 pl-3 border-left-3 border-900\"\r\n                  (click)=\"onPhoneClick(listRepairers[0]?.phoneNumber)\">\r\n                  <i class=\"pi pi-phone text-xl\"></i>\r\n                  <span class=\"text-gray-800 font-medium\">{{ listRepairers[0]?.phoneNumber }}</span>\r\n                </div>\r\n                <!-- Email Section -->\r\n                <div class=\"flex items-center gap-2 cursor-pointer py-2 pl-3 border-left-3 border-900\"\r\n                 [ngClass]=\"{ 'ml-6':listRepairers[0]?.phoneNumber}\" \r\n                (click)=\"onEmailClick(listRepairers[0]?.email)\">\r\n                  <i class=\"pi pi-envelope text-xl\"></i>\r\n                  <span class=\"text-gray-800 font-medium\">Envoyer un email</span>\r\n                </div>\r\n              </div>\r\n            </div>\r\n            }\r\n            <p class=\"font-semibold text-md line-height-4 required-input\">Sélectionnez le mode de livraison</p>\r\n            <div class=\"card\">\r\n              <p-messages [(value)]=\"messages\" [closable]=\"true\" />\r\n            </div>\r\n            <div class=\"flex flex-column gap-1\">\r\n              @if(!loading){\r\n              <div *ngFor=\"let deliveryOption of deliveryOptions\" class=\"field-checkbox\">\r\n                <p-radioButton [inputId]=\"deliveryOption.key\" formControlName=\"pickUp\" name=\"pickUp\"\r\n                  [value]=\"deliveryOption\" (onClick)=\"onDeliveryOptionSelect(deliveryOption)\"\r\n                  [ngClass]=\"{ 'ng-invalid ng-dirty': submitted && f['pickUp'].value == ''}\" />\r\n                <label [for]=\"deliveryOption.key\" class=\"ml-2\">\r\n                  {{ deliveryOption.name }}\r\n                  <span *ngIf=\"deliveryOption?.key === 2\">\r\n                    <br>\r\n                    <span class=\"font-semibold text-xs mt-2\">(les frais d’expédition restent à la charge du\r\n                      consommateur)</span>\r\n                  </span>\r\n                </label>\r\n              </div>\r\n              <div class=\"acf-invalid-feedback\" *ngIf=\"submitted && f['pickUp'].errors\">\r\n                <div *ngIf=\"f['pickUp'].errors['required']\">Merci de sélectionner un mode de livraison.</div>\r\n              </div>\r\n              }\r\n            </div>\r\n          </div>\r\n        </form>\r\n        <!-- Nearby Post Offices Section -->\r\n        <div *ngIf=\"selectedDeliveryOption?.key === 1\">\r\n          <p class=\"font-semibold text-md line-height-4 required-input\">Points relais à proximité</p>\r\n          <p class=\"font-medium text-md line-height-2\">Merci de choisir l'emplacement qui vous convient</p>\r\n          @if(listPostesSorted) {\r\n          <div pRipple class=\" cursor-pointer card-box-primary p-3 h-full flex flex-column border-round-lg mb-3\"\r\n            *ngFor=\"let point of listPostesSorted\" [ngClass]=\"{'selected-card-box': selectedPostOffice === point}\"\r\n            (click)=\"onPostOfficeSelect(point)\">\r\n\r\n            <div class=\"flex justify-content-between flex-wrap\">\r\n              <div class=\"flex align-items-center justify-content-center\">\r\n                <img [src]=\"'assets/' + app + '/map-bnw-icon.svg'\" alt=\"map\" class=\"mb-2 w-1rem mr-1\">\r\n                <div class=\"text-900 font-bold text-md mb-2\">{{ point.distance }}</div>\r\n              </div>\r\n              <div class=\"flex align-items-center justify-content-center\">\r\n                <!-- Walk -->\r\n                <ng-container *ngIf=\"point.walk !== undefined\">\r\n                  <img [src]=\"'assets/' + app + '/walk-icon.svg'\" alt=\"walk\" class=\"mb-2 mx-1\">\r\n                  <span class=\"mb-2 mr-3\">{{ point.walk }}</span>\r\n                </ng-container>\r\n\r\n                <!-- Transit -->\r\n                <ng-container *ngIf=\"point.transit !== undefined\">\r\n                  <img [src]=\"'assets/' + app + '/train-icon.svg'\" alt=\"transit\" class=\"mb-2 mx-1\">\r\n                  <span class=\"mb-2 mr-3\">{{ point.transit }}</span>\r\n                </ng-container>\r\n\r\n                <!-- Drive -->\r\n                <ng-container *ngIf=\"point.drive !== undefined\">\r\n                  <img [src]=\"'assets/' + app + '/car-icon.png'\" alt=\"car\" class=\"mb-2 mx-1\" style=\"width: 20px;\">\r\n                  <span class=\"mb-2\">{{ point.drive }}</span>\r\n                </ng-container>\r\n              </div>\r\n\r\n            </div>\r\n\r\n            <div class=\"text-600\">{{ point.name }}</div>\r\n          </div>\r\n          <div class=\"acf-invalid-feedback\"\r\n            *ngIf=\"submitted && selectedDeliveryOption?.key == 1 && !selectedPostOffice\">\r\n            <div>Merci de sélectionner une adresse parmi les points relais disponibles.</div>\r\n          </div>\r\n          } @else{\r\n          <div class=\"card-box-primary p-3 h-full flex flex-column border-round-lg mb-3\">\r\n\r\n            <div class=\"flex  mb-2\">\r\n              <i class=\"pi pi-map-marker text-600 mr-2 text-lg\"></i>\r\n              <div class=\"text-900 font-bold text-md\">Aucun point relais disponible</div>\r\n            </div>\r\n\r\n            <div class=\"text-600 mt-2\"> Aucun point relais n'est disponible à proximité.\r\n            </div>\r\n          </div>\r\n          }\r\n          <div class=\"acf-invalid-feedback\"\r\n            *ngIf=\"submitted && selectedDeliveryOption?.key == 1 && !selectedPostOffice && !listPostesSorted\">\r\n            <div>Aucun point relais n'est disponible à proximité, Merci de choisir un autre mode de livraison.</div>\r\n          </div>\r\n        </div>\r\n\r\n        <!-- Repair Details Section -->\r\n        <div class=\"repair-details\" *ngIf=\"selectedDeliveryOption && repairPrices.totalRepairPrice > 0\">\r\n          <p class=\"font-semibold text-md line-height-4\">Vous pouvez réparer votre appareil avec le pack suivant:</p>\r\n\r\n          <div *ngIf=\"repairPrices; else noForfaits\">\r\n            <div class=\"card-box-primary p-3 border-round-lg w-12rem border-round-lg \">\r\n              <img [src]=\"'assets/' + app + '/repairer.png'\" alt=\"Guidelines Logo\"\r\n                class=\"w-10rem card-box-primary border-round-lg\">\r\n              <p class=\"text-600 text-md\">Forfait réparation + matériel</p>\r\n              <span class=\"font-bold text-md price\">{{ repairPrices.totalRepairPrice }} {{ repairPrices.currencySymbol\r\n                }}</span>\r\n              <p class=\"acf-h4-title\" *ngIf=\"repairPrices.ecoSupport && repairPrices?.currencySymbol\"> <span\r\n                  class=\"font-bold\">- {{ repairPrices.ecoSupport }}\r\n                  {{repairPrices.currencySymbol}}</span> Bonus de\r\n                réparation\r\n              </p>\r\n            </div>\r\n            <p class=\"font-semibold text-md line-height-4\">\r\n              Veuillez noter que les frais de transport aller seront à votre charge. En revanche, les frais de retour\r\n              sont\r\n              inclus dans le forfait de réparation.\r\n            </p>\r\n          </div>\r\n\r\n          <!-- No Available Forfaits Template -->\r\n          <ng-template #noForfaits>\r\n            <p class=\"text-600\">Aucun forfait disponible pour ce point relais.</p>\r\n          </ng-template>\r\n        </div>\r\n\r\n      </div>\r\n\r\n      <!-- Right Column: Map Section -->\r\n      <div class=\"col-12 md:col-6\">\r\n        <google-map [options]=\"options\" class=\"map-container border-round-lg\">\r\n\r\n          <!-- Display Repairer Markers -->\r\n          @if(selectedDeliveryOption?.key !== 1 && !selectedPostOffice){\r\n          @for (location of listRepairers; track location) {\r\n          <map-advanced-marker #markerElem=\"mapAdvancedMarker\"\r\n            [position]=\"{ lat: location.latitude, lng: location.longitude }\" [content]=\"location.content\"\r\n            [title]=\"'Reparateur'\" (mapClick)=\"onMarkerRepairerClick(markerElem, location)\" />\r\n          }\r\n          }\r\n\r\n          <!-- Display Post Office Markers -->\r\n          @if(selectedDeliveryOption?.key !== 0 && !selectedPostOffice){\r\n          @for (postOffice of listPostesSorted; track postOffice; let index = $index) {\r\n          <map-advanced-marker #markerElem=\"mapAdvancedMarker\"\r\n            [position]=\"{ lat: postOffice.latitude, lng: postOffice.longitude }\" [content]=\"postOffice.content\"\r\n            [title]=\"'La Poste ' + (index + 1)\" (mapClick)=\"onMarkerClick(markerElem, postOffice)\" />\r\n          }\r\n          }\r\n\r\n          <!-- My Location Marker -->\r\n          <map-advanced-marker #markerElem=\"mapAdvancedMarker\" [position]=\"{ lat: myLocation.lat, lng: myLocation.lng }\"\r\n            [content]=\"myLocation.content\" [title]=\"'Ma location'\"\r\n            (mapClick)=\"onMarkerMyLocationClick(markerElem, myLocation)\" />\r\n\r\n          <!-- Selected Post Office Marker -->\r\n          <map-advanced-marker *ngIf=\"selectedPostOffice\" #markerElem=\"mapAdvancedMarker\"\r\n            [position]=\"{ lat: selectedPostOffice.latitude, lng: selectedPostOffice.longitude }\"\r\n            [content]=\"selectedPostOffice.content\" [title]=\"'La Poste sélectionnée'\"\r\n            (mapClick)=\"onMarkerClick(markerElem, selectedPostOffice)\" />\r\n\r\n          <map-info-window #infoWindow></map-info-window>\r\n        </google-map>\r\n      </div>\r\n\r\n    </div>\r\n\r\n    <!-- Navigation Buttons -->\r\n    <div class=\"guest-action\">\r\n      <button pButton label=\"Etape précédente\" class=\"acf-secondary-button mr-3\" (click)=\"prev()\"></button>\r\n      <button pButton label=\"Etape suivante\" class=\"acf-primary-button\" (click)=\"next()\"></button>\r\n    </div>\r\n  </acf-connected-steps-layout>\r\n</acf-connected-layout>","import { Component, Input } from '@angular/core';\r\nimport { DataStoreService } from '../../services/data-store.service';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\nimport { Router } from '@angular/router';\r\nimport { RoutesPaths } from '../../enums/routePaths';\r\nimport { DataStore } from '../../enums/data.store';\r\nimport { ConfirmationService } from 'primeng/api';\r\nimport { MandateService } from '../../services/mandate.service';\r\nimport { MandateBeforePayment } from '../../models/shared/mandate';\r\nimport { IrisSymptoms, Symptom } from '../../models/shared/iris-symptom';\r\nimport { ReferentialService } from '../../services/referential.service';\r\nimport { MappedProduct } from '../../models/shared/product';\r\nimport { Consumer, CreateMandateRequest, UpdateMandateBeforePaymentRequest } from '../../models/request/create-mandate.request';\r\nimport { ShippingDetails } from '../../models/shared/shipping-details';\r\nimport { GooglePlacesService } from '../../services/google-places.service';\r\nimport { CreateWarrantyRequest } from '../../models/request/create-warranty.request';\r\nconst parseJsonSafely = (data: string | null) => {\r\n  try {\r\n    return data ? JSON.parse(data) : null;\r\n  } catch (error) {\r\n    console.error('Error parsing JSON:', error);\r\n    return null;\r\n  }\r\n};\r\n@Component({\r\n  selector: 'acf-connected-step-five',\r\n  templateUrl: './connected-step-five.component.html',\r\n  styleUrl: './connected-step-five.component.scss',\r\n  standalone: false\r\n})\r\nexport class ConnectedStepFiveComponent {\r\n\r\n  @Input() app: string = '';\r\n  step5Form!: FormGroup;\r\n  mandateBeforePayment: MandateBeforePayment = { contractExtensionCode: null, isContractGCplus: false };\r\n  mandateInHold: MandateBeforePayment = { contractExtensionCode: null, isContractGCplus: false };\r\n  IrisSymtoms!: IrisSymptoms;\r\n  device: MappedProduct;\r\n  symptom: Symptom;\r\n  consumer: Consumer;\r\n  mandateBeforePaymentID: string;\r\n  shipping_details: ShippingDetails;\r\n  isSG!: boolean;\r\n  messages!: any[]\r\n  loading: boolean = false;\r\n\r\n  constructor(\r\n    private readonly store: DataStoreService,\r\n    private readonly router: Router,\r\n    private fb: FormBuilder,\r\n    private confirmationService: ConfirmationService,\r\n    private readonly mandateService: MandateService,\r\n    private readonly referentialService: ReferentialService,\r\n    private readonly googlePlacesService: GooglePlacesService\r\n  ) {\r\n    this.onInitForm();\r\n    const state = this.router.getCurrentNavigation()?.extras?.state\r\n    this.device = parseJsonSafely(this.store.getDevice()); // state?.['device'];\r\n    this.symptom = parseJsonSafely(this.store.getSymptom()) //state?.['symptom'];\r\n    this.consumer = parseJsonSafely(this.store.getConsumer())//state?.['consumer'];\r\n    this.mandateBeforePaymentID = this.store.getMandateIDBeforePayment();//state?.['mandateId'];\r\n    this.shipping_details = parseJsonSafely(this.store.getShippingDetails()) //state?.['shipping_details'];\r\n    // this.mandateInHold = parseJsonSafely(this.store.getMandateState())  //state?.['mandate'];\r\n    if (this.mandateInHold?.id) {\r\n      this.mandateBeforePayment = this.mandateInHold;\r\n      this.isSG = this.mandateBeforePayment.interventionTypeId == 1 ? true : false;\r\n    } else if (this.mandateBeforePaymentID) {\r\n      this.getMandateById(this.mandateBeforePaymentID);\r\n    } else {\r\n      this.getLatestMandate();\r\n    }\r\n  }\r\n\r\n  next() {\r\n    this.store.setMandateIDBeforePayment(this.mandateBeforePaymentID);\r\n    this.store.saveSymptom(this.symptom);\r\n    this.store.saveDevice(this.device);\r\n    this.store.saveConsumer(this.consumer);\r\n    this.store.saveShippingDetails(this.shipping_details);\r\n    this.router.navigate([RoutesPaths.connectedStep6], {\r\n      state: {\r\n        // device: this.device,\r\n        // symptom: this.symptom,\r\n        // consumer: this.consumer,\r\n        // mandateId: this.mandateBeforePaymentID,\r\n        // shipping_details: this.shipping_details\r\n      },\r\n    });\r\n    this.store.saveFormToLocalStorage(this.step5Form, DataStore.step5_form);\r\n  }\r\n\r\n  prev() {\r\n    this.store.setMandateIDBeforePayment(this.mandateBeforePaymentID);\r\n    this.store.saveSymptom(this.symptom);\r\n    this.store.saveDevice(this.device);\r\n    this.store.saveConsumer(this.consumer);\r\n    this.store.saveShippingDetails(this.shipping_details);\r\n    this.router.navigate([RoutesPaths.connectedStep4], {\r\n      state: {\r\n        // device: this.device,\r\n        // symptom: this.symptom,\r\n        // consumer: this.consumer,\r\n        // mandateId: this.mandateBeforePaymentID,\r\n        // shipping_details: this.shipping_details\r\n      }\r\n    });\r\n  }\r\n\r\n  cancel(event: Event, id: number | undefined) {\r\n    if (id) {\r\n\r\n    } else if (this.mandateBeforePaymentID) {\r\n\r\n    }\r\n    this.confirmationService.confirm({\r\n      target: event.target as EventTarget,\r\n      message: \"Etes-vous sûr de vouloir annuler la déclaration d'incident ?\",\r\n      header: \"Annulation de la déclaration\",\r\n      acceptButtonStyleClass: 'acf-primary-button',\r\n      rejectButtonStyleClass: 'acf-secondary-button',\r\n      acceptIcon: 'none',\r\n      rejectIcon: 'none',\r\n      acceptLabel: 'Oui',\r\n      rejectLabel: 'Non',\r\n      accept: () => {\r\n        this.store.saveMandateCancelledNavigation('true');\r\n        this.deleteMandateCreationData(id);\r\n        this.store.deleteFileId();\r\n        this.router.navigate([`${RoutesPaths.devices}`]);\r\n      },\r\n      reject: () => { },\r\n    });\r\n  }\r\n\r\n  deleteMandateCreationData(id: number | undefined) {\r\n    this.store.deleteFormsFromLocalStorage();\r\n    this.store.deleteContCode();\r\n    this.store.deleteMandateID();\r\n    this.store.deleteOmNumber();\r\n    this.store.deleteMandate();\r\n    const _id = id ? id.toString() : this.mandateBeforePaymentID;\r\n    this.mandateService.deleteMandateBeforePayment(_id).subscribe(\r\n      data => { }\r\n    );\r\n  }\r\n\r\n  onInitForm() {\r\n    this.step5Form = this.fb.group({\r\n      validate: [true],\r\n    });\r\n  }\r\n\r\n  validate() {\r\n    this.createWarranty();\r\n  }\r\n  getLatestMandate() {\r\n    this.mandateService.getLatestMandate().subscribe((data) => {\r\n      if (data.result == true && data.mandateBeforePayment != null) {\r\n        data.mandateBeforePayment.fileId && this.store.setFileId(data.mandateBeforePayment.fileId);\r\n        this.mandateBeforePayment = data.mandateBeforePayment;\r\n        if (this.mandateBeforePayment) {\r\n          this.isSG = this.mandateBeforePayment.interventionTypeId == 1 ? true : false;\r\n          if (this.mandateBeforePayment.orderMission) {\r\n            this.store.setOmNumber(this.mandateBeforePayment.orderMission);\r\n          }\r\n          if (this.mandateBeforePayment.id) {\r\n            this.store.setMandateID(this.mandateBeforePayment.id);\r\n          }\r\n          this.shipping_details = {\r\n            repairPrice: this.mandateBeforePayment.repairPrice,\r\n            shippingPrice: this.mandateBeforePayment.shippingPrice,\r\n            clientCode: this.mandateBeforePayment.carrierCode,\r\n            atsCode: this.mandateBeforePayment.atsCodeForStripe,\r\n            currencyCode: this.mandateBeforePayment.currencyCode,\r\n            currencySymbol: this.mandateBeforePayment.currencySymbol,\r\n            ecoSupport: this.mandateBeforePayment.ecoSupport,\r\n            pickUp: {\r\n              key: 0,\r\n              name: ''\r\n            },\r\n            pickUpChoice: this.mandateBeforePayment.pickupChoice || '',\r\n            carrierCode: this.mandateBeforePayment.carrierCode || '',\r\n            fromName: this.mandateBeforePayment.fromName,\r\n            fromAddress1: this.mandateBeforePayment.fromAddress1,\r\n            fromZip: this.mandateBeforePayment.fromZip,\r\n            fromCity: this.mandateBeforePayment.fromCity,\r\n            fromCountryCode: this.mandateBeforePayment.fromCountryCode,\r\n            fromPhone: this.mandateBeforePayment.fromPhone,\r\n            toName: this.mandateBeforePayment.fromName,\r\n            toAddress1: this.mandateBeforePayment.toAddress1,\r\n            toZip: this.mandateBeforePayment.toZip,\r\n            toCity: this.mandateBeforePayment.toCity,\r\n            toCountryCode: this.mandateBeforePayment.toCountryCode,\r\n            toPhone: this.mandateBeforePayment.toPhone,\r\n            selectedPostOffice: {\r\n              city: '',\r\n              name: '',\r\n              postalCode: '',\r\n              country: ''\r\n            }\r\n          }\r\n          const zipCode = {\r\n            zip: this.mandateBeforePayment.zip,\r\n            countryCode: this.mandateBeforePayment.countryCode,\r\n            city: this.mandateBeforePayment.city\r\n          };\r\n          this.consumer = {\r\n            title: this.mandateBeforePayment.title,\r\n            lastName: this.mandateBeforePayment.lastName,\r\n            firstName: this.mandateBeforePayment.firstName,\r\n            address1: this.mandateBeforePayment.address1,\r\n            zip: zipCode,\r\n            city: zipCode,\r\n            countryCode: this.mandateBeforePayment.countryCode,\r\n            countryLabel: '250',\r\n            phoneNumber: this.mandateBeforePayment.phoneNumber,\r\n            email: this.mandateBeforePayment.email,\r\n          }\r\n          this.symptom = {\r\n            symptom: {\r\n              label: this.mandateBeforePayment.irisSymptomResponse?.label || '',\r\n              code: this.mandateBeforePayment.irisSymptomResponse?.code || ''\r\n            },\r\n            comment: this.mandateBeforePayment.failureDescription || '',\r\n          }\r\n          this.device = {\r\n            name: this.mandateBeforePayment.labelRef || '',\r\n            saleDate: this.mandateBeforePayment.purchaseDate || '',\r\n            commref: this.mandateBeforePayment.commercialRef || '',\r\n            brand: this.mandateBeforePayment.brandCode || '',\r\n            refTech: this.mandateBeforePayment.technicalRef || '',\r\n            family: this.mandateBeforePayment.familyCode || '',\r\n          }\r\n          this.mandateBeforePaymentID = this.mandateBeforePayment.id?.toString() || \"\";\r\n          this.findPosition(this.mandateBeforePayment.address1)\r\n        }\r\n      }\r\n    });\r\n  }\r\n\r\n  getMandateById(id: string) {\r\n    this.mandateService.getMandateById(id).subscribe(\r\n      data => {\r\n        if (data.result == true && data.mandateBeforePayment != null) {\r\n          this.mandateBeforePayment = data.mandateBeforePayment;\r\n          if (this.mandateBeforePayment) {\r\n            this.isSG = this.mandateBeforePayment.interventionTypeId == 1 ? true : false;\r\n            if (this.mandateBeforePayment.orderMission) {\r\n              this.store.setOmNumber(this.mandateBeforePayment.orderMission);\r\n            }\r\n            if (this.mandateBeforePayment.id) {\r\n              this.store.setMandateID(this.mandateBeforePayment.id);\r\n            }\r\n            this.shipping_details = {\r\n              repairPrice: this.mandateBeforePayment.repairPrice,\r\n              shippingPrice: this.mandateBeforePayment.shippingPrice,\r\n              clientCode: this.mandateBeforePayment.carrierCode,\r\n              atsCode: this.mandateBeforePayment.atsCodeForStripe,\r\n              currencyCode: this.mandateBeforePayment.currencyCode,\r\n              currencySymbol: this.mandateBeforePayment.currencySymbol,\r\n              ecoSupport: this.mandateBeforePayment.ecoSupport,\r\n              pickUp: {\r\n                key: 0,\r\n                name: ''\r\n              },\r\n              pickUpChoice: this.mandateBeforePayment.pickupChoice || '',\r\n              carrierCode: this.mandateBeforePayment.carrierCode || '',\r\n              fromName: this.mandateBeforePayment.fromName,\r\n              fromAddress1: this.mandateBeforePayment.fromAddress1,\r\n              fromZip: this.mandateBeforePayment.fromZip,\r\n              fromCity: this.mandateBeforePayment.fromCity,\r\n              fromCountryCode: this.mandateBeforePayment.fromCountryCode,\r\n              fromPhone: this.mandateBeforePayment.fromPhone,\r\n              toName: this.mandateBeforePayment.fromName,\r\n              toAddress1: this.mandateBeforePayment.toAddress1,\r\n              toZip: this.mandateBeforePayment.toZip,\r\n              toCity: this.mandateBeforePayment.toCity,\r\n              toCountryCode: this.mandateBeforePayment.toCountryCode,\r\n              toPhone: this.mandateBeforePayment.toPhone,\r\n              selectedPostOffice: {\r\n                city: '',\r\n                name: '',\r\n                postalCode: '',\r\n                country: ''\r\n              }\r\n            }\r\n            const zipCode = {\r\n              zip: this.mandateBeforePayment.zip,\r\n              countryCode: this.mandateBeforePayment.countryCode,\r\n              city: this.mandateBeforePayment.city\r\n            };\r\n            this.consumer = {\r\n              title: this.mandateBeforePayment.title,\r\n              lastName: this.mandateBeforePayment.lastName,\r\n              firstName: this.mandateBeforePayment.firstName,\r\n              address1: this.mandateBeforePayment.address1,\r\n              zip: zipCode,\r\n              city: zipCode,\r\n              countryCode: this.mandateBeforePayment.countryCode,\r\n              countryLabel: '250',\r\n              phoneNumber: this.mandateBeforePayment.phoneNumber,\r\n              email: this.mandateBeforePayment.email,\r\n            }\r\n            this.symptom = {\r\n              symptom: {\r\n                label: this.mandateBeforePayment.irisSymptomResponse?.label || '',\r\n                code: this.mandateBeforePayment.irisSymptomResponse?.code || ''\r\n              },\r\n              comment: this.mandateBeforePayment.failureDescription || '',\r\n            }\r\n            this.device = {\r\n              name: this.mandateBeforePayment.labelRef || '',\r\n              saleDate: this.mandateBeforePayment.purchaseDate || '',\r\n              commref: this.mandateBeforePayment.commercialRef || '',\r\n              brand: this.mandateBeforePayment.brandCode || '',\r\n              refTech: this.mandateBeforePayment.technicalRef || '',\r\n              family: this.mandateBeforePayment.familyCode || '',\r\n            }\r\n            this.mandateBeforePaymentID = this.mandateBeforePayment.id?.toString() || \"\";\r\n            this.findPosition(this.mandateBeforePayment.address1)\r\n          }\r\n        }\r\n      });\r\n  }\r\n\r\n  findPosition(addressControl: string | undefined) {\r\n    if (addressControl) {\r\n      this.googlePlacesService\r\n        .getPlacePredictions(addressControl)\r\n        .then((predictions) => {\r\n          const predictionPromises = predictions.map((prediction) => {\r\n            return this.googlePlacesService\r\n              .getPlaceDetails(prediction.place_id)\r\n              .then((place) => ({\r\n                predictionDescription: prediction.description,\r\n                place,\r\n              }));\r\n          });\r\n          Promise.all(predictionPromises)\r\n            .then((results) => {\r\n              for (const { place } of results) {\r\n                if (place) {\r\n                  const lat = place.geometry?.location?.lat();\r\n                  const lng = place.geometry?.location?.lng();\r\n                  this.store.setLat(lat.toString())\r\n                  this.store.setLng(lng.toString())\r\n                }\r\n              }\r\n            })\r\n            .catch((error) => {\r\n              console.error('Error fetching place details:', error);\r\n            });\r\n        })\r\n        .catch((error) => {\r\n          console.error('Error fetching predictions:', error);\r\n        });\r\n    }\r\n  }\r\n\r\n\r\n  createWarranty() {\r\n    const request: CreateWarrantyRequest = {\r\n      customer: {\r\n        applicationName: this.store.getApplication(),\r\n        userName: this.store.getUserName(),\r\n        title: this.mandateBeforePayment.title, //&STEP 3\r\n        lastName: this.mandateBeforePayment.lastName,//&STEP 3\r\n        firstName: this.mandateBeforePayment.firstName,//&STEP 3\r\n        address: this.mandateBeforePayment.address1,//&STEP 3\r\n        zipPostalCode: this.mandateBeforePayment.zip,//&STEP 3\r\n        city: this.mandateBeforePayment.city,//&STEP 3\r\n        countryCode: this.mandateBeforePayment.countryCode,//&STEP 3\r\n        phoneNumber: this.mandateBeforePayment.phoneNumber,//&STEP 3\r\n      },\r\n      products: [\r\n        {\r\n          productReference: this.mandateBeforePayment.commercialRef,\r\n          salesDate: this.mandateBeforePayment.purchaseDate, //purchase date\r\n        },\r\n      ],\r\n      /*fileId*/\r\n      ...(this.store.getFileId() && { fileId: this.store.getFileId() })\r\n    };\r\n    this.loading = true;\r\n    this.mandateService.CreateCDMBaseWarranties(request).subscribe(\r\n      (response) => {\r\n        if (response[0].contCode) { //&& response[0].contId && response[0].contPrdId && response[0].result\r\n          this.store.setContCode(response[0].contCode);\r\n          this.store.setContId(response[0].contId);\r\n          this.store.setContPrdId(response[0].contPrdId);\r\n\r\n          this.UpdateMandateBeforePayment(response[0].contCode, response[0].contId, response[0].contPrdId)\r\n\r\n        } else {\r\n          this.loading = false;\r\n\r\n          const errors = response[0].errors || [];\r\n          let errorMessage = 'Une erreur s\\'est produite lors de la déclaration d\\'incident.';\r\n\r\n          if (errors.includes('EmailMandatory')) {\r\n            errorMessage = 'L\\'email est obligatoire.';\r\n          } else if (errors.includes('ServiceNotAvailableInDomTom')) {\r\n            errorMessage = 'Le service n\\'est pas disponible en DOM-TOM.';\r\n          } else if (errors.includes('RefProductNotValid')) {\r\n            errorMessage = 'La référence du produit est invalide.';\r\n          } else if (errors.includes('RefProductIsEmpty')) {\r\n            errorMessage = 'La référence du produit est vide.';\r\n          } else if (errors.includes('SaleDateNotValid')) {\r\n            errorMessage = 'La date de vente est invalide.';\r\n            // } else if (errors.includes('ContractYetCreated')) {\r\n            //   errorMessage = 'Un contrat a déjà été créé.';\r\n          }\r\n          else if (errors.includes('ContractExistsInGcplus')) {\r\n            errorMessage = 'Un contrat existe déjà dans GCPlus.';\r\n          } else if (errors.includes('ContractExists')) {\r\n            errorMessage = 'Un contrat existe déjà.';\r\n          }\r\n\r\n          this.messages = [{ severity: 'error', detail: errorMessage }];\r\n          setTimeout(() => {\r\n            this.messages = [];\r\n          }, 5000);\r\n        }\r\n      },\r\n      (error) => {\r\n        this.loading = false;\r\n\r\n        this.messages = [{ severity: 'error', detail: 'Une erreur serveur s\\'est produite lors de la création du contrat.' }];\r\n        setTimeout(() => {\r\n          this.messages = [];\r\n        }, 5000);\r\n        console.error('Error:', error);\r\n      }\r\n    );\r\n\r\n  }\r\n\r\n  UpdateMandateBeforePayment(contCode: string, contId: number, contPrdId: number) {\r\n    // Warranty check logic directly in interventionTypeId\r\n      const today = new Date();\r\n    // const purchaseDate = new Date(this.device.saleDate);\r\n    // const yearsDifference = today.getFullYear() - purchaseDate.getFullYear();\r\n    // const isDateInFuture = today < purchaseDate;\r\n    // const interventionTypeId = !isDateInFuture && yearsDifference <= 2 ? 1 : 0;\r\n    const oof = this.store.isOutWaranty();  \r\n    const interventionTypeId = oof ? 0 : 1;\r\n    const createMandateBeforePayment: UpdateMandateBeforePaymentRequest = {\r\n      applicationName: this.store.getApplication(),\r\n      clientCode: this.mandateBeforePayment.clientCode, //! STEP 4\r\n      orderMission: this.store.getOmNumber(),\r\n      interventionTypeId: interventionTypeId,\r\n      userName: this.store.getUserName(),\r\n      weight: this.mandateBeforePayment.weight,\r\n      brandCode: this.mandateBeforePayment.brandCode, //STEP 1\r\n      commercialRef: this.mandateBeforePayment.commercialRef,//STEP 1\r\n      technicalRef: this.mandateBeforePayment.technicalRef, //STEP 1\r\n      familyCode: this.mandateBeforePayment.familyCode,//STEP 1\r\n      labelRef: this.mandateBeforePayment.labelRef,//STEP 1\r\n      purchaseDate: this.mandateBeforePayment.purchaseDate, //STEP 1\r\n      createDate: new Date(today.toISOString()),\r\n      irisSymptom: this.mandateBeforePayment.irisSymptom, //? STEP 2\r\n      failureDescription: this.mandateBeforePayment.failureDescription,//? STEP 2\r\n      repairPrice: this.mandateBeforePayment.repairPrice, //! STEP 4\r\n      shippingPrice: this.mandateBeforePayment.shippingPrice, //! STEP 4\r\n      IsContractGCplus: this.store.getContId() > 0 ? true : false,\r\n      ContractExtensionCode: null,// contCode,\r\n      consumer: {\r\n        title: this.mandateBeforePayment.title, //&STEP 3\r\n        lastName: this.mandateBeforePayment.lastName,//&STEP 3\r\n        firstName: this.mandateBeforePayment.firstName,//&STEP 3\r\n        address1: this.mandateBeforePayment.address1,//&STEP 3\r\n        zip: this.mandateBeforePayment.zip,//&STEP 3\r\n        city: this.mandateBeforePayment.city,//&STEP 3\r\n        countryCode: this.mandateBeforePayment.countryCode,//&STEP 3\r\n        countryLabel: 'FR',\r\n        phoneNumber: this.mandateBeforePayment.phoneNumber,//&STEP 3\r\n        email: this.mandateBeforePayment.email //&STEP 3\r\n      },\r\n      pickupInfo:\r\n        this.mandateBeforePayment.pickupChoice === 'FROMSTORE'\r\n          ? {\r\n            carrierCode: this.mandateBeforePayment.carrierCode, //! STEP 4 \r\n            pickupChoice: this.mandateBeforePayment.pickupChoice, //! STEP 4 \r\n            fromName: this.mandateBeforePayment.fromName,\r\n            fromAddress1: this.mandateBeforePayment.fromAddress1,\r\n            fromZip: this.mandateBeforePayment.fromZip,\r\n            fromCity: this.mandateBeforePayment.fromCity,\r\n            fromCountryCode: this.mandateBeforePayment.fromCountryCode,\r\n            fromPhone: this.mandateBeforePayment.fromPhone,\r\n            toName: this.mandateBeforePayment.toName,\r\n            toAddress1: this.mandateBeforePayment.toAddress1,\r\n            toZip: this.mandateBeforePayment.toZip,\r\n            toCity: this.mandateBeforePayment.toCity,\r\n            toCountryCode: this.mandateBeforePayment.toCountryCode,\r\n            toPhone: this.mandateBeforePayment.toPhone\r\n          }\r\n          : null, // If not 'FROMSTORE' (Poste), send a null object\r\n      mandateId: this.store.getMandateID(),\r\n      ecoSupport: this.mandateBeforePayment.ecoSupport,  //! STEP 4 \r\n      currencyCode: this.mandateBeforePayment.currencyCode,  //! STEP 4 \r\n      currencySymbol: this.mandateBeforePayment.currencySymbol,  //! STEP 4 \r\n      atsCodeForStripe: this.mandateBeforePayment.atsCodeForStripe, //! STEP 4 \r\n      contId: contId,\r\n      contPrdId: contPrdId,\r\n      /*fileId*/\r\n      ...(this.store.getFileId() && { fileId: this.store.getFileId() })\r\n\r\n    };\r\n    this.mandateService.UpdateMandateBeforePayment(createMandateBeforePayment).subscribe(\r\n      (response) => {\r\n        if (response.result) {\r\n          this.createMandate();\r\n\r\n        }\r\n        else {\r\n          this.loading = false;\r\n\r\n          this.messages = [{ severity: 'error', detail: 'Une erreur serveur s\\'est produite lors de la création du contrat.' }];\r\n          setTimeout(() => {\r\n            this.messages = [];\r\n          }, 5000);\r\n        }\r\n\r\n      }\r\n    )\r\n  }\r\n\r\n\r\n  createMandate() {\r\n    // Warranty check logic directly in interventionTypeId\r\n    const today = new Date();\r\n    const purchaseDateString = this.mandateBeforePayment?.purchaseDate;\r\n\r\n    let purchaseDate: Date | null = null;\r\n    if (purchaseDateString) {\r\n      purchaseDate = new Date(purchaseDateString);\r\n    }\r\n\r\n    // const yearsDifference = purchaseDate ? today.getFullYear() - purchaseDate.getFullYear() : 0;\r\n    // const isDateInFuture = purchaseDate ? today < purchaseDate : false;\r\n    // const interventionTypeId = !isDateInFuture && yearsDifference <= 2 ? 1 : 0;\r\n        const oof = this.store.isOutWaranty();  \r\n    const interventionTypeId = oof ? 0 : 1;\r\n    const createMandateRequest: CreateMandateRequest = {\r\n      applicationName: this.store.getApplication(),\r\n      username: this.store.getUserName(),\r\n      orderId: this.mandateBeforePayment.id,\r\n      clientCode: this.mandateBeforePayment.clientCode, //! STEP 4\r\n      orderMission: this.store.getOmNumber(),\r\n      interventionTypeId: interventionTypeId,\r\n      commercialRef: this.mandateBeforePayment.commercialRef, //STEP 1\r\n      technicalRef: this.mandateBeforePayment.technicalRef, //STEP 1\r\n      brandCode: this.mandateBeforePayment.brandCode, //STEP 1\r\n      familyCode: this.mandateBeforePayment.familyCode,//STEP 1\r\n      labelRef: this.mandateBeforePayment.labelRef,//STEP 1\r\n      purchaseDate: this.mandateBeforePayment.purchaseDate, // purchase date\r\n      irisSymptom: this.mandateBeforePayment.irisSymptom, //?STEP 2\r\n      failureDescription: this.mandateBeforePayment.failureDescription,//?STEP 2\r\n      repairPrice: this.mandateBeforePayment.repairPrice, //! STEP 4\r\n      shippingPrice: this.mandateBeforePayment.shippingPrice, //! STEP 4\r\n      IsContractGCplus: this.store.getContId() > 0 ? true : false,\r\n      ContractExtensionCode: null,//  this.store.getContCode(),\r\n      contId: this.store.getContId(),\r\n      contPrdId: this.store.getContPrdId(),\r\n      manufacturerId: null,\r\n      customerId: null,\r\n      weight: this.mandateBeforePayment.weight,\r\n      createDate: new Date(today.toISOString()),\r\n      consumer: {\r\n        title: this.mandateBeforePayment.title, //&STEP 3\r\n        lastName: this.mandateBeforePayment.lastName,//&STEP 3\r\n        firstName: this.mandateBeforePayment.firstName,//&STEP 3\r\n        address1: this.mandateBeforePayment.address1,//&STEP 3\r\n        zip: this.mandateBeforePayment.zip,//&STEP 3\r\n        city: this.mandateBeforePayment.city,//&STEP 3\r\n        countryCode: this.mandateBeforePayment.countryCode,//&STEP 3\r\n        countryLabel: 'FR',\r\n        phoneNumber: this.mandateBeforePayment.phoneNumber,//&STEP 3\r\n        email: this.mandateBeforePayment.email//&STEP 3\r\n      },\r\n      pickupInfo:\r\n        this.mandateBeforePayment.pickupChoice === 'FROMSTORE'\r\n          ? {\r\n            carrierCode: this.mandateBeforePayment.carrierCode,\r\n            pickupChoice: this.mandateBeforePayment.pickupChoice,\r\n            fromName: this.mandateBeforePayment.fromName,\r\n            fromAddress1: this.mandateBeforePayment.fromAddress1,\r\n            fromZip: this.mandateBeforePayment.fromZip,\r\n            fromCity: this.mandateBeforePayment.fromCity,\r\n            fromCountryCode: this.mandateBeforePayment.fromCountryCode,\r\n            fromPhone: this.mandateBeforePayment.fromPhone,\r\n            toName: this.mandateBeforePayment.toName,\r\n            toAddress1: this.mandateBeforePayment.toAddress1,\r\n            toZip: this.mandateBeforePayment.toZip,\r\n            toCity: this.mandateBeforePayment.toCity,\r\n            toCountryCode: this.mandateBeforePayment.toCountryCode,\r\n            toPhone: this.mandateBeforePayment.toPhone\r\n          }\r\n          : null, // If not 'FROMSTORE' (Poste), send a null object\r\n    };\r\n    this.mandateService.createMandate(createMandateRequest).subscribe(\r\n      (response) => {\r\n        if (response.result) {\r\n          this.store.saveMandate(this.mandateBeforePayment);\r\n          // If result is true, handle success\r\n          this.store.setMandateID(response.mandateId);\r\n          this.router.navigate([RoutesPaths.incident_report_success]);\r\n          this.loading = false;\r\n\r\n        } else {\r\n          this.loading = false;\r\n\r\n          // If result is false, handle error\r\n          this.messages = [{ severity: 'error', detail: 'Une erreur s\\'est produite lors de la déclaration d\\'incident' }];\r\n          setTimeout(() => {\r\n            this.messages = []; // Clear error message after 5 seconds\r\n          }, 5000);\r\n        }\r\n      },\r\n      (error) => {\r\n        this.loading = false;\r\n\r\n        console.error('Error occurred:', error);\r\n        // Perform necessary actions in case of error, if any\r\n        this.messages = [{ severity: 'error', detail: 'Une erreur serveur s\\'est produite' }];\r\n        setTimeout(() => {\r\n          this.messages = []; // Clear error message after 5 seconds\r\n        }, 5000);\r\n      }\r\n    );\r\n  }\r\n\r\n}","<acf-connected-layout [app]=\"app\">\r\n    <acf-connected-steps-layout [appName]=\"app\" [step]=\"5\">\r\n        <div class=\"card\">\r\n            <p-messages [(value)]=\"messages\" [closable]=\"true\" />\r\n        </div>\r\n        <div class=\"grid \">\r\n            <div class=\"col\">\r\n                <div class=\"acf-card grid bloc-mobile mb-3\">\r\n                    <!-- Consumer Details -->\r\n                    <div class=\"col mx-2\">\r\n                        <div class=\"text-lg font-bold mb-3\">\r\n                            <span>Consommateur</span>\r\n                        </div>\r\n                        <div class=\"my-2\">\r\n                            <div>\r\n                                <span class=\"font-semibold\">Nom :</span>\r\n                                <span> {{ mandateBeforePayment.lastName }} </span>\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"my-2\">\r\n                            <div>\r\n                                <span class=\"font-semibold\">Prénom :</span>\r\n                                <span> {{ mandateBeforePayment.firstName }} </span>\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"my-2\">\r\n                            <div>\r\n                                <span class=\"font-semibold\">Adresse :</span>\r\n                                <span> {{ mandateBeforePayment.address1 }} </span>\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"my-2\">\r\n                            <div>\r\n                                <span class=\"font-semibold\">Email :</span>\r\n                                <span> {{ mandateBeforePayment.email }} </span>\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"my-2\">\r\n                            <div>\r\n                                <span class=\"font-semibold\">Téléphone :</span>\r\n                                <span> {{ mandateBeforePayment.phoneNumber }} </span>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                    <div class=\"col mx-2 \">\r\n                        <div class=\"text-lg font-bold mb-3\">\r\n                            <span> Détails appareil</span>\r\n                        </div>\r\n\r\n                        <div class=\"my-2\">\r\n                            <div class=\"  \">\r\n                                <span class=\"font-semibold\">Référence commerciale :</span>\r\n                                <span> {{ mandateBeforePayment.commercialRef }} </span>\r\n                            </div>\r\n\r\n                        </div>\r\n                        <div class=\"my-2\">\r\n                            <div class=\"  \">\r\n                                <span class=\"font-semibold\">Référence technique :</span>\r\n                                <span> {{ mandateBeforePayment.technicalRef }} </span>\r\n                            </div>\r\n\r\n                        </div>\r\n                        <div class=\"my-2\">\r\n                            <div class=\"  \">\r\n                                <span class=\"font-semibold\">Marque :</span>\r\n                                <span> {{ mandateBeforePayment.brandCode }} </span>\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"my-2\">\r\n                            <div class=\"  \">\r\n                                <span class=\"font-semibold\">Famille :</span>\r\n                                <span> {{ mandateBeforePayment.familyCode }} </span>\r\n                            </div>\r\n                        </div>\r\n\r\n                    </div>\r\n                </div>\r\n\r\n                <div class=\"acf-card grid bloc-mobile\">\r\n                    <div class=\"col mx-2 \">\r\n                        <div class=\"text-lg font-bold mb-3\">\r\n                            <span>Panne</span>\r\n                        </div>\r\n\r\n\r\n                        <div class=\"my-2\">\r\n                            <div class=\"  \">\r\n                                <span class=\"font-semibold\">Type de panne :</span>\r\n                                <span> {{ mandateBeforePayment.irisSymptomResponse?.label }} </span>\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"my-2\">\r\n                            <div class=\"  \">\r\n                                <span class=\"font-semibold\">Commentaire :</span>\r\n                                <span> {{ mandateBeforePayment.failureDescription }} </span>\r\n                            </div>\r\n\r\n                        </div>\r\n\r\n\r\n\r\n                    </div>\r\n\r\n                    <div class=\"col mx-2 \">\r\n                        <div class=\"text-lg font-bold mb-3\">\r\n                            <span> Réparateur</span>\r\n                        </div>\r\n\r\n\r\n                        <div class=\"my-2\">\r\n                            <div class=\"  \">\r\n                                <span class=\"font-semibold\">Société :</span>\r\n                                <span> {{ mandateBeforePayment.repairer?.companyName }} </span>\r\n                            </div>\r\n\r\n                        </div>\r\n\r\n                        <div class=\"my-2\">\r\n                            <div class=\"  \">\r\n                                <span class=\"font-semibold\">Téléphone :</span>\r\n                                <span> {{ mandateBeforePayment.repairer?.phoneNumber }} </span>\r\n\r\n                            </div>\r\n\r\n                        </div>\r\n                        <div class=\"my-2\">\r\n                            <div class=\"  \">\r\n                                <span class=\"font-semibold\">Adresse de réparation :</span>\r\n                                <span> <i class=\"pi pi-map-marker ml-2 mr-1\"\r\n                                        style=\"font-size: 1rem ; color: #007BC0;\"></i>\r\n                                    {{ mandateBeforePayment.repairer?.address1 }} {{\r\n                                    mandateBeforePayment.repairer?.zipCode }} {{\r\n                                    mandateBeforePayment.repairer?.city\r\n                                    }}\r\n                                </span>\r\n                            </div>\r\n\r\n                        </div>\r\n\r\n                    </div>\r\n                </div>\r\n\r\n\r\n                <div class=\"acf-card grid bloc-mobile mt-3 mb-3\"\r\n                    *ngIf=\"mandateBeforePayment.pickupChoice === 'FROMSTORE'\">\r\n                    <div class=\"col-12 sm:col-12 md:col-12 mx-2 \">\r\n\r\n                        <div class=\"text-lg font-bold mb-3\">\r\n                            <span> Point relais</span>\r\n                        </div>\r\n                        <div class=\"my-2\">\r\n                            <div class=\"  \">\r\n                                <!-- <span class=\"font-semibold\">La poste :</span> -->\r\n                                <span>{{ mandateBeforePayment.fromName }}  </span>\r\n                            </div>\r\n                        </div>\r\n                         <div class=\"my-2\">\r\n                            <div class=\"  \">\r\n                                <span class=\"font-semibold\">Adresse :</span>\r\n                                <span> {{ mandateBeforePayment.fromAddress1 }} {{ mandateBeforePayment.fromZip }} {{ mandateBeforePayment.fromCity }} </span>\r\n                            </div>\r\n                        </div>\r\n                  <div class=\"my-2\">\r\n                            <div class=\"  \">\r\n                                <span class=\"font-semibold\">Téléphone :</span>\r\n                                <span> {{ mandateBeforePayment.fromPhone }} </span>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n\r\n\r\n                </div>\r\n            </div>\r\n\r\n\r\n        </div>\r\n        <p-confirmDialog [style]=\"{width: '50vw'}\" />\r\n        <!-- Navigation Buttons -->\r\n        <div class=\"flex justify-content-between align-items-center bloc-mobile\">\r\n            <span class=\"acf-primary-link text-left\" (click)=\"cancel($event, mandateBeforePayment.id)\">Annuler</span>\r\n            <!-- @if(isSG){ -->\r\n            <div class=\"guest-action mx-0\">\r\n                <button pButton label=\"Etape précédente\" class=\"acf-secondary-button mr-3\" (click)=\"prev()\"></button>\r\n                <button pButton label=\"Valider\" class=\"acf-primary-button\" (click)=\"validate()\"\r\n                    [loading]=\"loading\"></button>\r\n            </div>\r\n            <!-- } -->\r\n            <!-- @else{<div class=\"guest-action mx-0\">\r\n                <button pButton label=\"Etape précédente\" class=\"acf-secondary-button mr-3\" (click)=\"prev()\"></button>\r\n                <button pButton label=\"Etape suivante\" class=\"acf-primary-button\" (click)=\"next()\"></button>\r\n            </div>} -->\r\n        </div>\r\n\r\n    </acf-connected-steps-layout>\r\n</acf-connected-layout>","import { Component, Input } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { RoutesPaths } from '../../enums/routePaths';\r\nimport { DataStoreService } from '../../services/data-store.service';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\nimport { MandateService } from '../../services/mandate.service';\r\nimport { Consumer, CreateMandateRequest, UpdateMandateBeforePaymentRequest } from '../../models/request/create-mandate.request';\r\nimport { StripePaymentRequest } from '../../models/request/payment.request';\r\nimport { ConfirmationService } from 'primeng/api';\r\nimport { CreateWarrantyRequest } from '../../models/request/create-warranty.request';\r\nimport { MandateBeforePayment } from '../../models/shared/mandate';\r\nimport { MappedProduct } from '../../models/shared/product';\r\nimport { Symptom } from '../../models/shared/iris-symptom';\r\nimport { ShippingDetails } from '../../models/shared/shipping-details';\r\nconst parseJsonSafely = (data: string | null) => {\r\n  try {\r\n    return data ? JSON.parse(data) : null;\r\n  } catch (error) {\r\n    console.error('Error parsing JSON:', error);\r\n    return null;\r\n  }\r\n};\r\n@Component({\r\n  selector: 'acf-connected-step-six',\r\n  templateUrl: './connected-step-six.component.html',\r\n  styleUrl: './connected-step-six.component.scss',\r\n  standalone: false\r\n})\r\nexport class ConnectedStepSixComponent {\r\n  @Input() app: string = '';\r\n\r\n  step6Form!: FormGroup;\r\n  submitted: boolean = false;\r\n  decodedStatus: string | null = null;\r\n  messages!: any[]\r\n  loading: boolean = true\r\n  mandateBeforePayment: MandateBeforePayment = { contractExtensionCode: null, isContractGCplus: false };\r\n  sessionId: string | null = null;\r\n  device: MappedProduct;\r\n  symptom: Symptom;\r\n  consumer: Consumer | any;\r\n  mandateBeforePaymentID: string;\r\n  shipping_details: ShippingDetails;\r\n  constructor(private route: ActivatedRoute, private readonly formBuilder: FormBuilder, private readonly store: DataStoreService, private readonly router: Router, private readonly mandateService: MandateService, private confirmationService: ConfirmationService\r\n  ) {\r\n    this.step6Form = this.onItniFrom();\r\n    const state = this.router.getCurrentNavigation()?.extras?.state\r\n    this.device = parseJsonSafely(this.store.getDevice()); // state?.['device'];\r\n    this.symptom = parseJsonSafely(this.store.getSymptom()) //state?.['symptom'];\r\n    this.consumer = parseJsonSafely(this.store.getConsumer())//state?.['consumer'];\r\n    this.mandateBeforePaymentID = this.store.getMandateIDBeforePayment();//state?.['mandateId'];\r\n    this.shipping_details = parseJsonSafely(this.store.getShippingDetails()) //state?.['shipping_details'];\r\n    this.checkPaymentStatus();\r\n\r\n\r\n  }\r\n\r\n  getLatestMandate() {\r\n    this.mandateService.getMandateById(this.mandateBeforePaymentID).subscribe((data) => {\r\n      if (data.result == true && data.mandateBeforePayment != null) {\r\n        this.mandateBeforePayment = data.mandateBeforePayment;\r\n        if (this.mandateBeforePayment.id) {\r\n          this.store.setMandateID(this.mandateBeforePayment.id);\r\n        }\r\n        if (this.mandateBeforePayment.orderMission) {\r\n          this.store.setOmNumber(this.mandateBeforePayment.orderMission);\r\n        }\r\n      }\r\n      else {\r\n        this.router.navigate([RoutesPaths.incident_report]);\r\n      }\r\n    });\r\n    this.loading = false;\r\n  }\r\n\r\n  getLatestMandateAfterPayment() {\r\n    this.mandateService.getLatestPaidMandate().subscribe((data) => {\r\n      //data.result == true && \r\n      if (data.mandateBeforePayment != null) {\r\n        this.mandateBeforePayment = data.mandateBeforePayment;\r\n        if (this.sessionId && this.mandateBeforePayment.atsCodeForStripe) {\r\n          this.fulfillCheckout(this.sessionId, this.mandateBeforePayment.atsCodeForStripe);\r\n          this.store.saveMandate(this.mandateBeforePayment);\r\n        } else {\r\n          this.loading = false;\r\n        }\r\n      }\r\n      else {\r\n        this.router.navigate([RoutesPaths.incident_report]);\r\n        this.loading = false;\r\n      }\r\n    });\r\n  }\r\n\r\n\r\n  restoreSession() {\r\n    const originalRememberMe = this.store.getOriginalRememberMe()\r\n    if (originalRememberMe) {\r\n      if (originalRememberMe === 'true') {\r\n        this.store.setRM(true);\r\n        this.store.deleteOriginalRememberMe()\r\n      } else {\r\n        this.store.setRM(false);\r\n        this.store.deleteOriginalRememberMe()\r\n        // Handle the different statuses\r\n      }\r\n    }\r\n  }\r\n\r\n\r\n  checkPaymentStatus() {\r\n    // Retrieve the 'status' param from the route if it exists\r\n    const encodedStatus = this.route.snapshot.paramMap.get('status');\r\n\r\n    // Retrieve the 'session_id' from query parameters\r\n    this.route.queryParamMap.subscribe(params => {\r\n      this.sessionId = params.get('session_id');\r\n\r\n      if (encodedStatus) {\r\n        try {\r\n          // Decode the base64-encoded 'status' value\r\n          // Pass both status and session ID to handleStatus\r\n          this.handleStatus(encodedStatus, this.sessionId);\r\n        } catch (e) {\r\n          this.messages = [{ severity: 'error', detail: 'Une erreur s\\'est produite' }];\r\n          setTimeout(() => { this.messages = []; }, 5000);\r\n          console.error('Failed to decode base64 string', e);\r\n          this.loading = false;\r\n        }\r\n      } else {\r\n        this.getLatestMandate();\r\n      }\r\n    });\r\n  }\r\n\r\n  // Handle different statuses with session ID\r\n  handleStatus(status: string, sessionId: string | null) {\r\n    if (status === RoutesPaths.paiementSuccessUrl && sessionId) {\r\n      // Call method with session ID\r\n      this.getLatestMandateAfterPayment();\r\n      // Restore session from storage\r\n      this.store.restoreSessionFromLocalStorage();\r\n      this.store.deleteState();\r\n\r\n      this.restoreSession();\r\n    } else if (status === RoutesPaths.paiementCancelUrl) {\r\n      // Logic for payment failure\r\n      this.getLatestMandateAfterPayment();\r\n      this.messages = [{ severity: 'error', detail: 'Le paiement n\\'a pas été effectué' }];\r\n      setTimeout(() => { this.messages = []; }, 5000);\r\n\r\n      this.store.restoreSessionFromLocalStorage();\r\n      this.restoreSession();\r\n    } else {\r\n      this.loading = false;\r\n    }\r\n  }\r\n\r\n  onItniFrom() {\r\n    return this.formBuilder.group(\r\n      {\r\n        ischecked: [false]\r\n      }\r\n    );\r\n  }\r\n\r\n  get f() {\r\n    return this.step6Form.controls;\r\n  }\r\n\r\n\r\n  onSubmit() {\r\n    this.submitted = true;\r\n    const isFromValid = this.step6Form.get('ischecked')?.value === true\r\n    if (isFromValid) {\r\n      this.createMandateBeforePayment();\r\n    }\r\n  }\r\n\r\n  prev() {\r\n    this.store.setMandateIDBeforePayment(this.mandateBeforePaymentID);\r\n    this.store.saveSymptom(this.symptom);\r\n    this.store.saveDevice(this.device);\r\n    this.store.saveConsumer(this.consumer);\r\n    this.store.saveShippingDetails(this.shipping_details);\r\n    this.router.navigate([RoutesPaths.connectedStep5], {\r\n      state: {\r\n        // device: this.device,\r\n        // symptom: this.symptom,\r\n        // consumer: this.consumer,\r\n        // mandateId: this.mandateBeforePaymentID,\r\n        // shipping_details: this.shipping_details,\r\n      },\r\n    });\r\n  }\r\n  cancel(event: Event) {\r\n\r\n    this.confirmationService.confirm({\r\n      target: event.target as EventTarget,\r\n      message: 'Vous êtes sur d\\'annuler la déclaration ?',\r\n      header: 'Confirmer l\\'annulation de la déclaration',\r\n      acceptButtonStyleClass: \"acf-primary-button\",\r\n      rejectButtonStyleClass: \"acf-secondary-button\",\r\n      acceptIcon: \"none\",\r\n      rejectIcon: \"none\",\r\n      acceptLabel: \"Oui\",\r\n      rejectLabel: \"Non\",\r\n      accept: () => {\r\n        this.store.saveMandateCancelledNavigation('true')\r\n        this.deleteMandateCreationData()\r\n        this.router.navigate([`${RoutesPaths.devices}`]);\r\n      },\r\n      reject: () => {\r\n      },\r\n    });\r\n  }\r\n\r\n  deleteMandateCreationData() {\r\n    this.store.deleteFormsFromLocalStorage();\r\n    this.store.deleteContCode();\r\n    this.store.deleteMandateID();\r\n    this.store.deleteOmNumber();\r\n    //this.store.deleteMandate()\r\n  }\r\n\r\n  get finalPrice(): number {\r\n    return (this.mandateBeforePayment?.repairPrice || 0) + (this.mandateBeforePayment?.shippingPrice || 0) - (this.mandateBeforePayment?.ecoSupport || 0);\r\n  }\r\n\r\n\r\n  // Call this method in the component when needed\r\n  fulfillCheckout(sessionId: string, atsCodeRepairer: string): void {\r\n    const applicationName = this.store.getApplication()\r\n    this.mandateService.fulfillCheckout(sessionId, atsCodeRepairer, applicationName).subscribe(\r\n      (status) => {\r\n\r\n        if (status === 'paid') {\r\n          // Logic to set the order as paid\r\n          this.createMandate()\r\n        } else if (status === 'unpaid') {\r\n          this.loading = false;\r\n          // Logic for handling unpaid status\r\n          this.messages = [{ severity: 'error', detail: 'Le paiement n\\'a pas été effectué' }];\r\n          setTimeout(() => { this.messages = []; }, 5000);\r\n        }\r\n      },\r\n      (error) => {\r\n        console.error('Error fetching payment status:', error);\r\n        // Handle error\r\n        this.loading = false;\r\n        this.messages = [{ severity: 'error', detail: 'Le paiement n\\'a pas été effectué' }];\r\n        setTimeout(() => { this.messages = []; }, 5000);\r\n      }\r\n    );\r\n  }\r\n\r\n  createMandate() {\r\n    // Warranty check logic directly in interventionTypeId\r\n    const today = new Date();\r\n    const purchaseDateString = this.mandateBeforePayment?.purchaseDate;\r\n\r\n    let purchaseDate: Date | null = null;\r\n    if (purchaseDateString) {\r\n      purchaseDate = new Date(purchaseDateString);\r\n    }\r\n\r\n    // const yearsDifference = purchaseDate ? today.getFullYear() - purchaseDate.getFullYear() : 0;\r\n    // const isDateInFuture = purchaseDate ? today < purchaseDate : false;\r\n    // const interventionTypeId = !isDateInFuture && yearsDifference <= 2 ? 1 : 0;\r\n    const oof = this.store.isOutWaranty();  \r\n    const interventionTypeId = oof ? 0 : 1;\r\n    const createMandateRequest: CreateMandateRequest = {\r\n      applicationName: this.store.getApplication(),\r\n      username: this.store.getUserName(),\r\n      orderId: this.mandateBeforePayment.id,\r\n      clientCode: this.mandateBeforePayment.clientCode, //! STEP 4\r\n      orderMission: this.store.getOmNumber(),\r\n      interventionTypeId: interventionTypeId,\r\n      commercialRef: this.mandateBeforePayment.commercialRef, //STEP 1\r\n      technicalRef: this.mandateBeforePayment.technicalRef, //STEP 1\r\n      brandCode: this.mandateBeforePayment.brandCode, //STEP 1\r\n      familyCode: this.mandateBeforePayment.familyCode,//STEP 1\r\n      labelRef: this.mandateBeforePayment.labelRef,//STEP 1\r\n      purchaseDate: this.mandateBeforePayment.purchaseDate, // purchase date\r\n      irisSymptom: this.mandateBeforePayment.irisSymptom, //?STEP 2\r\n      failureDescription: this.mandateBeforePayment.failureDescription,//?STEP 2\r\n      repairPrice: this.mandateBeforePayment.repairPrice, //! STEP 4\r\n      shippingPrice: this.mandateBeforePayment.shippingPrice, //! STEP 4\r\n      IsContractGCplus: this.store.getContId() > 0 ? true : false,\r\n      ContractExtensionCode: null,//  this.store.getContCode(),\r\n      contId: this.store.getContId(),\r\n      contPrdId: this.store.getContPrdId(),\r\n      manufacturerId: null,\r\n      customerId: null,\r\n      createDate: new Date(today.toISOString()),\r\n\r\n      consumer: {\r\n        title: this.mandateBeforePayment.title, //&STEP 3\r\n        lastName: this.mandateBeforePayment.lastName,//&STEP 3\r\n        firstName: this.mandateBeforePayment.firstName,//&STEP 3\r\n        address1: this.mandateBeforePayment.address1,//&STEP 3\r\n        zip: this.mandateBeforePayment.zip,//&STEP 3\r\n        city: this.mandateBeforePayment.city,//&STEP 3\r\n        countryCode: this.mandateBeforePayment.countryCode,//&STEP 3\r\n        countryLabel: 'FR',\r\n        phoneNumber: this.mandateBeforePayment.phoneNumber,//&STEP 3\r\n        email: this.mandateBeforePayment.email//&STEP 3\r\n      },\r\n      pickupInfo:\r\n        this.mandateBeforePayment.pickupChoice === 'FROMSTORE'\r\n          ? {\r\n            carrierCode: this.mandateBeforePayment.carrierCode,\r\n            pickupChoice: this.mandateBeforePayment.pickupChoice,\r\n            fromName: this.mandateBeforePayment.fromName,\r\n            fromAddress1: this.mandateBeforePayment.fromAddress1,\r\n            fromZip: this.mandateBeforePayment.fromZip,\r\n            fromCity: this.mandateBeforePayment.fromCity,\r\n            fromCountryCode: this.mandateBeforePayment.fromCountryCode,\r\n            fromPhone: this.mandateBeforePayment.fromPhone,\r\n            toName: this.mandateBeforePayment.toName,\r\n            toAddress1: this.mandateBeforePayment.toAddress1,\r\n            toZip: this.mandateBeforePayment.toZip,\r\n            toCity: this.mandateBeforePayment.toCity,\r\n            toCountryCode: this.mandateBeforePayment.toCountryCode,\r\n            toPhone: this.mandateBeforePayment.toPhone\r\n          }\r\n          : null, // If not 'FROMSTORE' (Poste), send a null object\r\n    };\r\n    this.mandateService.createMandate(createMandateRequest).subscribe(\r\n      (response) => {\r\n        if (response.result) {\r\n          // If result is true, handle success\r\n          this.store.setMandateID(response.mandateId);\r\n          this.router.navigate([RoutesPaths.incident_report_success]);\r\n          this.loading = false;\r\n        } else {\r\n          this.loading = false;\r\n          // If result is false, handle error\r\n          this.messages = [{ severity: 'error', detail: 'Une erreur s\\'est produite lors de la déclaration d\\'incident' }];\r\n          setTimeout(() => {\r\n            this.messages = []; // Clear error message after 5 seconds\r\n          }, 5000);\r\n        }\r\n      },\r\n      (error) => {\r\n        console.error('Error occurred:', error);\r\n        // Perform necessary actions in case of error, if any\r\n        this.loading = false;\r\n        this.messages = [{ severity: 'error', detail: 'Une erreur serveur s\\'est produite' }];\r\n        setTimeout(() => {\r\n          this.messages = []; // Clear error message after 5 seconds\r\n        }, 5000);\r\n      }\r\n    );\r\n  }\r\n\r\n\r\n  createMandateBeforePayment() {\r\n    this.createWarranty();\r\n  }\r\n\r\n  createWarranty() {\r\n    const request: CreateWarrantyRequest = {\r\n      customer: {\r\n        applicationName: this.store.getApplication(),\r\n        userName: this.store.getUserName(),\r\n        title: this.mandateBeforePayment.title, //&STEP 3\r\n        lastName: this.mandateBeforePayment.lastName,//&STEP 3\r\n        firstName: this.mandateBeforePayment.firstName,//&STEP 3\r\n        address: this.mandateBeforePayment.address1,//&STEP 3\r\n        zipPostalCode: this.mandateBeforePayment.zip,//&STEP 3\r\n        city: this.mandateBeforePayment.city,//&STEP 3\r\n        countryCode: this.mandateBeforePayment.countryCode,//&STEP 3\r\n        phoneNumber: this.mandateBeforePayment.phoneNumber,//&STEP 3\r\n      },\r\n      products: [\r\n        {\r\n          productReference: this.mandateBeforePayment.commercialRef,\r\n          salesDate: this.mandateBeforePayment.purchaseDate, //purchase date\r\n        },\r\n      ],\r\n            /*fileId*/\r\n      ...(this.store.getFileId() && { fileId: this.store.getFileId() })\r\n    };\r\n    this.mandateService.CreateCDMBaseWarranties(request).subscribe(\r\n      (response) => {\r\n        if (response[0].contCode) {\r\n          this.store.setContCode(response[0].contCode);\r\n          this.store.setContId(response[0].contId);\r\n          this.store.setContPrdId(response[0].contPrdId);\r\n\r\n          this.UpdateMandateBeforePayment(response[0].contCode, response[0].contId, response[0].contPrdId)\r\n          const paymentRequest: StripePaymentRequest = {\r\n            applicationName: this.store.getApplication(),\r\n            userName: this.store.getUserName(),\r\n            atsCodeRepairer: this.mandateBeforePayment.atsCodeForStripe, // atscode\r\n            amount: this.finalPrice,\r\n            currency: this.mandateBeforePayment.currencyCode, // currencyCode\r\n            descriptionPayment: 'Paiement - Service de réparation',\r\n            quantity: 1,\r\n            orderNumber: String(this.mandateBeforePayment.id), // mandate id\r\n            refCommercial: this.mandateBeforePayment.commercialRef,\r\n            customerName: this.mandateBeforePayment.firstName,\r\n            customerEmail: this.mandateBeforePayment.email,\r\n            cancelUrl: RoutesPaths.paiementCancelUrl,\r\n            successUrl: RoutesPaths.paiementSuccessUrl,\r\n\r\n          };\r\n          this.mandateService.createCheckoutSession(paymentRequest).subscribe(\r\n            (response: string) => {\r\n              const originalRememberMe = this.store.getRM();\r\n              this.store.saveSessionToLocalStorage();\r\n              this.store.setOriginalRememberMe(originalRememberMe === 'true'); // Store the original value\r\n              this.store.setRM(true); // Update rememberMe to true\r\n              window.location.href = response;\r\n            },\r\n            (error) => {\r\n              this.messages = [{ severity: 'error', detail: 'Une erreur serveur s\\'est produite lors de la création de la session de paiement.' }];\r\n              setTimeout(() => {\r\n                this.messages = [];\r\n              }, 5000);\r\n            }\r\n          );\r\n        } else {\r\n          const errors = response[0].errors || [];\r\n          let errorMessage = 'Une erreur s\\'est produite lors de la déclaration d\\'incident.';\r\n\r\n          if (errors.includes('EmailMandatory')) {\r\n            errorMessage = 'L\\'email est obligatoire.';\r\n          } else if (errors.includes('ServiceNotAvailableInDomTom')) {\r\n            errorMessage = 'Le service n\\'est pas disponible en DOM-TOM.';\r\n          } else if (errors.includes('RefProductNotValid')) {\r\n            errorMessage = 'La référence du produit est invalide.';\r\n          } else if (errors.includes('RefProductIsEmpty')) {\r\n            errorMessage = 'La référence du produit est vide.';\r\n          } else if (errors.includes('SaleDateNotValid')) {\r\n            errorMessage = 'La date de vente est invalide.';\r\n            // } else if (errors.includes('ContractYetCreated')) {\r\n            //   errorMessage = 'Ce contrat a déjà été créé.';\r\n          }\r\n          else if (errors.includes('ContractExistsInGcplus')) {\r\n            errorMessage = 'Un contrat existe déjà dans GCPlus.';\r\n          } else if (errors.includes('ContractExists')) {\r\n            errorMessage = 'Un contrat existe déjà.';\r\n          }\r\n\r\n          this.messages = [{ severity: 'error', detail: errorMessage }];\r\n          setTimeout(() => {\r\n            this.messages = [];\r\n          }, 5000);\r\n        }\r\n      },\r\n      (error) => {\r\n        this.messages = [{ severity: 'error', detail: 'Une erreur serveur s\\'est produite lors de la création du contrat.' }];\r\n        setTimeout(() => {\r\n          this.messages = [];\r\n        }, 5000);\r\n        console.error('Error:', error);\r\n      }\r\n    );\r\n\r\n  }\r\n\r\n  UpdateMandateBeforePayment(contCode: string, contId: number, contPrdId: number) {\r\n    // Warranty check logic directly in interventionTypeId\r\n    // const today = new Date();\r\n    // const purchaseDate = new Date(this.device.saleDate);\r\n    // const yearsDifference = today.getFullYear() - purchaseDate.getFullYear();\r\n    // const isDateInFuture = today < purchaseDate;\r\n    // const interventionTypeId = !isDateInFuture && yearsDifference <= 2 ? 1 : 0;\r\n    const createMandateBeforePayment: UpdateMandateBeforePaymentRequest = {\r\n      applicationName: this.store.getApplication(),\r\n      clientCode: this.mandateBeforePayment.clientCode, //! STEP 4\r\n      orderMission: this.store.getOmNumber(),\r\n      interventionTypeId: 0,//interventionTypeId,\r\n      userName: this.store.getUserName(),\r\n      brandCode: this.mandateBeforePayment.brandCode, //STEP 1\r\n      commercialRef: this.mandateBeforePayment.commercialRef,//STEP 1\r\n      technicalRef: this.mandateBeforePayment.technicalRef,\r\n      familyCode: this.mandateBeforePayment.familyCode,//STEP 1\r\n      labelRef: this.mandateBeforePayment.labelRef,//STEP 1\r\n      purchaseDate: this.mandateBeforePayment.purchaseDate, //STEP 1\r\n      irisSymptom: this.mandateBeforePayment.irisSymptom, //?STEP 2\r\n      failureDescription: this.mandateBeforePayment.failureDescription,//?STEP 2\r\n      repairPrice: this.mandateBeforePayment.repairPrice, //! STEP 4\r\n      shippingPrice: this.mandateBeforePayment.shippingPrice, //! STEP 4\r\n      IsContractGCplus: this.store.getContId() > 0 ? true : false,\r\n      ContractExtensionCode: null,//  contCode,\r\n      consumer: {\r\n        title: this.mandateBeforePayment.title, //&STEP 3\r\n        lastName: this.mandateBeforePayment.lastName,//&STEP 3\r\n        firstName: this.mandateBeforePayment.firstName,//&STEP 3\r\n        address1: this.mandateBeforePayment.address1,//&STEP 3\r\n        zip: this.mandateBeforePayment.zip,//&STEP 3\r\n        city: this.mandateBeforePayment.city,//&STEP 3\r\n        countryCode: this.mandateBeforePayment.countryCode,//&STEP 3\r\n        countryLabel: 'FR',\r\n        phoneNumber: this.mandateBeforePayment.phoneNumber,//&STEP 3\r\n        email: this.mandateBeforePayment.email //&STEP 3\r\n      },\r\n      pickupInfo:\r\n        this.mandateBeforePayment.pickupChoice === 'FROMSTORE'\r\n          ? {\r\n            carrierCode: this.mandateBeforePayment.carrierCode,\r\n            pickupChoice: this.mandateBeforePayment.pickupChoice,\r\n            fromName: this.mandateBeforePayment.fromName,\r\n            fromAddress1: this.mandateBeforePayment.fromAddress1,\r\n            fromZip: this.mandateBeforePayment.fromZip,\r\n            fromCity: this.mandateBeforePayment.fromCity,\r\n            fromCountryCode: this.mandateBeforePayment.fromCountryCode,\r\n            fromPhone: this.mandateBeforePayment.fromPhone,\r\n            toName: this.mandateBeforePayment.toName,\r\n            toAddress1: this.mandateBeforePayment.toAddress1,\r\n            toZip: this.mandateBeforePayment.toZip,\r\n            toCity: this.mandateBeforePayment.toCity,\r\n            toCountryCode: this.mandateBeforePayment.toCountryCode,\r\n            toPhone: this.mandateBeforePayment.toPhone\r\n          }\r\n          : null, // If not 'FROMSTORE' (Poste), send a null object\r\n      mandateId: this.store.getMandateID(),\r\n      ecoSupport: this.mandateBeforePayment.ecoSupport,\r\n      currencyCode: this.mandateBeforePayment.currencyCode,\r\n      currencySymbol: this.mandateBeforePayment.currencySymbol,\r\n      atsCodeForStripe: this.mandateBeforePayment.atsCodeForStripe, //! STEP 4 \r\n      contId: contId,\r\n      contPrdId: contPrdId,\r\n      /*fileId*/\r\n      ...(this.store.getFileId() && { fileId: this.store.getFileId() })\r\n    };\r\n    this.mandateService.UpdateMandateBeforePayment(createMandateBeforePayment).subscribe(\r\n      (response) => {\r\n        // this.store.setMandateID(response.mandateId);\r\n        // this.store.setOmNumber(createMandateBeforePayment.orderMission);\r\n      }\r\n    )\r\n  }\r\n\r\n}\r\n","<acf-connected-layout [app]=\"app\">\r\n    <acf-connected-steps-layout [appName]=\"app\" [step]=\"6\" *ngIf=\"!loading else loader\">\r\n        <div class=\"card\">\r\n            <p-messages [(value)]=\"messages\" [closable]=\"true\" />\r\n        </div>\r\n        <form [formGroup]=\"step6Form\">\r\n\r\n            <div class=\"grid\">\r\n                <div class=\"col-12 md:col-6\">\r\n                    <div class=\"acf-card\">\r\n                        <h4 class=\"acf-h4-title\">Récapitulatif de votre commande </h4>\r\n\r\n                        <div\r\n                            class=\"flex align-items-center justify-content-between border-round-lg border-200 bloc-mobile\">\r\n                            <img [src]=\"'assets/'+ app + '/repairer.png'\" alt=\"Guidelines Logo\" class=\"w-10rem\">\r\n                            <p class=\"text-600 text-md\">Forfait réparation + matériel </p>\r\n                            <span class=\"font-bold text-lg price\">{{ mandateBeforePayment.repairPrice }}\r\n                                {{mandateBeforePayment.currencySymbol}} </span>\r\n                        </div>\r\n\r\n                    </div>\r\n                    <div class=\"acf-card mb-0 mt-2\">\r\n                        <div class=\"grid \">\r\n                            <div class=\"col-9 \">\r\n                                <h4 class=\"acf-h4-title mb-0\">Bonus de réparation</h4>\r\n                            </div>\r\n                            <div class=\"col-3 mt-3  d-flex align-items-end text-right\">\r\n                                <span class=\" font-bold text-lg\"> {{ mandateBeforePayment.ecoSupport }}\r\n                                    {{mandateBeforePayment.currencySymbol}}</span>\r\n                            </div>\r\n                        </div>\r\n                        <p class=\"acf-h4-title\"> <span class=\"\"> -{{ mandateBeforePayment.ecoSupport }}\r\n                                {{mandateBeforePayment.currencySymbol}}</span> bonus de\r\n                            réparation\r\n                        </p>\r\n                        <p></p>\r\n                    </div>\r\n                </div>\r\n                <div class=\"col-12 md:col-6\">\r\n                    <div class=\"acf-card\">\r\n                        <h4 class=\"acf-h4-title\">Récapitulatif de votre commande </h4>\r\n                        <div>\r\n                            <div class=\"grid my-2\">\r\n                                <div class=\"col-9\">\r\n                                    <span class=\"font-semibold\">Prix TTC</span>\r\n                                </div>\r\n                                <div class=\"col-3 d-flex align-items-end text-right\">\r\n                                    <span class=\"font-bold text-lg\"> {{finalPrice}}\r\n                                        {{mandateBeforePayment.currencySymbol}}</span>\r\n                                </div>\r\n                            </div>\r\n                            <div class=\"my-3\">\r\n                                <p-checkbox formControlName=\"ischecked\" binary=\"true\" class=\"mr-3\"\r\n                                    [ngClass]=\"{ 'acf-invalid-checkbox': (f['ischecked'].dirty || f['ischecked'].touched || submitted) && f['ischecked'].value == false}\"></p-checkbox>\r\n                                <span class=\"text-sm\"> J’ai pris connaissance <a [href]=\"'assets/' + this.app + '/documents/CGV.pdf'\" class=\"cursor-pointer acf-primary-link\" target=\"_blank\">des\r\n                                        conditions générales de\r\n                                        souscription </a> et <a [href]=\"'assets/' + this.app + '/documents/CGV.pdf'\" class=\"cursor-pointer acf-primary-link\" target=\"_blank\" >des conditions\r\n                                        générales\r\n                                        de garantie </a> et\r\n                                    d’extensions de BSH Electroménager SAS situé 26, avenue Michelet,\r\n                                    93400 Saint-Ouen - France et je comprends et accepte les conditions\r\n                                    Commande avec obligation de paiement </span>\r\n                            </div>\r\n\r\n\r\n                        </div>\r\n                        <div class=\" text-center\">\r\n                            <button pButton pRipple type=\"submit\"\r\n                                [label]=\"'Payer'+' ' + finalPrice +' '+ mandateBeforePayment.currencySymbol\"\r\n                                (click)=\"onSubmit()\" class=\"acf-primary-button d-block mx-auto\"></button>\r\n                            <p class=\"font-bold text-center\"> <img [src]=\"'assets/'+ app + '/locked.png'\" alt=\"locked\"\r\n                                    class=\"\" width=\"20\">\r\n                                Paiement sécurisé </p>\r\n                            <img [src]=\"'assets/'+ app + '/Mastercard.png'\" alt=\"Mastercard\" class=\"mr-2\" width=\"50\">\r\n                            <img [src]=\"'assets/'+ app + '/Visa.png'\" alt=\"Visa\" class=\"\" width=\"50\">\r\n\r\n                        </div>\r\n                        <p></p>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </form>\r\n        <p-confirmDialog [style]=\"{width: '50vw'}\" />\r\n        <!-- Navigation Buttons -->\r\n        <div class=\"flex justify-content-between align-items-center bloc-mobile\">\r\n            <span class=\"acf-primary-link text-left\" (click)=\"cancel($event)\">Annuler</span>\r\n            <div class=\"guest-action mx-0\">\r\n                <button pButton label=\"Etape précédente\" class=\"acf-secondary-button mr-3\" (click)=\"prev()\"></button>\r\n            </div>\r\n        </div>\r\n    </acf-connected-steps-layout>\r\n    <ng-template #loader class=\"h-15rem\">\r\n        <div class=\"acf-dual-ring h-15rem\"></div>\r\n      </ng-template>\r\n</acf-connected-layout>","import { Component, Input } from '@angular/core';\r\nimport { MandateService } from '../../services/mandate.service';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { MandateDetails, MandateStatus, TrackingColissimo, WorkflowHistory } from '../../models/shared/mandate';\r\nimport { IrisSymptomsRequest } from '../../models/request/iris-symptom.request';\r\nimport { ReferentialService } from '../../services/referential.service';\r\nimport { IrisSymptoms } from '../../models/shared/iris-symptom';\r\n\r\n@Component({\r\n  selector: 'acf-incident-details',\r\n  templateUrl: './incident-details.component.html',\r\n  styleUrl: './incident-details.component.scss',\r\n  standalone: false\r\n})\r\nexport class IncidentDetailsComponent {\r\n  @Input() app: string = '';\r\n  mandateId!: string;\r\n  mandate: MandateDetails = {} as MandateDetails;\r\n  workflowHistories!: WorkflowHistory[];\r\n  IrisSymtoms!: IrisSymptoms;\r\n  colissimoLabel!: string;\r\n  trackingNumber: string | undefined;\r\n  lastStepTitle!: string;\r\n  constructor(private route: ActivatedRoute, private readonly mandateService: MandateService, private referentialService: ReferentialService) {\r\n    this.getMandateDetails();\r\n  }\r\n  getMandateDetails() {\r\n    this.route.params.subscribe(params => {\r\n      this.mandateId = params['id']; // Retrieve the id from the URL\r\n    });\r\n    this.mandateService.getMandateDetails(this.mandateId).subscribe((data) => {\r\n      this.mandate = data.mandate;\r\n      this.getIrisSymptoms();\r\n      this.mandateService.setOmMandateDetails(data.mandate.orderMission);\r\n\r\n      this.workflowHistories = data?.workflowHistories?.map(\r\n        (event: any, index: number) => {\r\n          return {\r\n            ...event,\r\n            markerIcon:\r\n              index < data?.workflowHistories?.length - 1\r\n                ? 'pi pi-check'\r\n                : 'pi pi-circle',\r\n            color:\r\n              index < data?.workflowHistories?.length - 1\r\n                ? 'green'\r\n                : 'red',\r\n          };\r\n        }\r\n      );\r\n\r\n      if (this.mandate.interventionTypeId && this.mandate.interventionTypeId === 1 && this.mandate.pickupInfo !== null) {\r\n        this.trackingNumber = this.mandate.pickupInfo.trackingNumber;\r\n        this.setLastStepTitle(data.trackingColissimo);\r\n\r\n        this.mandateService.GetColissimoLabelByMandate(this.mandateId).subscribe((data) => {\r\n          this.colissimoLabel = data;\r\n        })\r\n      }\r\n\r\n\r\n    });\r\n\r\n\r\n  }\r\n\r\n  setLastStepTitle(trackingColissimo : TrackingColissimo): void {\r\n    if (trackingColissimo?.parcel?.step) {\r\n      const steps = trackingColissimo.parcel.step; \r\n      for (let i = steps.length - 1; i >= 0; i--) {\r\n        const step = steps[i];\r\n        if (step.labelShort && step.labelShort.trim() !== '') {\r\n          this.lastStepTitle = step.labelShort;\r\n          return;\r\n        } else if (step.statusLabel && step.statusLabel.trim() !== '') {\r\n          this.lastStepTitle = step.statusLabel;\r\n          return;\r\n        }\r\n      }\r\n    }\r\n  }\r\n  downloadTransportLabel(): void {\r\n    if (!this.colissimoLabel) {\r\n      console.error('No label data available');\r\n      return;\r\n    }\r\n\r\n    try {\r\n      const byteCharacters = atob(this.colissimoLabel);\r\n      const byteNumbers = new Array(byteCharacters.length);\r\n      for (let i = 0; i < byteCharacters.length; i++) {\r\n        byteNumbers[i] = byteCharacters.charCodeAt(i);\r\n      }\r\n      const byteArray = new Uint8Array(byteNumbers);\r\n      const blob = new Blob([byteArray], { type: 'application/pdf' });\r\n      const url = window.URL.createObjectURL(blob);\r\n      const link = document.createElement('a');\r\n      link.href = url;\r\n      link.download = `étiquette-transport-${this.trackingNumber || 'colissimo'}.pdf`;\r\n\r\n      document.body.appendChild(link);\r\n      link.click();\r\n      document.body.removeChild(link);\r\n      window.URL.revokeObjectURL(url);\r\n    } catch (error) {\r\n      console.error('Error downloading transport label:', error);\r\n    }\r\n  }\r\n  getIrisSymptoms() {\r\n\r\n    const request: IrisSymptomsRequest = {\r\n      applicationName: this.app,\r\n      commercialRef: this.mandate.commercialRef\r\n    };\r\n    this.referentialService.getIrisSymptoms(request).subscribe(\r\n      (data) => {\r\n        this.IrisSymtoms = data;\r\n\r\n      },\r\n      (error) => {\r\n        console.error('Erreur lors de la récupération des données', error);\r\n      }\r\n    );\r\n  }\r\n\r\n  getStatusLabel(status: string): string {\r\n    const validStatuses: string[] = [\"WAITING\", \"NEW\", \"CLOSED\", \"REFUSED\"];\r\n    if (validStatuses.includes(status)) {\r\n      return MandateStatus[status as keyof typeof MandateStatus];\r\n    }\r\n    return ''; // Return an empty string or fallback status\r\n  }\r\n\r\n\r\n  getIrisSymptomLabel(): string {\r\n    if (this.mandate && this.IrisSymtoms) {\r\n      const symptom = this.IrisSymtoms.find(item => item.code === this.mandate.irisSymptom);\r\n      return symptom ? symptom.label : '';\r\n    }\r\n    return ''\r\n  }\r\n\r\n\r\n}\r\n","<acf-connected-layout [app]=\"app\">\r\n    <div section-actions>\r\n        <div class=\"view-toggle flex align-items-center\">\r\n            <div *ngIf=\"mandate?.mandateStatus\">\r\n                <div [class]=\"'mr-3 status status-' + mandate.mandateStatus\">\r\n                    {{ getStatusLabel(mandate.mandateStatus) | titlecase }}\r\n                </div>\r\n            </div>\r\n            <span class=\"mr-2 text-sm\">Date de déclaration</span>\r\n            <div class=\"flex align-items-end\">\r\n                <img [src]=\"'assets/' + this.app + '/calendar.svg'\" alt=\"Calendar Icon\" style=\"width: 16px;\r\n                margin-top: 4px;\r\n                margin-right: 8px;\" />\r\n                <span class=\"value\">{{ mandate.createDate | date: 'dd/MM/yyyy' }}</span>\r\n            </div>\r\n        </div>\r\n\r\n\r\n    </div>\r\n\r\n    @if(mandate){\r\n    <div class=\"grid\">\r\n        <div class=\"col acf-card mx-2 mt-2\">\r\n\r\n            <div class=\"card-info-title my-2 font-bold text-lg\">\r\n                <span>Détails de la panne\r\n                </span>\r\n            </div>\r\n            <div class=\"card-info-row mt-4 mb-4\">\r\n                <p class=\"font-semibold\">Type de la panne </p>\r\n                <p class=\"value\"> {{ getIrisSymptomLabel() }} </p>\r\n            </div>\r\n            <div class=\"card-info-row mb-4\">\r\n                <p class=\"font-semibold \">Description de la panne </p>\r\n                <p class=\"value\"> {{mandate.failureDescription }} </p>\r\n            </div>\r\n\r\n\r\n\r\n\r\n        </div>\r\n        <div class=\"col acf-card mx-2 mt-2\">\r\n\r\n            <div class=\"card-info-title my-2 font-bold text-lg\">\r\n                <span>Votre appareil</span>\r\n            </div>\r\n\r\n\r\n            <div class=\"card-info-row mt-4 mb-4\">\r\n                <p class=\"font-semibold\">Marque </p>\r\n                <p class=\"value\"> {{mandate.brandCode }} </p>\r\n            </div>\r\n            <div class=\"card-info-row mb-4\">\r\n                <p class=\"font-semibold\">Famille </p>\r\n                <p class=\"value\"> {{mandate.familyCode }} </p>\r\n            </div>\r\n            <div class=\"card-info-row mb-4\">\r\n                <p class=\"font-semibold\">Référence commerciale </p>\r\n                <p class=\"value\"> {{mandate.commercialRef }} </p>\r\n            </div>\r\n            <div class=\"card-info-row mb-4\">\r\n                <p class=\"font-semibold\">Référence technique </p>\r\n                <p class=\"value\"> {{mandate.technicalRef }} </p>\r\n            </div>\r\n\r\n\r\n\r\n        </div>\r\n        <div class=\"col acf-card mx-2 mt-2\">\r\n\r\n            <div class=\"card-info-title  my-2 font-bold text-lg\">\r\n                <span>Travaux effectués\r\n\r\n                </span>\r\n\r\n                @if(workflowHistories && workflowHistories.length !==0){\r\n                <div class=\"mt-4\">\r\n                    <p-timeline [value]=\"workflowHistories\" class=\"w-full md:w-20rem text-left\">\r\n                        <ng-template pTemplate=\"marker\" let-wf let-index=\"index\">\r\n                            <div class=\"custom-marker \">{{index}}\r\n                                <i [ngClass]=\"wf.markerIcon\"></i>\r\n                            </div>\r\n                        </ng-template>\r\n                        <ng-template pTemplate=\"content\" let-wf>\r\n                            <div class=\"wf-display \">\r\n                                <div class=\"font-bold mb-2\">{{ wf.statusLabel }}</div>\r\n\r\n                                <div class=\"value text-sm\">{{ wf.interventionWorkflowStatusDate | date: 'dd/MM/yyyy'\r\n                                    }} {{ wf.interventionWorkflowStatusDate | date: 'HH:mm' }}\r\n                                </div>\r\n\r\n                            </div>\r\n                        </ng-template>\r\n\r\n\r\n\r\n                    </p-timeline>\r\n                </div>\r\n                }\r\n                @else{<div class=\"mt-4 flex flex-column align-items-center\">\r\n                    <img class=\"mb-3\" [src]=\"'assets/' + app + '/Calendar_empty.svg'\" alt=\"Empty Calendar\">\r\n                    <span class=\"font-semibold text-sm \"> Aucun travail n'a été réalisé.</span>\r\n                </div> }\r\n\r\n            </div>\r\n\r\n        </div>\r\n\r\n    </div>\r\n    @if(mandate.interventionTypeId && mandate.interventionTypeId === 1 && mandate.pickupInfo !== null){\r\n    <div class=\"grid mt-2\">\r\n        <div class=\"col acf-card mx-2 mt-2\">\r\n            <div class=\"grid\">\r\n                <!-- Main content section -->\r\n                <div class=\"col-12 md:col-8 lg:col-9\">\r\n                    <div class=\"card-info-title my-2 font-bold text-lg\">\r\n                        <span>Suivi de colis</span>\r\n                    </div>\r\n                    <div class=\"mt-4 mb-4 text-md\">\r\n                        <span class=\"font-semibold\">Numéro de colis </span>\r\n                        <span class=\"font-semibold text-primary underline\"\r\n                            style=\"text-underline-offset: 4px;\">{{trackingNumber}}</span>\r\n                    </div>\r\n                    <div class=\"mt-4 mb-4\">\r\n                        @if(colissimoLabel) {\r\n                        <button pButton pRipple label=\"Télécharger l'étiquette de transport\" icon=\"pi pi-download\"\r\n                            class=\"acf-secondary-button w-full md:w-auto\" (click)=\"downloadTransportLabel()\"\r\n                            [disabled]=\"!colissimoLabel\">\r\n                        </button>}\r\n                    </div>\r\n                </div>\r\n\r\n                <!-- Status section -->\r\n                <div class=\"col-12 md:col-4 lg:col-3\">\r\n                   @if(lastStepTitle) {<div class=\"mr-1 mt-2 status status-CLOSED text-center\">\r\n                        <span class=\"inline-block\">{{lastStepTitle}}</span>\r\n                    </div>}\r\n                </div>\r\n            </div>\r\n        </div>\r\n    </div>\r\n    }\r\n\r\n    }\r\n\r\n</acf-connected-layout>","import { Component, Input } from '@angular/core';\r\nimport { DataStoreService } from '../../services/data-store.service';\r\nimport { IrisSymptoms } from '../../models/shared/iris-symptom';\r\nimport { OverlayPanel } from 'primeng/overlaypanel';\r\nimport { FileService } from '../../services/file.service';\r\nimport { MessageService } from 'primeng/api';\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\nimport { MandateService } from '../../services/mandate.service';\r\n\r\n@Component({\r\n  selector: 'acf-incident-report-success',\r\n  templateUrl: './incident-report-success.component.html',\r\n  styleUrl: './incident-report-success.component.scss',\r\n  providers: [DialogService, MessageService],\r\n  standalone: false\r\n})\r\nexport class IncidentReportSuccessComponent {\r\n  @Input() app: string = '';\r\n  id: any;\r\n  mandate: any;\r\n  IrisSymtoms!: IrisSymptoms;\r\n  loading: boolean = false;\r\n  isOverlayVisible: boolean = false;\r\n  colissimoLabel!: string;\r\n  loadingPrint: boolean = false;\r\n  constructor(private readonly store: DataStoreService,\r\n    private readonly filseService: FileService, private messageService: MessageService, private readonly mandateService: MandateService\r\n  ) {\r\n    this.getMandate();\r\n    this.getOmNumber();\r\n    this.deleteMandateCreationData()\r\n    \r\n    this.printTracking()\r\n  }\r\n  deleteMandateCreationData() {\r\n    this.store.deleteFormsFromLocalStorage();\r\n    this.store.deleteContCode();\r\n    this.store.deleteFileId();\r\n  }\r\n  getMandate() {\r\n    const parseJsonSafely = (data: string | null) => {\r\n      try {\r\n        return data ? JSON.parse(data) : null;\r\n      } catch (error) {\r\n        console.error('Error parsing JSON:', error);\r\n        return null;\r\n      }\r\n    };\r\n    this.mandate = parseJsonSafely(this.store.getMandate());\r\n  }\r\n\r\n  getOmNumber() {\r\n    this.id = this.store.getOmNumber()\r\n  }\r\n\r\n  togglePrintOverlay(print: OverlayPanel): void {\r\n    this.isOverlayVisible = !this.isOverlayVisible;\r\n    print.toggle(event);\r\n  }\r\n\r\n  printOm(panel?: OverlayPanel) {\r\n    //panel.hide();\r\n    this.loading = true\r\n    this.filseService.printOm().subscribe(\r\n      data => {\r\n        if (data) {\r\n          this.filseService.print(data);\r\n          this.loading = false;\r\n          this.messageService.add({ severity: 'success', summary: 'Success', detail: 'Fichier téléchargé avec succès.' });\r\n        } else {\r\n          this.loading = false;\r\n          this.messageService.add({ severity: 'error', summary: 'Erreur', detail: 'Fichier introuvable' });\r\n        }\r\n      }, err => {\r\n        this.loading = false;\r\n        this.messageService.add({ severity: 'error', summary: 'Erreur', detail: 'Fichier introuvable' });\r\n      }\r\n    )\r\n  }\r\n\r\n  printLabel(panel: OverlayPanel) {\r\n    panel.hide();\r\n    this.loading = true\r\n    this.filseService.printLabel(this.mandate).subscribe(\r\n      data => {\r\n        if (data) {\r\n          this.filseService.print(data);\r\n          this.loading = false;\r\n          this.messageService.add({ severity: 'success', summary: 'Success', detail: 'Fichier téléchargé avec succès.' });\r\n        } else {\r\n          this.loading = false;\r\n          this.messageService.add({ severity: 'error', summary: 'Erreur', detail: 'Fichier introuvable' });\r\n        }\r\n      }, err => {\r\n        this.loading = false;\r\n        this.messageService.add({ severity: 'error', summary: 'Erreur', detail: 'Fichier introuvable' });\r\n      }\r\n    )\r\n  }\r\n\r\n  printTracking() {\r\n    const mandateId = this.store.getMandateID().toString();\r\n    this.mandateService.GetColissimoLabelByMandate(mandateId).subscribe((data) => {\r\n      this.colissimoLabel = data;\r\n    })\r\n  }\r\n\r\n  downloadTransportLabel(): void {\r\n        this.loadingPrint = true;\r\n\r\n    if (!this.colissimoLabel) {\r\n      console.error('No label data available');\r\n      this.loadingPrint = false\r\n      this.messageService.add({ severity: 'error', summary: 'Erreur', detail: 'Fichier introuvable' });\r\n\r\n      return;\r\n    }\r\n\r\n    try {\r\n      const byteCharacters = atob(this.colissimoLabel);\r\n      const byteNumbers = new Array(byteCharacters.length);\r\n      for (let i = 0; i < byteCharacters.length; i++) {\r\n        byteNumbers[i] = byteCharacters.charCodeAt(i);\r\n      }\r\n      const byteArray = new Uint8Array(byteNumbers);\r\n      const blob = new Blob([byteArray], { type: 'application/pdf' });\r\n      const url = window.URL.createObjectURL(blob);\r\n      const link = document.createElement('a');\r\n      link.href = url;\r\n      link.download = `étiquette-transport.pdf`;\r\n\r\n      document.body.appendChild(link);\r\n      link.click();\r\n      document.body.removeChild(link);\r\n      window.URL.revokeObjectURL(url);\r\n      this.loadingPrint = false\r\n\r\n    } catch (error) {\r\n      console.error('Error downloading transport label:', error);\r\n      this.loadingPrint = false\r\n      this.messageService.add({ severity: 'error', summary: 'Erreur', detail: 'Fichier introuvable' });\r\n\r\n    }\r\n  }\r\n}\r\n\r\n\r\n","<acf-connected-layout [app]=\"app\">\r\n    <div section-actions>\r\n        <div *ngIf=\"!loading else load\">\r\n            <button pButton pRipple type=\"submit\"\r\n                class=\"acf-primary-button d-flex align-items-center justify-content-between\" (click)=\"printOm(print)\">\r\n                <!-- (click)=\"togglePrintOverlay(print)\"> -->\r\n                <i class=\"pi pi-print\"></i>\r\n                <span class=\"ml-2\">Imprimer</span>\r\n                <!-- <i class=\"pi\" [ngClass]=\"isOverlayVisible ? 'pi-angle-up' : 'pi-angle-down'\"></i> -->\r\n            </button>\r\n\r\n\r\n            <p-overlayPanel #print>\r\n                <ng-template pTemplate>\r\n                    <div class=\"w-12rem font-bold py-2 m-2 cursor-pointer\" (click)=\"printOm(print)\">Ordre de mission\r\n                    </div>\r\n                    <div class=\"w-12rem font-bold py-2 m-2 cursor-disabled\">Etiquette d'expédition</div>\r\n                    <!-- (click)=\"printLabel(print)\"-->\r\n                </ng-template>\r\n            </p-overlayPanel>\r\n        </div>\r\n        <ng-template #load>\r\n            <button pButton pRipple type=\"submit\" class=\"acf-primary-button mt-3 mb-3\">\r\n                <i class=\" pi pi-spin pi-spinner\"></i>\r\n                <span class=\"ml-2\">Imprimer</span>\r\n\r\n            </button>\r\n        </ng-template>\r\n    </div>\r\n    <div class=\"grid \">\r\n        <div class=\"col\">\r\n            <div class=\"grid confirmation-message p-1 mb-3 border-round-xl border-200\t\">\r\n                <div class=\"col\">\r\n                    <div class=\"my-2\">\r\n                        <!-- @if(mandate.interventionTypeId && mandate.interventionTypeId === 1){ -->\r\n                        <strong> Votre ordre de mission a été créé.</strong>\r\n\r\n                        <!-- } @else {\r\n                        <strong> Votre paiement a été accepté.</strong>\r\n                        } -->\r\n                    </div>\r\n                    <div class=\" my-2\">\r\n                        <div class=\"  \">\r\n                            <span>L’ordre de mission <span class=\"font-semibold\">N°{{ this.id}} </span>\r\n                                a été créé et transmis au\r\n                                réparateur. Veuillez télécharger le document et le mettre dans votre colis, un email vous a également été adressé.</span>\r\n\r\n\r\n                        </div>\r\n\r\n                    </div>\r\n                    <div class=\"flex my-2\">\r\n                        <div> <strong>** &nbsp;</strong></div>\r\n                        <div>\r\n                            <strong> Merci de déposer votre appareil dans un délai de 14 jours suivant la\r\n                                déclaration.</strong><br>\r\n                            <strong> Passé ce délai, le traitement pourrait être impacté</strong>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n\r\n            <div class=\"acf-card grid bloc-mobile mb-3\t\">\r\n                <!-- Consumer Details -->\r\n                <div class=\"col mx-2\">\r\n                    <div class=\"text-lg font-bold mb-3\">\r\n                        <span>Consommateur</span>\r\n                    </div>\r\n                    <div class=\"my-2\">\r\n                        <div>\r\n                            <span class=\"font-semibold\">Nom :</span>\r\n                            <span> {{ mandate?.lastName }}</span>\r\n                        </div>\r\n                    </div>\r\n                    <div class=\" my-2\">\r\n                        <div>\r\n                            <span class=\"font-semibold\">Prénom :</span>\r\n                            <span> {{ mandate?.firstName }}</span>\r\n                        </div>\r\n                    </div>\r\n                    <div class=\" my-2\">\r\n                        <div>\r\n                            <span class=\"font-semibold\">Adresse :</span>\r\n                            <span> {{ mandate?.address1 }}</span>\r\n                        </div>\r\n                    </div>\r\n                    <div class=\" my-2\">\r\n                        <div>\r\n                            <span class=\"font-semibold\">Email :</span>\r\n                            <span> {{ mandate?.email }}</span>\r\n                        </div>\r\n                    </div>\r\n                    <div class=\" my-2\">\r\n                        <div>\r\n                            <span class=\"font-semibold\">Téléphone :</span>\r\n                            <span> {{ mandate?.phoneNumber }}</span>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                <div class=\"col mx-2 \">\r\n                    <div class=\"text-lg font-bold mb-3\">\r\n                        <span> Détails appareil</span>\r\n                    </div>\r\n\r\n\r\n                    <div class=\" my-2\">\r\n                        <div class=\"  \">\r\n                            <span class=\"font-semibold\">Constructeur :</span>\r\n                            <span> {{ mandate?.brandCode }}</span>\r\n                        </div>\r\n\r\n                    </div>\r\n                    <div class=\" my-2\">\r\n                        <div class=\"  \">\r\n                            <span class=\"font-semibold\">Référence commerciale :</span>\r\n                            <span> {{ mandate?.commercialRef }}</span>\r\n                        </div>\r\n\r\n                    </div>\r\n                    <div class=\" my-2\">\r\n                        <div class=\"  \">\r\n                            <span class=\"font-semibold\">Référence technique :</span>\r\n                            <span> {{ mandate?.technicalRef }} </span>\r\n                        </div>\r\n\r\n                    </div>\r\n                    <div class=\" my-2\">\r\n                        <div class=\"  \">\r\n                            <span class=\"font-semibold\">Marque :</span>\r\n                            <span> {{ mandate?.brandCode }} </span>\r\n                        </div>\r\n\r\n                    </div>\r\n\r\n\r\n\r\n                </div>\r\n            </div>\r\n\r\n            <div class=\"acf-card grid bloc-mobile mb-3\">\r\n                <div class=\"col mx-2 \">\r\n                    <div class=\"text-lg font-bold mb-3\">\r\n                        <span>Panne</span>\r\n                    </div>\r\n\r\n\r\n                    <div class=\" my-2\">\r\n                        <div class=\"  \">\r\n                            <span class=\"font-semibold\">Type de panne :</span>\r\n                            <span> {{ mandate?.irisSymptomResponse?.label }}</span>\r\n\r\n                        </div>\r\n\r\n                    </div>\r\n                    <div class=\" my-2\">\r\n                        <div class=\"  \">\r\n                            <span class=\"font-semibold\">Commentaire :</span>\r\n                            <span> {{ mandate?.failureDescription }}</span>\r\n                        </div>\r\n\r\n                    </div>\r\n\r\n\r\n\r\n                </div>\r\n\r\n                <div class=\"col mx-2 \">\r\n                    <div class=\"text-lg font-bold mb-3\">\r\n                        <span> Réparateur</span>\r\n                    </div>\r\n\r\n\r\n                    <div class=\" my-2\">\r\n                        <div class=\"  \">\r\n                            <span class=\"font-semibold\">Société :</span>\r\n                            <span> {{ mandate?.repairer?.companyName }}</span>\r\n                        </div>\r\n\r\n                    </div>\r\n\r\n                    <div class=\" my-2\">\r\n                        <div class=\"  \">\r\n                            <span class=\"font-semibold\">Téléphone :</span>\r\n                            <span> {{ mandate?.repairer?.phoneNumber }} </span>\r\n\r\n                        </div>\r\n\r\n                    </div>\r\n                    <div class=\" my-2\">\r\n                        <div class=\"  \">\r\n                            <span class=\"font-semibold\">Adresse de réparation :</span>\r\n                            <span> <i class=\"pi pi-map-marker ml-2 mr-1\" style=\"font-size: 1rem ; color: #007BC0;\"></i>\r\n                                {{ mandate?.repairer?.address1 }} {{ mandate?.repairer?.city }} {{\r\n                                mandate?.repairer?.zipCode }}\r\n                            </span>\r\n                        </div>\r\n\r\n                    </div>\r\n\r\n                </div>\r\n            </div>\r\n            <div class=\"acf-card grid bloc-mobile mt-3 mb-3\" *ngIf=\"mandate.pickupChoice === 'FROMSTORE'\">\r\n                <div class=\"flex flex-col sm:flex-row sm:items-start sm:justify-between gap-4 w-full px-2\">\r\n                    <!-- Info section - Left side -->\r\n                    <div class=\"flex-1 min-w-0\">\r\n                        <div class=\"text-lg font-bold mb-3\">\r\n                            <span>Point relais</span>\r\n                        </div>\r\n\r\n                        <div class=\"my-2\">\r\n                            <div>\r\n                                <span>{{ mandate.fromName }}</span>\r\n                            </div>\r\n                        </div>\r\n\r\n                        <div class=\"my-2\">\r\n                            <div>\r\n                                <span class=\"font-semibold\">Adresse :</span>\r\n                                <span> {{ mandate.fromAddress1 }} {{ mandate.fromZip }} {{ mandate.fromCity }}</span>\r\n                            </div>\r\n                        </div>\r\n\r\n                        <div class=\"my-2\">\r\n                            <div>\r\n                                <span class=\"font-semibold\">Téléphone :</span>\r\n                                <span> {{ mandate.fromPhone }}</span>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n\r\n                    <!-- Button section - Right side -->\r\n                    @if(colissimoLabel) {\r\n                    <div class=\"flex-shrink-0 self-start\">\r\n                        <button pButton pRipple label=\"Télécharger l'étiquette de transport\" icon=\"pi pi-download\"\r\n                            class=\"acf-secondary-button whitespace-nowrap text-sm px-3 py-2\"\r\n                            (click)=\"downloadTransportLabel()\" [loading]=\"loadingPrint\">\r\n                        </button>\r\n                    </div>\r\n                    }\r\n                </div>\r\n            </div>\r\n\r\n        </div>\r\n\r\n\r\n    </div>\r\n\r\n    <p-toast></p-toast>\r\n</acf-connected-layout>","import { Component, Input } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { MandateService } from '../../services/mandate.service';\r\nimport { DataStoreService } from '../../services/data-store.service';\r\nimport { DeviceDetailsRequest } from '../../models/request/device-details.request';\r\nimport { Product } from '../../models/shared/product';\r\nimport { DeviceDetails, Intervention, Invoice } from '../../models/response/device-details.response';\r\nimport { Inject } from '@angular/core';\r\nimport { LIB_CONFIG, LibConfig } from '../../config.token';;\r\n\r\nconst parseJsonSafely = (data: string | null) => {\r\n  try {\r\n    return data ? JSON.parse(data) : null;\r\n  } catch (error) {\r\n    console.error('Error parsing JSON:', error);\r\n    return null;\r\n  }\r\n};\r\n@Component({\r\n  selector: 'acf-device-details',\r\n  templateUrl: './device-details.component.html',\r\n  styleUrl: './device-details.component.scss',\r\n  standalone: false\r\n})\r\nexport class DeviceDetailsComponent {\r\n  deviceDetails: DeviceDetails = {} as DeviceDetails;\r\n  interventions: Intervention[] = [];\r\n  invoice: Invoice = {} as Invoice;\r\n\r\n  constructor(private readonly router: Router, @Inject(LIB_CONFIG) private config: LibConfig\r\n, private readonly mandateService: MandateService, private readonly store: DataStoreService) {\r\n    const state = this.router.getCurrentNavigation()?.extras.state;\r\n    const device = parseJsonSafely(this.store.getProduct());\r\n    this.fetchDeviceDetails(device);\r\n    this.app = this.store.getApplication()\r\n  }\r\n  @Input() app: string = '';\r\n  selectedItem: string = 'information';\r\n  navigationItems = [\r\n    { title: 'Information de l\\'appareil', isTitle: true, link: 'information' },\r\n    { title: 'Réparer', isTitle: true, link: 'reparer' },\r\n    { title: 'Historique des interventions', link: 'historique' },\r\n    { title: 'Documentation', link: 'documentation' },\r\n    { title: 'Garantie', isTitle: true, link: 'garantie' },\r\n    // { title: 'Consulter le contrat', link: 'contrat' },\r\n    // { title: 'Acheter une extension', link: 'extension' }\r\n  ];\r\n\r\n  selectItem(link: string) {\r\n    this.selectedItem = link; // Update selected item\r\n    this.scrollToSection(link); // Call your existing scroll method\r\n  }\r\n\r\n  scrollToSection(sectionId: string) {\r\n    const element = document.getElementById(sectionId);\r\n    if (element) {\r\n      // Scroll with an offset for fixed headers\r\n      window.scrollTo({\r\n        top: element.offsetTop - 88,\r\n        behavior: 'smooth',\r\n      });\r\n    }\r\n  }\r\n\r\n  fetchDeviceDetails(device: Product) {\r\n    const request: DeviceDetailsRequest = {\r\n      applicationName: this.store.getApplication(),\r\n      userName: this.store.getUserName(),\r\n      contractId: device.contractId,\r\n      contractProductId: device.contractProductId\r\n    };\r\n    this.mandateService.getDeviceDetails(request).subscribe(\r\n      (response) => {\r\n        this.deviceDetails = response.deviceDetails\r\n        this.interventions = response.interventions\r\n        this.invoice = response.invoice\r\n      },\r\n      (error) => {\r\n        console.error('Error fetching device details:', error);\r\n      }\r\n    );\r\n  }\r\n  getImageUrl() {\r\n    const appName = this.store.getApplication()\r\n    if (this.deviceDetails.commercialReference) {\r\n      return 'assets/' + appName + '/products/' + this.deviceDetails.commercialReference + '.jpg'\r\n    } else {\r\n      return 'assets/' + appName + '/no-image.svg'\r\n    }\r\n  }\r\n\r\n  handleImageError(event: any) {\r\n    const appName = this.store.getApplication()\r\n    event.target.src = 'assets/' + appName + '/no-image.svg';\r\n  }\r\n\r\n  onOpenExtension() {\r\n    window.open(this.config.WARRANTY_PORTAL)\r\n  }\r\n}\r\n","<acf-connected-layout [app]=\"app\">\r\n    <div section-actions>\r\n\r\n    </div>\r\n    <div class=\"grid\">\r\n        <div class=\"col-3\">\r\n            <p-panel showHeader=\"false\" class=\"scroll-menu\">\r\n                <ul class=\"navigation-nav\">\r\n                    <ng-container *ngFor=\"let item of navigationItems\">\r\n                        <li class=\"navigation-nav-item\" [class.selected]=\"selectedItem === item.link\">\r\n                            <a (click)=\"selectItem(item.link)\" class=\"navigation-nav-link\" [class.ml-3]=\"!item.isTitle\">\r\n                                <span class=\"navigation-link-text\">{{ item.title }}</span>\r\n                            </a>\r\n                        </li>\r\n                    </ng-container>\r\n                </ul>\r\n            </p-panel>\r\n\r\n        </div>\r\n\r\n        <div class=\"col-9\">\r\n            <!-- Content Panels -->\r\n            <div class=\"mb-3\">\r\n                <p-panel showHeader=\"false\" id=\"information\">\r\n                    <div class=\"flex align-items-center justify-content-between\">\r\n                        <p class=\"text-lg font-bold\">{{ deviceDetails.fullDescription }}</p>\r\n                        <div\r\n                            [class]=\"'text-sm status'+(deviceDetails.interventionType === 'SG' ? ' status-CLOSED' : ' status-REFUSED')\">\r\n                            {{ deviceDetails.interventionType === 'HG' ? 'Hors garantie' : 'Sous garantie' }}\r\n                        </div>\r\n                    </div>\r\n                    <div class=\"grid\">\r\n                        <div class=\"col-3 flex justify-content-center\">\r\n                            <img [src]=\"getImageUrl()\" (error)=\"handleImageError($event)\" class=\"h-10rem border-round\"\r\n                                loading=\"lazy\" />\r\n                        </div>\r\n\r\n\r\n                        <div class=\"div\">\r\n                            <p><span class=\"font-semibold\">Marque:</span> {{ deviceDetails.brand }}</p>\r\n                            <p><span class=\"font-semibold\">Famille de l'appareil:</span> {{ deviceDetails.family }}</p>\r\n                            <p><span class=\"font-semibold\">Référence commerciale:</span> {{\r\n                                deviceDetails.commercialReference }}</p>\r\n                            <p><span class=\"font-semibold\">Référence technique:</span> {{\r\n                                deviceDetails.technicalReference }}</p>\r\n                            <p><span class=\"font-semibold\">Date d'achat:</span> {{ deviceDetails.saleDate | date:\r\n                                'dd/MM/yyyy' }}</p>\r\n                        </div>\r\n                    </div>\r\n                </p-panel>\r\n            </div>\r\n\r\n            <div class=\"mb-3\" id=\"reparer\">\r\n                <p-panel showHeader=\"false\">\r\n                    <p class=\"font-bold\">Réparer</p>\r\n                    <div class=\"mb-3\" id=\"historique\">\r\n                        <p class=\"acf-link\">Historique des Interventions</p>\r\n                        <p-table [value]=\"interventions\">\r\n                            <ng-template pTemplate=\"header\">\r\n                                <tr>\r\n                                    <th>Date</th>\r\n                                    <th>Réparateur</th>\r\n                                    <th>Statut</th>\r\n                                    <th>Type d'intervention</th>\r\n                                </tr>\r\n                            </ng-template>\r\n                            <ng-template pTemplate=\"body\" let-intervention>\r\n                                <tr>\r\n                                    <td>{{ intervention.createDate | date: 'dd/MM/yyyy' }}</td>\r\n                                    <td>{{ intervention.repairerName }}</td>\r\n                                    <td>\r\n                                        <div [class]=\"'status status-' + intervention.mandateStatus\">\r\n                                            {{intervention.mandateStatus}} </div>\r\n                                    </td>\r\n                                    <td>\r\n\r\n                                        {{ intervention.interventionTypeLabel === 'SG' ? 'Sous garantie' : 'Hors\r\n                                        garantie' }}\r\n\r\n                                    </td>\r\n                                </tr>\r\n                            </ng-template>\r\n                            <ng-template pTemplate=\"emptymessage\">\r\n                                <tr>\r\n                                    <td colspan=\"7 \" class=\"empty-message\">Aucun historique d'interventions</td>\r\n                                </tr>\r\n                            </ng-template>\r\n                        </p-table>\r\n                    </div>\r\n\r\n                    <div class=\"mb-3\" id=\"documentation\">\r\n                        <p class=\"acf-link\">Documentation</p>\r\n                        <p-tabView>\r\n                            <p-tabPanel header=\"Notices\">\r\n                                <p>\r\n                                    Aucune notice de réparation\r\n                                </p>\r\n                            </p-tabPanel>\r\n                            <p-tabPanel header=\"Vidéos\">\r\n                                <p>\r\n                                    Aucune vidéo</p>\r\n                            </p-tabPanel>\r\n                            <p-tabPanel header=\"Facture\">\r\n                                <div *ngIf=\"invoice; else noInvoice\">\r\n                                    <div class=\"invoice-card\">\r\n                                        <a [href]=\"'data:application/pdf;base64,' + invoice.data\"\r\n                                            download=\"{{ invoice.name }}\" class=\"pdf-link\">\r\n                                            <img [src]=\"'assets/' + this.app + '/pdf.svg'\" alt=\"PDF Icon\"\r\n                                                class=\"pdf-icon\">\r\n                                        </a>\r\n                                        <p>{{ invoice.name }}</p>\r\n                                    </div>\r\n                                </div>\r\n\r\n                                <ng-template #noInvoice>\r\n                                    <p>Aucune facture</p>\r\n                                </ng-template>\r\n\r\n                            </p-tabPanel>\r\n                        </p-tabView>\r\n                    </div>\r\n                </p-panel>\r\n            </div>\r\n\r\n            <div class=\"mb-3\" id=\"garantie\">\r\n                <p-panel showHeader=\"false\">\r\n                    <p class=\"font-bold\">Garantie</p>\r\n                    <div class=\"mb-3\" id=\"contrat\">\r\n                        <!-- <p class=\"acf-link\">Consulter le contrat</p> -->\r\n\r\n                        <p>Date d'achat: {{ deviceDetails.saleDate | date:\r\n                            'dd/MM/yyyy' }}</p>\r\n                        <p>Date fin de garantie: {{ deviceDetails.endDate | date:\r\n                            'dd/MM/yyyy' }}</p>\r\n                    </div>\r\n                    <!-- <div class=\"mb-3\" id=\"extension\">\r\n                        <div class=\"flex justify-content-center\"><button pButton pRipple type=\"submit\"  (click)=\"onOpenExtension()\"\r\n                                label=\"Acheter une extension\" class=\"acf-secondary-button\"> <i class=\"pi pi-cart-arrow-down\r\n                                    mr-2\"></i></button></div>\r\n\r\n                    </div> -->\r\n                </p-panel>\r\n            </div>\r\n        </div>\r\n\r\n\r\n    </div>\r\n\r\n</acf-connected-layout>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { DashboardComponent } from './dashboard/dashboard.component';\r\nimport { AccountComponent } from './account/account.component';\r\nimport { DevicesComponent } from './devices/devices.component';\r\nimport { IncidentReportComponent } from './incident-report/incident-report.component';\r\nimport { IncidentTrackingComponent } from './incident-tracking/incident-tracking.component';\r\nimport { ContractComponent } from './contract/contract.component';\r\nimport { CustomerServiceComponent } from './customer-service/customer-service.component';\r\nimport { PrimeNgComponentsModule } from '../prime-ng-components.module';\r\nimport { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { GoogleMapsModule } from '@angular/google-maps';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\n//import { TranslateModule } from '@ngx-translate/core';\r\nimport { ConfirmationService, MessageService } from 'primeng/api';\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\nimport { ConnectedStepOneComponent } from './connected-step-one/connected-step-one.component';\r\nimport { ConnectedStepTwoComponent } from './connected-step-two/connected-step-two.component';\r\nimport { ConnectedStepThreeComponent } from './connected-step-three/connected-step-three.component';\r\nimport { ConnectedStepFourComponent } from './connected-step-four/connected-step-four.component';\r\nimport { ConnectedStepFiveComponent } from './connected-step-five/connected-step-five.component';\r\nimport { ConnectedStepSixComponent } from './connected-step-six/connected-step-six.component';\r\nimport { ConnectedStepsLayoutComponent } from './layout/connected-steps-layout/connected-steps-layout.component';\r\nimport { TagModule } from 'primeng/tag';\r\nimport { SharedModule } from '../shared/shared.module';\r\nimport { ConnectedHeaderComponent } from './layout/connected-header/connected-header.component';\r\nimport { ConnectedFooterComponent } from './layout/connected-footer/connected-footer.component';\r\nimport { ConnectedSidebarComponent } from './layout/connected-sidebar/connected-sidebar.component';\r\nimport { ConnectedLayoutComponent } from './layout/connected-layout/connected-layout.component';\r\nimport { DevicesTableComponent } from './devices/devices-table/devices-table.component';\r\nimport { DevicesGridComponent } from './devices/devices-grid/devices-grid.component';\r\nimport { DeviceCardComponent } from './devices/device-card/device-card.component';\r\nimport { DeviceChartComponent } from './devices/device-chart/device-chart.component';\r\nimport { IncidentDetailsComponent } from './incident-details/incident-details.component';\r\nimport { DevicePopupComponent } from './devices/device-popup/device-popup.component';\r\nimport { DeviceAttachementComponent } from './devices/device-attachement/device-attachement.component';\r\nimport { IsGEMPopupComponent } from './devices/device-popup/is-gem-popup/is-gem-popup.component';\r\nimport { IncidentReportSuccessComponent } from './incident-report-success/incident-report-success.component';\r\nimport { OverlayPanelModule } from 'primeng/overlaypanel';\r\nimport { OverlayModule } from 'primeng/overlay';\r\nimport { DeviceDetailsComponent } from './device-details/device-details.component';\r\nimport { ConnectedOowPopupComponent } from './connected-oow-popup/connected-oow-popup.component';\r\nimport { RouterModule } from '@angular/router';\r\nimport { ConnectedIwPopupComponent } from './connected-iw-popup/connected-iw-popup.component';\r\nimport { DeleteAccountPopupComponent } from './delete-account-popup/delete-account-popup.component';\r\nimport { DeleteAccountErrorPopupComponent } from './delete-account-error-popup/delete-account-error-popup.component';\r\n\r\n@NgModule({\r\n    declarations: [\r\n        DashboardComponent,\r\n        AccountComponent,\r\n        DevicesComponent,\r\n        IncidentReportComponent,\r\n        IncidentTrackingComponent,\r\n        ContractComponent,\r\n        CustomerServiceComponent,\r\n        ConnectedLayoutComponent,\r\n        ConnectedSidebarComponent,\r\n        ConnectedHeaderComponent,\r\n        ConnectedFooterComponent,\r\n        ConnectedStepOneComponent,\r\n        ConnectedStepTwoComponent,\r\n        ConnectedStepThreeComponent,\r\n        ConnectedStepFourComponent,\r\n        ConnectedStepFiveComponent,\r\n        ConnectedStepSixComponent,\r\n        ConnectedStepsLayoutComponent,\r\n        IncidentReportSuccessComponent,\r\n        DevicesTableComponent,\r\n        DevicesGridComponent,\r\n        DeviceCardComponent,\r\n        DeviceChartComponent,\r\n        IncidentDetailsComponent,\r\n        DevicePopupComponent,\r\n        DeviceAttachementComponent,\r\n        IsGEMPopupComponent,\r\n        DeviceDetailsComponent,\r\n        ConnectedOowPopupComponent,\r\n        ConnectedIwPopupComponent,\r\n        DeleteAccountPopupComponent,\r\n        DeleteAccountErrorPopupComponent\r\n    ],\r\n    exports: [\r\n        ConnectedLayoutComponent,\r\n        ConnectedSidebarComponent,\r\n        ConnectedHeaderComponent,\r\n        DashboardComponent,\r\n        AccountComponent,\r\n        DevicesComponent,\r\n        IncidentReportComponent,\r\n        IncidentTrackingComponent,\r\n        ContractComponent,\r\n        CustomerServiceComponent,\r\n        ConnectedStepOneComponent,\r\n        ConnectedStepTwoComponent,\r\n        ConnectedStepThreeComponent,\r\n        ConnectedStepFourComponent,\r\n        ConnectedStepFiveComponent,\r\n        ConnectedStepSixComponent,\r\n        ConnectedStepsLayoutComponent,\r\n        IncidentReportSuccessComponent,\r\n        DevicesTableComponent,\r\n        DevicesGridComponent,\r\n        DeviceCardComponent,\r\n        DeviceChartComponent,\r\n        IncidentDetailsComponent,\r\n        DeviceDetailsComponent\r\n    ], imports: [CommonModule,\r\n        PrimeNgComponentsModule,\r\n        FormsModule,\r\n        ReactiveFormsModule,\r\n        ButtonModule,\r\n        GoogleMapsModule,\r\n        SharedModule,\r\n        //  TranslateModule,\r\n        RouterModule,\r\n        TagModule,\r\n        OverlayModule,\r\n        OverlayPanelModule], providers: [\r\n            MessageService,\r\n            DialogService,\r\n            ConfirmationService,\r\n            provideHttpClient(withInterceptorsFromDi())\r\n        ]\r\n})\r\nexport class ConnectedModule { }\r\n","import { Injectable } from '@angular/core';\r\nimport { CanActivate, Router, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\r\nimport { SecurityCookieService } from '../services/security-cookie.service';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class AuthGuard implements CanActivate {\r\n  constructor(\r\n    private securityCookieService: SecurityCookieService,\r\n    private router: Router\r\n  ) { }\r\n\r\n  canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {\r\n    if (this.securityCookieService.isAuthenticated()) {\r\n      return true;\r\n    }\r\n    this.securityCookieService.logout();\r\n    return false;\r\n  }\r\n}","import { Injectable } from '@angular/core';\r\nimport { CanActivate, Router } from '@angular/router';\r\nimport { RoutesPaths } from '../enums/routePaths';\r\nimport { SecurityCookieService } from '../services/security-cookie.service';\r\nimport { Role } from '../enums/roles';\r\n\r\n@Injectable({\r\n    providedIn: 'root'\r\n})\r\nexport class ResellerGuard implements CanActivate {\r\n    constructor(\r\n        private securityCookieService: SecurityCookieService,\r\n        private router: Router) { }\r\n\r\n\r\n    canActivate(): boolean {\r\n        // Check if user is authenticated and has 'DEALER' role\r\n        if (this.securityCookieService.isAuthenticated()) {\r\n\r\n            if (this.securityCookieService.hasRole(Role.DEALER)) {\r\n                return true;\r\n            } else if (this.securityCookieService.hasRole(Role.BASIC_USER)) {\r\n                // Redirect user to their dashboard\r\n                this.router.navigate([RoutesPaths.consumer_dashboard]);\r\n                return false;\r\n            }\r\n        }\r\n        \r\n        // Redirect to repairer login if not authenticated or wrong role\r\n        this.router.navigate([RoutesPaths.login]);\r\n        return false;\r\n    }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { CanActivate, Router } from '@angular/router';\r\nimport { RoutesPaths } from '../enums/routePaths';\r\nimport { SecurityCookieService } from '../services/security-cookie.service';\r\nimport { Role } from '../enums/roles';\r\n\r\n@Injectable({\r\n    providedIn: 'root'\r\n})\r\nexport class UserGuard implements CanActivate {\r\n    constructor(\r\n        private securityCookieService: SecurityCookieService,\r\n        private router: Router) { }\r\n\r\n\r\n    canActivate(): boolean {\r\n        // Check if user is authenticated and has 'BASIC_USER' role\r\n\r\n        if (this.securityCookieService.isAuthenticated()) {\r\n\r\n            if (this.securityCookieService.hasRole(Role.BASIC_USER)) {\r\n                return true;\r\n            } else if (this.securityCookieService.hasRole(Role.DEALER)) {\r\n                // Redirect user to their dashboard\r\n                this.router.navigate([RoutesPaths.reseller_contracts]);\r\n                return false;\r\n            }\r\n        }\r\n\r\n        // Redirect to repairer login if not authenticated or wrong role\r\n        this.router.navigate([RoutesPaths.login]);\r\n        return false;\r\n    }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor, HttpErrorResponse } from '@angular/common/http';\r\nimport { BehaviorSubject, catchError, Observable, throwError } from 'rxjs';\r\nimport { SecurityCookieService } from '../services/security-cookie.service';\r\n\r\n@Injectable()\r\nexport class JWT_Interceptor implements HttpInterceptor {\r\n    private refreshTokenSubject: BehaviorSubject<any> = new BehaviorSubject<any>(null);\r\n\r\n    constructor(private securityCookieService: SecurityCookieService,\r\n    ) { }\r\n\r\n    intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n        // Always include credentials for cookie-based auth\r\n        const authRequest = request.clone({\r\n            withCredentials: false\r\n        });\r\n        // Add Authorization header if token exists\r\n        const token = this.securityCookieService.getToken();\r\n        if (token) {\r\n            const tokenRequest = authRequest.clone({\r\n                setHeaders: {\r\n                    Authorization: `Bearer ${token}`\r\n                }\r\n            });\r\n\r\n            return next.handle(tokenRequest).pipe(\r\n                catchError((error: HttpErrorResponse) => this.handleAuthError(error, tokenRequest, next))\r\n            );\r\n        }\r\n\r\n        return next.handle(authRequest).pipe(\r\n            catchError((error: HttpErrorResponse) => this.handleAuthError(error, authRequest, next))\r\n        );\r\n    }\r\n\r\n    private handleAuthError(error: HttpErrorResponse, request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n        if (error.status === 401) {\r\n            this.securityCookieService.logout();\r\n        }\r\n\r\n        return throwError(() => error);\r\n    }\r\n\r\n\r\n}","import { Injectable } from '@angular/core';\r\nimport { HttpInterceptor, HttpRequest, HttpHandler, HttpEvent, HttpErrorResponse } from '@angular/common/http';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\nimport { Router } from '@angular/router';\r\nimport { RoutesPaths } from '../enums/routePaths';\r\nimport { AuthService } from '../services/auth.service';\r\n\r\n@Injectable()\r\nexport class Error_Interceptor implements HttpInterceptor {\r\n    constructor(\r\n        private readonly authService: AuthService,\r\n        private readonly router: Router) { }\r\n\r\n    intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n        return next.handle(req).pipe(\r\n            catchError((error: HttpErrorResponse) => {\r\n                // Separating the error handling provides clear and maintainable code for future preferences ( role based responses - feature access specifications)\r\n                // if (error.status === 401) {\r\n                //     // Handle 401 error - Unauthorized\r\n                //     console.log('You do not have authorization to access this resource.!', '❌');\r\n                //     this.authService.logOut();\r\n                //     this.router.navigate([`/${RoutesPaths.login}`]);\r\n\r\n                // } else \r\n                if (error.status === 403) {\r\n                    // Handle 403 error - Forbidden\r\n                    console.log('You do not have permission to access this resource.!', '❌');\r\n\r\n                    this.authService.logOut();\r\n                    this.router.navigate([`/${RoutesPaths.login}`]);\r\n                }\r\n                else if (error.status === 500) {\r\n                    // Handle 500 - server error\r\n                    console.log('There is a serveur error.!', '❌');\r\n\r\n                    // this.authService.signOut();\r\n                    // this.router.navigate([`/${RoutesPaths.LOGIN}`]);\r\n                }\r\n                return throwError(error);\r\n            })\r\n        );\r\n    }\r\n}","import { Injectable } from '@angular/core';\r\nimport { CanActivate, Router } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\nimport { RoutesPaths } from '../enums/routePaths';\r\nimport { DataStoreService } from '../services/data-store.service';\r\nimport { SecurityCookieService } from '../services/security-cookie.service';\r\n\r\n\r\n@Injectable({\r\n    providedIn: 'root',\r\n})\r\nexport class SecureInnerPagesGuard implements CanActivate {\r\n    constructor(\r\n        private securityCookieService: SecurityCookieService,\r\n        public dataStoreService: DataStoreService,\r\n        public router: Router,\r\n    ) { }\r\n\r\ncanActivate(): Observable<boolean> | Promise<boolean> | boolean {\r\n    if (this.securityCookieService.isAuthenticated()) {\r\n        const applicationName = this.dataStoreService.getApplication();\r\n        if (applicationName === 'BoschConsumerPortal') {\r\n            this.router.navigate([`/${RoutesPaths.dashboard}`]);\r\n        } else {\r\n            this.router.navigate([`/${RoutesPaths.reseller_contracts}`]);\r\n        }\r\n        return false; \r\n    } else {\r\n        console.log('User is not authenticated - allowing access to login');\r\n        return true; \r\n    }\r\n}\r\n}        ","import { Injectable } from '@angular/core';\r\nimport { CanActivate, Router } from '@angular/router';\r\nimport { RoutesPaths } from '../enums/routePaths';\r\nimport { SecurityCookieService } from '../services/security-cookie.service';\r\nimport { Role } from '../enums/roles';\r\n\r\n@Injectable({\r\n    providedIn: 'root'\r\n})\r\nexport class PaymentAuthGuard implements CanActivate {\r\n    constructor(\r\n        private securityCookieService: SecurityCookieService,\r\n        private router: Router) { }\r\n\r\n\r\n    canActivate(): boolean {\r\n        // Check if user is authenticated and has 'BASIC_USER' role or non authenticated\r\n\r\n        if (this.securityCookieService.isAuthenticated()) {\r\n\r\n            if (this.securityCookieService.hasRole(Role.BASIC_USER)) {\r\n                return true;\r\n            } else if (this.securityCookieService.hasRole(Role.DEALER)) {\r\n                // Redirect user to their dashboard\r\n                this.router.navigate([RoutesPaths.reseller_contracts]);\r\n                return false;\r\n            }\r\n        }\r\n\r\n        return true;\r\n    }\r\n}\r\n","\r\n\r\n/*\r\n * Public API Surface of agora-core-framework\r\n */\r\n/* Modules */\r\nexport * from './lib/auth/auth.module';\r\nexport * from './lib/shared/shared.module';\r\nexport * from './lib/guest/guest.module';\r\nexport * from './lib/connected/connected.module';\r\n/* Auth */\r\nexport * from './lib/auth/components/register/register-from/register-from.component'\r\nexport * from './lib/auth/components/register/register-success/register-success.component'\r\nexport * from './lib/auth/components/register/register-error/register-error.component'\r\nexport * from './lib/auth/components/register/register-popup/register-popup.component'\r\nexport * from './lib/auth/components/register/register-link-already-used-error/register-link-already-used-error.component'\r\n\r\nexport * from './lib/auth/components/register/register-check-inbox/register-check-inbox.component'\r\nexport * from './lib/auth/components/register/register-section/register-section.component';\r\nexport * from './lib/auth/components/register/register-page/register-page.component';\r\nexport * from './lib/auth/components/register/register-ask-for-new-link/register-ask-for-new-link.component';\r\nexport * from './lib/auth/components/login/login-form/login-form.component';\r\nexport * from './lib/auth/components/login/login-page/login-page.component';\r\nexport * from './lib/auth/components/login/login-page-50-50/login-page-50-50.component';\r\nexport * from './lib/auth/components/login/login-section/login-section.component';\r\nexport * from './lib/auth/components/login/login-popup/login-popup.component';\r\nexport * from './lib/auth/components/forget-password/form-password-50-50/form-password-50-50.component';\r\nexport * from './lib/auth/components/forget-password/forget-password-form/forget-password-form.component';\r\nexport * from './lib/auth/components/forget-password/forget-password-section/forget-password-section.component';\r\nexport * from './lib/auth/components/reset-password/reset-password-form/reset-password-form.component';\r\nexport * from './lib/auth/components/reset-password/reset-password-error/reset-password-error.component';\r\nexport * from './lib/auth/components/reset-password/reset-password-success/reset-password-success.component';\r\nexport * from './lib/auth/components/reset-password/reset-password-check-inbox/reset-password-check-inbox.component';\r\n\r\n/* Components */\r\nexport * from './lib/shared/components/address-form/address-form.component';\r\nexport * from './lib/shared/components/generic-section/generic-section.component';\r\nexport * from './lib/shared/components/page-not-found/page-not-found.component';\r\nexport * from './lib/shared/components/rounded-chart/rounded-chart.component';\r\nexport * from './lib/shared/components/genereic-device-add/genereic-device-add.component';\r\n\r\n/* Guest */\r\nexport * from './lib/guest/step-one/step-one.component';\r\nexport * from './lib/guest/step-one/step-one-popup/step-one-popup.component';\r\nexport * from './lib/guest/step-two/step-two.component';\r\nexport * from './lib/guest/step-three/step-three.component';\r\nexport * from './lib/guest/step-four/step-four.component';\r\nexport * from './lib/guest/step-five/step-five.component';\r\nexport * from './lib/guest/step-six/step-six.component';\r\nexport * from './lib/guest/layout/layout.component';\r\nexport * from './lib/guest/layout/header/header.component';\r\n\r\n/* Warranty pages */\r\nexport * from './lib/connected/account/account.component';\r\nexport * from './lib/connected/contract/contract.component';\r\nexport * from './lib/connected/customer-service/customer-service.component';\r\nexport * from './lib/connected/dashboard/dashboard.component';\r\nexport * from './lib/connected/incident-report/incident-report.component';\r\nexport * from './lib/connected/incident-tracking/incident-tracking.component';\r\nexport * from './lib/connected/incident-details/incident-details.component';\r\nexport * from './lib/connected/layout/connected-layout/connected-layout.component';\r\nexport * from './lib/connected/layout/connected-steps-layout/connected-steps-layout.component';\r\nexport * from './lib/connected/layout/connected-sidebar/connected-sidebar.component';\r\nexport * from './lib/connected/layout/connected-header/connected-header.component';\r\nexport * from './lib/connected/connected-step-one/connected-step-one.component';\r\nexport * from './lib/connected/connected-step-two/connected-step-two.component';\r\nexport * from './lib/connected/connected-step-three/connected-step-three.component';\r\nexport * from './lib/connected/connected-step-four/connected-step-four.component';\r\nexport * from './lib/connected/connected-step-five/connected-step-five.component';\r\nexport * from './lib/connected/connected-step-six/connected-step-six.component';\r\nexport * from './lib/connected/incident-report-success/incident-report-success.component';\r\nexport * from './lib/connected/devices/devices.component';\r\nexport * from './lib/connected/device-details/device-details.component';\r\nexport * from './lib/connected/devices/devices-table/devices-table.component';\r\nexport * from './lib/connected/devices/devices-grid/devices-grid.component';\r\nexport * from './lib/connected/devices/device-card/device-card.component';\r\nexport * from './lib/connected/devices/device-chart/device-chart.component';\r\nexport * from './lib/connected/devices/device-popup/device-popup.component';\r\n\r\n/* Services */\r\nexport * from './lib/services/account.service';\r\nexport * from './lib/services/auth.service';\r\nexport * from './lib/services/security-cookie.service';\r\nexport * from './lib/services/google-map.service';\r\n\r\nexport * from './lib/services/data-store.service';\r\nexport * from './lib/services/referential.service';\r\nexport * from './lib/prime-ng-components.module';\r\n\r\n/* Helpers */\r\nexport * from './lib/helpers/auth.guards';\r\nexport * from './lib/helpers/reseller.guard';\r\nexport * from './lib/helpers/user.guard';\r\nexport * from './lib/helpers/jwt.interceptor';\r\nexport * from './lib/helpers/error.interceptor';\r\nexport * from './lib/helpers/secure-inner-pages.guard';\r\nexport * from './lib/helpers/payment-auth.guard';\r\nexport * from './lib/validators/password.validator';\r\n\r\n/* Shared Interfaces */\r\nexport * from './lib/enums/routePaths';\r\nexport * from './lib/enums/roles';\r\nexport * from './lib/enums/data.store';\r\nexport * from './lib/models/shared/hexa-post';\r\nexport * from './lib/models/shared/product';\r\n\r\n/* Directives */\r\nexport * from './lib/directives/click.outside';\r\n\r\nexport * from './lib/config.token';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.DataStoreService","i1.GooglePlacesService","i2.ReferentialService","i3.DataStoreService","i5","i6","i8","i1","i2.AccountService","i3","i4","i5.DataStoreService","i7.MandateService","i9","i10","i11","i13","i14","i15","i16","i18.AddressFormComponent","tap","i6.SecurityCookieService","i7","i8.MandateService","i2","i1.DataStoreService","i2.FileService","i3.ReferentialService","i6.DataStoreService","i12","i16.FileUploadComponent","i2.SecurityCookieService","i4.HeaderComponent","i5.FooterComponent","i11.AddressFormComponent","i12.LayoutComponent","i10.LayoutComponent","i4.FileService","i14.LayoutComponent","i15.InvoiceAttachementComponent","i16.FilesizePipe","i1.GoogleMapsService","i2.MandateService","i6.AccountService","i1.LayoutComponent","i5.LayoutComponent","i3.SecurityCookieService","i2.AuthService","i3.AccountService","i4.AuthService","i3.MandateService","i5.ConnectedSidebarComponent","i6.ConnectedHeaderComponent","i7.ConnectedFooterComponent","i10.ConnectedLayoutComponent","i14.AddressFormComponent","i15.ConnectedLayoutComponent","i15.DeviceAttachementComponent","i4.MandateService","i1.ChartService","i9.DeviceChartComponent","i7.DeviceCardComponent","i8.ConnectedLayoutComponent","i9.DevicesTableComponent","i10.DevicesGridComponent","i9.ConnectedLayoutComponent","i2.ConnectedLayoutComponent","i4.ConnectedLayoutComponent","parseJsonSafely","i11.ConnectedStepsLayoutComponent","i4.DataStoreService","i10.AddressFormComponent","i11.ConnectedLayoutComponent","i12.ConnectedStepsLayoutComponent","i13.ConnectedLayoutComponent","i14.ConnectedStepsLayoutComponent","i5.MandateService","i6.ReferentialService","i7.GooglePlacesService","i12.ConnectedLayoutComponent","i13.ConnectedStepsLayoutComponent","i1.SecurityCookieService","catchError","i1.AuthService"],"mappings":"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"}