{"version":3,"file":"main.c7b63a456305de1f.js","sources":["./src/app/auth/forget-password/forget-password.component.html","./src/app/auth/forget-password/forget-password.component.ts","./src/app/shared/services/recaptcha.service.ts","./src/app/auth/login/login.component.html","./src/app/auth/login/login.component.ts","./src/app/auth/register/personal-information/personal-information.component.html","./src/app/auth/register/personal-information/personal-information.component.ts","./src/app/auth/register/business-information/business-information.component.html","./src/app/auth/register/business-information/business-information.component.ts","./src/app/auth/register/register.component.ts","./src/app/auth/register/register.component.html","./src/app/auth/confirm-email/confirm-email.component.html","./src/app/auth/confirm-email/confirm-email.component.ts","./src/app/auth/auth-routing.module.ts","./src/app/auth/auth.module.ts","./src/app/base.component.ts","./src/app/shared/pipe/new-line.pipe.ts","./src/app/shared/components/details-modal/details-ad/details-ad.component.html","./src/app/shared/components/details-modal/details-ad/details-ad.component.ts","./src/app/components/admin/ads-compaigns/update-campaign-status/update-campaign-status.component.html","./src/app/components/admin/ads-compaigns/update-campaign-status/update-campaign-status.component.ts","./src/app/components/admin/ads-compaigns/update-campaign/update-campaign.component.html","./src/app/components/admin/ads-compaigns/update-campaign/update-campaign.component.ts","./src/app/components/admin/ads-compaigns/ads-compaigns.component.html","./src/app/components/admin/ads-compaigns/ads-compaigns.component.ts","./src/app/shared/components/details-modal/details-modal.component.html","./src/app/shared/components/details-modal/details-modal.component.ts","./src/app/store/suppliers/suppliers.selectors.ts","./src/app/components/admin/location-partners/create-location-partner/personal-information/personal-information.component.html","./src/app/components/admin/location-partners/create-location-partner/personal-information/personal-information.component.ts","./src/app/components/admin/location-partners/create-location-partner/company-information/company-information.component.html","./src/app/components/admin/location-partners/create-location-partner/company-information/company-information.component.ts","./src/app/shared/components/popover-map/popover-map.component.ts","./src/app/shared/components/popover-map/popover-map.component.html","./src/app/components/admin/location-partners/create-location-partner/location-information/location-information.component.html","./src/app/components/admin/location-partners/create-location-partner/location-information/location-information.component.ts","./src/app/components/admin/location-partners/create-location-partner/company-specification/company-specification.component.html","./src/app/components/admin/location-partners/create-location-partner/company-specification/company-specification.component.ts","./src/app/shared/enum/locationPartnerStatus.ts","./src/app/components/admin/location-partners/create-location-partner/location-status/location-status.component.html","./src/app/components/admin/location-partners/create-location-partner/location-status/location-status.component.ts","./src/app/shared/enum/routerBrand.ts","./src/app/shared/enum/sessionTimeOut.ts","./src/app/components/admin/location-partners/create-location-partner/router-information/router-information.component.html","./src/app/components/admin/location-partners/create-location-partner/router-information/router-information.component.ts","./src/app/components/admin/location-partners/create-location-partner/create-location-partner.component.ts","./src/app/components/admin/location-partners/create-location-partner/create-location-partner.component.html","./src/app/shared/enum/routerType.ts","./src/app/shared/enum/typeCards.ts","./src/app/components/admin/router/create-router/access-information/access-information.component.html","./src/app/components/admin/router/create-router/access-information/access-information.component.ts","./src/app/components/admin/router/create-router/router-specification/router-specification.component.html","./src/app/components/admin/router/create-router/router-specification/router-specification.component.ts","./src/app/components/admin/router/create-router/location-partner-information/location-partner-information.component.html","./src/app/components/admin/router/create-router/location-partner-information/location-partner-information.component.ts","./src/app/shared/enum/router-reference.ts","./src/app/components/admin/router/create-router/router-specification/relead-router/relead-router.component.html","./src/app/components/admin/router/create-router/router-specification/relead-router/relead-router.component.ts","./src/app/shared/enum/fsi-router-status.ts","./src/app/shared/enum/internet-providers.ts","./src/app/components/admin/router/create-router/router-specification/fsi-router/fsi-router.component.html","./src/app/components/admin/router/create-router/router-specification/fsi-router/fsi-router.component.ts","./src/app/components/admin/router/update-router/update-router.component.html","./src/app/components/admin/router/update-router/update-router.component.ts","./src/app/components/admin/location-partners/update-location-partner/update-location-partner.component.html","./src/app/components/admin/location-partners/update-location-partner/update-location-partner.component.ts","./src/app/components/admin/advertisers/update-advertiser/advertiser-perso-info/advertiser-perso-info.component.html","./src/app/components/admin/advertisers/update-advertiser/advertiser-perso-info/advertiser-perso-info.component.ts","./src/app/components/admin/advertisers/update-advertiser/advertiser-company-info/advertiser-company-info.component.html","./src/app/components/admin/advertisers/update-advertiser/advertiser-company-info/advertiser-company-info.component.ts","./src/app/components/admin/advertisers/update-advertiser/advertiser-billing-info/advertiser-billing-info.component.ts","./src/app/components/admin/advertisers/update-advertiser/advertiser-billing-info/advertiser-billing-info.component.html","./src/app/components/admin/advertisers/update-advertiser/update-advertiser.component.html","./src/app/components/admin/advertisers/update-advertiser/update-advertiser.component.ts","./src/app/shared/components/drob-zone-options/modal/update/update.component.html","./src/app/shared/components/drob-zone-options/modal/update/update.component.ts","./src/app/components/admin/advertisers/delete-advertiser/delete-advertiser.component.html","./src/app/components/admin/advertisers/delete-advertiser/delete-advertiser.component.ts","./src/app/components/admin/advertisers/update-advertiser-status/update-advertiser-status.component.html","./src/app/components/admin/advertisers/update-advertiser-status/update-advertiser-status.component.ts","./src/app/components/admin/advertisers/advertisers.component.html","./src/app/components/admin/advertisers/advertisers.component.ts","./src/app/components/admin/ads-compaigns/calendar/calendar.component.html","./src/app/components/admin/ads-compaigns/calendar/calendar.component.ts","./src/app/components/admin/consumers/consumers.component.html","./src/app/components/admin/consumers/consumers.component.ts","./src/app/shared/components/details-modal/details-lp/details-lp.component.html","./src/app/shared/components/details-modal/details-lp/details-lp.component.ts","./src/app/components/admin/location-partners/premium-access/premium-access.component.html","./src/app/components/admin/location-partners/premium-access/premium-access.component.ts","./src/app/shared/services/table/table.service.ts","./src/app/components/admin/location-partners/location-partners.component.html","./src/app/components/admin/location-partners/location-partners.component.ts","./src/app/components/admin/main/location-partner-preview/location-partner-preview.component.html","./src/app/components/admin/main/location-partner-preview/location-partner-preview.component.ts","./src/app/components/admin/main/main.component.html","./src/app/components/admin/main/main.component.ts","./src/app/components/admin/router/create-router-stepper/create-router-stepper.component.html","./src/app/components/admin/router/create-router-stepper/create-router-stepper.component.ts","./src/app/components/admin/router/list-routers/details-router/details-router.component.html","./src/app/components/admin/router/list-routers/details-router/details-router.component.ts","./src/app/components/admin/router/list-routers/list-routers.component.html","./src/app/components/admin/router/list-routers/list-routers.component.ts","./src/app/components/admin/router/router.component.html","./src/app/components/admin/router/router.component.ts","./src/app/components/admin/location-partners/payment/update-payment-status/update-payment-status.component.html","./src/app/components/admin/location-partners/payment/update-payment-status/update-payment-status.component.ts","./src/app/components/admin/location-partners/payment/payment.component.html","./src/app/components/admin/location-partners/payment/payment.component.ts","./src/app/components/admin/location-partners/campagnes-lp/update-campaign-lp/update-campaign-lp.component.html","./src/app/components/admin/location-partners/campagnes-lp/update-campaign-lp/update-campaign-lp.component.ts","./src/app/components/admin/location-partners/campagnes-lp/campagnes-lp.component.html","./src/app/components/admin/location-partners/campagnes-lp/campagnes-lp.component.ts","./src/app/components/admin/ads-compaigns/calculator/calculator.component.html","./src/app/components/admin/ads-compaigns/calculator/calculator.component.ts","./src/app/components/admin/location-partners/location-statistics/location-statistics.component.html","./src/app/components/admin/location-partners/location-statistics/location-statistics.component.ts","./src/app/components/admin/advertisers/estimates/estimates.component.html","./src/app/components/admin/advertisers/estimates/estimates.component.ts","./src/app/components/admin/advertisers/invoices/invoices.component.html","./src/app/components/admin/advertisers/invoices/invoices.component.ts","./src/app/components/admin/logger/logger.component.html","./src/app/components/admin/logger/logger.component.ts","./src/app/components/admin/admin-routing.module.ts","./src/app/components/admin/admin.module.ts","./src/app/components/admin/settings/impressions/export-location/select-export-locations/select-export-locations.component.html","./src/app/components/admin/settings/impressions/export-location/select-export-locations/select-export-locations.component.ts","./src/app/components/admin/settings/impressions/export-location/export-location.component.html","./src/app/components/admin/settings/impressions/export-location/export-location.component.ts","./src/app/shared/data/campaigns-data.ts","./src/app/components/advertiser/advertising-campaign/advertising-campaign.component.html","./src/app/components/advertiser/advertising-campaign/advertising-campaign.component.ts","./src/app/components/advertiser/insights/card-insights/card-insights.component.html","./src/app/components/advertiser/insights/card-insights/card-insights.component.ts","./src/app/components/advertiser/insights/insights.component.html","./src/app/components/advertiser/insights/insights.component.ts","./src/app/components/advertiser/main/table-latest-campaign/table-latest-campaign.component.html","./src/app/components/advertiser/main/table-latest-campaign/table-latest-campaign.component.ts","./src/app/components/advertiser/main/best-advertising-campaign/best-advertising-campaign.component.html","./src/app/components/advertiser/main/best-advertising-campaign/best-advertising-campaign.component.ts","./src/app/components/advertiser/main/main.component.html","./src/app/components/advertiser/main/main.component.ts","./src/app/shared/services/payment/paymee.service.ts","./src/app/shared/services/payment/konnect.service.ts","./src/app/shared/services/iberis/company-iberis.service.ts","./src/app/components/advertiser/advertising-campaign/payment/payment-success/payment-success.component.html","./src/app/components/advertiser/advertising-campaign/payment/payment-success/payment-success.component.ts","./src/app/components/advertiser/advertising-campaign/payment/payment-cancel/payment-cancel.component.ts","./src/app/components/advertiser/advertising-campaign/payment/payment-cancel/payment-cancel.component.html","./src/app/shared/enum/typeFieldsLeadGeneration.ts","./src/app/shared/data/newFieldsFormData.ts","./src/app/components/advertiser/advertising-campaign/new-campaign/step1/campaign-dates/campaign-dates.component.ts","./src/app/components/advertiser/advertising-campaign/new-campaign/step1/campaign-dates/campaign-dates.component.html","./src/app/components/advertiser/advertising-campaign/new-campaign/step1/campaign-locations/by-zone/by-zone.component.html","./src/app/components/advertiser/advertising-campaign/new-campaign/step1/campaign-locations/by-zone/by-zone.component.ts","./src/app/components/advertiser/advertising-campaign/new-campaign/step1/campaign-locations/by-location/by-location.component.html","./src/app/components/advertiser/advertising-campaign/new-campaign/step1/campaign-locations/by-location/by-location.component.ts","./src/app/components/advertiser/advertising-campaign/new-campaign/step1/campaign-locations/region-selection/region-selection.component.html","./src/app/components/advertiser/advertising-campaign/new-campaign/step1/campaign-locations/region-selection/region-selection.component.ts","./src/app/components/advertiser/advertising-campaign/new-campaign/step1/campaign-locations/campaign-locations.component.html","./src/app/components/advertiser/advertising-campaign/new-campaign/step1/campaign-locations/campaign-locations.component.ts","./src/app/shared/pipe/slice-string.pipe.ts","./src/app/components/advertiser/advertising-campaign/new-campaign/step1/step1.component.html","./src/app/components/advertiser/advertising-campaign/new-campaign/step1/step1.component.ts","./src/app/components/advertiser/advertising-campaign/new-campaign/step2/step2.component.html","./src/app/components/advertiser/advertising-campaign/new-campaign/step2/step2.component.ts","./src/app/components/advertiser/advertising-campaign/new-campaign/step3/step3.component.html","./src/app/components/advertiser/advertising-campaign/new-campaign/step3/step3.component.ts","./src/app/components/advertiser/advertising-campaign/new-campaign/step4/payment-text/payment-text.component.ts","./src/app/components/advertiser/advertising-campaign/new-campaign/step4/payment-text/payment-text.component.html","./src/app/components/advertiser/advertising-campaign/new-campaign/step4/step4.component.html","./src/app/components/advertiser/advertising-campaign/new-campaign/step4/step4.component.ts","./node_modules/@angular/cdk/fesm2020/drag-drop.mjs","./src/app/components/advertiser/advertising-campaign/new-campaign/form/form-drag-drop/form-drag-drop.component.html","./src/app/components/advertiser/advertising-campaign/new-campaign/form/form-drag-drop/form-drag-drop.component.ts","./src/app/components/advertiser/advertising-campaign/new-campaign/form/add-filds/add-filds.component.html","./src/app/components/advertiser/advertising-campaign/new-campaign/form/add-filds/add-filds.component.ts","./src/app/components/advertiser/advertising-campaign/new-campaign/form/form.component.html","./src/app/components/advertiser/advertising-campaign/new-campaign/form/form.component.ts","./src/app/components/advertiser/advertising-campaign/new-campaign/new-campaign.component.html","./src/app/components/advertiser/advertising-campaign/new-campaign/new-campaign.component.ts","./src/app/components/advertiser/estimates/estimates.component.html","./src/app/components/advertiser/estimates/estimates.component.ts","./src/app/components/advertiser/invoices/invoices.component.html","./src/app/components/advertiser/invoices/invoices.component.ts","./src/app/components/advertiser/advertising-campaign/update-campaign/update-campaign.component.html","./src/app/components/advertiser/advertising-campaign/update-campaign/update-campaign.component.ts","./src/app/components/advertiser/advertiser-routing.module.ts","./src/app/components/advertiser/advertiser.module.ts","./src/app/shared/components/ads-locations/ads-locations.component.html","./src/app/shared/components/ads-locations/ads-locations.component.ts","./src/app/components/advertiser/insights/ad-statistics/ad-statistics.component.html","./src/app/components/advertiser/insights/ad-statistics/ad-statistics.component.ts","./src/app/components/location-partner/main/latest-ad/latest-ad.component.html","./src/app/components/location-partner/main/latest-ad/latest-ad.component.ts","./src/app/components/location-partner/main/main.component.html","./src/app/components/location-partner/main/main.component.ts","./src/app/components/location-partner/remuneration/case-fsi/case-fsi.component.ts","./src/app/components/location-partner/remuneration/case-fsi/case-fsi.component.html","./src/app/components/location-partner/remuneration/remuneration.component.html","./src/app/components/location-partner/remuneration/remuneration.component.ts","./src/app/components/location-partner/promote/promote.component.html","./src/app/components/location-partner/promote/promote.component.ts","./src/app/components/location-partner/statistics/unlocked-screens/unlocked-screens.component.html","./src/app/components/location-partner/statistics/unlocked-screens/unlocked-screens.component.ts","./src/app/components/location-partner/location-partner-routing.module.ts","./src/app/components/location-partner/location-partner.module.ts","./src/app/shared/components/ad-video-preview/ad-video-preview-statistics/ad-video-preview-statistics.component.html","./src/app/shared/components/ad-video-preview/ad-video-preview-statistics/ad-video-preview-statistics.component.ts","./src/app/shared/components/ad-video-preview/ad-video-preview.component.html","./src/app/shared/components/ad-video-preview/ad-video-preview.component.ts","./src/app/shared/components/advertisers/advertisers.component.html","./src/app/shared/components/advertisers/advertisers.component.ts","./src/app/shared/enum/chartStatus.ts","./src/app/shared/components/filter/spline-filter/spline-filter.component.html","./src/app/shared/components/filter/spline-filter/spline-filter.component.ts","./src/app/shared/components/audience/audience.component.html","./src/app/shared/components/audience/audience.component.ts","./src/app/shared/components/modal/approve-modal/approve-modal.component.ts","./src/app/shared/components/modal/approve-modal/approve-modal.component.html","./src/app/shared/components/bug-report/bug-report.component.html","./src/app/shared/components/bug-report/bug-report.component.ts","./src/app/shared/components/bug-report/create-bug-report/create-bug-report.component.html","./src/app/shared/components/bug-report/create-bug-report/create-bug-report.component.ts","./src/app/shared/components/bug-report/details-discution-support/details-discution-support.component.ts","./src/app/shared/components/bug-report/details-discution-support/details-discution-support.component.html","./src/app/shared/components/card/card-inseights/card-inseights.component.html","./src/app/shared/components/card/card-inseights/card-inseights.component.ts","./src/app/shared/components/card/card.component.html","./src/app/shared/components/card/card.component.ts","./src/app/shared/components/chart/chart-name.enum.ts","./src/app/shared/components/chart/column-chart/column-chart.component.html","./src/app/shared/components/chart/column-chart/column-chart.component.ts","./src/app/shared/components/chart/donut/donut.component.html","./src/app/shared/components/chart/donut/donut.component.ts","./src/app/shared/components/chart/spline/spline.component.html","./src/app/shared/components/chart/spline/spline.component.ts","./src/app/shared/components/click-outside.directive.ts","./src/app/shared/components/column-location-partners/column-location-partners.component.html","./src/app/shared/components/column-location-partners/column-location-partners.component.ts","./src/app/shared/components/drob-zone-options/drob-zone-options.component.html","./src/app/shared/components/drob-zone-options/drob-zone-options.component.ts","./src/app/shared/components/drob-zone-options/modal/delete/delete.component.ts","./src/app/shared/components/drob-zone-options/modal/delete/delete.component.html","./src/app/shared/data/exportType.ts","./src/app/shared/components/export/export.component.html","./src/app/shared/components/export/export.component.ts","./src/app/shared/components/feather-icon/feather-icon.component.ts","./src/app/shared/components/feather-icon/feather-icon.component.html","./src/app/shared/components/general-filter/general-filter.component.html","./src/app/shared/components/general-filter/general-filter.component.ts","./src/app/shared/components/header/header/language/language.component.html","./src/app/shared/components/header/header/language/language.component.ts","./src/app/shared/components/help/help.component.ts","./src/app/shared/components/help/help.component.html","./src/app/shared/components/loading-button/loading-button.component.html","./src/app/shared/components/loading-button/loading-button.component.ts","./src/app/shared/components/locations/locations.component.html","./src/app/shared/components/locations/locations.component.ts","./src/app/shared/components/map/map.component.html","./src/app/shared/components/map/map.component.ts","./src/app/shared/components/profile/billing-info/billing-info.component.ts","./src/app/shared/components/profile/billing-info/billing-info.component.html","./src/app/shared/components/profile/update-profile/update-profile.component.html","./src/app/shared/components/profile/update-profile/update-profile.component.ts","./src/app/shared/components/profile/update-picture/update-picture.component.html","./src/app/shared/components/profile/update-picture/update-picture.component.ts","./src/app/shared/components/profile/overview/overview.component.html","./src/app/shared/components/profile/overview/overview.component.ts","./src/app/shared/components/profile/change-password/change-password.component.html","./src/app/shared/components/profile/change-password/change-password.component.ts","./src/app/shared/components/profile/profile.component.html","./src/app/shared/components/profile/profile.component.ts","./src/app/shared/components/region/region.component.html","./src/app/shared/components/region/region.component.ts","./src/app/shared/components/progress-bar/progress-bar.component.html","./src/app/shared/components/progress-bar/progress-bar.component.ts","./src/app/shared/components/chart/pie/pie.component.html","./src/app/shared/components/chart/pie/pie.component.ts","./src/app/shared/components/chart/bar-chart/bar-chart.component.html","./src/app/shared/components/chart/bar-chart/bar-chart.component.ts","./src/app/shared/components/technical-data/technical-data.component.html","./src/app/shared/components/technical-data/technical-data.component.ts","./src/app/shared/components/upload-files/upload-files.component.html","./src/app/shared/components/upload-files/upload-files.component.ts","./src/app/shared/components/video-ad/video-ad.component.ts","./src/app/shared/components/video-ad/video-ad.component.html","./src/app/shared/data/welcomeCardAdvertiserData.ts","./src/app/shared/components/welcome-card/welcome-card.component.html","./src/app/shared/components/welcome-card/welcome-card.component.ts","./src/app/shared/components/zone/zone.component.html","./src/app/shared/components/zone/zone.component.ts","./src/app/shared/data/actions-data.ts","./src/app/shared/data/constants.ts","./src/app/shared/data/exportData.ts","./src/app/shared/data/filter-data.ts","./src/app/shared/data/languages.ts","./src/app/shared/data/sibeBarInfo.ts","./src/app/shared/directive/sortable.directive.ts","./src/app/shared/enum/advertiser-status.ts","./src/app/shared/enum/authorities.ts","./src/app/shared/enum/bugReport-status.ts","./src/app/shared/enum/campaign-status.ts","./src/app/shared/enum/chart/audiance.ts","./src/app/shared/enum/chart/technical-data.ts","./src/app/shared/enum/discount-type.enum.ts","./src/app/shared/enum/estimateStatus.ts","./src/app/shared/enum/invoicesStatus.ts","./src/app/shared/enum/location-availability.ts","./src/app/shared/enum/locationSearchMethod.ts","./src/app/shared/enum/objectives.ts","./src/app/shared/enum/partner-status.ts","./src/app/shared/enum/payment-frequency.ts","./src/app/shared/enum/paymentMethod.ts","./src/app/shared/enum/paymentStatus.ts","./src/app/shared/enum/pricing-method.ts","./src/app/shared/enum/renumeration.enum.ts","./src/app/shared/enum/router-status.ts","./src/app/shared/enum/userHistoryActions.ts","./src/app/shared/enum/userHistoryService.ts","./src/app/shared/models/chart/seriesTitles.ts","./src/app/shared/models/user/role.interface.ts","./src/app/shared/pipe/cast-file-name.pipe.ts","./src/app/shared/pipe/days-between-dates.pipe.ts","./src/app/shared/pipe/localized-date.pipe.ts","./src/app/shared/pipe/to-k-value.pipe.ts","./src/app/shared/enum/commandeStatus.ts","./src/app/shared/services/badge.service.ts","./src/app/shared/services/calculations/new-campaign.service.ts","./src/app/shared/services/extension/extension.service.ts","./src/app/shared/services/guard/auth-guard.service.ts","./src/app/shared/services/history/saveHistory.ts","./src/app/shared/services/iberis/cancelEstimate.ts","./src/app/shared/services/jwt.service.ts","./src/app/shared/services/layout/layout.service.ts","./src/app/shared/services/local-storage.service.ts","./src/app/shared/services/nav.service.ts","./src/app/shared/services/navigator/navigator.service.ts","./src/app/shared/data/owl-date/default-intl.ts","./src/app/shared/shared.module.ts","./src/app/shared/validators/passwordMatch.ts","./src/app/store/admin/admin.actions.ts","./src/app/store/admin/admin.selectors.ts","./src/app/store/advertiser/advertiser.actions.ts","./src/app/store/advertiser/advertiser.reducers.ts","./src/app/store/advertiser/advertiser.selectors.ts","./src/app/store/advertisingCampaign/advertiserCampaign.selectors.ts","./src/app/store/advertisingCampaign/advertisingCampaign.actions.ts","./src/app/store/advertisingCampaign/advertisingCampaign.reducers.ts","./src/app/store/apiState.interface.ts","./src/app/store/auth/auth.actions.ts","./src/app/shared/services/auth.service.ts","./src/app/store/auth/auth.effects.ts","./src/app/store/auth/auth.reducers.ts","./src/app/store/auth/auth.selectors.ts","./src/app/store/bug-report/bug-report.action.ts","./src/app/store/bug-report/bug-report.reducers.ts","./src/app/store/bug-report/bug-report.selectors.ts","./src/app/store/category/category.actions.ts","./src/app/store/category/category.selectors.ts","./src/app/store/clientIberis/clientIberis.actions.ts","./src/app/store/clientIberis/clientIberis.selectors.ts","./src/app/store/commande/commande.actions.ts","./src/app/store/commande/commande.selectors.ts","./src/app/store/consumers/consumers.actions.ts","./src/app/store/consumers/consumers.selectors.ts","./src/app/store/facture/facture.actions.ts","./src/app/store/facture/facture.selectors.ts","./src/app/store/file/file.actions.ts","./src/app/store/file/file.selectors.ts","./src/app/store/fixed-charge/fixed-charge.actions.ts","./src/app/store/locationPartner/actions/get-impressions.actions.ts","./src/app/store/locationPartner/actions/get-locations.actions.ts","./src/app/store/locationPartner/actions/update.actions.ts","./src/app/store/locationPartner/location-partner.action.ts","./src/app/store/locationPartner/location-partner.reducers.ts","./src/app/store/locationPartner/location-partner.selectors.ts","./src/app/store/mailing/mailing.actions.ts","./src/app/store/mailing/mailing.selectors.ts","./src/app/store/objective/objective.actions.ts","./src/app/store/payments-received/payments-received.actions.ts","./src/app/store/promotion-code/promotion-code.actions.ts","./src/app/store/promotion-code/promotion-code.reducers.ts","./src/app/store/promotion-code/promotion-code.selectors.ts","./src/app/store/region/region.actions.ts","./src/app/store/region/region.selectors.ts","./src/app/store/role/role.actions.ts","./src/app/store/router/router.action.ts","./src/app/store/router/router.reducers.ts","./src/app/store/router/router.selectors.ts","./src/app/store/settings/settings.actions.ts","./src/app/store/settings/settings.selectors.ts","./src/app/store/statistics/statistics.actions.ts","./src/app/store/statistics/statistics.selectors.ts","./src/app/store/subCategory/subCategory.actions.ts","./src/app/store/subCategory/subCategory.selectors.ts","./src/app/store/suppliers/suppliers.actions.ts","./src/app/store/tag/tag.actions.ts","./src/app/store/tag/tag.selectors.ts","./src/app/store/user/user.actions.ts","./src/app/store/user/user.selectors.ts","./src/app/store/userHistory/userHistory.actions.ts","./src/app/store/userHistory/userHistory.reducers.ts","./src/app/store/userHistory/userHistory.selectors.ts","./src/app/store/zone/zone.actions.ts","./src/app/store/zone/zone.selectors.ts","./src/app/utils/style/style.ts","./src/environments/environment.prod.ts","./src/app/shared/data/animation/route-animations.ts","./src/app/shared/components/header/header/maximize/maximize.component.ts","./src/app/shared/components/header/header/maximize/maximize.component.html","./src/app/shared/components/logout/logout.component.ts","./src/app/shared/components/logout/logout.component.html","./src/app/shared/components/header/header/account/account.component.html","./src/app/shared/components/header/header/account/account.component.ts","./src/app/shared/components/header/header/mode/mode.component.ts","./src/app/shared/components/header/header/mode/mode.component.html","./src/app/shared/components/header/header/search-customize/search-customize.component.html","./src/app/shared/components/header/header/search-customize/search-customize.component.ts","./src/app/shared/components/header/header/header.component.ts","./src/app/shared/components/header/header/header.component.html","./src/app/shared/components/sidebar/sidebar.component.html","./src/app/shared/components/sidebar/sidebar.component.ts","./src/app/shared/components/breadcrumb/breadcrumb.component.html","./src/app/shared/components/breadcrumb/breadcrumb.component.ts","./src/app/shared/components/footer/footer.component.ts","./src/app/shared/components/footer/footer.component.html","./src/app/shared/components/layout/dashboard/dashboard.component.ts","./src/app/shared/components/layout/dashboard/dashboard.component.html","./src/app/shared/routes/auth.ts","./src/app/shared/components/layout/auth/auth.component.ts","./src/app/shared/components/layout/auth/auth.component.html","./src/app/shared/components/header/header/settings/settings.component.html","./src/app/shared/components/header/header/settings/settings.component.ts","./src/app/shared/services/guard/admin-guard.service.ts","./src/app/shared/services/guard/advertiser-guard.service.ts","./src/app/shared/services/guard/location-partner-guard.service.ts","./src/app/shared/routes/dashboard.ts","./src/app/shared/services/guard/guest-guard.service.ts","./src/app/app-routing.module.ts","./node_modules/@ngx-loading-bar/core/fesm2020/ngx-loading-bar-core.mjs","./src/app/shared/services/meta/meta.service.ts","./src/app/shared/components/tap-to-top/tap-to-top.component.ts","./src/app/shared/components/tap-to-top/tap-to-top.component.html","./src/app/shared/components/loader/loader.component.ts","./src/app/shared/components/loader/loader.component.html","./src/app/app.component.ts","./src/app/app.component.html","./node_modules/@angular/animations/fesm2020/browser.mjs","./node_modules/@angular/platform-browser/fesm2020/animations.mjs","./src/app/store/admin/admin.reducers.ts","./src/app/shared/services/admin.service.ts","./src/app/store/admin/admin.effects.ts","./src/app/store/statistics/statistics.reducers.ts","./src/app/shared/services/statistics/statistics-admin.service.ts","./src/app/store/statistics/statistics.effects.ts","./src/app/shared/services/advertiser.service.ts","./src/app/store/advertiser/advertiser.effects.ts","./src/app/shared/services/advertising-campaign.service.ts","./src/app/store/advertisingCampaign/advertisingCampaign.effects.ts","./src/app/shared/services/bug-report.service.ts","./src/app/store/bug-report/bug-report.effects.ts","./src/app/shared/services/user.service.ts","./src/app/store/user/user.effects.ts","./src/app/store/user/user.reducers.ts","./src/app/shared/services/router/router.service.ts","./src/app/store/router/router.effects.ts","./src/app/shared/services/location-partners.service.ts","./src/app/store/locationPartner/location-partner.effects.ts","./node_modules/@ngx-translate/http-loader/fesm2020/ngx-translate-http-loader.mjs","./src/app/shared/services/category.service.ts","./src/app/store/category/category.effects.ts","./src/app/store/category/category.reducers.ts","./src/app/store/subCategory/subCategory.reducers.ts","./src/app/shared/services/sub-category.service.ts","./src/app/store/subCategory/subCategory.effects.ts","./src/app/shared/services/tag.service.ts","./src/app/store/tag/tag.effects.ts","./src/app/store/tag/tag.reducers.ts","./src/app/store/zone/zone.reducers.ts","./src/app/shared/services/zone.service.ts","./src/app/store/zone/zone.effects.ts","./src/app/shared/services/file/file.service.ts","./src/app/store/file/file.effects.ts","./src/app/store/file/file.reducres.ts","./src/app/shared/services/objective.service.ts","./src/app/store/objective/objective.effects.ts","./src/app/store/objective/objective.reducers.ts","./src/app/store/fixed-charge/fixed-charge.reducers.ts","./src/app/_helper/jwt-interceptor.ts","./src/app/store/consumers/consumers.reducers.ts","./src/app/shared/services/consumers.service.ts","./src/app/store/consumers/consumers.effects.ts","./src/app/store/region/region.reducers.ts","./src/app/shared/services/region.service.ts","./src/app/store/region/region.effects.ts","./src/app/store/settings/settings.reducer.ts","./src/app/store/commande/commande.reducers.ts","./src/app/shared/services/commande.service.ts","./src/app/store/commande/commande.effects.ts","./src/app/store/clientIberis/clientIberis.reducers.ts","./src/app/shared/services/iberis/client-iberis.service.ts","./src/app/store/clientIberis/clientIberis.effects.ts","./src/app/store/facture/facture.reducers.ts","./src/app/shared/services/iberis/facture.service.ts","./src/app/store/facture/facture.effects.ts","./src/app/store/role/role.reducers.ts","./src/app/shared/services/role.service.ts","./src/app/shared/services/sub-role.service.ts","./src/app/shared/services/group-authority.service.ts","./src/app/store/role/role.effects.ts","./src/app/shared/services/supplier.service.ts","./src/app/store/suppliers/suppliers.effects.ts","./src/app/store/suppliers/suppliers.reducers.ts","./src/app/shared/services/usersHistory.service.ts","./src/app/store/userHistory/userHistory.effects.ts","./src/app/shared/services/iberis/payment-received.service.ts","./src/app/store/payments-received/payments-received.effects.ts","./src/app/store/payments-received/payments-received.reducers.ts","./node_modules/@angular/common/locales/en.mjs","./node_modules/@angular/common/locales/fr.mjs","./src/app/store/mailing/mailing.reducers.ts","./src/app/shared/services/mail.service.ts","./src/app/store/mailing/mailing.effects.ts","./src/app/shared/services/promotion-code.service.ts","./src/app/store/promotion-code/promotion-code.effects.ts","./src/app/shared/services/fixed-charge.service.ts","./src/app/store/fixed-charge/fixed-charge.effects.ts","./node_modules/@sentry/utils/esm/worldwide.js","./node_modules/@sentry/core/esm/constants.js","./node_modules/@sentry/utils/esm/is.js","./node_modules/@sentry/utils/esm/browser.js","./node_modules/@sentry/utils/esm/debug-build.js","./node_modules/@sentry/utils/esm/logger.js","./node_modules/@sentry/utils/esm/string.js","./node_modules/@sentry/utils/esm/object.js","./node_modules/@sentry/utils/esm/misc.js","./node_modules/@sentry/utils/esm/time.js","./node_modules/@sentry/core/esm/debug-build.js","./node_modules/@sentry/utils/esm/syncpromise.js","./node_modules/@sentry/core/esm/eventProcessors.js","./node_modules/@sentry/core/esm/session.js","./node_modules/@sentry/core/esm/utils/getRootSpan.js","./node_modules/@sentry/utils/esm/baggage.js","./node_modules/@sentry/utils/esm/tracing.js","./node_modules/@sentry/core/esm/utils/spanUtils.js","./node_modules/@sentry/core/esm/tracing/dynamicSamplingContext.js","./node_modules/@sentry/core/esm/utils/applyScopeDataToEvent.js","./node_modules/@sentry/core/esm/scope.js","./node_modules/@sentry/core/esm/version.js","./node_modules/@sentry/core/esm/hub.js","./node_modules/@sentry/utils/esm/stacktrace.js","./node_modules/@sentry/utils/esm/normalize.js","./node_modules/@sentry/utils/esm/memo.js","./node_modules/@sentry/core/esm/utils/prepareEvent.js","./node_modules/@sentry/core/esm/exports.js","./node_modules/@sentry/core/esm/integration.js","./node_modules/@sentry/core/esm/integrations/inboundfilters.js","./node_modules/@sentry/core/esm/integrations/functiontostring.js","./node_modules/@sentry/utils/esm/dsn.js","./node_modules/@sentry/core/esm/api.js","./node_modules/@sentry/utils/esm/supports.js","./node_modules/@sentry/utils/esm/vendor/supportsHistory.js","./node_modules/@sentry/utils/esm/instrument/_handlers.js","./node_modules/@sentry/utils/esm/instrument/history.js","./node_modules/@sentry/utils/esm/envelope.js","./node_modules/@sentry/utils/esm/error.js","./node_modules/@sentry/core/esm/baseclient.js","./node_modules/@sentry/core/esm/utils/sdkMetadata.js","./node_modules/@sentry/browser/esm/debug-build.js","./node_modules/@sentry/browser/esm/eventbuilder.js","./node_modules/@sentry/browser/esm/helpers.js","./node_modules/@sentry/browser/esm/client.js","./node_modules/@sentry/core/esm/envelope.js","./node_modules/@sentry/core/esm/metrics/envelope.js","./node_modules/@sentry/core/esm/metrics/utils.js","./node_modules/@sentry/browser/esm/userfeedback.js","./node_modules/@sentry/utils/esm/clientreport.js","./node_modules/@sentry/utils/esm/instrument/console.js","./node_modules/@sentry/utils/esm/instrument/dom.js","./node_modules/@sentry/utils/esm/instrument/xhr.js","./node_modules/@sentry/utils/esm/instrument/fetch.js","./node_modules/@sentry/utils/esm/severity.js","./node_modules/@sentry/utils/esm/url.js","./node_modules/@sentry/browser/esm/integrations/breadcrumbs.js","./node_modules/@sentry/browser/esm/integrations/dedupe.js","./node_modules/@sentry/utils/esm/instrument/globalError.js","./node_modules/@sentry/utils/esm/instrument/globalUnhandledRejection.js","./node_modules/@sentry/browser/esm/integrations/globalhandlers.js","./node_modules/@sentry/browser/esm/integrations/httpcontext.js","./node_modules/@sentry/utils/esm/aggregate-errors.js","./node_modules/@sentry/browser/esm/integrations/linkederrors.js","./node_modules/@sentry/browser/esm/integrations/trycatch.js","./node_modules/@sentry/browser/esm/stack-parsers.js","./node_modules/@sentry/utils/esm/ratelimit.js","./node_modules/@sentry/core/esm/transports/base.js","./node_modules/@sentry/utils/esm/promisebuffer.js","./node_modules/@sentry/browser/esm/transports/utils.js","./node_modules/@sentry/browser/esm/transports/fetch.js","./node_modules/@sentry/browser/esm/transports/xhr.js","./node_modules/@sentry/browser/esm/sdk.js","./node_modules/@sentry/core/esm/sdk.js","./node_modules/@sentry/core/esm/semanticAttributes.js","./node_modules/@sentry/core/esm/tracing/spanstatus.js","./node_modules/@sentry/core/esm/tracing/span.js","./node_modules/@sentry/core/esm/utils/hasTracingEnabled.js","./node_modules/@sentry/core/esm/tracing/trace.js","./node_modules/@sentry/core/esm/tracing/transaction.js","./node_modules/@sentry/core/esm/tracing/idletransaction.js","./node_modules/@sentry/core/esm/tracing/utils.js","./node_modules/@sentry/core/esm/tracing/errors.js","./node_modules/@sentry/core/esm/tracing/sampling.js","./node_modules/@sentry/core/esm/tracing/hubextensions.js","./node_modules/@sentry-internal/tracing/esm/common/debug-build.js","./node_modules/@sentry-internal/tracing/esm/browser/types.js","./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/bindReporter.js","./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/getNavigationEntry.js","./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/getActivationStart.js","./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/initMetric.js","./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/generateUniqueID.js","./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/observe.js","./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/onHidden.js","./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/getVisibilityWatcher.js","./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/polyfills/interactionCountPolyfill.js","./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/getINP.js","./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/getLCP.js","./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/onTTFB.js","./node_modules/@sentry-internal/tracing/esm/browser/instrument.js","./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/getCLS.js","./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/getFID.js","./node_modules/@sentry/core/esm/span.js","./node_modules/@sentry-internal/tracing/esm/browser/metrics/utils.js","./node_modules/@sentry-internal/tracing/esm/browser/metrics/index.js","./node_modules/@sentry-internal/tracing/esm/browser/request.js","./node_modules/@sentry-internal/tracing/esm/common/fetch.js","./node_modules/@sentry-internal/tracing/esm/browser/browserTracingIntegration.js","./node_modules/@sentry/core/esm/tracing/measurement.js","./node_modules/@sentry-internal/tracing/esm/browser/backgroundtab.js","./node_modules/@sentry/angular-ivy/fesm2015/sentry-angular-ivy.js","./src/app/app.module.ts","./node_modules/@sentry/utils/esm/buildPolyfills/_optionalChain.js","./node_modules/@sentry/core/esm/utils/isSentryRequestUrl.js","./node_modules/@sentry/utils/esm/isBrowser.js","./node_modules/@sentry/replay/esm/index.js","./node_modules/@sentry/utils/esm/buildPolyfills/_nullishCoalesce.js","./src/main.ts","./node_modules/@angular-slider/ngx-slider/node_modules/rxjs/_esm2015/internal/util/isFunction.js","./node_modules/@angular-slider/ngx-slider/node_modules/rxjs/_esm2015/internal/config.js","./node_modules/@angular-slider/ngx-slider/node_modules/rxjs/_esm2015/internal/util/hostReportError.js","./node_modules/@angular-slider/ngx-slider/node_modules/rxjs/_esm2015/internal/Observer.js","./node_modules/@angular-slider/ngx-slider/node_modules/rxjs/_esm2015/internal/util/isArray.js","./node_modules/@angular-slider/ngx-slider/node_modules/rxjs/_esm2015/internal/util/UnsubscriptionError.js","./node_modules/@angular-slider/ngx-slider/node_modules/rxjs/_esm2015/internal/Subscription.js","./node_modules/@angular-slider/ngx-slider/node_modules/rxjs/_esm2015/internal/util/isObject.js","./node_modules/@angular-slider/ngx-slider/node_modules/rxjs/_esm2015/internal/symbol/rxSubscriber.js","./node_modules/@angular-slider/ngx-slider/node_modules/rxjs/_esm2015/internal/Subscriber.js","./node_modules/@angular-slider/ngx-slider/node_modules/rxjs/_esm2015/internal/symbol/observable.js","./node_modules/@angular-slider/ngx-slider/node_modules/rxjs/_esm2015/internal/util/identity.js","./node_modules/@angular-slider/ngx-slider/node_modules/rxjs/_esm2015/internal/Observable.js","./node_modules/@angular-slider/ngx-slider/node_modules/rxjs/_esm2015/internal/util/toSubscriber.js","./node_modules/@angular-slider/ngx-slider/node_modules/rxjs/_esm2015/internal/util/canReportError.js","./node_modules/@angular-slider/ngx-slider/node_modules/rxjs/_esm2015/internal/util/pipe.js","./node_modules/@angular-slider/ngx-slider/node_modules/rxjs/_esm2015/internal/util/ObjectUnsubscribedError.js","./node_modules/@angular-slider/ngx-slider/node_modules/rxjs/_esm2015/internal/SubjectSubscription.js","./node_modules/@angular-slider/ngx-slider/node_modules/rxjs/_esm2015/internal/Subject.js","./node_modules/@angular-slider/ngx-slider/node_modules/rxjs/_esm2015/internal/scheduler/Action.js","./node_modules/@angular-slider/ngx-slider/node_modules/rxjs/_esm2015/internal/Scheduler.js","./node_modules/@angular-slider/ngx-slider/node_modules/rxjs/_esm2015/internal/scheduler/AsyncScheduler.js","./node_modules/@angular-slider/ngx-slider/node_modules/rxjs/_esm2015/internal/scheduler/async.js","./node_modules/@angular-slider/ngx-slider/node_modules/rxjs/_esm2015/internal/scheduler/AsyncAction.js","./node_modules/@angular-slider/ngx-slider/node_modules/rxjs/_esm2015/internal/operators/throttle.js","./node_modules/@angular-slider/ngx-slider/node_modules/rxjs/_esm2015/internal/operators/throttleTime.js","./node_modules/@angular-slider/ngx-slider/node_modules/rxjs/_esm2015/internal/util/noop.js","./node_modules/@angular-slider/ngx-slider/node_modules/rxjs/_esm2015/internal/operators/tap.js","./node_modules/@angular-slider/ngx-slider/node_modules/rxjs/_esm2015/internal/operators/distinctUntilChanged.js","./node_modules/@angular-slider/ngx-slider/node_modules/rxjs/_esm2015/internal/operators/filter.js","./node_modules/detect-it/dist/detect-it.esm.js","./node_modules/@angular-slider/ngx-slider/__ivy_ngcc__/fesm2015/angular-slider-ngx-slider.js","./node_modules/@sentry/utils/esm/env.js","./node_modules/@sentry/utils/esm/node.js","./node_modules/angular-archwizard/__ivy_ngcc__/fesm2015/angular-archwizard.js","./node_modules/date-fns/esm/addHours/index.js","./node_modules/date-fns/esm/addMinutes/index.js","./node_modules/date-fns/esm/addSeconds/index.js","./node_modules/date-fns/esm/differenceInCalendarDays/index.js","./node_modules/date-fns/esm/differenceInDays/index.js","./node_modules/date-fns/esm/differenceInMilliseconds/index.js","./node_modules/date-fns/esm/constants/index.js","./node_modules/date-fns/esm/_lib/roundingMethods/index.js","./node_modules/date-fns/esm/differenceInMinutes/index.js","./node_modules/date-fns/esm/differenceInSeconds/index.js","./node_modules/date-fns/esm/endOfDay/index.js","./node_modules/date-fns/esm/endOfWeek/index.js","./node_modules/date-fns/esm/startOfSecond/index.js","./node_modules/date-fns/esm/isSameSecond/index.js","./node_modules/date-fns/esm/max/index.js","./node_modules/date-fns/esm/setHours/index.js","./node_modules/date-fns/esm/setMinutes/index.js","./node_modules/date-fns/esm/startOfMinute/index.js","./node_modules/date-fns/esm/startOfWeek/index.js","./node_modules/date-fns/esm/getHours/index.js","./node_modules/date-fns/esm/getMinutes/index.js","./node_modules/calendar-utils/date-adapters/esm/date-fns/index.js","./node_modules/date-fns/esm/addWeeks/index.js","./node_modules/date-fns/esm/subWeeks/index.js","./node_modules/date-fns/esm/startOfISOWeek/index.js","./node_modules/date-fns/esm/getISOWeekYear/index.js","./node_modules/date-fns/esm/startOfISOWeekYear/index.js","./node_modules/date-fns/esm/getISOWeek/index.js","./node_modules/date-fns/esm/setDate/index.js","./node_modules/date-fns/esm/getDaysInMonth/index.js","./node_modules/date-fns/esm/setMonth/index.js","./node_modules/angular-calendar/date-adapters/esm/date-fns/index.js","./node_modules/apexcharts/dist/apexcharts.common.js","./node_modules/date-fns/esm/_lib/defaultOptions/index.js","./node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","./node_modules/date-fns/esm/_lib/requiredArgs/index.js","./node_modules/date-fns/esm/_lib/toInteger/index.js","./node_modules/date-fns/esm/addDays/index.js","./node_modules/date-fns/esm/addMilliseconds/index.js","./node_modules/date-fns/esm/addMonths/index.js","./node_modules/date-fns/esm/endOfMonth/index.js","./node_modules/date-fns/esm/getDate/index.js","./node_modules/date-fns/esm/getDay/index.js","./node_modules/date-fns/esm/getMonth/index.js","./node_modules/date-fns/esm/getYear/index.js","./node_modules/date-fns/esm/isSameDay/index.js","./node_modules/date-fns/esm/isSameMonth/index.js","./node_modules/date-fns/esm/setYear/index.js","./node_modules/date-fns/esm/startOfDay/index.js","./node_modules/date-fns/esm/startOfMonth/index.js","./node_modules/date-fns/esm/subDays/index.js","./node_modules/date-fns/esm/subMonths/index.js","./node_modules/date-fns/esm/toDate/index.js","./node_modules/feather-icons/dist/feather.js","./node_modules/file-saver/dist/FileSaver.min.js","./node_modules/flatpickr/dist/esm/utils/polyfills.js","./node_modules/html2canvas/dist/html2canvas.js","./node_modules/lodash/lodash.js","./node_modules/ngx-slimscroll/__ivy_ngcc__/fesm2015/ngx-slimscroll.js","./node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","./node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","./node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","./node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","./node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","./node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","./node_modules/date-fns/esm/locale/en-US/index.js","./node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","./node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","./node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","./node_modules/ng2-datepicker/__ivy_ngcc__/fesm2015/ng2-datepicker.js","./node_modules/ngx-abstract-control-as/fesm2015/ngx-abstract-control-as.js","./node_modules/rxjs/dist/esm/internal/BehaviorSubject.js","./node_modules/rxjs/dist/esm/internal/Observable.js","./node_modules/rxjs/dist/esm/internal/ReplaySubject.js","./node_modules/rxjs/dist/esm/internal/util/ObjectUnsubscribedError.js","./node_modules/rxjs/dist/esm/internal/Subject.js","./node_modules/rxjs/dist/esm/internal/NotificationFactories.js","./node_modules/rxjs/dist/esm/internal/Subscriber.js","./node_modules/rxjs/dist/esm/internal/util/UnsubscriptionError.js","./node_modules/rxjs/dist/esm/internal/Subscription.js","./node_modules/rxjs/dist/esm/internal/config.js","./node_modules/rxjs/dist/esm/internal/observable/combineLatest.js","./node_modules/rxjs/dist/esm/internal/observable/concat.js","./node_modules/rxjs/dist/esm/internal/operators/concatAll.js","./node_modules/rxjs/dist/esm/internal/observable/defer.js","./node_modules/rxjs/dist/esm/internal/observable/empty.js","./node_modules/rxjs/dist/esm/internal/observable/forkJoin.js","./node_modules/rxjs/dist/esm/internal/operators/subscribeOn.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduleAsyncIterable.js","./node_modules/rxjs/dist/esm/internal/observable/from.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduled.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduleObservable.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduleArray.js","./node_modules/rxjs/dist/esm/internal/scheduled/schedulePromise.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduleIterable.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduleReadableStreamLike.js","./node_modules/rxjs/dist/esm/internal/observable/fromEvent.js","./node_modules/rxjs/dist/esm/internal/observable/innerFrom.js","./node_modules/rxjs/dist/esm/internal/observable/interval.js","./node_modules/rxjs/dist/esm/internal/observable/merge.js","./node_modules/rxjs/dist/esm/internal/observable/of.js","./node_modules/rxjs/dist/esm/internal/observable/throwError.js","./node_modules/rxjs/dist/esm/internal/observable/timer.js","./node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js","./node_modules/rxjs/dist/esm/internal/operators/auditTime.js","./node_modules/rxjs/dist/esm/internal/operators/audit.js","./node_modules/rxjs/dist/esm/internal/operators/catchError.js","./node_modules/rxjs/dist/esm/internal/operators/concatMap.js","./node_modules/rxjs/dist/esm/internal/operators/debounceTime.js","./node_modules/rxjs/dist/esm/internal/operators/defaultIfEmpty.js","./node_modules/rxjs/dist/esm/internal/operators/delayWhen.js","./node_modules/rxjs/dist/esm/internal/operators/delay.js","./node_modules/rxjs/dist/esm/internal/operators/distinctUntilChanged.js","./node_modules/rxjs/dist/esm/internal/operators/filter.js","./node_modules/rxjs/dist/esm/internal/operators/finalize.js","./node_modules/rxjs/dist/esm/internal/operators/first.js","./node_modules/rxjs/dist/esm/internal/operators/groupBy.js","./node_modules/rxjs/dist/esm/internal/operators/ignoreElements.js","./node_modules/rxjs/dist/esm/internal/operators/map.js","./node_modules/rxjs/dist/esm/internal/operators/mapTo.js","./node_modules/rxjs/dist/esm/internal/operators/mergeAll.js","./node_modules/rxjs/dist/esm/internal/operators/mergeMap.js","./node_modules/rxjs/dist/esm/internal/operators/mergeInternals.js","./node_modules/rxjs/dist/esm/internal/operators/observeOn.js","./node_modules/rxjs/dist/esm/internal/operators/reduce.js","./node_modules/rxjs/dist/esm/internal/operators/scan.js","./node_modules/rxjs/dist/esm/internal/operators/scanInternals.js","./node_modules/rxjs/dist/esm/internal/operators/share.js","./node_modules/rxjs/dist/esm/internal/operators/shareReplay.js","./node_modules/rxjs/dist/esm/internal/operators/skip.js","./node_modules/rxjs/dist/esm/internal/operators/startWith.js","./node_modules/rxjs/dist/esm/internal/operators/switchMap.js","./node_modules/rxjs/dist/esm/internal/operators/take.js","./node_modules/rxjs/dist/esm/internal/operators/takeLast.js","./node_modules/rxjs/dist/esm/internal/operators/takeUntil.js","./node_modules/rxjs/dist/esm/internal/operators/tap.js","./node_modules/rxjs/dist/esm/internal/operators/throwIfEmpty.js","./node_modules/rxjs/dist/esm/internal/operators/timeout.js","./node_modules/rxjs/dist/esm/internal/operators/toArray.js","./node_modules/rxjs/dist/esm/internal/operators/withLatestFrom.js","./node_modules/rxjs/dist/esm/internal/scheduler/Action.js","./node_modules/rxjs/dist/esm/internal/scheduler/intervalProvider.js","./node_modules/rxjs/dist/esm/internal/scheduler/AsyncAction.js","./node_modules/rxjs/dist/esm/internal/Scheduler.js","./node_modules/rxjs/dist/esm/internal/scheduler/AsyncScheduler.js","./node_modules/rxjs/dist/esm/internal/scheduler/animationFrameProvider.js","./node_modules/rxjs/dist/esm/internal/scheduler/animationFrame.js","./node_modules/rxjs/dist/esm/internal/scheduler/AnimationFrameScheduler.js","./node_modules/rxjs/dist/esm/internal/scheduler/AnimationFrameAction.js","./node_modules/rxjs/dist/esm/internal/util/Immediate.js","./node_modules/rxjs/dist/esm/internal/scheduler/immediateProvider.js","./node_modules/rxjs/dist/esm/internal/scheduler/asap.js","./node_modules/rxjs/dist/esm/internal/scheduler/AsapScheduler.js","./node_modules/rxjs/dist/esm/internal/scheduler/AsapAction.js","./node_modules/rxjs/dist/esm/internal/scheduler/async.js","./node_modules/rxjs/dist/esm/internal/scheduler/dateTimestampProvider.js","./node_modules/rxjs/dist/esm/internal/scheduler/queue.js","./node_modules/rxjs/dist/esm/internal/scheduler/QueueScheduler.js","./node_modules/rxjs/dist/esm/internal/scheduler/QueueAction.js","./node_modules/rxjs/dist/esm/internal/scheduler/timeoutProvider.js","./node_modules/rxjs/dist/esm/internal/symbol/iterator.js","./node_modules/rxjs/dist/esm/internal/symbol/observable.js","./node_modules/rxjs/dist/esm/internal/util/EmptyError.js","./node_modules/rxjs/dist/esm/internal/util/args.js","./node_modules/rxjs/dist/esm/internal/util/argsArgArrayOrObject.js","./node_modules/rxjs/dist/esm/internal/util/arrRemove.js","./node_modules/rxjs/dist/esm/internal/util/createErrorClass.js","./node_modules/rxjs/dist/esm/internal/util/createObject.js","./node_modules/rxjs/dist/esm/internal/util/errorContext.js","./node_modules/rxjs/dist/esm/internal/util/executeSchedule.js","./node_modules/rxjs/dist/esm/internal/util/identity.js","./node_modules/rxjs/dist/esm/internal/util/isArrayLike.js","./node_modules/rxjs/dist/esm/internal/util/isAsyncIterable.js","./node_modules/rxjs/dist/esm/internal/util/isDate.js","./node_modules/rxjs/dist/esm/internal/util/isFunction.js","./node_modules/rxjs/dist/esm/internal/util/isInteropObservable.js","./node_modules/rxjs/dist/esm/internal/util/isIterable.js","./node_modules/rxjs/dist/esm/internal/util/isPromise.js","./node_modules/rxjs/dist/esm/internal/util/isReadableStreamLike.js","./node_modules/rxjs/dist/esm/internal/util/isScheduler.js","./node_modules/rxjs/dist/esm/internal/util/lift.js","./node_modules/rxjs/dist/esm/internal/util/mapOneOrManyArgs.js","./node_modules/rxjs/dist/esm/internal/util/noop.js","./node_modules/rxjs/dist/esm/internal/util/pipe.js","./node_modules/rxjs/dist/esm/internal/util/reportUnhandledError.js","./node_modules/rxjs/dist/esm/internal/util/throwUnobservableError.js","./node_modules/tslib/tslib.es6.js","./node_modules/@angular/animations/fesm2020/animations.mjs","./node_modules/@angular/cdk/fesm2020/observers.mjs","./node_modules/@angular/cdk/fesm2020/layout.mjs","./node_modules/@angular/cdk/fesm2020/a11y.mjs","./node_modules/@angular/cdk/fesm2020/bidi.mjs","./node_modules/@angular/cdk/fesm2020/coercion.mjs","./node_modules/@angular/cdk/fesm2020/keycodes.mjs","./node_modules/@angular/cdk/fesm2020/platform.mjs","./node_modules/@angular/cdk/fesm2020/scrolling.mjs","./node_modules/@angular/common/fesm2020/common.mjs","./node_modules/@angular/common/fesm2020/http.mjs","./node_modules/@angular/core/fesm2020/core.mjs","./node_modules/@angular/forms/fesm2020/forms.mjs","./node_modules/@angular/google-maps/fesm2020/google-maps.mjs","./node_modules/@angular/platform-browser/fesm2020/platform-browser.mjs","./node_modules/rxjs/dist/esm/internal/operators/refCount.js","./node_modules/rxjs/dist/esm/internal/observable/ConnectableObservable.js","./node_modules/rxjs/dist/esm/internal/operators/last.js","./node_modules/@angular/router/fesm2020/router.mjs","./node_modules/rxjs/dist/esm/internal/operators/takeWhile.js","./node_modules/@auth0/angular-jwt/fesm2020/auth0-angular-jwt.mjs","./node_modules/@angular/cdk/fesm2020/portal.mjs","./node_modules/@angular/cdk/fesm2020/overlay.mjs","./node_modules/@danielmoncada/angular-datetime-picker/fesm2020/danielmoncada-angular-datetime-picker.mjs","./node_modules/rxjs/dist/esm/internal/util/argsOrArgArray.js","./node_modules/rxjs/dist/esm/internal/observable/race.js","./node_modules/rxjs/dist/esm/internal/observable/never.js","./node_modules/rxjs/dist/esm/internal/observable/zip.js","./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","./node_modules/@popperjs/core/lib/utils/getBasePlacement.js","./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","./node_modules/@popperjs/core/lib/enums.js","./node_modules/@popperjs/core/lib/dom-utils/getWindow.js","./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","./node_modules/@popperjs/core/lib/utils/math.js","./node_modules/@popperjs/core/lib/utils/userAgent.js","./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","./node_modules/@popperjs/core/lib/dom-utils/contains.js","./node_modules/@popperjs/core/lib/utils/rectToClientRect.js","./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","./node_modules/@popperjs/core/lib/utils/getVariation.js","./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","./node_modules/@popperjs/core/lib/utils/computeOffsets.js","./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","./node_modules/@popperjs/core/lib/utils/expandToHashMap.js","./node_modules/@popperjs/core/lib/utils/detectOverflow.js","./node_modules/@popperjs/core/lib/modifiers/flip.js","./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","./node_modules/@popperjs/core/lib/utils/within.js","./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","./node_modules/@popperjs/core/lib/utils/getAltAxis.js","./node_modules/@popperjs/core/lib/modifiers/arrow.js","./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","./node_modules/@popperjs/core/lib/utils/orderModifiers.js","./node_modules/@popperjs/core/lib/utils/debounce.js","./node_modules/@popperjs/core/lib/createPopper.js","./node_modules/@popperjs/core/lib/utils/mergeByName.js","./node_modules/@popperjs/core/lib/modifiers/eventListeners.js","./node_modules/@popperjs/core/lib/modifiers/computeStyles.js","./node_modules/@popperjs/core/lib/popper-lite.js","./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","./node_modules/@popperjs/core/lib/modifiers/applyStyles.js","./node_modules/@popperjs/core/lib/modifiers/offset.js","./node_modules/@ng-bootstrap/ng-bootstrap/fesm2020/ng-bootstrap.mjs","./node_modules/rxjs/dist/esm/internal/operators/endWith.js","./node_modules/@ng-select/ng-select/fesm2020/ng-select-ng-select.mjs","./node_modules/rxjs/dist/esm/internal/Notification.js","./node_modules/rxjs/dist/esm/internal/operators/exhaustMap.js","./node_modules/@ngrx/effects/fesm2020/ngrx-effects.mjs","./node_modules/rxjs/dist/esm/internal/operators/materialize.js","./node_modules/rxjs/dist/esm/internal/operators/dematerialize.js","./node_modules/@ngrx/store-devtools/fesm2020/ngrx-store-devtools.mjs","./node_modules/@ngrx/store/fesm2020/ngrx-store.mjs","./node_modules/rxjs/dist/esm/internal/operators/pluck.js","./node_modules/rxjs/dist/esm/internal/util/isObservable.js","./node_modules/@ngx-translate/core/fesm2020/ngx-translate-core.mjs","./node_modules/positioning/dist/positioning.js","./node_modules/calendar-utils/calendar-utils.js","./node_modules/rxjs/dist/esm/internal/operators/pairwise.js","./node_modules/@mattlewis92/dom-autoscroller/dist/bundle.es.js","./node_modules/angular-draggable-droppable/fesm2020/angular-draggable-droppable.mjs","./node_modules/rxjs/dist/esm/internal/operators/count.js","./node_modules/angular-resizable-element/fesm2020/angular-resizable-element.mjs","./node_modules/angular-calendar/fesm2020/angular-calendar.mjs","./node_modules/rxjs/dist/esm/internal/operators/switchMapTo.js","./node_modules/angular-svg-icon/fesm2020/angular-svg-icon.mjs","./node_modules/flatpickr/dist/esm/types/options.js","./node_modules/flatpickr/dist/esm/l10n/default.js","./node_modules/flatpickr/dist/esm/utils/index.js","./node_modules/flatpickr/dist/esm/utils/dom.js","./node_modules/flatpickr/dist/esm/utils/formatting.js","./node_modules/flatpickr/dist/esm/utils/dates.js","./node_modules/flatpickr/dist/esm/index.js","./node_modules/angularx-flatpickr/fesm2020/angularx-flatpickr.mjs","./node_modules/ng-apexcharts/fesm2020/ng-apexcharts.mjs","./node_modules/ng-recaptcha/fesm2020/ng-recaptcha.mjs","./node_modules/ngx-clipboard/fesm2020/ngx-clipboard.mjs","./node_modules/ngx-dropzone/fesm2020/ngx-dropzone.mjs","./node_modules/ngx-image-cropper/fesm2020/ngx-image-cropper.mjs","./node_modules/ngx-mask/fesm2020/ngx-mask.mjs","./node_modules/ngx-owl-carousel-o/fesm2020/ngx-owl-carousel-o.mjs","./node_modules/ngx-toastr/fesm2020/ngx-toastr.mjs","./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","./node_modules/date-fns/node_modules/@babel/runtime/helpers/esm/typeof.js"],"sourceRoot":"webpack:///","sourcesContent":["
\n
\n
\n
\n
\n
\n \n \n
\n
\n\n \n
\n \n
\n
    \n
  • \n \n
  • \n
\n
\n

\n {{ \"forgotPassword.title\" | translate }}\n

\n\n
\n
\n
\n
\n \n \n \n
\n \n\n \n \n
\n

\n {{ \"forgotPassword.noEmailReceived\" | translate }}\n {{ \"forgotPassword.resend\" | translate }}\n

\n
\n \n
\n \n \n \n {{\n \"forgotPassword.errorMessage.codeRequired\" | translate\n }}\n
\n
\n
\n
\n \n \n \n
\n
\n
\n
\n
    \n
  • \n \n
  • \n
\n
\n

\n {{ \"forgotPassword.title\" | translate }}\n

\n
\n {{\n \"profile.updatePassword.newPassword\" | translate\n }}\n *\n
\n \n \n \n {{ \"password.show\" | translate }} \n
\n \n {{ \"password.cash\" | translate }}\n
\n \n {{\n \"authentication.errorMessage.passwordInvalid\"\n | translate\n }}\n
    \n
  • \n - {{ \"password.pattern.validator1\" | translate }}\n
  • \n
  • \n - {{ \"password.pattern.validator2\" | translate }}\n
  • \n
  • \n - {{ \"password.pattern.validator3\" | translate }}\n
  • \n
\n
\n
\n
\n
\n
\n \n {{\n \"authentication.errorMessage.passwordInvalid\"\n | translate\n }}\n
    \n
  • \n - {{ \"password.pattern.validator1\" | translate }}\n
  • \n
  • \n - {{ \"password.pattern.validator2\" | translate }}\n
  • \n
  • \n - {{ \"password.pattern.validator3\" | translate }}\n
  • \n
\n
\n \n \n
\n \n \n \n
\n \n
\n

\n {{ \"forgotPassword.backToLogin\" | translate }}\n \n {{ \"login.signInButton\" | translate }}\n

\n \n \n \n \n \n \n\n","import { Component, OnInit } from \"@angular/core\";\nimport { FormBuilder, FormGroup, Validators } from \"@angular/forms\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport { select, Store } from \"@ngrx/store\";\nimport { Observable, takeUntil } from \"rxjs\";\nimport { BaseComponent } from \"src/app/base.component\";\nimport { AppStateInterface } from \"src/app/store/appState.interface\";\nimport {\n invokeCheckTokenForResetPassword,\n invokeForgotPassword,\n invokeResetPassword,\n setForgotPasswordSuccess,\n setResetPassword,\n userSuccessMessage,\n} from \"src/app/store/user/user.actions\";\nimport {\n sendForgetPasswordLoaderSelector,\n forgotPasswordSuccesSelector,\n forgotPasswordFailedSelector,\n checkTokenForResetPasswordSuccessSelector,\n userSuccessMessageSelector,\n} from \"src/app/store/user/user.selectors\";\nimport { SuccessDto } from \"src/app/shared/models/success-dto\";\nimport { ToastrService } from \"ngx-toastr\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { ApiStateInterface } from \"src/app/store/apiState.interface\";\nimport { MustMatch } from \"src/app/shared/validators/passwordMatch\";\nimport { Location } from \"@angular/common\";\n\n@Component({\n selector: \"app-forget-password\",\n templateUrl: \"./forget-password.component.html\",\n styleUrls: [\"./forget-password.component.scss\"],\n})\nexport class ForgetPasswordComponent extends BaseComponent implements OnInit {\n public showPassword: boolean = false;\n public showConfirmPassword: boolean = false;\n formForgotPasswordStep1: FormGroup;\n formResetPasswordStep2: FormGroup;\n error: string | null = null;\n public validate = false;\n step = 1;\n submitted: boolean;\n emailStep: boolean = false;\n\n successResetPassword: string | null;\n forgotPasswordSuccess$: Observable;\n sendEmail: string | null;\n mailSended: boolean = false;\n sendEmailLoader$: Observable;\n forgotPasswordFailed$: Observable;\n checkTokenForResetPassword$: Observable;\n success$: Observable;\n loading: boolean = false;\n\n constructor(\n private fb: FormBuilder,\n private store: Store,\n private router: Router,\n private translate: TranslateService,\n private toastr: ToastrService,\n private location: Location\n ) {\n super(store);\n this.sendEmailLoader$ = this.store\n .pipe(select(sendForgetPasswordLoaderSelector))\n .pipe(takeUntil(this.ngDestroyed$));\n\n this.forgotPasswordSuccess$ = this.store\n .pipe(select(forgotPasswordSuccesSelector))\n .pipe(takeUntil(this.ngDestroyed$));\n this.forgotPasswordFailed$ = this.store\n .pipe(select(forgotPasswordFailedSelector))\n .pipe(takeUntil(this.ngDestroyed$));\n\n this.checkTokenForResetPassword$ = this.store\n .pipe(select(checkTokenForResetPasswordSuccessSelector))\n .pipe(takeUntil(this.ngDestroyed$));\n this.success$ = this.store\n .pipe(select(userSuccessMessageSelector))\n .pipe(takeUntil(this.ngDestroyed$));\n\n this.formForgotPasswordStep1 = this.fb.group({\n email: [null, [Validators.required, Validators.email]],\n });\n this.formResetPasswordStep2 = this.fb.group(\n {\n token: [null, Validators.required],\n password: [\n null,\n [\n Validators.required,\n Validators.pattern(\"^(?=.*[a-zA-Z])(?=.*[0-9]).{8,}$\"),\n Validators.minLength(8),\n Validators.maxLength(32),\n ],\n ],\n confirmPassword: [\n null,\n [\n Validators.required,\n Validators.pattern(\"^(?=.*[a-zA-Z])(?=.*[0-9]).{8,}$\"),\n Validators.minLength(8),\n Validators.maxLength(32),\n ],\n ],\n },\n {\n validator: MustMatch(\"password\", \"confirmPassword\"),\n }\n );\n }\n get email() {\n return this.formForgotPasswordStep1.get(\"email\");\n }\n get token() {\n return this.formResetPasswordStep2.get(\"token\");\n }\n get password() {\n return this.formResetPasswordStep2.get(\"password\");\n }\n get confirmPassword() {\n return this.formResetPasswordStep2.get(\"confirmPassword\");\n }\n\n ngOnInit(): void {\n this.forgotPasswordFailed$.subscribe((value) => {\n if (value) {\n this.loading = false;\n }\n });\n this.forgotPasswordSuccess$.subscribe((result: SuccessDto | null) => {\n if (result != null) {\n this.sendEmail = result?.message;\n this.store.dispatch(setForgotPasswordSuccess({ successMessage: null }));\n this.mailSended = true;\n this.toastr.success(\n this.translate.instant(\"response.success.\" + this.sendEmail),\n this.translate.instant(\"response.successTitle\")\n );\n }\n });\n\n this.checkTokenForResetPassword$.subscribe((success) => {\n if (success) {\n this.step++;\n this.store.dispatch(setResetPassword({ successMessage: null }));\n }\n });\n this.success$.subscribe((success: SuccessDto | null) => {\n if (success) {\n this.toastr.success(\n this.translate.instant(\"response.success.\" + success.message),\n this.translate.instant(\"response.successTitle\")\n );\n\n this.store.dispatch(userSuccessMessage({ successMessage: null }));\n setTimeout(() => {\n window.location.href =\n this.location.prepareExternalUrl(\"/auth/login\");\n }, 3000);\n }\n });\n }\n clickShowPassword() {\n this.showPassword = !this.showPassword;\n }\n clickShowConfirmPassword() {\n this.showConfirmPassword = !this.showConfirmPassword;\n }\n forgotPasswordStep1(event: any) {\n this.emailStep = true;\n this.validate = this.formForgotPasswordStep1.invalid;\n if (!this.validate) {\n let forgotPassword = this.formForgotPasswordStep1.value;\n this.store.dispatch(\n invokeForgotPassword({\n email: forgotPassword.email.toLowerCase(),\n })\n );\n }\n }\n\n nextStep() {\n this.store.dispatch(\n invokeCheckTokenForResetPassword({\n email: this.formForgotPasswordStep1.value.email.toLowerCase(),\n token: this.formResetPasswordStep2.value.token,\n })\n );\n }\n\n resetPasswordStep2(event: any) {\n this.validate = this.formResetPasswordStep2.invalid;\n if (\n !this.validate &&\n this.formResetPasswordStep2.value.password ===\n this.formResetPasswordStep2.value.confirmPassword\n ) {\n let resetPasswordStep2 = this.formResetPasswordStep2.value;\n this.store.dispatch(\n invokeResetPassword({\n password: resetPasswordStep2.password,\n token: resetPasswordStep2.token,\n })\n );\n this.submitted = true;\n }\n }\n}\n","import { HttpClient } from \"@angular/common/http\";\nimport { Injectable } from \"@angular/core\";\nimport { Observable } from \"rxjs\";\nimport { environment } from \"src/environments/environment\";\nimport { Constants } from \"../data/constants\";\n\n@Injectable({\n providedIn: \"root\",\n})\nexport class RecaptchaService {\n constructor(private http: HttpClient) {}\n\n validateCaptcha(captchaResponse: string): Observable {\n return this.http.post(\n `${environment.APP_PORT + Constants.RECAPTCHA}`,\n captchaResponse\n );\n }\n}\n","\n \n \n \n\n","import {\n ChangeDetectorRef,\n Component,\n ElementRef,\n NgZone,\n OnDestroy,\n OnInit,\n Renderer2,\n ViewChild,\n} from \"@angular/core\";\nimport { FormBuilder, FormGroup, Validators } from \"@angular/forms\";\nimport { Router } from \"@angular/router\";\nimport { select, Store } from \"@ngrx/store\";\nimport { BehaviorSubject, Observable, takeUntil } from \"rxjs\";\nimport { BaseComponent } from \"src/app/base.component\";\nimport { Account } from \"src/app/shared/models/user/account\";\nimport { AppStateInterface } from \"src/app/store/appState.interface\";\nimport {\n invokeAccount,\n invokeLogin,\n loginSuccess,\n} from \"src/app/store/auth/auth.actions\";\nimport {\n accountSelector,\n authLoadingSelector,\n userIsLoggedInSelector,\n} from \"src/app/store/auth/auth.selectors\";\nimport { AdvertiserDetailsInterface } from \"src/app/shared/models/advertiser/profile.interface\";\nimport { NavigatorService } from \"src/app/shared/services/navigator/navigator.service\";\nimport { NgbPopover } from \"@ng-bootstrap/ng-bootstrap\";\nimport { environment } from \"src/environments/environment\";\nimport { RecaptchaService } from \"src/app/shared/services/recaptcha.service\";\nimport { LanguageInterface } from \"src/app/shared/data/languages\";\nimport { languageSelector } from \"src/app/store/settings/settings.selectors\";\n\n@Component({\n selector: \"app-login\",\n templateUrl: \"./login.component.html\",\n styleUrls: [\"./login.component.scss\"],\n})\nexport class LoginComponent extends BaseComponent implements OnInit {\n @ViewChild(NgbPopover, { static: true }) popover: NgbPopover;\n isSuccess$: Observable;\n\n loading$: Observable;\n loading: boolean | null = false;\n submitted: boolean;\n account$: Observable;\n advertiserInfo$: Observable;\n advertisser: AdvertiserDetailsInterface;\n public validate = false;\n\n form: FormGroup;\n\n public show: boolean = false;\n apiStatus: string;\n\n ipAddress: string | null = null;\n\n reCaptchaKey = environment.RECAPTCHA_PUBLIC_KEY;\n isValidateCaptcha: boolean | null = null;\n\n getLanguage$: Observable;\n actualLang: string;\n\n @ViewChild(\"recaptchaContainer\", { static: true })\n recaptchaContainer!: ElementRef;\n\n scriptId = \"recaptcha-script\"; // ID unique pour le script reCAPTCHA\n recaptchaContainerId = \"recaptcha-container\";\n constructor(\n private fb: FormBuilder,\n private router: Router,\n private store: Store,\n private nagivatorService: NavigatorService,\n private captchaService: RecaptchaService,\n private cdRef: ChangeDetectorRef,\n private ngZone: NgZone\n ) {\n super(store);\n\n this.isSuccess$ = this.store\n .pipe(select(userIsLoggedInSelector))\n .pipe(takeUntil(this.ngDestroyed$));\n this.loading$ = this.store\n .pipe(select(authLoadingSelector))\n .pipe(takeUntil(this.ngDestroyed$));\n this.account$ = this.store\n .pipe(select(accountSelector))\n .pipe(takeUntil(this.ngDestroyed$));\n this.getLanguage$ = this.store\n .pipe(select(languageSelector))\n .pipe(takeUntil(this.ngDestroyed$));\n\n this.form = this.fb.group({\n email: [\"\", [Validators.required, Validators.email]],\n password: [\n null,\n [\n Validators.required,\n Validators.minLength(8),\n Validators.maxLength(32),\n Validators.pattern(\"^(?=.*?[A-Za-z])(?=.*?[0-9])(?!.*?\\\\s).{8,}$\"),\n ],\n ],\n });\n }\n\n ngOnInit(): void {\n this.getLanguage$.subscribe((lang) => {\n this.actualLang = lang.key;\n this.loadRecaptchaScript(this.actualLang);\n });\n\n this.nagivatorService.getIpAddress().subscribe((res: any) => {\n this.ipAddress = res.ip;\n });\n\n this.isSuccess$.subscribe((token) => {\n if (token != null) {\n localStorage.setItem(\"token\", token);\n this.store.dispatch(invokeAccount());\n } else {\n this.store.dispatch(loginSuccess({ token: null }));\n }\n });\n this.loading$.subscribe((loading) => {});\n this.account$.subscribe((account) => {\n if (account?.role && account.user) {\n this.router.navigate([\"dashboard\"]);\n }\n });\n }\n\n // an acceptable version\n loadRecaptchaScript(lang: string): void {\n const existingScript = document.getElementById(this.scriptId);\n if (existingScript) {\n existingScript.remove();\n }\n const parentContainer = document.getElementById(\"recaptcha-parent\");\n if (parentContainer) {\n const oldContainer = document.getElementById(\"recaptcha-container\");\n if (oldContainer) {\n oldContainer.remove();\n }\n const newContainer = document.createElement(\"div\");\n newContainer.id = \"recaptcha-container\";\n parentContainer.appendChild(newContainer);\n }\n const script = document.createElement(\"script\");\n script.id = this.scriptId;\n script.src = `https://www.google.com/recaptcha/api.js?render=explicit&hl=${lang}`;\n script.async = true;\n script.defer = true;\n\n script.onload = () => {\n this.renderRecaptchaWidget();\n };\n\n document.body.appendChild(script);\n }\n\n renderRecaptchaWidget(): void {\n const recaptchaContainer = document.getElementById(\"recaptcha-container\");\n if (recaptchaContainer) {\n (window as any).grecaptcha.ready(() => {\n (window as any).grecaptcha.render(\"recaptcha-container\", {\n sitekey: this.reCaptchaKey,\n callback: (response: string) => {\n this.isValidateCaptcha = true;\n this.cdRef.detectChanges()\n },\n \"expired-callback\": () => {\n this.isValidateCaptcha = false;\n this.cdRef.detectChanges()\n },\n \"error-callback\": () => {\n this.isValidateCaptcha = false;\n this.cdRef.detectChanges()\n },\n });\n });\n }\n }\n /*recaptchaInstance: any = null;\n\n loadRecaptchaScript(lang: string): void {\n // Supprimer complètement le script reCAPTCHA existant et l'élément DOM associé\n this.removeRecaptchaScript().then(() => {\n const recaptchaContainer = document.getElementById(\n this.recaptchaContainerId\n );\n if (recaptchaContainer) {\n // Crée un nouvel élément pour remplacer l'ancien conteneur\n const newRecaptchaContainer = document.createElement(\"div\");\n newRecaptchaContainer.id = this.recaptchaContainerId;\n recaptchaContainer.replaceWith(newRecaptchaContainer);\n }\n\n // Créer un nouveau script pour reCAPTCHA\n const script = document.createElement(\"script\");\n script.id = this.scriptId;\n script.src = `https://www.google.com/recaptcha/api.js?render=explicit&hl=${lang}`;\n script.async = true;\n script.defer = true;\n script.onload = () => {\n this.renderRecaptchaWidget();\n };\n script.onerror = () => {\n console.error(\"Erreur de chargement du script\");\n };\n\n document.body.appendChild(script); // Ajouter le script à la page\n });\n }\n\n removeRecaptchaScript(): Promise {\n return new Promise((resolve) => {\n const existingScript = document.getElementById(this.scriptId);\n if (existingScript) {\n // Réinitialiser le widget reCAPTCHA existant avant de retirer le script\n if (this.recaptchaInstance) {\n (window as any).grecaptcha.reset(this.recaptchaInstance);\n this.recaptchaInstance = null; // Réinitialiser l'instance pour permettre une nouvelle création\n }\n existingScript.remove();\n }\n resolve();\n });\n }\n\n renderRecaptchaWidget(): void {\n const recaptchaContainer = document.getElementById(\n this.recaptchaContainerId\n );\n\n if (recaptchaContainer) {\n // Vérifier si un widget existe déjà et le supprimer\n if (this.recaptchaInstance) {\n (window as any).grecaptcha.reset(this.recaptchaInstance);\n this.recaptchaInstance = null; // Réinitialiser l'instance pour permettre une nouvelle création\n }\n\n (window as any).grecaptcha.ready(() => {\n console.log(\"reCAPTCHA prêt\");\n this.recaptchaInstance = (window as any).grecaptcha.render(\n this.recaptchaContainerId,\n {\n sitekey: this.reCaptchaKey,\n callback: (response: string) => {\n console.log(\"reCAPTCHA résolu:\", response);\n },\n \"expired-callback\": () => {\n console.log(\"reCAPTCHA expiré.\");\n },\n \"error-callback\": () => {\n console.error(\"Erreur avec reCAPTCHA.\");\n },\n }\n );\n });\n } else {\n console.error(\"Conteneur reCAPTCHA introuvable\");\n }\n }*/\n \n get email() {\n return this.form.get(\"email\");\n }\n get password() {\n return this.form.get(\"password\");\n }\n\n login(event: any) {\n this.submitted = true;\n this.loading = true;\n this.validate = !this.form.valid;\n if (this.form.valid) {\n this.loading = true;\n let user = this.form.value;\n this.store.dispatch(\n invokeLogin({\n email: user.email.toLowerCase(),\n password: user.password,\n ipAddress: this.ipAddress,\n })\n );\n }\n if (this.form.invalid) {\n return;\n }\n }\n showPassword() {\n this.show = !this.show;\n }\n\n resolved(token: string) {\n if (token) {\n this.isValidateCaptcha = true;\n }\n this.captchaService.validateCaptcha(token).subscribe({\n next: (response) => {\n //this.isValidateCaptcha = response;\n console.log(\"isValidateCaptcha\", response);\n },\n });\n }\n\n onExpired() {\n this.isValidateCaptcha = false;\n }\n\n onError() {\n this.isValidateCaptcha = false;\n }\n\n getToken(token: any) {\n console.log(token);\n }\n}\n","
\n \n
\n {{ \"register.personalInformations.title\" | translate }}\n
\n
\n
\n {{ \"register.personalInformations.firstName\" | translate }} *\n
\n
\n
\n \n \"icone\n \n \n \n {{\n \"register.personalInformations.errorMessage.firstNameLength\"\n | translate\n }}\n
\n
\n
\n \n \"icone\n \n \n \n {{\n \"register.personalInformations.errorMessage.lastNameLength\"\n | translate\n }}\n
\n
\n \n \n
\n \n
\n \n \"icone\n \n \n \n {{ \"authentication.errorMessage.emailInvalid\" | translate }}\n
\n
\n \n
\n \n
\n \n \"icone\n \n \n \n {{ \"register.personalInformations.errorMessage.phoneRequired\" | translate }}\n
\n
\n \n
\n \n
\n \n \n {{ \"authentication.errorMessage.passwordInvalid\" | translate }}\n
    \n
  • - {{ \"password.pattern.validator1\" | translate }}
  • \n
  • - {{ \"password.pattern.validator2\" | translate }}
  • \n
  • - {{ \"password.pattern.validator3\" | translate }}
  • \n
\n
\n \n {{ \"password.show\" | translate }} \n
\n
\n {{ \"password.cash\" | translate }}\n
\n \n \n
\n \n
\n \n \n {{ \"authentication.errorMessage.passwordInvalid\" | translate }}\n
    \n
  • - {{ \"password.pattern.validator1\" | translate }}
  • \n
  • - {{ \"password.pattern.validator2\" | translate }}
  • \n
  • - {{ \"password.pattern.validator3\" | translate }}
  • \n
\n
\n \n {{ \"password.show\" | translate }} \n
\n \n {{ \"password.cash\" | translate }}\n \n \n \n\n","import { Component, Input, OnInit } from \"@angular/core\";\nimport { FormGroup } from \"@angular/forms\";\nimport { Store } from \"@ngrx/store\";\nimport { Observable } from \"rxjs\";\nimport { BaseComponent } from \"src/app/base.component\";\nimport { AppStateInterface } from \"src/app/store/appState.interface\";\n\n@Component({\n selector: \"app-personal-information\",\n templateUrl: \"./personal-information.component.html\"\n})\nexport class PersonalInformationComponent\n extends BaseComponent\n implements OnInit\n{\n submitted: boolean = false;\n\n public showPassword: boolean = false;\n public showConfirmPassword: boolean = false;\n\n @Input(\"form\") form: FormGroup;\n @Input(\"personalInformationSubmitted\")\n personalInformationSubmitted: Observable;\n\n constructor(private store: Store) {\n super(store);\n }\n\n ngOnInit(): void {\n this.personalInformationSubmitted.subscribe((data) => {\n if (data) {\n this.form.get(\"firstName\")!.markAsTouched();\n this.form.get(\"firstName\")!.updateValueAndValidity();\n\n this.form.get(\"lastName\")!.markAsTouched();\n this.form.get(\"lastName\")!.updateValueAndValidity();\n\n this.form.get(\"email\")!.markAsTouched();\n this.form.get(\"email\")!.updateValueAndValidity();\n\n this.form.get(\"phone\")!.markAsTouched();\n this.form.get(\"phone\")!.updateValueAndValidity();\n\n this.form.get(\"password\")!.markAsTouched();\n this.form.get(\"password\")!.updateValueAndValidity();\n\n this.form.get(\"confirmPassword\")!.markAsTouched();\n this.form.get(\"confirmPassword\")!.updateValueAndValidity();\n }\n });\n }\n\n clickShowPassword() {\n this.showPassword = !this.showPassword;\n }\n\n clickShowConfirmPassword() {\n this.showConfirmPassword = !this.showConfirmPassword;\n }\n}\n","
\n \n
\n
\n {{ \"register.businessInformations.title\" | translate }}\n
\n
\n \n
\n {{ \"register.businessInformations.companyAddress\" | translate }} *\n
\n \n \"icone\n \n \n \n {{\n \"register.businessInformations.errorMessage.companyAddress\"\n | translate\n }}\n
\n
\n \n
\n \n
\n \n \"icone\n \n \n \n \n {{ companyActivity.title }}\n \n \n {{\n \"register.businessInformations.errorMessage.companyActivity\"\n | translate\n }}\n
\n \n
\n \n
\n {{ \"register.businessInformations.companyRole\" | translate }} *\n
\n \n \n \n \n \n {{\n \"register.businessInformations.errorMessage.companyRole\"\n | translate\n }}\n
\n
\n \n
\n \n
\n \n \n \"icone\n \n \n \n
    \n
  • \n {{\n \"register.businessInformations.errorMessage.webSite\" | translate\n }}\n
  • \n
\n
\n
\n \n
\n
\n \n \n
\n
\n
\n","import { Component, Input, OnInit } from \"@angular/core\";\nimport { FormGroup } from \"@angular/forms\";\nimport { Observable } from \"rxjs\";\nimport { IberisActivities } from \"src/app/shared/models/iberis/activities\";\nimport { environment } from \"src/environments/environment\";\n\n@Component({\n selector: \"app-business-information\",\n templateUrl: \"./business-information.component.html\",\n})\nexport class BusinessInformationComponent implements OnInit {\n @Input(\"form\") form: FormGroup;\n @Input(\"CompanyActivity\") CompanyActivity: IberisActivities[];\n @Input(\"businessInformationSubmitted\")\n businessInformationSubmitted: Observable;\n submitted: boolean = false;\n termsOfUse = environment.links.termsOfUse\n constructor() {}\n ngOnInit(): void {\n this.businessInformationSubmitted.subscribe((data) => {\n if (data) {\n this.form.get(\"companyName\")!.markAsTouched();\n this.form.get(\"companyName\")!.updateValueAndValidity();\n\n this.form.get(\"companyAddress\")!.markAsTouched();\n this.form.get(\"companyAddress\")!.updateValueAndValidity();\n\n this.form.get(\"companyActivity\")!.markAsTouched();\n this.form.get(\"companyActivity\")!.updateValueAndValidity();\n\n this.form.get(\"acceptTerms\")!.markAsTouched();\n this.form.get(\"acceptTerms\")!.updateValueAndValidity();\n }\n });\n }\n}\n","import {\n ChangeDetectorRef,\n Component,\n EventEmitter,\n OnInit,\n Output,\n ViewChild,\n} from \"@angular/core\";\nimport {\n FormBuilder,\n FormControl,\n FormGroup,\n Validators,\n} from \"@angular/forms\";\nimport { Router } from \"@angular/router\";\nimport { select, Store } from \"@ngrx/store\";\nimport { Observable, takeUntil } from \"rxjs\";\nimport { BaseComponent } from \"src/app/base.component\";\nimport { Account } from \"src/app/shared/models/user/account\";\nimport {\n invokeRegister,\n registerSuccess,\n} from \"src/app/store/advertiser/advertiser.actions\";\nimport {\n advertiserSuccessRegister,\n advertisserAccountSelector,\n confirmEmailSelectorSuccess,\n createAdvertiserSelector,\n} from \"src/app/store/advertiser/advertiser.selectors\";\nimport { AppStateInterface } from \"src/app/store/appState.interface\";\nimport { checkUserExistByEmailSelector } from \"src/app/store/user/user.selectors\";\nimport { MustMatch } from \"src/app/shared/validators/passwordMatch\";\nimport { SuccessDto } from \"src/app/shared/models/success-dto\";\nimport { Register } from \"src/app/shared/models/advertiser/register.interface\";\nimport { ToastrService } from \"ngx-toastr\";\nimport { RoleEnum } from \"src/app/shared/models/user/role.interface\";\nimport { LangChangeEvent, TranslateService } from \"@ngx-translate/core\";\nimport { IberisActivities } from \"src/app/shared/models/iberis/activities\";\nimport { Constants } from \"src/app/shared/data/constants\";\nimport {\n invokeCheckIfExistByEmail,\n setCheckUserExistsByEmail,\n} from \"src/app/store/user/user.actions\";\nimport { WizardComponent } from \"angular-archwizard\";\nimport { invokeNotifyAdminWhenAdvertiserCreated } from \"src/app/store/mailing/mailing.actions\";\nimport { environment } from \"src/environments/environment\";\nimport { RecaptchaService } from \"src/app/shared/services/recaptcha.service\";\nimport { languageSelector } from \"src/app/store/settings/settings.selectors\";\nimport { LanguageInterface } from \"src/app/shared/data/languages\";\n\n@Component({\n selector: \"app-register\",\n templateUrl: \"./register.component.html\",\n styleUrls: [\"./register.component.scss\"],\n})\nexport class RegisterComponent extends BaseComponent implements OnInit {\n registrationForm: FormGroup;\n\n @Output() businessInformationSubmitted = new EventEmitter(false);\n @Output() personalInformationSubmitted = new EventEmitter(false);\n\n successMessage$: Observable;\n registerSuccess: string | null;\n account$: Observable;\n isExist$: Observable;\n isExist: boolean | null;\n error: string | null = null;\n loading: boolean | null = false;\n submitted: boolean;\n\n companyActivity: IberisActivities[];\n\n confirmEmailForRegistration$: Observable;\n confirmEmail: any | null;\n\n registerAdvertiser: Register = {\n email: \"\",\n password: \"\",\n resetToken: \"\",\n iberis: \"\",\n };\n @ViewChild(\"wizard\") wizard: WizardComponent;\n createAdvertiser$: Observable;\n\n reCaptchaKey = environment.RECAPTCHA_PUBLIC_KEY;\n isValidateCaptcha: boolean | null = null;\n\n scriptId = \"recaptcha-script\"; // ID unique pour le script reCAPTCHA\n recaptchaContainerId = \"recaptcha-container\";\n getLanguage$: Observable;\n actualLang: string;\n constructor(\n private fb: FormBuilder,\n private router: Router,\n private store: Store,\n private toastr: ToastrService,\n private translate: TranslateService,\n private captchaService: RecaptchaService,\n private cdRef: ChangeDetectorRef,\n ) {\n super(store);\n this.getLanguage$ = this.store\n .pipe(select(languageSelector))\n .pipe(takeUntil(this.ngDestroyed$));\n this.successMessage$ = this.store\n .pipe(select(advertiserSuccessRegister))\n .pipe(takeUntil(this.ngDestroyed$));\n this.account$ = this.store\n .pipe(select(advertisserAccountSelector))\n .pipe(takeUntil(this.ngDestroyed$));\n this.isExist$ = this.store\n .pipe(select(checkUserExistByEmailSelector))\n .pipe(takeUntil(this.ngDestroyed$));\n this.confirmEmailForRegistration$ = this.store\n .pipe(select(confirmEmailSelectorSuccess))\n .pipe(takeUntil(this.ngDestroyed$));\n this.createAdvertiser$ = this.store\n .pipe(select(createAdvertiserSelector))\n .pipe(takeUntil(this.ngDestroyed$));\n this.registrationForm = this.fb.group({\n personalInformation: this.fb.group(\n {\n email: new FormControl(null, [\n Validators.required,\n Validators.email,\n Validators.pattern(\n \"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,4}$\"\n ),\n ]),\n password: new FormControl(null, [\n Validators.required,\n Validators.pattern(\"^(?=.*[a-zA-Z])(?=.*[0-9]).{8,}$\"),\n Validators.minLength(8),\n Validators.maxLength(32),\n ]),\n lastName: [\n null,\n [\n Validators.required,\n Validators.minLength(3),\n Validators.maxLength(30),\n ],\n ],\n firstName: [\n null,\n [\n Validators.required,\n Validators.minLength(3),\n Validators.maxLength(30),\n ],\n ],\n //logo: [null],\n phone: [\n null,\n [Validators.required, Validators.pattern(\"^(?=.*?[0-9]).{8}$\")],\n ],\n confirmPassword: new FormControl(null, [\n Validators.required,\n Validators.pattern(\"^(?=.*[a-zA-Z])(?=.*[0-9]).{8,}$\"),\n Validators.minLength(8),\n Validators.maxLength(32),\n ]),\n },\n {\n validator: MustMatch(\"password\", \"confirmPassword\"),\n }\n ),\n businessInformation: this.fb.group({\n companyName: new FormControl(null, [Validators.required]),\n companyActivity: new FormControl(null, [Validators.required]),\n website: new FormControl(null, [\n Validators.pattern(\n \"^(?=.*?(https://.))(?=.*?[-a-zA-Z0-9@:%_+.~#?&/=]).{11,}$\"\n ),\n Validators.required,\n ]),\n companyAddress: new FormControl(null, [Validators.required]),\n companyRole: new FormControl(null, [Validators.required]),\n acceptTerms: new FormControl(null, Validators.requiredTrue),\n }),\n resetToken: new FormControl(null, Validators.required),\n });\n }\n\n ngOnInit(): void {\n this.getLanguage$.subscribe((lang) => {\n this.actualLang = lang.key;\n this.loadRecaptchaScript(this.actualLang);\n });\n this.isExist$.subscribe((data) => {\n if (data != null) {\n this.isExist = data;\n if (data == false) {\n this.wizard.goToNextStep();\n }\n if (data) {\n this.toastr.error(\n this.translate.instant(\"response.error.email-exist\"),\n this.translate.instant(\"response.errorTitle\")\n );\n }\n this.store.dispatch(setCheckUserExistsByEmail({ isExist: null }));\n }\n });\n this.businessInformationSubmitted.emit(false);\n this.personalInformationSubmitted.emit(false);\n\n this.successMessage$.subscribe((result: SuccessDto | null) => {\n if (result != null) {\n this.redirection();\n this.registerSuccess = result.message;\n }\n });\n\n this.account$.subscribe((result) => {\n if (result) {\n this.router.navigate([\"../login\"]);\n }\n });\n if (this.translate.currentLang == \"fr\")\n this.companyActivity = Constants.IBERIS_ACTIVITIES_FR;\n else this.companyActivity = Constants.IBERIS_ACTIVITIES_EN;\n\n this.translate.onLangChange.subscribe(\n (langChangeEvent: LangChangeEvent) => {\n if (langChangeEvent.lang == \"fr\")\n this.companyActivity = Constants.IBERIS_ACTIVITIES_FR;\n else this.companyActivity = Constants.IBERIS_ACTIVITIES_EN;\n }\n );\n\n this.confirmEmailForRegistration$.subscribe((result) => {\n if (result != null) {\n this.confirmEmail = result;\n }\n });\n\n this.createAdvertiser$.subscribe((data) => {\n if (data) {\n this.store.dispatch(\n invokeNotifyAdminWhenAdvertiserCreated({\n email: this.registrationForm\n .get(\"personalInformation\")\n ?.get(\"email\")\n ?.value.toLowerCase(),\n firstName: this.registrationForm\n .get(\"personalInformation\")\n ?.get(\"firstName\")?.value,\n lastName: this.registrationForm\n .get(\"personalInformation\")\n ?.get(\"lastName\")?.value,\n })\n );\n this.store.dispatch(registerSuccess({ successMessage: null }));\n }\n });\n }\n\n sendConfirmEmail() {\n this.businessInformationSubmitted.emit(true);\n if (this.isExist == false) {\n let advertiser: any = {\n firstName: this.registrationForm\n .get(\"personalInformation\")\n ?.get(\"firstName\")?.value,\n lastName: this.registrationForm\n .get(\"personalInformation\")\n ?.get(\"lastName\")?.value,\n email: this.registrationForm\n .get(\"personalInformation\")\n ?.get(\"email\")\n ?.value.toLowerCase(),\n phone: this.registrationForm.get(\"personalInformation\")?.get(\"phone\")\n ?.value,\n password: this.registrationForm\n .get(\"personalInformation\")\n ?.get(\"password\")?.value,\n website: this.registrationForm\n .get(\"businessInformation\")\n ?.get(\"website\")?.value,\n companyName: this.registrationForm\n .get(\"businessInformation\")\n ?.get(\"companyName\")?.value,\n companyActivity: this.registrationForm\n .get(\"businessInformation\")\n ?.get(\"companyActivity\")?.value,\n companyAddress: this.registrationForm\n .get(\"businessInformation\")\n ?.get(\"companyAddress\")?.value,\n roleName: RoleEnum.ROLE_ADVERTISER,\n companyRole: this.registrationForm\n .get(\"businessInformation\")\n ?.get(\"companyRole\")?.value,\n };\n this.store.dispatch(invokeRegister({ advertiser: advertiser }));\n }\n }\n register() {\n this.error = \"\";\n if (this.registrationForm.get(\"personalInformation\")?.get(\"email\")?.value) {\n this.registerAdvertiser.email = this.registrationForm\n .get(\"personalInformation\")\n ?.get(\"email\")\n ?.value.toLowerCase();\n }\n (this.registerAdvertiser.password = this.registrationForm\n .get(\"personalInformation\")\n ?.get(\"password\")?.value),\n (this.registerAdvertiser.resetToken =\n this.registrationForm.get(\"resetToken\")?.value);\n\n this.loading = true;\n }\n\n redirection() {\n setTimeout(() => {\n this.router.navigate([\"/auth/login\"]);\n }, 30000);\n }\n\n nextStep() {\n this.store.dispatch(\n invokeCheckIfExistByEmail({\n email: this.registrationForm\n .get(\"personalInformation\")\n ?.get(\"email\")\n ?.value.toLowerCase(),\n })\n );\n }\n\n resolved(token: string) {\n this.captchaService.validateCaptcha(token).subscribe({\n next: (response) => {\n //this.isValidateCaptcha = response;\n console.log(\"isValidateCaptcha\", this.isValidateCaptcha);\n },\n });\n if (token) {\n this.isValidateCaptcha = true;\n }\n }\n\n onExpired() {\n this.isValidateCaptcha = false;\n console.log(this.isValidateCaptcha);\n }\n\n onError(log: any) {\n console.log(\"error \", log);\n }\n\n loadRecaptchaScript(lang: string): void {\n const existingScript = document.getElementById(this.scriptId);\n if (existingScript) {\n existingScript.remove();\n }\n\n const parentContainer = document.getElementById(\"recaptcha-parent\");\n if (parentContainer) {\n const oldContainer = document.getElementById(\"recaptcha-container\");\n if (oldContainer) {\n oldContainer.remove();\n }\n\n const newContainer = document.createElement(\"div\");\n newContainer.id = \"recaptcha-container\";\n parentContainer.appendChild(newContainer);\n }\n\n const script = document.createElement(\"script\");\n script.id = this.scriptId;\n script.src = `https://www.google.com/recaptcha/api.js?render=explicit&hl=${lang}`;\n script.async = true;\n script.defer = true;\n\n script.onload = () => {\n this.renderRecaptchaWidget();\n };\n\n document.body.appendChild(script);\n }\n\n renderRecaptchaWidget(): void {\n const recaptchaContainer = document.getElementById(\"recaptcha-container\");\n if (recaptchaContainer) {\n (window as any).grecaptcha.ready(() => {\n (window as any).grecaptcha.render(\"recaptcha-container\", {\n sitekey: this.reCaptchaKey,\n callback: (response: string) => {\n this.isValidateCaptcha = true;\n this.cdRef.detectChanges()\n },\n \"expired-callback\": () => {\n this.isValidateCaptcha = false;\n this.cdRef.detectChanges()\n },\n \"error-callback\": () => {\n this.isValidateCaptcha = false;\n this.cdRef.detectChanges()\n },\n });\n });\n }\n }\n}\n","
\n
\n
\n
\n
\n
\n \n \n
\n
\n \n
\n
    \n
  • \n \n
  • \n
\n
\n

{{ \"register.title\" | translate }}

\n
\n {{ \"register.greeting\" | translate }}\n
\n\n
\n \n \n
\n {{ \"register.advertiserType.title\" | translate }}\n
\n
\n \n \n
\n \n {{ \"buttons.next\" | translate }}\n \n
\n \n \n \n {{ \"buttons.next\" | translate }}\n \n \n {{ \"buttons.return\" | translate }}\n \n \n \n
\n \n
\n
\n
\n
\n \n {{ \"buttons.confirm\" | translate }}\n \n \n {{ \"buttons.return\" | translate }}\n \n
\n \n
\n
\n
\n \n
\n\n
\n {{ \"register.checkEmail\" | translate }}\n
\n \n
\n
\n
\n
\n
\n
\n

\n {{ \"authentication.alreadyRegistered\" | translate\n }}{{\n \"authentication.signIn\" | translate\n }}\n

\n \n
\n
\n
\n
\n\n","
\n
\n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
    \n
  • \n \n
  • \n
\n
\n

{{ \"register.title\" | translate }}

\n
\n {{ \"register.greeting\" | translate }}\n
\n\n
\n \n
\n
\n
\n \n {{ \"fetching\" | translate }}\n \n
\n \n
\n \n
\n\n
\n {{ \"register.confirmEmail.success\" | translate }}\n
\n
\n \n
\n \"\"\n
\n\n
\n {{ \"register.confirmEmail.invalidKey\" | translate }}\n
\n
\n \n {{ \"register.confirmEmail.regenerate\" | translate }}\n \n
\n
\n \n
\n \"\"\n
\n\n
\n {{ \"register.confirmEmail.inexistanceKey\" | translate }}\n
\n
\n \n
\n \n
\n\n
\n {{ \"register.confirmEmail.consultEmail\" | translate }}\n
\n
\n \n
\n \"\"\n
\n\n
\n {{ \"register.confirmEmail.cantRegenerate\" | translate }}\n
\n
\n
\n
\n
\n
\n
\n
\n\n","import { HttpErrorResponse } from \"@angular/common/http\";\nimport { Component, OnInit } from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport { Store, select } from \"@ngrx/store\";\nimport { ToastrService } from \"ngx-toastr\";\nimport { Observable, takeUntil } from \"rxjs\";\nimport { BaseComponent } from \"src/app/base.component\";\nimport { SuccessDto } from \"src/app/shared/models/success-dto\";\nimport { JwtService } from \"src/app/shared/services/jwt.service\";\nimport {\n confirmEmailForRegistrationSuccess,\n invokeConfirmEmail,\n regenerateConfirmRegestration,\n} from \"src/app/store/advertiser/advertiser.actions\";\nimport {\n advertiserLoadingSelector,\n confirmEmailSelectorError,\n confirmEmailSelectorSuccess,\n regenerateConfirmRegestrationFailedSelector,\n regenerateConfirmRegestrationSuccessSelector,\n} from \"src/app/store/advertiser/advertiser.selectors\";\nimport { ApiStateInterface } from \"src/app/store/apiState.interface\";\nimport { AppStateInterface } from \"src/app/store/appState.interface\";\n\n@Component({\n selector: \"app-confirm-email\",\n templateUrl: \"./confirm-email.component.html\",\n styleUrls: [\"./confirm-email.component.scss\"],\n})\nexport class ConfirmEmailComponent extends BaseComponent implements OnInit {\n token: string;\n loading$: Observable;\n\n result: AccountVerificationEnum = AccountVerificationEnum.LOADING;\n enumeration = AccountVerificationEnum;\n\n expired: boolean = false;\n validated: boolean = false;\n notValidated: boolean = false;\n notFound: boolean = false;\n regenerated: boolean = false;\n notRegenerated: boolean = false;\n\n confirmEmailSuccess$: Observable;\n confirmEmailError$: Observable;\n\n regenerationSuccess$: Observable;\n regenerationError$: Observable;\n loading: boolean | null = true;\n\n constructor(\n private route: ActivatedRoute,\n private router: Router,\n private store: Store,\n private toastr: ToastrService,\n private jwtService: JwtService\n ) {\n super(store);\n this.loading$ = this.store\n .pipe(select(advertiserLoadingSelector))\n .pipe(takeUntil(this.ngDestroyed$));\n\n this.confirmEmailSuccess$ = this.store\n .pipe(select(confirmEmailSelectorSuccess))\n .pipe(takeUntil(this.ngDestroyed$));\n this.confirmEmailError$ = this.store\n .pipe(select(confirmEmailSelectorError))\n .pipe(takeUntil(this.ngDestroyed$));\n\n this.regenerationSuccess$ = this.store\n .pipe(select(regenerateConfirmRegestrationSuccessSelector))\n .pipe(takeUntil(this.ngDestroyed$));\n this.regenerationError$ = this.store\n .pipe(select(regenerateConfirmRegestrationFailedSelector))\n .pipe(takeUntil(this.ngDestroyed$));\n }\n\n ngOnInit(): void {\n if (!this.route.snapshot.queryParams[\"token\"]) this.router.navigate([\"/\"]);\n this.token = this.route.snapshot.queryParams[\"token\"];\n this.store.dispatch(invokeConfirmEmail({ token: this.token }));\n\n this.confirmEmailSuccess$.subscribe((success: SuccessDto | null) => {\n if (success) {\n this.result = AccountVerificationEnum.VALIDATED;\n this.validated = true;\n }\n });\n\n this.confirmEmailError$.subscribe((error: ApiStateInterface | null) => {\n if (error) {\n let err: HttpErrorResponse = error.apiResponseMessage;\n if (err.status == 404) this.result = AccountVerificationEnum.NOT_FOUND;\n if (err.status == 500)\n this.result = AccountVerificationEnum.NOT_VALIDATED;\n }\n });\n\n this.regenerationSuccess$.subscribe((success: SuccessDto | null) => {\n if (success) {\n this.result = AccountVerificationEnum.REGENERATED;\n }\n });\n this.regenerationError$.subscribe((error: ApiStateInterface | null) => {\n if (error) {\n let err: HttpErrorResponse = error.apiResponseMessage;\n this.result = AccountVerificationEnum.CANT_REGENERATE;\n }\n });\n\n this.loading$.subscribe((loading: boolean | null) => {\n if (loading) this.result = AccountVerificationEnum.LOADING;\n });\n }\n\n regenerateToken() {\n this.store.dispatch(regenerateConfirmRegestration({ token: this.token }));\n }\n}\n\nexport enum AccountVerificationEnum {\n LOADING,\n NOT_FOUND,\n NOT_VALIDATED,\n CANT_REGENERATE,\n VALIDATED,\n REGENERATED,\n}\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { ForgetPasswordComponent } from './forget-password/forget-password.component';\nimport { LoginComponent } from './login/login.component';\nimport { RegisterComponent } from './register/register.component';\nimport { ConfirmEmailComponent } from './confirm-email/confirm-email.component';\n\nconst routes: Routes = [\n {\n path: '',\n redirectTo: 'login',\n pathMatch: 'full',\n \n },\n {\n path: 'login',\n component: LoginComponent,\n data: {\n title: 'Relead | Boost your business',\n description: 'Relead - reach your potential customers and grow your business through Wi-Fi advertising.'\n }\n },\n {\n path: 'register',\n component: RegisterComponent,\n data: {\n title: 'Sign-up | Relead ',\n description: 'Sign-up now and start advertising with Relead.'\n }\n },\n {\n path: 'advertiser-confirm-email',\n component: ConfirmEmailComponent,\n data: {\n title: 'Sign-up | Relead ',\n description: 'Sign-up now and start advertising with Relead.'\n }\n },\n {\n path: 'forget-password',\n component: ForgetPasswordComponent, data: {\n title: 'Reset your password | Relead',\n description: 'Have you lost the password to your Relead account? Enter your email address, and you should receive an email from us with a reset link.'\n },\n }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule]\n})\nexport class AuthRoutingModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { AuthRoutingModule } from './auth-routing.module';\nimport { LoginComponent } from './login/login.component';\nimport { RegisterComponent } from './register/register.component';\nimport { ForgetPasswordComponent } from './forget-password/forget-password.component';\nimport { SharedModule } from '../shared/shared.module';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { StoreModule } from '@ngrx/store';\nimport { EffectsModule } from '@ngrx/effects';\nimport { AuthEffects } from '../store/auth/auth.effects';\nimport { AuthReducer } from '../store/auth/auth.reducers';\nimport { ArchwizardModule } from 'angular-archwizard';\nimport { PersonalInformationComponent } from './register/personal-information/personal-information.component';\nimport { BusinessInformationComponent } from './register/business-information/business-information.component';\nimport { NgxAbstractControlAsModule } from 'ngx-abstract-control-as';\nimport { NgxMaskModule } from 'ngx-mask';\nimport { ConfirmEmailComponent } from './confirm-email/confirm-email.component';\nimport { NgbPopoverModule } from '@ng-bootstrap/ng-bootstrap';\nimport { RecaptchaFormsModule, RecaptchaModule } from 'ng-recaptcha';\n\n\n@NgModule({\n declarations: [\n LoginComponent,\n RegisterComponent,\n ForgetPasswordComponent,\n PersonalInformationComponent,\n BusinessInformationComponent,\n ConfirmEmailComponent,\n ],\n imports: [\n CommonModule,\n AuthRoutingModule,\n SharedModule,\n FormsModule,\n ReactiveFormsModule,\n NgbPopoverModule,\n ArchwizardModule,\n StoreModule.forFeature('authtState', AuthReducer),\n EffectsModule.forFeature([\n AuthEffects,\n ]),\n NgxAbstractControlAsModule,\n NgxMaskModule.forRoot(),\n RecaptchaModule,\n RecaptchaFormsModule\n ]\n})\nexport class AuthModule { }\n","import { Subject } from \"rxjs\";\nimport { Component, OnDestroy } from \"@angular/core\";\nimport { invokeComponentDistroyed } from \"./store/apiState.interface\";\nimport { Store } from \"@ngrx/store\";\nimport { AppStateInterface } from \"./store/appState.interface\";\n\n@Component({\n selector: \"app-base-component\",\n template: \"\",\n})\nexport class BaseComponent implements OnDestroy {\n ngDestroyed$: Subject = new Subject();\n\n constructor(private storing: Store) {}\n\n ngOnDestroy(): void {\n this.ngDestroyed$.next();\n this.ngDestroyed$.unsubscribe();\n\n this.storing.dispatch(invokeComponentDistroyed());\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\n\n@Pipe({\n name: \"newline\",\n})\nexport class NewlinePipe implements PipeTransform {\n transform(value: string, length: number): string[] {\n if (!value) {\n return [];\n }\n const regex = new RegExp(`.{1,${length}}`, \"g\");\n const chunks = value.match(regex) || [value];\n const lastIndex = chunks.length - 1;\n\n return chunks.map((chunk, index) => (index === lastIndex ? chunk : chunk));\n }\n}\n","
\n

\n {{ \"actions.campaignDetails\" | translate }}\n

\n \n
\n
\n
\n \n

{{ \"undefined\" | translate }}

\n
\n
\n {{ \"campaignDetails.campaignName\" | translate }}\n
\n

\n {{ detailsAd.title }}\n

\n
\n {{ \"campaignDetails.campaignHashedId\" | translate }}\n
\n

\n {{ detailsAd.advertisingCampaignHashedId }}\n

\n
\n {{ \"advertiserEmail\" | translate }}\n
\n

\n {{ detailsAd.emailPublisher }}\n

\n
\n {{ \"campaignDetails.objective\" | translate }}\n
\n

\n {{ \"enumMapping.objectives.\" + detailsAd.objectiveName | translate }}\n

\n
\n {{ \"campaignDetails.location\" | translate }}\n
\n

\n \n

\n {{ item }}\n
\n \n

\n
\n {{ \"campaignDetails.startDate\" | translate }}\n
\n

\n {{ detailsAd.startingDate | localizedDate }}\n

\n
\n {{ \"campaignDetails.endDate\" | translate }}\n
\n

\n {{ detailsAd.endingDate | localizedDate }}\n

\n
\n {{ \"campaignDetails.redirectionLink\" | translate }}\n
\n

\n \n {{ chunk }}
\n \n

\n
\n {{ \"campaignDetails.synthesisReport\" | translate }}\n
\n

\n {{ \"dashboard.showDetails\" | translate }}\n

\n
\n {{ \"campaignDetails.status\" | translate }}\n
\n

\n \n {{ \"enumMapping.campaigns.status.\" + detailsAd.status | translate }}\n \n

\n\n
\n {{ \"campaignDetails.paymentMethod\" | translate }}\n
\n

\n {{ \"enumMapping.adPaymentMethod.\" + detailsAd.paymentMethod | translate }}\n

\n\n
\n {{ \"campaignDetails.totalHT\" | translate }}\n
\n

\n {{ priceHT.toFixed(3) + \" TND\" }}\n

\n \n
\n {{ \"newCampaign.step3.promo\" | translate }}\n
\n

\n {{ \"- \" + discount.toFixed(3) + \" TND\" }}\n

\n\n
\n {{ \"campaignDetails.totalTTC\" | translate }}\n
\n

\n {{ total.toFixed(3) + \" TND\" }}\n

\n
\n
\n
\n \n \n {{ \"buttons.adDetails\" | translate }}\n \n
\n","import {\n ChangeDetectorRef,\n Component,\n Input,\n OnInit,\n} from \"@angular/core\";\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\nimport { select, Store } from \"@ngrx/store\";\nimport { Observable, takeUntil } from \"rxjs\";\nimport { BaseComponent } from \"src/app/base.component\";\nimport { DiscountTypeEnum } from \"src/app/shared/enum/discount-type.enum\";\nimport { AdvertisingCampaignInterface } from \"src/app/shared/models/advertising-campaigns/advertising-campaign.interface\";\nimport { PromotionCodeLiteInterface } from \"src/app/shared/models/promotion-code/check-promotion-code.interface\";\nimport { BadgeService } from \"src/app/shared/services/badge.service\";\nimport { NewCampaignCalculatorService } from \"src/app/shared/services/calculations/new-campaign.service\";\nimport { AppStateInterface } from \"src/app/store/appState.interface\";\nimport { invokeCalculateTotalLPCostByCampanyNames } from \"src/app/store/locationPartner/location-partner.action\";\nimport { invokeAdHavePromotionCode } from \"src/app/store/promotion-code/promotion-code.actions\";\nimport { getAdHavePromotionCodeSelector } from \"src/app/store/promotion-code/promotion-code.selectors\";\nimport { environment } from \"src/environments/environment\";\n\n@Component({\n selector: \"app-details-ad\",\n templateUrl: \"./details-ad.component.html\",\n})\nexport class DetailsAdComponent extends BaseComponent implements OnInit {\n @Input() detailsAd: AdvertisingCampaignInterface;\n cdnURL = environment.CDN_RELEAD;\n\n priceHT: number = 0;\n total: number = 0;\n tva: number = 0;\n discount: number = 0;\n\n promotionExists$: Observable;\n promotionApplied: PromotionCodeLiteInterface | null = null;\n constructor(\n public badgeService: BadgeService,\n private modalService: NgbModal,\n private store: Store,\n private cdr: ChangeDetectorRef\n ) {\n super(store);\n\n this.promotionExists$ = this.store\n .pipe(select(getAdHavePromotionCodeSelector))\n .pipe(takeUntil(this.ngDestroyed$));\n }\n ngOnInit(): void {\n this.store.dispatch(\n invokeAdHavePromotionCode({\n havePromotion: this.detailsAd.advertisingCampaignHashedId,\n })\n );\n this.promotionExists$.subscribe((value) => {\n if (value && value?.discountValue != 0) {\n this.promotionApplied = value;\n }\n });\n\n if(this.detailsAd.totalHt) this.priceHT = this.detailsAd.totalHt\n this.tva = this.priceHT * 0.19;\n this.updateTotale();\n }\n closeModal() {\n this.modalService.dismissAll();\n }\n\n updateTotale() {\n if (this.priceHT > 0) {\n this.total =\n Number(this.priceHT.toFixed(3)) + Number(this.tva.toFixed(3)) + 1;\n }\n switch (this.promotionApplied?.discountType) {\n case DiscountTypeEnum.AMOUNT: {\n this.discount = this.promotionApplied.discountValue;\n const newPriceHT = this.priceHT - this.promotionApplied.discountValue;\n this.tva = newPriceHT * 0.19;\n this.total =\n Number(newPriceHT.toFixed(3)) + Number(this.tva.toFixed(3)) + 1;\n break;\n }\n case DiscountTypeEnum.PERCENTAGE: {\n if (this.promotionApplied.discountValue != 0) {\n var percentageToCalculate: number =\n 1 - this.promotionApplied.discountValue / 100;\n const newPriceHT = this.priceHT * percentageToCalculate;\n this.tva = newPriceHT * 0.19;\n this.total =\n Number(newPriceHT.toFixed(3)) + Number(this.tva.toFixed(3)) + 1;\n this.discount =\n this.priceHT * (this.promotionApplied.discountValue / 100);\n }\n }\n }\n this.cdr.detectChanges();\n }\n}\n","
\n

\n {{ \"campaignDetails.updateStatusCampaign\" | translate }}\n

\n \n
\n
\n
\n
\n \n
\n \n \n \n {{ status.value | translate }}\n \n \n
\n
\n
\n
\n
\n \n \n
\n","import { DatePipe } from \"@angular/common\";\nimport { Component, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\nimport { FormBuilder, FormGroup } from \"@angular/forms\";\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\nimport { select, Store } from \"@ngrx/store\";\nimport { Observable, Subject, takeUntil } from \"rxjs\";\nimport {\n CampaignStatusEnum,\n CampaignStatusEnumMapping,\n CampaignStatusInterface,\n} from \"src/app/shared/enum/campaign-status\";\nimport { UserHistoryActionsEnum } from \"src/app/shared/enum/userHistoryActions\";\nimport { UserHistoryServicesEnum } from \"src/app/shared/enum/userHistoryService\";\nimport { AdvertisingCampaignInterface } from \"src/app/shared/models/advertising-campaigns/advertising-campaign.interface\";\nimport { FilterListAdvertisingCompaign } from \"src/app/shared/models/advertising-campaigns/filter-list-advertising-compaign.interface\";\nimport { createEstimate } from \"src/app/shared/models/iberis/commande/createEstimate\";\nimport { Data } from \"src/app/shared/models/iberis/commande/data\";\nimport { ResultCreateEstimate } from \"src/app/shared/models/iberis/commande/resultCreateEstimate\";\nimport { CommonParamsIberis } from \"src/app/shared/models/iberis/paramsForGetAll\";\nimport { SuccessDto } from \"src/app/shared/models/success-dto\";\nimport { RoleEnum } from \"src/app/shared/models/user/role.interface\";\nimport { SaveUserHistoryService } from \"src/app/shared/services/history/saveHistory\";\nimport { updateAdCampaignDetailsSelector } from \"src/app/store/advertisingCampaign/advertiserCampaign.selectors\";\nimport { invokeChangeAdStatus } from \"src/app/store/advertisingCampaign/advertisingCampaign.actions\";\nimport { initialState } from \"src/app/store/advertisingCampaign/advertisingCampaign.reducers\";\nimport { AppStateInterface } from \"src/app/store/appState.interface\";\nimport {\n invokeSynthesisEstimate,\n invokeUpdateEstimate,\n resultUpdateEstimate,\n} from \"src/app/store/commande/commande.actions\";\nimport { resultUpdateEstimateSelector } from \"src/app/store/commande/commande.selectors\";\nimport {\n invokeCampaignStarts,\n invokeMarkAdAsFinished,\n} from \"src/app/store/mailing/mailing.actions\";\nimport {\n catchForbiddenError,\n catchServerError,\n} from \"src/app/store/user/user.actions\";\nimport {\n catchForbiddenErrorSelector,\n catchServerErrorSelector,\n} from \"src/app/store/user/user.selectors\";\nimport { environment } from \"src/environments/environment\";\n\n@Component({\n selector: \"app-update-campaign-status\",\n templateUrl: \"./update-campaign-status.component.html\",\n})\nexport class UpdateCampaignStatusComponent implements OnInit {\n @Input() detailsAd: AdvertisingCampaignInterface;\n form: FormGroup;\n advertisingCompaignFilter: FilterListAdvertisingCompaign = {\n ...initialState.filter,\n };\n campaignStatus: CampaignStatusInterface[];\n loading: boolean = false;\n updateStatus$: Observable;\n ngDestroyed$: Subject = new Subject();\n params: CommonParamsIberis = {\n lang: \"fr\",\n companyId: environment.IBERIS.IBERIS_COMPANY_ID,\n };\n catchServerError$: Observable;\n catchForbiddenError$: Observable;\n\n resultUpdateEstimate$: Observable;\n\n @Input() publisherRole: RoleEnum;\n constructor(\n private store: Store,\n private modalService: NgbModal,\n private fb: FormBuilder,\n private saveHistory: SaveUserHistoryService,\n private datePipe: DatePipe\n ) {\n this.form = this.fb.group({\n status: [null],\n });\n this.catchForbiddenError$ = this.store\n .pipe(select(catchForbiddenErrorSelector))\n .pipe(takeUntil(this.ngDestroyed$));\n this.catchServerError$ = this.store\n .pipe(select(catchServerErrorSelector))\n .pipe(takeUntil(this.ngDestroyed$));\n this.updateStatus$ = this.store\n .pipe(select(updateAdCampaignDetailsSelector))\n .pipe(takeUntil(this.ngDestroyed$));\n this.resultUpdateEstimate$ = this.store\n .pipe(select(resultUpdateEstimateSelector))\n .pipe(takeUntil(this.ngDestroyed$));\n }\n ngOnDestroy(): void {\n this.ngDestroyed$.next();\n this.ngDestroyed$.unsubscribe();\n }\n ngOnInit(): void {\n this.catchForbiddenError$.subscribe((result) => {\n if (result) {\n this.loading = false;\n this.closeModal();\n this.store.dispatch(catchForbiddenError({ forbiddenError: null }));\n }\n });\n this.catchServerError$.subscribe((result) => {\n if (result) {\n this.loading = false;\n this.store.dispatch(catchServerError({ serverError: null }));\n }\n });\n this.form.patchValue({ status: this.detailsAd.status });\n this.campaignStatus = Object.keys(CampaignStatusEnum)\n .filter((value) => isNaN(Number(value)) === true)\n .map((key: string | any) => ({\n id: CampaignStatusEnum[key as keyof typeof CampaignStatusEnum],\n value:\n CampaignStatusEnumMapping[key as keyof typeof CampaignStatusEnum],\n }));\n this.updateStatus$.subscribe((data) => {\n if (data) {\n this.loading = false;\n switch (this.form.get(\"status\")?.value) {\n case CampaignStatusEnum.ONGOING: {\n this.store.dispatch(\n invokeCampaignStarts({ email: this.detailsAd.emailPublisher })\n );\n break;\n }\n case CampaignStatusEnum.FINISHED: {\n this.store.dispatch(\n invokeMarkAdAsFinished({ email: this.detailsAd.emailPublisher })\n );\n }\n }\n }\n });\n\n this.resultUpdateEstimate$.subscribe((result) => {\n if (result) {\n this.invokeUpdateStatus(CampaignStatusEnum.CANCELED);\n this.store.dispatch(\n resultUpdateEstimate({ resultUpdateEstimate: null })\n );\n }\n });\n }\n\n updateStatus() {\n this.loading = true;\n const status = this.form.get(\"status\")?.value;\n if (\n this.publisherRole == RoleEnum.ROLE_LOCATION ||\n status !== CampaignStatusEnum.CANCELED\n ) {\n this.invokeUpdateStatus(status);\n } else {\n this.store.dispatch(\n invokeSynthesisEstimate({\n params: this.params,\n estimateId: this.detailsAd.estimateId,\n })\n );\n }\n\n this.saveHistory.saveUserHistory(\n UserHistoryActionsEnum.PATCH,\n UserHistoryServicesEnum.ADMIN_CAMPAIGN_UPDATE_STATUS\n );\n }\n closeModal() {\n this.modalService.dismissAll();\n }\n\n invokeUpdateStatus(status: string) {\n this.store.dispatch(\n invokeChangeAdStatus({\n campaignHashedId: this.detailsAd.advertisingCampaignHashedId,\n status: status,\n })\n );\n }\n\n cancelEstimate(estimateDetails: Data) {\n const estimate: createEstimate = {\n bank_id: environment.IBERIS.BANK_ID,\n choice: 5,\n estimate_number:\n estimateDetails.estimate_number.replace(\"DV-\", \"\").split(\"-\").pop() ||\n \"\",\n client_id: estimateDetails.contact.hashed_id,\n additional_contact_id: estimateDetails.hashed_contact_additional_id,\n conditions: estimateDetails.conditions,\n currency_rate: estimateDetails.currency_rate,\n date: this.datePipe.transform(estimateDetails.date, \"yyyy-MM-dd\"),\n due: this.datePipe.transform(estimateDetails.due, \"yyyy-MM-dd\"),\n language: estimateDetails.language,\n notes:\n estimateDetails.notes +\n \"Ce devis a été automatiquement rejeté car l'annonce qui lui était associée a été supprimée\",\n object: estimateDetails.object,\n reference: estimateDetails.reference_number,\n use_conditions: 0,\n show_stamp: 1,\n show_billing: 1,\n show_delivery: 0,\n show_bank: 1,\n show_conditions: 1,\n show_description: 1,\n show_pictures: 1,\n tax_type: 1,\n show_unity: 1,\n useInput: {\n input_hashed_id: environment.IBERIS.TIMBRE_FISCAL_HASHED_ID,\n value: 1,\n },\n discount: \"\",\n items: {\n description: estimateDetails.items[0].description,\n discountAmount: Number(estimateDetails.items[0].discount_rate),\n discountType: estimateDetails.items[0].discount_type,\n item: estimateDetails.items[0].item,\n price: Number(estimateDetails.items[0].rate),\n qte: estimateDetails.items[0].quantity,\n taxes: [{ tax_hashed_id: environment.IBERIS.TAX_HASHED_ID }],\n },\n };\n this.store.dispatch(\n invokeUpdateEstimate({\n params: this.params,\n estimateId: this.detailsAd.estimateId,\n createEstimate: estimate,\n })\n );\n }\n}\n","
\n

\n {{ \"campaignDetails.updateAdvertisingCampaign\" | translate }} {{ ad.title }}\n

\n \n
\n
\n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n \n
\n \n \n \n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n \n \n \n \n
\n
\n \n
\n \n \n
\n
\n
\n
\n
\n \n
\n {{ uploadProgress }}%\n
\n \n \n
\n
\n \n

{{ \"dropzoneFile.title\" | translate }}

\n

\n {{ \"dropzoneFile.rulePart1\" | translate }}\n {{ \"dropzoneFile.rulePart2\" | translate }} 5MB\n

\n
\n
\n
\n \n \n
\n
\n {{ f.name.split(\".\")[0] | castFileName }} .{{\n f.type.split(\"/\")[1]\n }}\n
\n
\n \n \n
\n
\n \n
\n \n\n
\n \n {{ \"buttons.close\" | translate }}\n \n \n \n \n
\n","import { HttpEvent, HttpEventType, HttpResponse } from \"@angular/common/http\";\nimport { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from \"@angular/core\";\nimport { FormBuilder, FormGroup, Validators } from \"@angular/forms\";\nimport { NgbModal, NgbProgressbarConfig } from \"@ng-bootstrap/ng-bootstrap\";\nimport { select, Store } from \"@ngrx/store\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { map, Observable, of, Subject, takeUntil } from \"rxjs\";\nimport { ObjectiveTypeEnum } from \"src/app/shared/enum/objectives\";\nimport { UserHistoryActionsEnum } from \"src/app/shared/enum/userHistoryActions\";\nimport { UserHistoryServicesEnum } from \"src/app/shared/enum/userHistoryService\";\nimport { AdvertisingCampaignInterface } from \"src/app/shared/models/advertising-campaigns/advertising-campaign.interface\";\nimport { TotalCostWithDiscount } from \"src/app/shared/models/calcul/totalCost\";\nimport { LocationPartnerInterface } from \"src/app/shared/models/location-partners/locationPartner.interface\";\nimport { SuccessDto } from \"src/app/shared/models/success-dto\";\nimport { NewCampaignCalculatorService } from \"src/app/shared/services/calculations/new-campaign.service\";\nimport { ExtensionService } from \"src/app/shared/services/extension/extension.service\";\nimport { SaveUserHistoryService } from \"src/app/shared/services/history/saveHistory\";\nimport { updateAdCampaignDetailsSelector } from \"src/app/store/advertisingCampaign/advertiserCampaign.selectors\";\nimport {\n invokeUpdateAdCampaignDetails,\n updateAdCampaignDetails,\n} from \"src/app/store/advertisingCampaign/advertisingCampaign.actions\";\nimport { AppStateInterface } from \"src/app/store/appState.interface\";\nimport {\n invokeUploadFileWithProgress,\n setFileName,\n} from \"src/app/store/file/file.actions\";\nimport { uploadFileProgressSelector } from \"src/app/store/file/file.selectors\";\nimport { invokeLocationsToCreateCampaign } from \"src/app/store/locationPartner/actions/get-locations.actions\";\nimport { catchForbiddenError, catchServerError } from \"src/app/store/user/user.actions\";\nimport {\n catchForbiddenErrorSelector,\n catchServerErrorSelector,\n} from \"src/app/store/user/user.selectors\";\nimport { invokeCalculateTotalLPCostByCampanyNames } from \"src/app/store/locationPartner/location-partner.action\";\nimport {\n calculateTotalLPCostByCampanyNamesSelector,\n locationPartnersToCreateCampaignResultSelector,\n} from \"src/app/store/locationPartner/location-partner.selectors\";\nimport { environment } from \"src/environments/environment\";\n\n@Component({\n selector: \"app-update-campaign\",\n templateUrl: \"./update-campaign.component.html\",\n styleUrls: [\"./update-campaign.component.scss\"],\n})\nexport class UpdateCampaignComponent implements OnInit, OnDestroy {\n form: FormGroup;\n @Input() ad: AdvertisingCampaignInterface;\n validate: boolean;\n showAlert: boolean = false;\n showProgress: boolean = false;\n uploadProgress: number = 0;\n files: File[] = [];\n showError: boolean = false;\n isShown: boolean = false;\n filename: string | null = null;\n approveInProgress: boolean;\n uploadFile$: Observable | null | HttpResponse>;\n submitted: boolean;\n update$: Observable;\n updated: string;\n\n locationPartnersResult$: Observable;\n locations: string[];\n objectiveEnum = ObjectiveTypeEnum;\n\n loading: boolean = false;\n catchServerError$: Observable;\n\n videoLink: string;\n ngDestroyed$: Subject = new Subject();\n catchForbiddenError$: Observable;\n @Output() confirmAction: EventEmitter = new EventEmitter();\n\n isUpdateTotalHT: boolean = false;\n calculateTotalLPCostByCompanyNames$: Observable;\n priceHT: number = 0;\n constructor(\n private fb: FormBuilder,\n private store: Store,\n private modalService: NgbModal,\n private extensionService: ExtensionService,\n private translate: TranslateService,\n private saveHistory: SaveUserHistoryService,\n configPB: NgbProgressbarConfig,\n private newCampaignCalculatorService: NewCampaignCalculatorService\n ) {\n configPB.max = 100;\n configPB.striped = true;\n configPB.animated = true;\n configPB.type = \"primary\";\n configPB.height = \"20px\";\n this.form = fb.group({\n redirectionLink: [null],\n startDate: [null, [Validators.required]],\n endDate: [null, [Validators.required]],\n locations: [[], [Validators.required]],\n });\n this.calculateTotalLPCostByCompanyNames$ = this.store\n .pipe(select(calculateTotalLPCostByCampanyNamesSelector))\n .pipe(takeUntil(this.ngDestroyed$));\n this.update$ = this.store\n .pipe(select(updateAdCampaignDetailsSelector))\n .pipe(takeUntil(this.ngDestroyed$));\n this.uploadFile$ = this.store\n .pipe(select(uploadFileProgressSelector))\n .pipe(takeUntil(this.ngDestroyed$));\n this.locationPartnersResult$ = this.store\n .pipe(select(locationPartnersToCreateCampaignResultSelector))\n .pipe(takeUntil(this.ngDestroyed$));\n\n this.catchServerError$ = this.store\n .pipe(select(catchServerErrorSelector))\n .pipe(takeUntil(this.ngDestroyed$));\n\n this.catchForbiddenError$ = this.store\n .pipe(select(catchForbiddenErrorSelector))\n .pipe(takeUntil(this.ngDestroyed$));\n }\n ngOnDestroy(): void {\n this.ngDestroyed$.next();\n this.ngDestroyed$.unsubscribe();\n }\n loadImage(): Observable {\n return of(environment.CDN_RELEAD + this.ad.videoLink).pipe(\n map((data) => {\n const blob = new Blob([data], {\n type: `video/${this.extensionService.getExtension(\n this.ad.videoLink\n )}`,\n });\n return blob;\n })\n );\n }\n ngOnInit(): void {\n this.catchForbiddenError$.subscribe((result) => {\n if (result) {\n this.loading = false;\n this.modalService.dismissAll();\n this.store.dispatch(catchForbiddenError({ forbiddenError: null })); \n }})\n this.form.patchValue({ redirectionLink: this.ad.redirectionLink });\n this.form.patchValue({ startDate: this.ad.startingDate });\n this.form.patchValue({ endDate: this.ad.endingDate });\n\n const calculateCost = {\n calculationMethod: this.ad.calculationMethod,\n names: this.ad.locationPartners,\n objectiveName: this.ad.objectiveName,\n startDate: this.form.get(\"startDate\")?.value,\n endDate: this.form.get(\"endDate\")?.value,\n };\n this.store.dispatch(\n invokeCalculateTotalLPCostByCampanyNames({\n calculateCost: calculateCost,\n })\n );\n this.calculateTotalLPCostByCompanyNames$.subscribe((value) => {\n if (value && value?.totalCostPerDay.length > 0) {\n this.priceHT = this.newCampaignCalculatorService.calculateTotalCost(\n value,\n this.newCampaignCalculatorService.calculateDays(\n this.form.get(\"startDate\")?.value,\n this.form.get(\"endDate\")?.value\n )\n );\n }\n });\n this.catchServerError$.subscribe((result) => {\n if (result) {\n this.loading = false;\n this.store.dispatch(catchServerError({ serverError: null }));\n }\n });\n\n this.store.dispatch(invokeLocationsToCreateCampaign());\n\n if (this.ad.videoLink) {\n this.loadImage().subscribe((i) => {\n const myFile = new File(\n [i],\n this.translate.instant(\"campaignDetails.video\") + \"-\" + this.ad.title,\n {\n type: i.type,\n }\n );\n this.files.push(myFile);\n });\n }\n\n this.locationPartnersResult$.subscribe(\n (result: LocationPartnerInterface[] | null) => {\n if (result != null) {\n this.locations = result.map((value) => value.companyName);\n\n this.form.patchValue({ locations: this.ad.locationPartners });\n }\n }\n );\n this.videoLink = environment.CDN_RELEAD + this.ad.videoLink;\n this.filename = this.ad.videoLink;\n this.uploadFile$.subscribe(\n (result: HttpEvent | null | HttpResponse<{ filename: string }>) => {\n if (result?.type == HttpEventType.UploadProgress) {\n this.showProgress = true;\n const total = result?.total ?? 1;\n this.uploadProgress = Math.round((result.loaded / total) * 100);\n }\n if (result?.type == HttpEventType.Response) {\n this.filename =\n (result as HttpResponse<{ filename: string }>)?.body?.filename ??\n \"\";\n this.submitted = true;\n this.loading = false;\n this.store.dispatch(setFileName({ filename: null }));\n setTimeout(() => {\n this.showProgress = false;\n }, 2000);\n }\n }\n );\n\n this.update$.subscribe((result: SuccessDto | null) => {\n if (result != null) {\n this.updated = result.message;\n this.loading = false;\n this.store.dispatch(updateAdCampaignDetails({ successMessage: null }));\n this.close();\n }\n });\n }\n update() {\n this.confirmAction.emit(true)\n this.loading = true;\n let totalHt: number | null;\n if (this.isUpdateTotalHT) {\n totalHt = this.priceHT;\n } else {totalHt = this.ad.totalHt}\n let adCampaign: any = {\n title: this.ad.title,\n startingDate: this.form.get(\"startDate\")?.value,\n endingDate: this.form.get(\"endDate\")?.value,\n publishDate: this.ad.publishDate,\n redirectionLink: this.form.get(\"redirectionLink\")?.value,\n status: this.ad.status,\n locationPartners: this.form.get(\"locations\")?.value,\n views: this.ad.views,\n objectiveName: this.ad.objectiveName,\n orderReference: this.ad.orderReference,\n synthesisReport: this.ad.synthesisReport,\n videoLink: this.filename,\n totalHt: totalHt,\n };\n if (this.ad.advertisingCampaignHashedId) {\n this.store.dispatch(\n invokeUpdateAdCampaignDetails({\n campaignHashedId: this.ad.advertisingCampaignHashedId,\n adCompaign: adCampaign,\n })\n );\n this.saveHistory.saveUserHistory(\n UserHistoryActionsEnum.PATCH,\n UserHistoryServicesEnum.ADMIN_CAMPAIGN_ADVERTISER_UPDATE\n );\n }\n this.uploadProgress = 0;\n }\n onSelect(event: File[]) {\n this.showProgress = true;\n if (event[0].size > 5242880) {\n this.showError = true;\n this.showProgress = false;\n } else {\n this.files.push(event[0]);\n this.isShown = true;\n const formData = new FormData();\n formData.append(\"file\", this.files[0], this.files[0].name);\n this.store.dispatch(invokeUploadFileWithProgress({ file: formData }));\n }\n }\n onRemove() {\n this.files = [];\n this.filename = null;\n }\n close() {\n this.files = [];\n this.modalService.dismissAll();\n }\n\n onChecked(event: any) {\n this.isUpdateTotalHT = event.target.checked;\n }\n}\n","\n \n
\n
\n
\n \n \n \n \n \n {{ column.label | translate }}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ \"admin.campaigns.pipeline.status\" | translate }}Actions
\n {{ \"undefined\" | translate }}\n \n \n \n {{ adCompaign.title }}\n \n {{ companyName[j] }}\n \n {{ campaignObjective[adCompaign.objectiveName] | translate }}\n \n \n \n {{ adCompaign.startingDate | localizedDate }}\n \n {{ adCompaign.endingDate | localizedDate }}\n \n \n {{\n \"enumMapping.campaigns.status.\" + adCompaign.status\n | translate\n }}\n \n \n \n
\n
\n {{ \"response.error.FORBIDDEN_RESPONSE\" | translate }}\n
\n \n {{ \"noData\" | translate }}\n
\n
\n \n
\n
\n
\n \n {{ \"fetching\" | translate }}\n \n
\n
\n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n \n \n \n \n
\n
\n
\n \n
\n \n \n\n","import { Component, OnInit, QueryList, ViewChildren } from \"@angular/core\";\nimport { FormBuilder, FormGroup } from \"@angular/forms\";\nimport { DateView } from \"@danielmoncada/angular-datetime-picker\";\nimport { NgbModal, NgbModalRef } from \"@ng-bootstrap/ng-bootstrap\";\nimport { select, Store } from \"@ngrx/store\";\nimport { Observable, takeUntil } from \"rxjs\";\nimport { BaseComponent } from \"src/app/base.component\";\nimport {\n NgbdSortableHeader,\n SortEvent,\n} from \"src/app/shared/directive/sortable.directive\";\nimport { FilterListAdvertisingCompaign } from \"src/app/shared/models/advertising-campaigns/filter-list-advertising-compaign.interface\";\nimport { ResultFilterAdvertisingCompaign } from \"src/app/shared/models/advertising-campaigns/result-filter-advertising-compaign.interface\";\nimport {\n CampaignStatusEnum,\n CampaignStatusEnumMapping,\n} from \"src/app/shared/enum/campaign-status\";\nimport { SuccessDto } from \"src/app/shared/models/success-dto\";\nimport { IColumn } from \"src/app/shared/models/table/column.interface\";\nimport { BadgeService } from \"src/app/shared/services/badge.service\";\nimport {\n adCampaignSelector,\n filterAdvertisingCompaignSelector,\n loadingAdvertisingCampaignTableSelector,\n resultAddSynthesisReportSelector,\n resultFilterAdvertisingCompaignSelector,\n successUploadFileSelector,\n updateAdCampaignDetailsSelector,\n} from \"src/app/store/advertisingCampaign/advertiserCampaign.selectors\";\nimport {\n advertisingCompaignResult,\n invokeAdvertisingCompaignFilter,\n resultAddSynthesisReport,\n resultSuccessAd,\n resultUploadJustificationFile,\n} from \"src/app/store/advertisingCampaign/advertisingCampaign.actions\";\nimport { initialState } from \"src/app/store/advertisingCampaign/advertisingCampaign.reducers\";\nimport { AppStateInterface } from \"src/app/store/appState.interface\";\nimport { ObjectiveTypeEnumMapping } from \"src/app/shared/enum/objectives\";\nimport { UploadFilesComponent } from \"src/app/shared/components/upload-files/upload-files.component\";\nimport {\n ActionInterface,\n ActionReturned,\n OptionActionEnum,\n adminCampaignActions,\n} from \"src/app/shared/data/actions-data\";\nimport { DetailsAdComponent } from \"src/app/shared/components/details-modal/details-ad/details-ad.component\";\nimport { VideoAdComponent } from \"src/app/shared/components/video-ad/video-ad.component\";\nimport { environment } from \"src/environments/environment\";\nimport { RoleEnum } from \"src/app/shared/models/user/role.interface\";\nimport { UpdateCampaignStatusComponent } from \"./update-campaign-status/update-campaign-status.component\";\nimport {\n advertisingCampaignsFilter,\n FilterInterface,\n} from \"src/app/shared/data/filter-data\";\nimport { UpdateCampaignComponent } from \"./update-campaign/update-campaign.component\";\nimport { AdvertisingCampaignInterface } from \"src/app/shared/models/advertising-campaigns/advertising-campaign.interface\";\nimport { ToastrService } from \"ngx-toastr\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { invokeApiDistroyed } from \"src/app/store/apiState.interface\";\nimport {\n invokeDownloadFile,\n resultDownloadFile,\n} from \"src/app/store/file/file.actions\";\nimport { downloadedFileSelector } from \"src/app/store/file/file.selectors\";\nimport { DeleteComponent } from \"src/app/shared/components/drob-zone-options/modal/delete/delete.component\";\nimport { ExtensionService } from \"src/app/shared/services/extension/extension.service\";\nimport { Router } from \"@angular/router\";\nimport { UserHistoryActionsEnum } from \"src/app/shared/enum/userHistoryActions\";\nimport { UserHistoryServicesEnum } from \"src/app/shared/enum/userHistoryService\";\nimport { SaveUserHistoryService } from \"src/app/shared/services/history/saveHistory\";\nimport { getAdHavePromotionCode } from \"src/app/store/promotion-code/promotion-code.actions\";\nimport { calculateTotalLPCostByCampanyNames } from \"src/app/store/locationPartner/location-partner.action\";\nimport { catchForbiddenError } from \"src/app/store/user/user.actions\";\nimport { catchForbiddenErrorSelector } from \"src/app/store/user/user.selectors\";\nimport { ResultSynthesisEstimate } from \"src/app/shared/models/iberis/commande/resultSynthesisEstimate\";\nimport { resultSynthesisEstimateSelector } from \"src/app/store/commande/commande.selectors\";\nimport { Data } from \"src/app/shared/models/iberis/commande/data\";\nimport { CommonParamsIberis } from \"src/app/shared/models/iberis/paramsForGetAll\";\nimport { DatePipe } from \"@angular/common\";\nimport { CancelEstimate } from \"src/app/shared/services/iberis/cancelEstimate\";\nimport { resultSynthesisEstimate } from \"src/app/store/commande/commande.actions\";\nimport { JwtService } from \"src/app/shared/services/jwt.service\";\nimport { Authorities } from \"src/app/shared/enum/authorities\";\n@Component({\n selector: \"app-ads-compaigns\",\n templateUrl: \"./ads-compaigns.component.html\",\n})\nexport class AdsCompaignsComponent extends BaseComponent implements OnInit {\n @ViewChildren(NgbdSortableHeader) headers!: QueryList;\n public years = DateView.MULTI_YEARS;\n columns: IColumn[] = [\n {\n key: \"title\",\n label: \"admin.campaigns.pipeline.campaignName\",\n sorter: true,\n width: 20,\n },\n {\n key: \"firstName\",\n label: \"admin.campaigns.pipeline.advertiser\",\n sorter: true,\n width: 15,\n },\n {\n key: \"objective\",\n label: \"admin.campaigns.pipeline.objective\",\n sorter: true,\n width: 15,\n },\n {\n key: \"locations\",\n label: \"admin.campaigns.pipeline.locations\",\n sorter: false,\n width: 40,\n },\n {\n key: \"startingDate\",\n label: \"admin.campaigns.pipeline.startDate\",\n sorter: true,\n width: 15,\n },\n {\n key: \"endingDate\",\n label: \"admin.campaigns.pipeline.endDate\",\n sorter: true,\n width: 15,\n },\n ];\n date = [null, null];\n pageSize: number = 10;\n pageNumber: number = 1;\n advertisingCompaignFilter$: Observable;\n advertisingCompaignFilter: FilterListAdvertisingCompaign = {\n ...initialState.filter,\n pager: {\n pageSize: this.pageSize,\n pageNumber: this.pageNumber,\n },\n };\n resultFilterAdvertisingCompaign$: Observable;\n resultAdvertisingCompainFilter: ResultFilterAdvertisingCompaign;\n formFilter: FormGroup;\n form: FormGroup;\n validate: string;\n submitted: boolean;\n adCampaign: AdvertisingCampaignInterface;\n adCampaign$: Observable;\n resultUpdateAdCampaign: SuccessDto | null;\n titleCampaign: string;\n waiting: boolean;\n isFiltring: boolean;\n campaignObjective = ObjectiveTypeEnumMapping;\n count: number;\n advertisingCampaign: AdvertisingCampaignInterface[] = [];\n campaignStatus = CampaignStatusEnum;\n loading$: Observable;\n\n companyName: string[] = [];\n\n filterAds: FilterInterface = advertisingCampaignsFilter;\n\n addSynthesisReport$: Observable;\n resultAddSynthesisReport: SuccessDto | null;\n successMessage: string;\n successMessage$: Observable;\n\n downloadFile$: Observable;\n resultDownloadFile: any;\n blob: Blob;\n adTitle: string;\n successUploadJustificatif$: Observable;\n cachedAt: Date | null;\n catchForbiddenError$: Observable;\n forbidden: boolean | null = false;\n loading: boolean | null;\n isConfirmAction: boolean;\n\n resultSynthesisEstimate$: Observable;\n syntesisEstimate: Data;\n\n params: CommonParamsIberis = {\n lang: \"fr\",\n companyId: environment.IBERIS.IBERIS_COMPANY_ID,\n };\n currentAd: AdvertisingCampaignInterface;\n currentAction: ActionReturned;\n\n deleteUpdateModal: NgbModalRef;\n constructor(\n private store: Store,\n private fb: FormBuilder,\n public badgeService: BadgeService,\n private modalService: NgbModal,\n private toastr: ToastrService,\n private translate: TranslateService,\n private extensionService: ExtensionService,\n private router: Router,\n private saveHistory: SaveUserHistoryService,\n private jwtService: JwtService,\n private deleteEstimateService: CancelEstimate\n ) {\n super(store);\n this.catchForbiddenError$ = this.store\n .pipe(select(catchForbiddenErrorSelector))\n .pipe(takeUntil(this.ngDestroyed$));\n this.advertisingCompaignFilter$ = this.store\n .pipe(select(filterAdvertisingCompaignSelector))\n .pipe(takeUntil(this.ngDestroyed$));\n this.resultFilterAdvertisingCompaign$ = this.store\n .pipe(select(resultFilterAdvertisingCompaignSelector))\n .pipe(takeUntil(this.ngDestroyed$));\n this.adCampaign$ = this.store\n .pipe(select(adCampaignSelector))\n .pipe(takeUntil(this.ngDestroyed$));\n this.loading$ = this.store\n .pipe(select(loadingAdvertisingCampaignTableSelector))\n .pipe(takeUntil(this.ngDestroyed$));\n this.addSynthesisReport$ = this.store\n .pipe(select(resultAddSynthesisReportSelector))\n .pipe(takeUntil(this.ngDestroyed$));\n this.successMessage$ = this.store\n .pipe(select(updateAdCampaignDetailsSelector))\n .pipe(takeUntil(this.ngDestroyed$));\n this.downloadFile$ = this.store\n .pipe(select(downloadedFileSelector))\n .pipe(takeUntil(this.ngDestroyed$));\n this.successUploadJustificatif$ = this.store\n .pipe(select(successUploadFileSelector))\n .pipe(takeUntil(this.ngDestroyed$));\n\n this.resultSynthesisEstimate$ = this.store\n .pipe(select(resultSynthesisEstimateSelector))\n .pipe(takeUntil(this.ngDestroyed$));\n\n this.formFilter = this.fb.group({\n title: [\"\"],\n date: [[null, null]],\n });\n this.form = this.fb.group({\n title: [\"\"],\n objectiveName: [\"\"],\n uploadVideo: [\"\"],\n redirectionLink: [\"\"],\n });\n\n const authorities = this.jwtService.getPermissions(jwtService.getToken());\n if (authorities) {\n this.forbidden = !authorities.includes(\n Authorities.ADC_GETALL.toString()\n );\n }\n }\n ngOnInit(): void {\n this.catchForbiddenError$.subscribe((result) => {\n if (result) {\n this.store.dispatch(catchForbiddenError({ forbiddenError: null }));\n }\n });\n this.addSynthesisReport$.subscribe((created: SuccessDto | null) => {\n if (created != null) {\n this.toastr.success(\n this.translate.instant(\"response.success.\" + created.message),\n this.translate.instant(\"response.successTitle\")\n );\n this.store.dispatch(resultAddSynthesisReport({ successMessage: null }));\n this.store.dispatch(\n invokeAdvertisingCompaignFilter({\n filter: {\n ...this.advertisingCompaignFilter,\n roleName: RoleEnum.ROLE_ADVERTISER,\n pager: {\n pageSize: this.pageSize,\n pageNumber: this.pageNumber,\n },\n },\n refreshCache: false,\n })\n );\n }\n });\n this.filterAds.name.map(\n (e) =>\n (e.data = Object.keys(CampaignStatusEnum)\n .filter((value) => isNaN(Number(value)) === true)\n .map(\n (key: string | any) =>\n CampaignStatusEnumMapping[key as keyof typeof CampaignStatusEnum]\n ))\n );\n this.loading$.subscribe((data) => {\n this.loading = data;\n });\n this.store.dispatch(\n advertisingCompaignResult({ listAdvertisingCompaign: null })\n );\n this.resultFilterAdvertisingCompaign$.subscribe((result) => {\n if (result) {\n this.resultAdvertisingCompainFilter = result;\n this.count = this.resultAdvertisingCompainFilter.count;\n if (this.resultAdvertisingCompainFilter.advertisingCampaigns) {\n this.companyName = [];\n this.advertisingCampaign =\n this.resultAdvertisingCompainFilter.advertisingCampaigns;\n this.advertisingCampaign?.map((e) => {\n this.companyName = [...this.companyName, e.publisherCompanyName];\n });\n this.cachedAt = result.cachedAt;\n }\n } else {\n this.store.dispatch(\n invokeAdvertisingCompaignFilter({\n filter: {\n ...this.advertisingCompaignFilter,\n roleName: RoleEnum.ROLE_ADVERTISER,\n pager: {\n pageSize: this.pageSize,\n pageNumber: this.pageNumber,\n },\n },\n refreshCache: false,\n })\n );\n this.saveHistory.saveUserHistory(\n UserHistoryActionsEnum.GET,\n UserHistoryServicesEnum.LIST_CAMPAIGNS\n );\n }\n });\n this.advertisingCompaignFilter$.subscribe(\n (result: FilterListAdvertisingCompaign) => {\n if (result) {\n this.advertisingCompaignFilter = result;\n this.pageNumber = result.pager.pageNumber;\n }\n }\n );\n this.adCampaign$.subscribe((result: SuccessDto | null) => {\n if (result != null) {\n this.resultUpdateAdCampaign = result;\n }\n });\n this.successMessage$.subscribe((data) => {\n if (data) {\n this.successMessage = data.message;\n this.store.dispatch(resultSuccessAd({ successMessage: null }));\n if (this.successMessage != \"\") {\n this.modalService.dismissAll();\n }\n }\n });\n this.successUploadJustificatif$.subscribe((success: SuccessDto | null) => {\n if (success != null) {\n this.store.dispatch(\n resultUploadJustificationFile({ successUpload: null })\n );\n this.toastr.success(\n this.translate.instant(\"response.success.\" + success.message),\n this.translate.instant(\"response.successTitle\")\n );\n if (this.successMessage != \"\") {\n this.modalService.dismissAll();\n this.refreshCampaigns(false);\n }\n }\n });\n\n this.downloadFile$.subscribe((result) => {\n if (result) {\n this.blob = result.body as Blob;\n const pdf = URL.createObjectURL(this.blob);\n const downloadLink = document.createElement(\"a\");\n downloadLink.href = pdf;\n downloadLink.download = `${this.translate.instant(\n \"campaignDetails.justificationFile\"\n )}-${this.adTitle}.${this.extensionService.getExtension(result.url)}`;\n downloadLink.click();\n URL.revokeObjectURL(pdf);\n this.store.dispatch(resultDownloadFile({ downloadedFile: null }));\n }\n });\n\n this.resultSynthesisEstimate$.subscribe(\n (result: ResultSynthesisEstimate | null) => {\n if (result && result?.status.code == 200) {\n this.syntesisEstimate = result.data.estimate;\n this.deleteEstimateService.cancelEstimate(\n result.data.estimate,\n this.currentAd,\n this.currentAction.option.type\n );\n } else if (result?.status.code == 404) {\n this.toastr.error(\n this.translate.instant(\"response.error.undefined\"),\n this.translate.instant(\"response.errorTitle\")\n );\n this.store.dispatch(\n resultSynthesisEstimate({ resultSynthesisEstimate: null })\n );\n this.deleteUpdateModal.close();\n }\n }\n );\n }\n changePage(event: number) {\n this.store.dispatch(invokeApiDistroyed());\n this.store.dispatch(\n invokeAdvertisingCompaignFilter({\n filter: {\n ...this.advertisingCompaignFilter,\n roleName: RoleEnum.ROLE_ADVERTISER,\n pager: {\n ...this.advertisingCompaignFilter.pager,\n pageNumber: event,\n },\n },\n refreshCache: false,\n })\n );\n }\n itemsPerPageChange(pageSize: number) {\n this.store.dispatch(invokeApiDistroyed());\n this.store.dispatch(\n invokeAdvertisingCompaignFilter({\n filter: {\n ...this.advertisingCompaignFilter,\n roleName: RoleEnum.ROLE_ADVERTISER,\n pager: {\n ...this.advertisingCompaignFilter.pager,\n pageSize: pageSize,\n },\n },\n refreshCache: false,\n })\n );\n }\n get changePageSize() {\n return this.advertisingCompaignFilter.pager.pageSize;\n }\n set changePageSize(pageSize: number) {\n this.itemsPerPageChange(pageSize);\n }\n filter() {\n this.store.dispatch(invokeApiDistroyed());\n this.pageNumber = 1;\n this.isFiltring = true;\n this.store.dispatch(\n invokeAdvertisingCompaignFilter({\n filter: {\n ...this.advertisingCompaignFilter,\n title: this.formFilter.get(\"title\")?.value,\n endingDate: this.formFilter.get(\"date\")?.value[0] ?? null,\n roleName: RoleEnum.ROLE_ADVERTISER,\n startingDate: this.formFilter.get(\"date\")?.value[1] ?? null,\n pager: {\n pageSize: this.pageSize,\n pageNumber: this.pageNumber,\n },\n },\n refreshCache: false,\n })\n );\n }\n removeFilter() {\n this.formFilter.reset({\n title: \"\",\n date: [null, null],\n });\n this.isFiltring = false;\n this.store.dispatch(\n invokeAdvertisingCompaignFilter({\n filter: {\n ...initialState.filter,\n roleName: RoleEnum.ROLE_ADVERTISER,\n pager: {\n pageSize: this.pageSize,\n pageNumber: this.pageNumber,\n },\n },\n refreshCache: false,\n })\n );\n }\n onSort({ column, direction }: SortEvent) {\n this.store.dispatch(invokeApiDistroyed());\n\n this.headers.forEach((header) => {\n if (column != header.sortable) {\n header.direction = \"\";\n }\n });\n var col: string | null = column;\n var sort = null;\n switch (direction) {\n case \"asc\":\n sort = true;\n break;\n case \"desc\":\n sort = false;\n break;\n default:\n sort = true;\n col = null;\n }\n this.store.dispatch(\n invokeAdvertisingCompaignFilter({\n filter: {\n ...this.advertisingCompaignFilter,\n roleName: RoleEnum.ROLE_ADVERTISER,\n sortName: col,\n isAscending: sort,\n },\n refreshCache: false,\n })\n );\n }\n\n searchTerm() {\n this.store.dispatch(invokeApiDistroyed());\n this.store.dispatch(\n invokeAdvertisingCompaignFilter({\n filter: {\n ...this.advertisingCompaignFilter,\n roleName: RoleEnum.ROLE_ADVERTISER,\n title: this.formFilter.get(\"title\")?.value,\n },\n refreshCache: false,\n })\n );\n }\n saveOption(options: string[] | null) {\n this.store.dispatch(invokeApiDistroyed());\n let listFounds: any[] = [];\n options?.map((option) => {\n listFounds.push(\n Object.keys(CampaignStatusEnumMapping).find(\n (key) =>\n CampaignStatusEnumMapping[key as CampaignStatusEnum] === option\n )\n );\n });\n this.store.dispatch(\n invokeAdvertisingCompaignFilter({\n filter: {\n ...this.advertisingCompaignFilter,\n roleName: RoleEnum.ROLE_ADVERTISER,\n status: listFounds,\n },\n refreshCache: false,\n })\n );\n }\n saveAction(action: ActionReturned, ad: AdvertisingCampaignInterface) {\n this.currentAd = ad;\n this.currentAction = action;\n switch (action.option.type) {\n case OptionActionEnum.ADVERTISER_CAMPAIGNS_STATISTICS: {\n this.router.navigate([\n \"/\",\n \"dashboard\",\n \"admin\",\n \"campaigns\",\n \"pipeline\",\n \"statistics\",\n ad.advertisingCampaignHashedId,\n ]);\n this.saveHistory.saveUserHistory(\n UserHistoryActionsEnum.GET,\n UserHistoryServicesEnum.ADVERTISER_CAMPAIGNS_STATISTICS\n );\n break;\n }\n case OptionActionEnum.CAMPAIGN_DETAILS: {\n const modal = this.modalService.open(DetailsAdComponent, {\n centered: true,\n size: \"lg\",\n });\n modal.componentInstance.detailsAd = ad;\n this.saveHistory.saveUserHistory(\n UserHistoryActionsEnum.GET,\n UserHistoryServicesEnum.CAMPAIGN_DETAILS\n );\n this.store.dispatch(getAdHavePromotionCode({ result: null }));\n this.store.dispatch(\n calculateTotalLPCostByCampanyNames({ totalCostWithDiscount: null })\n );\n break;\n }\n case OptionActionEnum.ADMIN_CAMPAIGN_ADVERTISER_UPDATE: {\n const modal = this.modalService.open(UpdateCampaignComponent, {\n centered: true,\n });\n modal.componentInstance.ad = ad;\n modal.componentInstance.confirmAction.subscribe(\n (value: boolean) => (this.isConfirmAction = value)\n );\n break;\n }\n case OptionActionEnum.ADMIN_CAMPAIGN_UPDATE_STATUS: {\n this.deleteUpdateModal = this.modalService.open(\n UpdateCampaignStatusComponent,\n {\n centered: true,\n }\n );\n this.deleteUpdateModal.componentInstance.detailsAd = ad;\n this.deleteUpdateModal.componentInstance.publisherRole =\n RoleEnum.ROLE_ADVERTISER;\n this.deleteUpdateModal.componentInstance.confirmAction.subscribe(\n (value: boolean) => (this.isConfirmAction = value)\n );\n break;\n }\n case OptionActionEnum.CAMPAIGN_DELETE: {\n this.deleteUpdateModal = this.modalService.open(DeleteComponent, {\n centered: true,\n });\n this.deleteUpdateModal.componentInstance.name = \"pop-up.campaign.title\";\n this.deleteUpdateModal.componentInstance.reference = ad.title;\n this.deleteUpdateModal.componentInstance.CampaignHashedId =\n ad.advertisingCampaignHashedId;\n this.deleteUpdateModal.componentInstance.estimateId = ad.estimateId;\n this.deleteUpdateModal.componentInstance.title = action.option.name;\n this.deleteUpdateModal.componentInstance.currentAd = ad;\n this.deleteUpdateModal.componentInstance.type =\n OptionActionEnum.CAMPAIGN_DELETE;\n this.deleteUpdateModal.componentInstance.publisherRole =\n RoleEnum.ROLE_ADVERTISER;\n this.deleteUpdateModal.componentInstance.confirmAction.subscribe(\n (value: boolean) => (this.isConfirmAction = value)\n );\n break;\n }\n case OptionActionEnum.ADMIN_CAMPAIGN_SHOW_VIDEO: {\n const modal = this.modalService.open(VideoAdComponent, {\n centered: true,\n size: \"lg\",\n });\n modal.componentInstance.videoLink =\n environment.CDN_RELEAD + ad.videoLink;\n modal.componentInstance.closeTheModal.subscribe((value: boolean) =>\n modal.close()\n );\n this.saveHistory.saveUserHistory(\n UserHistoryActionsEnum.GET,\n UserHistoryServicesEnum.ADMIN_CAMPAIGN_ADVERTISER_SHOW_VIDEO\n );\n break;\n }\n case OptionActionEnum.ADMIN_CAMPAIGN_ADD_SYNTHESIS_REPORT: {\n const modal = this.modalService.open(UploadFilesComponent, {\n centered: true,\n size: \"lg\",\n });\n modal.componentInstance.campaignHashedId =\n ad.advertisingCampaignHashedId;\n modal.componentInstance.modalTitle = action.option.name;\n modal.componentInstance.action =\n OptionActionEnum.ADMIN_CAMPAIGN_ADD_SYNTHESIS_REPORT;\n modal.componentInstance.savedFile = ad.synthesisReport;\n modal.componentInstance.accept =\n \"application/pdf, .csv, image/*, .pptx\";\n modal.componentInstance.closeTheModal.subscribe((value: boolean) =>\n modal.close()\n );\n break;\n }\n case OptionActionEnum.CAMPAIGN_ADD_JUSTIFICATION_FILE: {\n const modal = this.modalService.open(UploadFilesComponent, {\n centered: true,\n size: \"lg\",\n });\n modal.componentInstance.campaignHashedId =\n ad.advertisingCampaignHashedId;\n modal.componentInstance.modalTitle = action.option.name;\n modal.componentInstance.action =\n OptionActionEnum.CAMPAIGN_ADD_JUSTIFICATION_FILE;\n modal.componentInstance.savedFile = ad.justificationFile;\n modal.componentInstance.accept = \"application/pdf, image/*\";\n modal.componentInstance.closeTheModal.subscribe((value: boolean) =>\n modal.close()\n );\n break;\n }\n case OptionActionEnum.CAMPAIGN_DOWNLOAD_JUSTIFICATION_FILE: {\n this.adTitle = ad.title;\n this.store.dispatch(\n invokeDownloadFile({ filename: ad.justificationFile })\n );\n this.saveHistory.saveUserHistory(\n UserHistoryActionsEnum.DOWNLOAD,\n UserHistoryServicesEnum.CAMPAIGN_DOWNLOAD_JUSTIFICATION_FILE\n );\n }\n }\n }\n getOptions(ad: AdvertisingCampaignInterface): ActionInterface[] {\n var actions: ActionInterface[] = adminCampaignActions;\n if (ad.status != CampaignStatusEnum.FINISHED)\n actions = actions.filter(\n (option) =>\n option.type != OptionActionEnum.ADMIN_CAMPAIGN_ADD_SYNTHESIS_REPORT\n );\n if (ad.status == CampaignStatusEnum.FINISHED)\n actions = actions.filter(\n (option) =>\n option.type != OptionActionEnum.ADMIN_CAMPAIGN_ADVERTISER_UPDATE\n );\n if (ad.status == CampaignStatusEnum.CANCELED)\n actions = actions.filter(\n (option) =>\n option.type != OptionActionEnum.CAMPAIGN_ADD_JUSTIFICATION_FILE\n );\n if (ad.justificationFile == null)\n actions = actions.filter(\n (option) =>\n option.type != OptionActionEnum.CAMPAIGN_DOWNLOAD_JUSTIFICATION_FILE\n );\n return actions;\n }\n\n onClickFilterDates() {\n this.store.dispatch(\n invokeAdvertisingCompaignFilter({\n filter: {\n ...this.advertisingCompaignFilter,\n startingDate: this.formFilter.get(\"date\")?.value[0],\n endingDate: this.formFilter.get(\"date\")?.value[1],\n roleName: RoleEnum.ROLE_ADVERTISER,\n pager: {\n pageSize: this.pageSize,\n pageNumber: this.pageNumber,\n },\n },\n refreshCache: false,\n })\n );\n }\n\n refreshCampaigns(refreshCache: boolean) {\n this.store.dispatch(\n invokeAdvertisingCompaignFilter({\n filter: {\n ...this.advertisingCompaignFilter,\n roleName: RoleEnum.ROLE_ADVERTISER,\n },\n refreshCache: refreshCache,\n })\n );\n }\n}\n","
\n \n

\n {{ title | translate }}\n

\n \n
\n
\n
\n
\n {{ \"modalDetails.campaignDetails\" | translate }}\n
\n
\n
\n {{ \"profile.profileDetails.companyName\" | translate }}\n
\n

{{ details?.companyName ?? (\"undefined\"| translate) }}

\n
\n {{ \"profile.profileDetails.activity\" | translate }}\n
\n

{{ details?.companyActivity ?? (\"undefined\"| translate) }}

\n
\n {{ \"profile.profileDetails.companyAddress\" | translate }}\n
\n

{{ details?.companyAddress ?? (\"undefined\"| translate) }}

\n
\n {{ \"profile.profileDetails.webSite\" | translate }}\n
\n

\n {{ \"undefined\"| translate }}\n

\n \n

\n \n {{ chunk }}
\n
\n

\n
\n
{{ \"profile.profileDetails.role\" | translate }}
\n

{{ details?.companyRole ?? (\"undefined\"| translate) }}

\n \n

\n {{\"undefined\" | translate}}\n

\n
\n
\n
\n
\n
\n {{ \"modalDetails.personalDetails\" | translate }}\n
\n
\n
\n {{ \"profile.profileDetails.fullName\" | translate }}\n
\n

\n {{ details?.firstName ?? (\"undefined\"| translate) }} {{ details?.lastName ?? (\"undefined\"| translate) }}\n

\n
{{ \"profile.profileDetails.tel\" | translate }}
\n

{{ details?.phone ?? (\"undefined\"| translate) }}

\n
\n {{ \"profile.profileDetails.email\" | translate }}\n
\n

\n {{ details?.email ?? (\"undefined\"| translate) }}\n

\n
\n {{ \"profile.profileDetails.birthday\" | translate }}\n
\n

{{ (details?.birthday | localizedDate) ?? \"--/--\" }}

\n
\n
\n
\n
\n {{ \"profile.billingInformation.title\" | translate }}\n
\n
\n
\n {{ \"profile.billingInformation.legalName\" | translate }}\n
\n

{{ details?.legalName ?? (\"undefined\"| translate) }}

\n
\n {{ \"profile.billingInformation.matricule\" | translate }}\n
\n

{{ details?.taxRegistration ?? (\"undefined\"| translate) }}

\n
\n {{ \"profile.billingInformation.address\" | translate }}\n
\n

{{ details?.billingAddress ?? (\"undefined\"| translate) }}

\n
\n
\n
\n
\n \n
\n","import { Component, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\nimport { DomSanitizer } from \"@angular/platform-browser\";\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\nimport { select, Store } from \"@ngrx/store\";\nimport { LangChangeEvent, TranslateService } from \"@ngx-translate/core\";\nimport { Observable, takeUntil } from \"rxjs\";\nimport { BaseComponent } from \"src/app/base.component\";\nimport { initialState } from \"src/app/store/advertiser/advertiser.reducers\";\nimport {\n filterAdvertiserSelector,\n resultFilterAdvertiserSelector,\n} from \"src/app/store/advertiser/advertiser.selectors\";\nimport { AppStateInterface } from \"src/app/store/appState.interface\";\nimport { saveUpdateFields } from \"src/app/store/settings/settings.actions\";\nimport { invokeSubRoleByUser } from \"src/app/store/user/user.actions\";\nimport { resultSubRoleSelector } from \"src/app/store/user/user.selectors\";\nimport { environment } from \"src/environments/environment\";\nimport {\n ActionInterface,\n updateAdvertiserActions,\n} from \"../../data/actions-data\";\nimport { Constants } from \"../../data/constants\";\nimport { FilterListAdvertiser } from \"../../models/advertiser/filter-list-advertiser.interface\";\nimport { AdvertiserDetailsInterface } from \"../../models/advertiser/profile.interface\";\nimport { Publisher } from \"../../models/advertiser/publisher.interface\";\nimport { ResultFilterAdvertiser } from \"../../models/advertiser/result-filter-advertiser.interface\";\nimport { AdvertisingCampaignInterface } from \"../../models/advertising-campaigns/advertising-campaign.interface\";\nimport { IberisActivities } from \"../../models/iberis/activities\";\nimport { OptionActionInterface } from \"../../models/option-action.interface\";\nimport { SubRoleInterface } from \"../../models/sub-role/subRole.interface\";\nimport { BadgeService } from \"../../services/badge.service\";\n\n@Component({\n selector: \"app-details-modal\",\n templateUrl: \"./details-modal.component.html\",\n})\nexport class DetailsModalComponent extends BaseComponent implements OnInit {\n @Output() closeTheModal: EventEmitter = new EventEmitter();\n @Input() public details: AdvertiserDetailsInterface | null;\n @Input() public type: string;\n @Input() advertiser: Publisher;\n @Input() detailsAd: AdvertisingCampaignInterface;\n advertiserFilter$: Observable;\n advertiserFilter: FilterListAdvertiser = {\n ...initialState.filter,\n };\n resultFilterAdvertiser$: Observable;\n resultFilterAdvertiser: ResultFilterAdvertiser;\n isAdvertiser: boolean | null;\n result: any[] = [];\n subRoleByUser$: Observable;\n resultSubRole: string | null;\n\n @Input() title: string;\n fields: OptionActionInterface = {\n name: [],\n icon: [],\n optionSelected: null,\n title: \"\",\n };\n @Input() icon: boolean = false;\n\n /** */\n updateAdvertiserFields: ActionInterface[] = updateAdvertiserActions;\n companyActivities: IberisActivities[];\n constructor(\n private store: Store,\n public badgeService: BadgeService,\n private sanitizer: DomSanitizer,\n private modalService: NgbModal,\n protected translate: TranslateService\n ) {\n super(store);\n this.advertiserFilter$ = this.store\n .pipe(select(filterAdvertiserSelector))\n .pipe(takeUntil(this.ngDestroyed$));\n this.resultFilterAdvertiser$ = this.store\n .pipe(select(resultFilterAdvertiserSelector))\n .pipe(takeUntil(this.ngDestroyed$));\n this.subRoleByUser$ = this.store\n .pipe(select(resultSubRoleSelector))\n .pipe(takeUntil(this.ngDestroyed$));\n }\n\n ngOnInit(): void {\n if (this.translate.currentLang == \"fr\")\n this.companyActivities = Constants.IBERIS_ACTIVITIES_FR;\n else this.companyActivities = Constants.IBERIS_ACTIVITIES_EN;\n\n this.translate.onLangChange.subscribe(\n (langChangeEvent: LangChangeEvent) => {\n if (langChangeEvent.lang == \"fr\")\n this.companyActivities = Constants.IBERIS_ACTIVITIES_FR;\n else this.companyActivities = Constants.IBERIS_ACTIVITIES_EN;\n }\n );\n if (this.details != null) {\n this.details = {\n ...this.details,\n companyActivity: this.companyActivities.find(\n (value) => this.details?.companyActivity == value.hashed_id\n )?.title,\n };\n }\n this.store.dispatch(\n saveUpdateFields({ options: this.updateAdvertiserFields })\n );\n if (this.details?.email) {\n this.store.dispatch(invokeSubRoleByUser({ email: this.details.email }));\n }\n this.subRoleByUser$.subscribe((result: SubRoleInterface | null) => {\n if (result) {\n this.resultSubRole = result.name;\n }\n });\n }\n closeModal() {\n this.modalService.dismissAll();\n }\n showlogo() {\n if (this.details?.logo) {\n return this.sanitizer.bypassSecurityTrustResourceUrl(\n environment.CDN_RELEAD + this.details.logo\n );\n } else return null;\n }\n}\n","import { createSelector } from \"@ngrx/store\";\nimport { AppStateInterface } from \"../appState.interface\";\n\nexport const supplierState = (state: AppStateInterface) => state.supplierState;\nexport const resultCreateSupplierSelector = createSelector(\n supplierState,\n (state) => state.resultCreateSupplier\n)","
\n \n
{{ \"addLP.firstStep.title\" | translate }}
\n
\n \n
\n \n \n {{ \"validation.firstName\" | translate }}\n
\n
\n \n
\n \n
\n \n \n {{ \"validation.lastName\" | translate }}\n
\n
\n \n
\n \n
\n \n \n {{ \"validation.email\" | translate }}\n
\n
\n \n
\n \n
\n \n \n {{ \"erreurMsg.validPassword\" | translate }}\n
    \n
  • - {{ \"password.pattern.validator1\" | translate }}
  • \n
  • - {{ \"password.pattern.validator2\" | translate }}
  • \n
  • - {{ \"password.pattern.validator3\" | translate }}
  • \n
\n
\n
\n {{ \"password.show\" | translate }} \n
\n
\n {{ \"password.cash\" | translate }}\n
\n
\n \n
\n
\n \n {{ \"password.cash\" | translate }}\n \n \n \n\n","import { Component, Input, OnInit } from \"@angular/core\";\nimport { FormGroup } from \"@angular/forms\";\n\n@Component({\n selector: \"app-personal-information\",\n templateUrl: \"./personal-information.component.html\",\n})\nexport class PersonalInformationComponent implements OnInit {\n showPassword1: boolean = false;\n showConfirmPassword1: boolean = false;\n @Input() isEmailCheck: boolean = false;\n showPassword() {\n this.showPassword1 = !this.showPassword1;\n }\n showConfirmPassword() {\n this.showConfirmPassword1 = !this.showConfirmPassword1;\n }\n @Input(\"form\") form: FormGroup;\n\n constructor() {}\n ngOnInit(): void {}\n}\n","
\n \n
\n {{ \"addLP.secondStep.title\" | translate }}\n
\n
\n \n \n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n
\n \n
\n \n
\n \n \n {{ \"validation.companyRole\" | translate }}\n
\n
\n \n
\n","import { Component, Input, OnInit } from \"@angular/core\";\nimport { FormGroup } from \"@angular/forms\";\nimport { select, Store } from \"@ngrx/store\";\nimport { LangChangeEvent, TranslateService } from \"@ngx-translate/core\";\nimport { ToastrService } from \"ngx-toastr\";\nimport { Observable, takeUntil } from \"rxjs\";\nimport { BaseComponent } from \"src/app/base.component\";\nimport { Constants } from \"src/app/shared/data/constants\";\nimport { IberisActivities } from \"src/app/shared/models/iberis/activities\";\nimport { AppStateInterface } from \"src/app/store/appState.interface\";\nimport { invokeUploadFile } from \"src/app/store/file/file.actions\";\nimport { setCheckUserExistsByCompanyName } from \"src/app/store/user/user.actions\";\nimport { checkUserExistByCompanyNameSelector } from \"src/app/store/user/user.selectors\";\n\n@Component({\n selector: \"app-company-information\",\n templateUrl: \"./company-information.component.html\",\n})\nexport class CompanyInformationComponent\n extends BaseComponent\n implements OnInit\n{\n @Input(\"form\") form: FormGroup;\n @Input(\"option\") option: string | null;\n @Input() create: boolean;\n @Input() isEmailCheck : boolean = false\n companyActivity: IberisActivities[];\n\n franchise: boolean;\n showError : boolean\n isUploaded: boolean;\n filename: string | null;\n files: File[] = [];\n uploadFile$: Observable;\n isShown: boolean\n isExist$: Observable;\n constructor(\n private store: Store,\n private translate: TranslateService,\n private toastr: ToastrService,\n ) {\n super(store);\n this.isExist$ = this.store\n .pipe(select(checkUserExistByCompanyNameSelector))\n .pipe(takeUntil(this.ngDestroyed$));\n }\n\n ngOnInit(): void {\n this.isExist$.subscribe((data) => {\n \n if (data == true) {\n this.toastr.error(\n this.translate.instant(\"response.error.companyName-exist\"),\n this.translate.instant(\"response.errorTitle\")\n );\n this.store.dispatch(setCheckUserExistsByCompanyName({isExistByCompanyName : null}))\n }\n });\n if (this.translate.currentLang == \"fr\")\n this.companyActivity = Constants.IBERIS_ACTIVITIES_FR;\n else this.companyActivity = Constants.IBERIS_ACTIVITIES_EN;\n\n this.translate.onLangChange.subscribe(\n (langChangeEvent: LangChangeEvent) => {\n if (langChangeEvent.lang == \"fr\")\n this.companyActivity = Constants.IBERIS_ACTIVITIES_FR;\n else this.companyActivity = Constants.IBERIS_ACTIVITIES_EN;\n }\n );\n\n if (this.option?.endsWith(\"franchise\")) {\n this.franchise = false;\n }\n }\n onFileSelected(event: any) {\n if (event.target.files[0].size > 4194304) this.showError = true;\n this.files = event.target.files;\n this.isShown = true;\n const formData = new FormData();\n formData.append(\"files\", this.files[0], this.files[0].name);\n this.store.dispatch(invokeUploadFile({ files: formData }));\n }\n}\n","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n ViewChild,\n} from \"@angular/core\";\nimport { MapMarker } from \"@angular/google-maps\";\n\n@Component({\n selector: \"app-popover-map\",\n templateUrl: \"./popover-map.component.html\",\n})\nexport class PopoverMapComponent implements OnInit {\n //@ViewChild(\"mapElement\") mapElement: ElementRef;\n //map: google.maps.Map;\n @Input(\"mapOptions\") mapOptions: google.maps.MapOptions;\n @Input(\"markerOptions\") markerOptions: google.maps.MarkerOptions;\n @Input(\"markerPosition\") markerPosition: google.maps.LatLngLiteral;\n @Output(\"changePosition\") changePosition = new EventEmitter<{\n latitude: number;\n longitude: number;\n }>(false);\n\n constructor() {}\n\n ngOnInit(): void {}\n\n changeMarkerPosition(marker: MapMarker) {\n this.markerPosition = marker.marker\n ?.getPosition()\n ?.toJSON() as google.maps.LatLngLiteral;\n\n this.changePosition.emit({\n latitude: this.formatPositionNumber(\n marker.marker?.getPosition()?.toJSON().lat\n ),\n longitude: this.formatPositionNumber(\n marker.marker?.getPosition()?.toJSON().lng\n ),\n });\n }\n\n formatPositionNumber(number: number | undefined): number {\n return Number(Number(number).toFixed(4));\n }\n}\n","\n \n \n\n","
\n \n
{{ \"addLP.4thStep.title\" | translate }}
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n \n \n \n
\n \n
\n \"SVG\"\n
MAP
\n
\n \n
\n
\n
\n \n\n
\n \n
\n \n
\n
\n
\n","import { Component, ElementRef, Input, OnInit, ViewChild } from \"@angular/core\";\nimport { FormGroup } from \"@angular/forms\";\nimport { NgbPopover } from \"@ng-bootstrap/ng-bootstrap\";\nimport { select, Store } from \"@ngrx/store\";\nimport { Observable, takeUntil } from \"rxjs\";\nimport { BaseComponent } from \"src/app/base.component\";\nimport { AppStateInterface } from \"src/app/store/appState.interface\";\nimport { invokeAllZoneNames } from \"src/app/store/zone/zone.actions\";\nimport { allZoneNamesSelector } from \"src/app/store/zone/zone.selectors\";\n\n@Component({\n selector: \"app-location-information\",\n templateUrl: \"./location-information.component.html\",\n styleUrls: [\"./location-information.component.scss\"],\n})\nexport class LocationInformationComponent\n extends BaseComponent\n implements OnInit\n{\n @ViewChild(NgbPopover, { static: true }) popover: NgbPopover;\n @ViewChild(\"address\") address: ElementRef;\n @Input(\"isUpdate\") isUpdate : boolean \n mapOptions: google.maps.MapOptions = {\n mapTypeId: \"roadmap\",\n streetViewControl: false,\n center: { lat: 33.886917, lng: 9.537499 },\n zoom: 6,\n };\n markerOptions: google.maps.MarkerOptions = {\n draggable: true,\n };\n markerPosition: google.maps.LatLngLiteral = { lat: 33.886917, lng: 9.537499 };\n\n @Input(\"form\") form: FormGroup;\n zoneNames$: Observable;\n\n constructor(private store: Store) {\n super(store);\n\n this.zoneNames$ = this.store\n .pipe(select(allZoneNamesSelector))\n .pipe(takeUntil(this.ngDestroyed$));\n }\n\n ngOnInit(): void {\n if(this.isUpdate){\n this.markerPosition.lat = this.form.get(\"latitude\")?.value\n this.markerPosition.lng = this.form.get(\"longitude\")?.value\n }\n this.store.dispatch(invokeAllZoneNames());\n }\n\n changeMarkerPosition(marker: { latitude: number; longitude: number }) {\n this.form.get(\"latitude\")?.patchValue(marker.latitude);\n this.form.get(\"longitude\")?.patchValue(marker.longitude);\n }\n formatPositionNumber(number: number | undefined): number {\n return Number(Number(number).toFixed(4));\n }\n}\n","
\n \n
{{ \"addLP.thirdStep.title\" | translate }}
\n\n
\n \n
\n \n \n \n \n
\n
\n\n
\n
\n \n\n
\n \n \n \n \n {{ \"validation.tags\" | translate }}\n
\n \n
\n","import { Component, Input, OnInit, ViewChild } from \"@angular/core\";\nimport { FormBuilder, FormGroup } from \"@angular/forms\";\nimport { NgSelectComponent } from \"@ng-select/ng-select\";\nimport { select, Store } from \"@ngrx/store\";\nimport { Observable, takeUntil } from \"rxjs\";\nimport { BaseComponent } from \"src/app/base.component\";\nimport { AppStateInterface } from \"src/app/store/appState.interface\";\nimport { invokeAllCategoryNames } from \"src/app/store/category/category.actions\";\nimport { allCategoryNamesSelector } from \"src/app/store/category/category.selectors\";\nimport { subCategoriesByCategoryNameSelector } from \"src/app/store/subCategory/subCategory.selectors\";\nimport { invokeSubCategoriesByCategory } from \"src/app/store/subCategory/subCategory.actions\";\nimport { invokeAllTagNames } from \"src/app/store/tag/tag.actions\";\nimport { allTagNamesSelector } from \"src/app/store/tag/tag.selectors\";\n@Component({\n selector: \"app-company-specification\",\n templateUrl: \"./company-specification.component.html\",\n})\nexport class CompanySpecificationComponent\n extends BaseComponent\n implements OnInit\n{\n @ViewChild(\"ngSelectComponent\") ngSelectComponent: NgSelectComponent;\n @Input(\"form\") form: FormGroup;\n\n //category\n allCategoryNames$: Observable;\n getCategoryNames: string[] | null;\n\n //subCategoryByCategory\n subCategoriesByCategory$: Observable;\n getSubCategoriesByCategory: string[] | null;\n\n //tag\n allTagNames$: Observable;\n getTagNames: string[];\n\n constructor(\n private store: Store,\n private fb: FormBuilder\n ) {\n super(store);\n\n this.allCategoryNames$ = this.store\n .pipe(select(allCategoryNamesSelector))\n .pipe(takeUntil(this.ngDestroyed$));\n this.subCategoriesByCategory$ = this.store\n .pipe(select(subCategoriesByCategoryNameSelector))\n .pipe(takeUntil(this.ngDestroyed$));\n this.allTagNames$ = this.store\n .pipe(select(allTagNamesSelector))\n .pipe(takeUntil(this.ngDestroyed$));\n }\n\n ngOnInit(): void {\n this.allCategoryNames$.subscribe((result: string[] | null) => {\n if (result == null) {\n this.store.dispatch(invokeAllCategoryNames());\n }\n });\n\n this.allTagNames$.subscribe((result: string[] | null) => {\n if (result == null) {\n this.store.dispatch(invokeAllTagNames());\n }\n });\n\n this.subCategoriesByCategory$.subscribe((result: string[] | null) => {\n if (result != null) {\n this.getSubCategoriesByCategory = result;\n }\n });\n }\n\n onChangeCategory() {\n this.form.get(\"subCategories\")?.reset([]);\n this.store.dispatch(\n invokeSubCategoriesByCategory({\n categoryName: this.form.get(\"category\")?.value,\n })\n );\n }\n}\n","export enum LocationPartnerStatus {\n AVAILABLE = \"AVAILABLE\",\n CURRENTLY_INSTALLING = \"CURRENTLY_INSTALLING\",\n RESERVED = \"RESERVED\",\n}\n\nexport enum LocationPartnerStatusEnumMapping {\n AVAILABLE = \"enumMapping.LocationPartnerStatus.lowercase.AVAILABLE\",\n CURRENTLY_INSTALLING = \"enumMapping.LocationPartnerStatus.lowercase.CURRENTLY_INSTALLING\",\n RESERVED = \"enumMapping.LocationPartnerStatus.lowercase.RESERVED\",\n}\nexport interface LocationPartnerStatusInterface {\n id: LocationPartnerStatus;\n value: string;\n}\n","
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n \n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n \n
\n
\n
\n
\n

{{ \"admin.campaigns.pipeline.title\" | translate }}

\n \n \n \n {{ \"cachedAt\" | translate }}\n {{ cachedAt | localizedDate : \"short\" }}\n \n \n
\n
\n
\n \n \n \n
\n \n
\n \n
\n \n \n
\n
\n \n \n \n \n \n
\n
\n
\n \n
\n