{"version":3,"sources":["assets/icons/ic-logo-wekiwi.svg","assets/icons/ic-wekiwi-popup-orange.png","assets/fonts/Montserrat/Montserrat-ExtraBold.ttf","assets/icons/PDFs/ProofOfPayment/ic-logo-sidebar.png","assets/icons/PDFs/ProofOfPayment/ic-elec.png","assets/icons/PDFs/ProofOfPayment/ic-email.png","assets/icons/PDFs/ProofOfPayment/ic-phone.png","assets/icons/PDFs/ProofOfPayment/Facebook.png","assets/icons/ic-logo-sidebar.svg","assets/icons/ic-logo-login.svg","assets/icons/ic-elec-off.svg","assets/icons/ic-elec-on.svg","assets/icons/ic-elec-green.svg","assets/icons/ic-gas-off.svg","assets/icons/ic-gas-on.svg","assets/icons/ic-logout-sidebar.svg","assets/icons/ic-wekiwi-popup.png","assets/icons/logo-wekiwi-new.png","assets/icons/ic-avatar.svg","assets/icons/ic-linkedin.svg","assets/icons/ic-instagram.svg","assets/icons/ic-facebook.svg","assets/icons/ic-youtube.svg","assets/icons/ic-twitter.svg","assets/icons/ic-certification.svg","assets/icons/ic-menu.svg","assets/icons/ic-menu-h.svg","assets/icons/ic-triangle.svg","assets/icons/ic-cross.svg","assets/icons/ic-check-validate.svg","assets/icons/filter-symbol.svg","assets/icons/arrow-down.png","assets/icons/arrow-subscription.svg","assets/icons/ic-menu-orange.svg","assets/icons/ic-menu-orange-creu.svg","assets/icons/ic-arrow-back.svg","assets/icons/ic-arrow-next.svg","assets/icons/ic-image-background-accueil.png","assets/icons/icon-arrow-open-menu.png","assets/icons/timeline-status/logo.png","assets/icons/timeline-status/ok.png","assets/icons/timeline-status/error.png","assets/icons/timeline-status/waiting.png","assets/icons/timeline-status/abandonned.png","assets/icons/ic-elec-counters.png","assets/icons/ic-gas-counters.png","assets/icons/ic-copy-clipboard.svg","assets/loader.svg","assets/fonts/Montserrat/Montserrat-Black.ttf","assets/icons/PDFs/ProofOfPayment/ic-gas.png","assets/icons/PDFs/ProofOfPayment/Web.png","assets/icons/PDFs/ProofOfPayment/Youtube.png","assets/icons/PDFs/ProofOfPayment/arrow.png","assets/icons/PDFs/ProofOfPayment/ic-logo-wekiwi.png","assets/fonts/Montserrat/Montserrat-Thin.ttf","assets/fonts/Montserrat/Montserrat-Light.ttf","assets/documents lazy /^/.//.*$/ groupOptions: {} namespace object","utils/enums.ts","_actions/event.actions.ts","_actions/actionTypes.ts","utils/config.ts","components/CustomDate/CustomDate.tsx","utils/resources.ts","utils/helpers.ts","_actions/profile.actions.ts","services/logger.ts","_actions/auth.actions.ts","_actions/contract.actions.ts","_actions/consumption.actions.ts","_actions/file.actions.ts","components/PDFs/ProofOfPayment/fonts.ts","components/PDFs/ProofOfPayment/components/Header.tsx","components/PDFs/ProofOfPayment/components/Container.tsx","components/PDFs/ProofOfPayment/components/PageNumber.tsx","components/PDFs/ProofOfPayment/components/titles/Main.tsx","components/PDFs/ProofOfPayment/lib/ProofOfPaymentContext.tsx","components/PDFs/ProofOfPayment/lib/useProof.ts","components/PDFs/ProofOfPayment/components/LeftColumn/CustomerInfo.tsx","components/PDFs/ProofOfPayment/components/titles/BeneficiaryTitle.tsx","components/PDFs/ProofOfPayment/components/LeftColumn/BeneficiaryInfo.tsx","components/PDFs/ProofOfPayment/components/LeftColumn/index.tsx","components/PDFs/ProofOfPayment/components/titles/Section.tsx","components/PDFs/ProofOfPayment/components/titles/Object.tsx","components/PDFs/ProofOfPayment/components/RightColumn/Adresse.tsx","components/PDFs/ProofOfPayment/components/RightColumn/TextValue.tsx","components/PDFs/ProofOfPayment/components/RightColumn/Offer.tsx","components/PDFs/ProofOfPayment/components/RightColumn/Summary.tsx","components/PDFs/ProofOfPayment/components/Table/Cell.tsx","components/PDFs/ProofOfPayment/components/Table/DataCell.tsx","components/PDFs/ProofOfPayment/components/Table/Row.tsx","components/PDFs/ProofOfPayment/components/Table/Header.tsx","components/PDFs/ProofOfPayment/components/Table/Body.tsx","components/PDFs/ProofOfPayment/components/Table/Table.tsx","components/PDFs/ProofOfPayment/components/RightColumn/CustomTable.tsx","components/PDFs/ProofOfPayment/components/RightColumn/index.tsx","components/PDFs/ProofOfPayment/components/BottomText.tsx","components/PDFs/ProofOfPayment/components/Footer.tsx","components/PDFs/ProofOfPayment/ProofOfPayment.tsx","_actions/payment.actions.ts","components/PDFs/ProofOfPayment/generateBlob.tsx","_actions/package.actions.ts","_actions/customerContract.actions.ts","utils/network/errors.ts","_actions/searchOrder.actions.ts","_actions/searchUserGroup.actions.ts","_actions/caseResult.action.ts","_actions/createGroup.actions.ts","_actions/getGroup.actions.ts","_actions/createUser.actions.ts","_actions/createPassword.actions.ts","_actions/manageUser.actions.ts","_actions/transferContract.actions.ts","_actions/administrationClientSpace.actions.ts","_actions/paymentCB.actions.ts","store/root-epic.ts","_reducers/auth.reducer.ts","utils/initialState.ts","_reducers/profile.reducer.ts","_reducers/contract.reducer.ts","_reducers/event.reducer.ts","_reducers/consumption.reducer.ts","_reducers/file.reducer.ts","_reducers/payment.reducer.ts","_reducers/package.reducer.ts","_reducers/customerContract.reducer.ts","_reducers/order.reducer.ts","_reducers/searchUserGroup.reducer.ts","_reducers/caseRetryPayment.reducer.ts","_reducers/transferContract.reducer.ts","_reducers/paymentCB.reducer.ts","store/root-reducer.ts","services/local-storage-service.ts","store/index.ts","services/api-service.ts","services/index.ts","serviceWorker.ts","services/auth-service.ts","components/CustomButton/index.ts","components/CustomButton/CustomButton.tsx","components/CustomInput/index.ts","components/CustomInput/CustomInput.tsx","components/CustomDayPicker/CustomDayPicker.tsx","components/CustomDayPicker/index.ts","components/CustomTable/CustomTable.tsx","components/CustomTable/index.ts","components/CustomToggle/index.ts","components/CustomToggle/CustomToggle.tsx","components/CustomSelect/CustomSelect.tsx","components/CustomSelect/index.ts","components/CustomModal/CustomModal.tsx","components/CustomModal/index.ts","components/CustomDate/index.ts","components/PlanElement/PlanElement.tsx","components/PlanElement/index.ts","components/EnergyDetail/index.ts","components/EnergyDetail/EnergyDetail.tsx","components/EnergyGauge/EnergyGauge.tsx","components/EnergyGauge/index.ts","components/PackageElement/PackageElement.tsx","components/PackageElement/index.ts","components/CustomCheckbox/index.ts","components/CustomCheckbox/CustomCheckbox.tsx","components/CustomRadio/index.ts","components/CustomRadio/CustomRadio.tsx","components/SideBar/LogoutButton.tsx","components/SideBar/SideBar.tsx","components/SideBar/index.ts","components/Banner/Banner.tsx","components/Banner/index.ts","components/Modal/Modal.tsx","components/Modal/index.ts","components/Footer/Footer.tsx","components/Footer/index.ts","components/Balance/Balance.tsx","components/Balance/index.ts","components/CustomTransfer/index.ts","components/CustomTransfer/CustomTransfer.tsx","components/CustomProgressbar/CustomProgressbar.tsx","components/CustomProgressbar/index.ts","components/OptionElement/OptionElement.tsx","components/OptionElement/index.ts","utils/chart.ts","components/StackedBar/StackedBar.tsx","components/StackedBar/index.ts","components/Pagination/Pagination.tsx","components/Pagination/index.ts","components/BackgroundElement/index.ts","components/BackgroundElement/BackgroundElement.tsx","utils/search.ts","components/PostalCodeSelect/PostalCodeSelect.tsx","utils/network/types.ts","components/PostalCodeSelect/index.ts","utils/reactHelpers.tsx","utils/network/helpers.ts","containers/admin/AdminSubscriptionContainer/sections/SituationSection/SituationSection.tsx","components/CustomDatePicker/DateContainer/DateContainer.js","components/CustomDatePicker/DateContainer/index.js","components/CustomDatePicker/index.ts","components/CustomDatePicker/CustomDatePicker.tsx","components/Tile/Tile.tsx","components/Tile/index.ts","components/CheckboxTile/index.ts","components/CheckboxTile/CheckboxTile.tsx","utils/text.ts","components/AddressSelect/AddressSelect.tsx","components/AddressSelect/index.ts","components/CustomError/CustomError.tsx","components/CustomError/index.ts","components/CustomOverlay/CustomOverlay.tsx","components/CustomOverlay/index.ts","components/Separator/index.ts","components/Separator/Separator.tsx","components/CloseButton/index.ts","components/CloseButton/CloseButton.tsx","components/ToggleIndicator/ToggleIndicator.tsx","components/ToggleIndicator/index.ts","components/CoordsInputs/CoordsInputs.tsx","components/CoordsInputs/index.ts","components/TimelineStatus/Segment.tsx","components/TimelineStatus/TimelineStatus.tsx","components/TimelineStatus/index.ts","components/StripeForm/StripeForm.tsx","components/StripeForm/index.ts","components/admin/Group/index.ts","components/admin/Group/Group.tsx","components/admin/AuthorizationSchemaGroup/AuthSchemaItem.tsx","components/admin/AuthorizationSchemaGroup/AuthorizationSchemaGroup.tsx","components/admin/AuthorizationSchemaGroup/index.ts","libraries/withLoader.tsx","components/CustomInput/CustomInputNewGen.tsx","components/CustomButton/CustomButtonNewGen.tsx","components/FooterAuth/FooterAuth.tsx","components/SlidingMenu/SlidingMenu.tsx","components/SlidingMenu/index.ts","containers/AuthContainer/AuthContainer.tsx","pages/AuthPage/AuthPage.tsx","pages/AuthPage/index.ts","components/FooterAuth/index.ts","containers/ResetPasswordContainer/ResetPasswordContainer.tsx","pages/ResetPasswordPage/ResetPasswordPage.tsx","pages/ResetPasswordPage/index.ts","pages/admin/AdminHomePage/index.ts","pages/admin/AdminHomePage/AdminHomePage.tsx","utils/network/builders/contracts.ts","utils/network/request.ts","containers/admin/AdminSubscriptionContainer/modals/PaymentIframeModal/PaymentIframeModal.tsx","containers/admin/AdminSubscriptionContainer/modals/CustomerSurveyModal/CustomerSurveyModal.tsx","containers/admin/AdminSubscriptionContainer/modals/CustomerSurveyModal/index.ts","containers/admin/AdminSubscriptionContainer/modals/PaymentIframeModal/Success.tsx","containers/admin/AdminSubscriptionContainer/modals/PaymentIframeModal/Retry.tsx","containers/StripeFormContainer/StripeFormContainer.tsx","containers/admin/AdminSubscriptionContainer/modals/PaymentIframeModal/index.ts","containers/admin/AdminSubscriptionContainer/modals/ResetModal/ResetModal.tsx","containers/admin/AdminSubscriptionContainer/modals/ResetModal/index.ts","containers/admin/AdminSubscriptionContainer/sections/ClientDataSection/ClientDataSection.tsx","containers/admin/AdminSubscriptionContainer/sections/ClientDataSection/index.ts","containers/admin/AdminSubscriptionContainer/sections/MissingInformationSection/MissingInformationSection.tsx","containers/admin/AdminSubscriptionContainer/sections/MissingInformationSection/index.ts","containers/admin/AdminSubscriptionContainer/modals/SeasonalOffersModal/SeasonalOffersModal.tsx","containers/admin/AdminSubscriptionContainer/modals/SeasonalOffersModal/index.ts","containers/admin/AdminSubscriptionContainer/sections/OfferSection/Options.tsx","containers/admin/AdminSubscriptionContainer/sections/OfferSection/ClientConsumption.tsx","containers/admin/AdminSubscriptionContainer/sections/OfferSection/OfferSection.tsx","containers/admin/AdminSubscriptionContainer/sections/OfferSection/index.ts","containers/admin/AdminSubscriptionContainer/sections/RecapSection/RecapField.tsx","containers/admin/AdminSubscriptionContainer/sections/RecapSection/RecapGroup.tsx","containers/admin/AdminSubscriptionContainer/sections/RecapSection/RecapSection.tsx","containers/admin/AdminSubscriptionContainer/AdminSubscriptionContainer.tsx","containers/admin/AdminSubscriptionContainer/sections/RecapSection/index.ts","containers/admin/AdminSubscriptionContainer/sections/SiteSection/SiteSection.tsx","containers/admin/AdminSubscriptionContainer/sections/SiteSection/index.ts","containers/admin/AdminSubscriptionContainer/sections/SituationSection/index.ts","containers/admin/AdminSubscriptionContainer/sections/SubscribeSection/SubscribeSection.tsx","containers/admin/AdminSubscriptionContainer/sections/SubscribeSection/index.ts","containers/admin/AdminSubscriptionContainer/sections/TopInformationSection/index.ts","containers/admin/AdminSubscriptionContainer/sections/TopInformationSection/TopInformationSection.tsx","containers/admin/AdminSubscriptionContainer/index.ts","utils/network/builders/order.ts","utils/storage.ts","pages/admin/AdminSubscriptionPage/AdminSubscriptionPage.tsx","pages/admin/AdminSubscriptionPage/index.ts","components/ErrorScreen/index.ts","components/ErrorScreen/ErrorScreen.tsx","containers/defaults/NotFoundContainer/NotFoundContainer.tsx","containers/defaults/NotFoundContainer/index.ts","pages/defaults/NotFoundPage/index.ts","pages/defaults/NotFoundPage/NotFoundPage.tsx","components/admin/CustomDate/index.ts","components/admin/CustomDate/CustomDate.tsx","components/CustomUpload/CustomUpload.tsx","containers/admin/SearchContainer/CustomerContracSearch.tsx","libraries/withModal.tsx","containers/admin/SearchContainer/SearchContainer.tsx","containers/admin/SearchContainer/index.ts","components/ErrorElement/index.ts","components/ErrorElement/ErrorElement.tsx","components/TablePagination/TablePagination.tsx","components/TablePagination/index.ts","components/admin/CustomTable/CustomTable.tsx","components/admin/CustomTable/index.ts","libraries/useOutsideClick.ts","components/admin/Status/Status.tsx","components/admin/Status/index.ts","containers/admin/CustomerContractContainer/SubComponent.tsx","containers/admin/CustomerContractContainer/ResetPasswordButton.tsx","containers/admin/CustomerContractContainer/ReinitSubscriptionEmailButton.tsx","containers/admin/UserAdministrationContainer/CreateUserModal.tsx","containers/admin/SearchCaseContainer/SubComponent.tsx","containers/admin/UserAdministrationContainer/RemoveUserButton.tsx","containers/admin/UserAdministrationContainer/EnableOrDesableUserButton.tsx","containers/admin/CustomerContractContainer/AdministrationClientSpace.tsx","libraries/OutsideClickClass.tsx","components/admin/CustomCollapse/index.ts","components/admin/CustomCollapse/CustomCollapse.tsx","components/admin/MessageCollapse/index.ts","components/admin/MessageCollapse/MessageCollapse.tsx","containers/admin/CustomerContractContainer/CustomerContractContainer.tsx","containers/admin/CustomerContractContainer/index.ts","pages/admin/CustomerContractPage/CustomerContractPage.tsx","pages/admin/CustomerContractPage/index.ts","containers/admin/SearchCaseContainer/SearchCaseContainer.tsx","containers/admin/SearchCaseContainer/index.ts","components/admin/FilterSelect/FilterSelect.tsx","components/admin/FilterSelect/index.ts","containers/admin/SearchCaseContainer/RetryFirstPaymentModal.tsx","containers/admin/SearchCaseContainer/CaseResult.tsx","pages/admin/CasesPage/CasesPage.tsx","pages/admin/CasesPage/index.ts","containers/admin/UserAdministrationContainer/CreateGroupModal.tsx","containers/admin/UserAdministrationContainer/UserAdministrationContainer.tsx","containers/admin/UserAdministrationContainer/UserAdministrationResult.tsx","pages/admin/UserAdministrationPage/UserAdministrationPage.tsx","pages/admin/UserAdministrationPage/index.ts","pages/admin/root.tsx","libraries/withBanner.tsx","containers/ArticleVideoContainer/index.ts","containers/ArticleVideoContainer/ArticleVideoContainer.tsx","containers/PaymentStatusContainer/PaymentStatusContainer.tsx","containers/PaymentStatusContainer/index.ts","containers/PaymentCBModal/PaymentCBModal.tsx","containers/PaymentCBModal/index.ts","containers/FailPieceContainer/FailPieceContainer.tsx","containers/ConsumptionContainer/SelfWithdrawalModal.tsx","containers/ConsumptionContainer/ConsumptionContainer.tsx","containers/HomeContainer/HomeContainer.tsx","pages/HomePage/HomePage.tsx","pages/HomePage/index.ts","containers/FormContainer/HubspotContactForm.tsx","containers/FormContainer/FormContainer.tsx","pages/FormPage/FormPage.tsx","pages/FormPage/index.ts","containers/ProfileContainer/ModificationButtons.tsx","containers/BillContainer/BillContainer.tsx","pages/BillPage/BillPage.tsx","pages/BillPage/index.ts","containers/FileContainer/FileContainer.tsx","containers/FileContainer/index.ts","utils/helpers/pdf.tsx","pages/FilePage/FilePage.tsx","pages/FilePage/index.ts","containers/PaymentContainer/SupportingDocumentErrorModal.tsx","containers/PaymentContainer/PaymentContainer.tsx","components/PDFs/Timeline/fonts.ts","components/PDFs/Timeline/components/Header.tsx","components/PDFs/Timeline/lib/TimelineContext.tsx","components/PDFs/Timeline/lib/useTimeline.ts","components/PDFs/Timeline/components/CustomerContainer.tsx","components/PDFs/Timeline/components/ContractContainer.tsx","components/PDFs/Timeline/components/TimelineTable.tsx","components/PDFs/Timeline/components/Informations.tsx","components/PDFs/Timeline/components/Footer.tsx","components/PDFs/Timeline/Timeline.tsx","components/PDFs/Timeline/generateTimelinePDF.tsx","pages/PaymentPage/PaymentPage.tsx","pages/PaymentPage/index.ts","containers/ProfileContainer/CustomerContact.tsx","containers/ProfileContainer/Payment.tsx","containers/ProfileContainer/ModificationCoholder.tsx","containers/ProfileContainer/ModificationPayment.tsx","containers/ProfileContainer/ModificationContact.tsx","containers/ProfileContainer/ModificationBilling.tsx","containers/ProfileContainer/ProfileContainer.tsx","pages/ProfilePage/ProfilePage.tsx","pages/ProfilePage/index.ts","containers/SponsorContainer/SponsorContainer.tsx","pages/SponsorPage/SponsorPage.tsx","pages/SponsorPage/index.ts","containers/EventContainer/EventContainer.tsx","containers/EventContainer/index.ts","pages/EventPage/EventPage.tsx","pages/EventPage/index.ts","containers/MoveContainer/MoveContainer.tsx","containers/MoveContainer/index.ts","pages/MovePage/MovePage.tsx","pages/MovePage/index.ts","containers/FrequencyContainer/FrequencyContainer.tsx","containers/FrequencyContainer/index.ts","containers/GaugeContainer/GaugeContainer.tsx","containers/GaugeContainer/index.ts","containers/PackageContainer/PackageSettingContainer.tsx","containers/PackageContainer/PackageContainer.tsx","pages/PackagePage/PackagePage.tsx","pages/PackagePage/index.ts","containers/SettingContainer/SettingContainer.tsx","pages/SettingPage/SettingPage.tsx","pages/SettingPage/index.ts","pages/ConsumptionPage/ConsumptionPage.tsx","pages/ConsumptionPage/index.ts","pages/routes.tsx","pages/root.tsx","pages/Main.tsx","index.tsx"],"names":["module","exports","__webpack_require__","p","map","./Explanations_Offer_Capacity.pdf","webpackAsyncContext","req","ids","e","then","id","t","Promise","resolve","Error","code","keys","Object","EEnergy","ECustomerType","ECustomerStatus","ECustomerCategoryCode","EBillingMode","EProfile","ECivility","EAppointmentTimeslot","EProcessTypes","EFrequency","EReadingFrequency","ETimeframe","ERateOption","EIntermediate","ETransactionStatus","EEffectiveStartRange","EtypePayment","EInvoiceRoutingMode","EPaymentMode","EPaymentModeKey","EModeUpdateBilling","EModeManageOffer","EAmountCategory","EAmountType","CreatePasswordMode","EContractStatus","EConsumptionStatus","EMeterReadFrequency","EPieceType","EPAYPaymentMode","EPAYTransactionStatus","EPAYInvoiceStatus","EPAYPrepaymentStatus","EPAYContractStatus","EPAYProcessStatus","EPAYProcessNature","EPAYAccountingType","EPAYIntermediate","EErrorsType","EResponseCode","EMode","EGroups","EActionMode","EMenuLabels","ESubMenuAdministrationLabel","ESubMenuCaseLabel","EConsumptionContext","EFileName","ENature","resetUpdate","createStandardAction","createEventAsync","createAsyncAction","fetchEventAsync","mapCreateEvent","action","_ref4","_ref2","apiRequest","payload","customerNbr","contractNbr","date","category","subCategory","message","path","method","body","pipe","mergeMap","response","errorMessage","throwError","prepareToStore","eventNbr","eventCategory","eventSubcategory","referenceDate","eventStatusCode","of","success","catchError","error","failure","config","URL","process","URL_SUBSCRIPTION","URL_GET_SIRET","URL_PAY","URL_ENERGYPAID","SUBSCRIPTION_LINK","ApiKey","SouscriptionApiKey","REACT_APP_API_KEY_SOUSCRIPTION","HOME_PAGE_LINK","ENV","ExpiredSessionTimeout","EnergyPaid","password","username","aws","region","apiVersion","accessKeyId","secretAccessKey","EffectiveStartDate","NOW","EL","businessDays","calendarDays","NG","LATER","DefaultSwitchDueDate","FunctionNames","getPackages","getOffers","signOrder","searchOrder","casesExtract","Stripe","publicKey","GroupsCanSelectAllPackage","ChannelsFixSwitchLater","ChannelsDoorToDoor","ChannelInformationDocument","HubspotPortalId","HubspotFormId","currentYear","Date","getFullYear","FROM_MONTH","DEFAULT","fromMonth_","toMonth_","renderValueDate","pDate","getMonth","getDate","YearMonthForm","_ref","onChange","moment","locale","months","years","i","push","handleChange_","_e$target$form","target","form","year","month","value","react_default","a","createElement","className","name","key","modifiersStyles","highlighted","color","backgroundColor","outside","CustomDate","props","_this","classCallCheck","this","possibleConstructorReturn","getPrototypeOf","call","renderStateFromMonth","renderDate","undefined","handleYearMonthChange","bind","assertThisInitialized","state","month_","setState","_this2","_this$props","onDateChange","maxDate","Fragment","DayPickerInput_default","keepFocus","onDayChange","dt","placeholder","format","parseDate","formatDate","dayPickerProps","modifiers","fromMonth","toMonth","localeUtils","MomentLocaleUtils","disabledDays","after","captionElement","CustomDate_YearMonthForm","React","Component","resources","ic-elec-counters","IconElecCounters","ic-gas-counters","IconGasCounters","ic-logo-sidebar","IconLogoSideBar","ic-timeline-status-ok","IconTimelineOk","ic-timeline-status-logo","IconTimelineLogo","ic-timeline-status-error","IconTimelineError","ic-timeline-status-waiting","IconTimelineWaiting","ic-timeline-status-abandonned","IconTimelineAbandonned","ic-logo-login","IconLogoLogin","ic-elec-off","IconElecOff","ic-elec-on","IconElecOn","ic-elec-green","IconElecGreen","ic-gas-on","IconGasOn","ic-gas-off","IconGasOff","ic-logout-sidebar","IconLogOut","ic-wekiwi-popup","IconWekiwi","ic-wekiwi-popup-orange","IconWekiwiOrange","ic-avatar","IconAvatar","ic-linkedin","IconLinkedin","ic-instagram","IconInstagram","ic-facebook","IconFacebook","ic-youtube","IconYoutube","ic-twitter","IconTwitter","ic-certification","IconCertification","ic-menu","IcMenu","ic-menu-h","IcMenuH","ic-menu-orange","IcMenuOrange","ic-menu-orange-creu","IcMenuOrangeCreu","ic-triangle","IcTriangle","ic-cross","IcCross","ic-check-validate","IcCheckValidate","ic-filter-symbol","IcFilterSymbol","ic-arrow-back","IconArrowBack","ic-arrow-next","IconArrowNext","ic-loader","IconLoader","ic-copy-clipboard","IconCopyClipboard","ic-wekiwi-new","IconWekiwiNew","ic-new-logo-accueil-background","IconAccueilNewWekiwi","ic-arrow-open-menu","IconArrowOpenMenu","ic-arrow-down","IcArrowDown","ic-arrow-subscribtion","IcArrowSubscription","PackageWording","WordingCommon","PackagePage","CommonWording","Common","WordingMapping","mapping","log","title","Config","console","isValidString","isValidEmail","test","String","toLowerCase","isValidPhone","length","sub","substr","isValidIban","IBAN","isValid","pad","s","concat","isValidName","arguments","allowSpecialChars","RegExp","indexOf","isValidBirthDate","today","birthDate","age","m","isValidBirthDatePro","getFormattedDate","d","join","getFormattedDateToBackEnd","reversed","separator","units","reverse","getDateFormatted","getTodayDate","displayPhoneWithoutPrefix","replace","getPhoneWithPrefix","findContractByNumber","nbr","arr","find","contract","contractNumber","findCoholder","thirdParties","role","displayPlaceholder","size","res","Array","from","forEach","getTimeframeFromLabel","label","getLabelByValue","obj","displayFrequency","frequency","frequencies","f","text","transformAuthorizedPackages","packages","sort","x","y","timeframe","parseInt","amount","findPackagesByRange","range","transformAuthorizedPackagesToPackages","ps","Number","findPackageById","packageID","recommended","pkg","getLabelCivility","civility","EnumItem","civilities","c","comparePieces","b","invoicing_period_end_date","getTime","findLastValidPiece","pieces","lastValid","sortedPieces","currentDate","piece","parse","status","concatUrl","customer","contact","birthdate","url","type","customerFullName","firstName","lastName","email","phone","INDIVIDUAL","coholder","companyName","companyType","identificationNumber","activityCode","filteredArr","reduce","acc","current","item","getEnergyConsumption","meters","consumptions","fill","highs","lows","totalhours","quantityMonthly","summer","SUMMER","winter","WINTER","sp","wp","labels","lastYear","endDate","setFullYear","lastYearDate","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","Symbol","iterator","next","done","start","startDate","end","startMonth","endMonth","high","meterRead","HIGH","consumption","low","LOW","totalhour","TOTAL_HOUR","readingFrequency","MONTHLY","parseFloat","quantity","limit","j","startYear","sj","controlYearE","fraction","err","return","sortFinalLabels","lastDate","labelsDateObjects","toLastMonth","isFirstDayOfMonth","newDate","setMonth","generateLast12MonthsLabels","toLocaleDateString","shift","consumptionsArray","shiftArray","highsArray","lowsArray","totalhoursArray","labelsArray","direction","n","times","splice","compareMeterRead","sortedConsumptionList","removeDuplicateConsumptionList","seen","Set","filter","JSON","stringify","duplicate","has","add","buildClassName","nodes","formatNameString","str","setInitialCap","fmt","split","toUpperCase","capitalizeFirstLetter","formatFirstNameString","formatSIRETString","slice","formatSiteString","chunks","startIndex","nextChunk","substring","parseQueryParams","location","host","protocol","params","Map","pathname","search","searchParams","typedValue","numberValue","set","get","clear","isEmpty","getHost","extendedPath","window","paramStr","isEmptySelectOption","selection","getSelectOptionValue","values","sleep","_callee2","ms","regenerator_default","wrap","_context2","prev","abrupt","setTimeout","stop","_callee3","collection","fn","entries","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_iterator2","_step2","entry","_context3","t0","finish","isLimitedAuthorization","subGroupMode","groupMode","LIMITED","isFullAuthorization","FULL","isMixedAuthorization","_ref3","isHaveActionsPermission","actionMode","getInitialGroup","group","isLimitedAuthorizationBySchema","menuLabel","subMenuLabel","authSchema","currMenu","currSubMenu","subMenu","sm","isUserLimitedBySchema","userLimited","isOdd","num","getLabelByType","getImgSrcByUserStatus","array_move","old_index","new_index","k","parseSrcIframe","src","exec","addDays","days","result","setDate","prepareEffectiveStartDate","energy","isCyclic","_EffectiveStartDate$t","nextBusinessDate","nDays","now","dayOfTheWeek","getDay","Math","floor","setTime","addBusinessDays","prepareFrequenciesToDisplay","BIMONTHLY","QUARTERLY","FOURMONTHLY","addMonth","nmMonth","transformPieceType","pt","ADHOC","getAPEFromObject","replaceAll","parseUploadAmendments","_ref5","asyncToGenerator","mark","_callee","file","_context","reject","Papa","header","skipEmptyLines","complete","results","errors","data","_x4","apply","checkIsDisableSwitchSelect","_ref6","channel","isNil","some","curr","fetchContextAsync","updatePasswordAsync","createSponsorAsync","updateCustomerAsync","updateBillingAsync","mapGetContext","userId","sessionStorage","getItem","contracts","fetchLoginAsync","mapUpdateCoholder","mode","effectiveDate","mapUpdateBilling","_ref14","_ref13","ibanCode","rumCode","billingAddress","debitDay","routingMode","DEBIT_DAY","ROUTING_MODE","preparePayloadUpdateBilling","paymentMode","controlData","slDt","custom","arrEnergies","prepareData","tag","customerType","triggerButton","serviceCalled","statusAction","logMessage","returnCode","energyList","customerIdentificationKey","dataLS","localStorage","localStorageData","environnement","timestamp","toString","app","prepareObject","jsonLog","setItem","settings","headers","Content-Type","x-api-key","responseType","crossDomain","consoleLog","ajax","ajaxError","subscribe","casesExtractAsync","resetPasswordAsync","reinitSubscriptionEmailAsync","resetReduxStore","removeError","resetAuthErrors","removeReinitSubscriptionMessage","refreshSessionExpirationStatus","fetchContractAsync","resetContractState","setContract","resetCreateIndex","fetchMeterConfigAsync","fetchMeterReadingAsync","createIndexAsync","mapGetMeterReading","pointOfDelivery","energyType","reads","fetchFilesListAsync","Font","register","family","fonts","fontWeight","Montserrat400","Montserrat800","styles","StyleSheet","create","container","flexDirection","alignItems","img","width","height","padding","components_Header","react_pdf_browser_es","style","Logo","flex","Container","children","pageNumber","position","fontSize","bottom","left","right","textAlign","PageNumber","render","totalPages","fixed","justifyContent","primary","fontFamily","secondary","titles_Main","_Wording$titles","Wording","titles","main","sub_title","context","createContext","ProofOfPaymentProvider","Provider","useProof","useContext","ProofContext","energyImg","paddingBottom","paddingTop","margin","textContainer","infoTitle","infoValue","infoMargin","marginBottom","Info","_ref$style","objectSpread","customerInfo","dateOfIssue","mail","CustomerInfo","_useProof","ElecIcon","GasIcon","CustomerInfo_Info","beneficiaryInfo","marginTop","objectFit","BeneficiaryTitle","ArrowIcon","imgTextContainer","phoneText","marginRight","moreText","ImageText","BeneficiaryInfo","titles_BeneficiaryTitle","BeneficiaryInfo_ImageText","MailIcon","PhoneIcon","phoneDescription","more","FacebookIcon","facebook","WebIcon","urlfq","YoutubeIcon","youtube","borderRadius","LeftColumn","LeftColumn_CustomerInfo","LeftColumn_BeneficiaryInfo","borderBottom","borderBottomColor","Section","ObjectTitle","object","Adresse","_ref$data","number_street","zip_code_city","textValueContainer","TextValue","sections","offer","modulation","frequencyMapping","mappingEnergy","modulationCheck","chosenPackages","Offer","_useProof$contract","installmentFrequency","RightColumn_TextValue","summary","transactionDate","paymentRef","paymentModeMapping","Summary","_useProof$piece","piecePaymentMode","payment_method_name","paymentDate","pm","Cell","content","mergedStyles","weighting","isHeader","borderRight","wordWrap","whiteSpace","DataCell","Table_Cell","assign","Row","rowCells","Children","toArray","remainingWeighting","numberOfWeightingsDefined","weightingsPerNotSpecified","ceil","borderLeft","borderTop","display","rc","columnIndex","cloneElement","includeLeftBorder","includeRightBorder","Header","Table_Row","Body","rowIndex","Table","tableHeader","tableBody","rowStyle","CustomTable","dataToDisplay","transactionName","internal_invoice_nature_text","Table_Table","Header_Header","Cell_Cell","Body_Body","DataCell_DataCell","r","address","beneficiary","clientTitle","RightColumn","titles_Object","RightColumn_Adresse","number","street","postalCode","townName","titles_Section","RightColumn_Offer","RightColumn_Summary","RightColumn_CustomTable","fullName","BottomText","attestDate","opacity","Footer","LogoWekiwi","footer","text1","text2","page","@media max-width: 400","columnsContainer","ProofOfPayment","author","components_Container","components_LeftColumn","components_RightColumn","components_BottomText","components_Footer","components_PageNumber","resetSupportingDocumentError","fetchPiecesAsync","fetchEPInvoicesAsync","createPaymentAsync","fetchBalanceAsync","getSupportingDocumentsAsync","mapGetEPInvoice","jsonrpc","customer_ref","contract_ref","prepareEPInvoicesPayload","isPay","isPayEP","description","mapGetSupportingDocuments","_ref7","_action$payload","actionProps","objectWithoutProperties","pdf","PDFs_ProofOfPayment_ProofOfPayment","toBlob","blob","open","createObjectURL","fetchPackageAsync","fetchProductAsync","fetchOfferAsync","updatePackageAsync","mapFetchPackDynamic","preparePayloadFetchPackDynamic","isSubscription","packagesList","preparePayloadFetchOffer","modifiedContracts","estimates","rateOption","HIGH_LOW","getEstimates","contractChannel","Boolean","mapFetchOffer","_ref8","offers","mapFetchProduct","_ref10","_ref9","contextOfUse","preparePayloadFetchProduct","productsList","createProduct","_ref15","payloadProduct","additionalRates","chosenProduct","mapUpdatePackage","_ref17","_ref16","product","option","modifiedContract","INSTALLMENT_FREQUENCY","PACKAGE","PRODUCT","OPTIONS","updated","active","preparePayloadUpdatePackage","fetchCustomerContractAsync","uploadAmendmentsAsync","resetUploadAmendments","mapGetCustomerContract","preparePayloadCustomerContract","WordingConstant","Errors","defaultMessage","default","RequestError","_Error","inherits","wrapNativeSuper","ExternalError","_RequestError3","NoDaysListError","_RequestError4","noDaysList","NoPackageListError","_RequestError5","noPackageList","NoMatchingPackagesError","_RequestError6","noMatchingPackages","CompletePackagesError","_RequestError7","NoEnergySelectionError","_RequestError8","noEnergySelection","SessionExpiredError","_RequestError9","sessionExpired","fetchOrderAsync","searchClientAsync","preparePayloadOrder","fromDate","toDate","orderNumber","processType","externalReference","createdBy","searchUserGroupAsync","mapGetSearchUserGroup","preparePayloadSearchUserGroup","userList","caseResultRetryFirstPaymentAsync","retryFirstPayment","mapGetRetryFirstPayment","preparePayloadClientSpace","createGroupAsync","resetGroupResponse","mapCreateGroup","preparePayloadCreateGroup","getGroupAsync","resetGroupListResponse","createUserAsync","resetCreateUserResponse","mapCreateUser","preparePayloadCreateUser","createPasswordAsync","mapCreatePassword","preparePayloadCreatePssword","manageUserAsync","resetManageUserResponse","mapManageUser","preparePayloadManageUser","transferGetContractAsync","transferContractAsync","resetResponse","resetResponseTransfer","mapTransferContract","preparePayloadTransferContract","adminClientSpaceAsync","resetAdminClientSpaceResponse","mapGetClientSpace","createPaymentCBAsync","resetModal","createAction","combineEpics","action$","state$","dependency","isActionOf","request","switchMap","user","token","currentUser","accessToken","groupe","autorizationsScheme","validated","mapPostLogin","slicedToArray","loginResponse","forkJoin","modifiedAction","contextResponse","getType","errResponse","mapPostResetPassword","mapGetContract","mapGetEvents","marketing","newsletter","mapUpdateCustomer","customerResponse","coholderResponse","event","_ref11","_ref12","billingResponse","_ref18","readingDate","mapGetMeterConfig","meterConfig","meterReading","meterConfigResponse","meterReadingResponse","meterReads","preparePayloadIndex","mapPostIndex","mapUploadAmendments","_ref20","_ref19","oldPassword","newPassword","mapUpdatePassword","_ref22","_ref21","sponsorId","sponsorFirstName","sponsorLastName","targetEmail","mapCreateSponsor","_ref$mode","preparePayloadListFile","mapGetFiles","invoiceId","contractId","preparePiecesPayload","mapGetPiece","payment","dueDate","partner_ref","prepareCreatePaymentPayload","financialPieces","mapResubmit","mapGetBalance","reference","pointOfDeliveryList","preparePayloadFetchPackage","prepaymentFrequencies","productCode","mapFetchPackage","estimate","timeFrame","packageQuantity","mapFetchPackageEstimates","productResponse","offerResponse","promiseProduct","promiseOffer","products","packageResponse","firstResponse","secondResponse","newActionEvent","_ref23","mapReinitSubscriptionEmail","lambdaFunctionName","mapGetOrder","mapGetGroup","customerId","mapGetTransferContract","mapCreateCBPayment","mapGetSearchedClients","initialScheme","root","initialState","loading","unauthorized","reinit","authReducer","actions","valueOf","createPasswordActions","caseResultActions","toConsumableArray","paymentCBActions","contractActions","eventActions","adminClientSpaceActions","orderActions","consumptionActions","profileActions","fileActions","paymentActions","packageActions","createGroupActions","getGroupActions","manageUserActions","createUserActions","customerContractActions","userGroupActions","transferContractActions","initialCustomerFullName","initialAddress","country","netArea","initialContact","MR","initialEPInvoice","PAYMENT_SCHEDULE","EMAIL","partner_name","partner_reference","invoice_type","invoice_number","invoice_date","invoice_date_due","invoice_amount_total_signed","invoice_amount_residual_signed","invoice_state","hgz_invoice_nature_code","hgz_invoice_nature_text","internal_invoice_nature_code","payment_method_code","invoicing_period_start_date","replacing_payment_count","energy_paid_number_replays","initialUnitPriceWithLabel","ADDITIONAL_RATE","price","unit","initialProduct","productType","initialContract","contractStatus","EFFECTIVE","effectiveStartRange","effectiveStartDate","subscriptionDate","lastRenewDate","sponsorNumber","contractCategory","deliveryCategoryCode","deliveryPoint","deliveryPointCategory","grdCode","gridRate","deliveryStatus","profile","meterNumber","meterType","smartMeterStatus","contractualCapacity","contractualCapacityUnit","MOVE_IN","express","supplierCalendar","appointmentTimeslot","NONE","index","registers","UNKNOWN","billingMode","settlementFrequency","BIANNUAL","finance","bicCode","bankName","accountOwnerLastName","accountOwnerFirstName","billingContact","invoiceRoutingMode","invoiceEmail","termCode","customerNumber","customerCategoryCode","updateResponse","checkUpdateProfile","checkUpdateContact","checkUpdateBilling","checkUpdateIban","profileReducer","_action$payload$custo","_action$payload$custo2","selectedContractNumber","currentContract","contractReducer","isFetched","_action$payload2","_action$payload3","events","eventReducer","digitSize","errorMeterConfig","errorMeterReading","consumptionReducer","noData","files","documentsList","invoice_list","payment_list","documents","invoices","payments","fileReducer","epInvoices","epPayments","balance","supportingDocument","paymentReducer","prepayments","adhocPieces","invoice","INVOICE","pp","PREPAYMENT","adh","loadingPackage","loadingOffer","packageReducer","pf","customers","transferContract","customersContractReducer","order","searchClient","orderReducer","groupList","administrationList","manageUserResponse","createUserResponse","createGroupResponse","userGroupReducer","administrationClientSpace","retryFirstPaymentResponse","retryFirstPaymentReducer","transferContractResponse","transferContractReducer","iframe","stripe","adhocPaymentId","transactionId","responsePayload","requestProps","rootReducer","combineReducers","paymentCBReducer","version","APP_VERSION","STORAGE_KEY","saveState","storeState","serializedState","loadState","fetchApiRequestBlob","bodyRequest","configPath","fetch","sent","_x3","_x5","expires","removeItem","Observable","observer","modifiedBody","ctrChan","storageGroup","renderChannel","seller","Accept","isArray","services","getUserId","epicMiddleware","createEpicMiddleware","dependencies","composeEnhancers","compose","persistedState","middlewares","store","createStore","applyMiddleware","getState","run","rootEpic","hostname","match","AuthService","isValidated","CustomButton","disabled","onClick","arrowLeft","arrowRight","isLoading","heavy","classNames","CustomInput","setting","htmlFor","isInterrogationVisible","onToggleModal","onKeyDown","tabIndex","deleteButton","deleteButtonOnClick","isLocked","onInputChange","minLength","maxLength","defaultValue","onBlur","onKeyPress","CustomDayPicker","dateHighlighted","weekend","daysOfWeek","components_CustomInput","DayPicker_default","selectedDays","onDayClick","handleChangeDay","LoadingComponent","columns","defaultPageSize","noDataText","sortable","buttonTitle","handleButtonClick","SubComponent","PaginationComponent","showPagination","showPaginationBottom","downloadHeaders","downloadData","downloadFilename","downloadButtonTitle","pageSize","filterable","react_table_es","getTrProps","rowInfo","column","data-qnt","original","SOME_VALUE_WITH_QUANTITY_OF_CHILDREN_ROWS","components_CustomButton","react_csv","filename","CustomToggle","react","checked","handleCheck","handleClick","indicatorSeparatorStyle","alignSelf","IndicatorSeparator","innerProps","CustomSelect","isMenuOpen","val","handleChangeSelect","options","isClearable","isMulti","inputValue","dist_react_select_browser_esm","classNamePrefix","isDisabled","_","formatCreateLabel","react_select_browser_esm","closeMenuOnSelect","components","onMenuOpen","handleChange","onMenuClose","CustomModal","show","showCloseButton","customStyle","popup","closeButton","PriceWording","DetailWording","detail","CommonUnit","PlanElement","prices","additionalOptions","currentAdditionalOptions","currentProductCodes","loadingOption","handleToggle","containerClassName","contractProduct","priceClassName","priceUnit","priceCyclic","details","totalAmount","subscription","unitPrices","additionalRate","totalBudget","discountRates","discountRate","renderPrice","fix_part","displayedUnit","paymentFrequency","transformPriceLabel","formattedPrice","toFixed","react_content_loader_es","fix","grossPrice","rate","idx1","idx2","discountPrice","includes","renderDetail","EnergyDetail","WordingOption","EnergyGauge","initial","ranges","maxValue","useEffect","renderProgressBar","idx","plan","gauge","js_default","formatLabel","minValue","step","PackageElement","chosen","iconizing","CustomCheckbox","imageSrc","alt","CustomRadio","MainPage","SideBar","withRouter","history","handleLogout","logout","routes","isAdmin","adm_user","adm_groupe","numClient","SideBar_LogoutButton","route","hidden","links","subRoute","indexRoute","FAQ","href","rel","Link","to","BannerElement","imgSrc","span","PROFESSIONAL","Banner","dropDown","selectItem","Banner_BannerElement","setImage","_this$props2","renderDefaultItem","Modal","_ref$state","_ref$showCloseButton","handleCancel","handleValidate","customDescription","descriptionStyle","showLogo","stopPropagation","dangerouslySetInnerHTML","__html","prepareDescription","renderCustomDescriptipn","cancelButton","validateButton","showBottom","objectDestructuringEmpty","articles","link","socialLink","linkedin","instagram","twitter","footerBottomText","PaymentPage","Balance","contractBalance","CustomTransfer","inputs","handleInputChange","handleModal","modalTitle","input","renderSubLink","displayInput","ConsumptionPage","CustomProgressbar","progressBar","ReactCustomizableProgressbar_default","steps","radius","progress","strokeWidth","strokeColor","trackStrokeWidth","pointerRadius","pointerStrokeWidth","pointerStrokeColor","pathImg","OptionElement","currentOptions","idToggle","components_CustomToggle","currentTarget","Chart","helpers","drawRoundedTopRectangle","ctx","beginPath","x_tl","x_tr","y_tl","y_tr","x_bl","x_br","y_bl","y_br","moveTo","lineTo","quadraticCurveTo","closePath","elements","RoundedTopRectangle","Rectangle","extend","draw","top","signX","signY","borderSkipped","_chart","vm","_view","borderWidth","horizontal","base","barSize","min","abs","halfStroke","barWidth","prevTop","barRadius","fillStyle","strokeStyle","borderColor","lineWidth","stroke","defaults","roundedBar","clone","bar","controllers","dataElementType","plugin","afterDraw","chartInstance","easing","isDetailed","responsive","legend","scales","yAxes","stacked","gridLines","ticks","beginAtZero","xAxes","tooltips","titleFontSize","titleFontColor","bodyFontColor","bodyFontSize","xPadding","callbacks","tooltipItem","datasets","datasetIndex","round","yLabel","chart","afterLabel","currentMonth","monthsMapping","StackedBar","canvasRef","useRef","_useState","useState","_useState2","detailed","setDetailed","_useState3","_useState4","setChart","detailData","package","barThickness","stack","normalData","update","document","getElementById","innerHTML","generateLegend","getContext","plugins","toggleButtonText","ref","WordingComont","filterPages","visiblePages","getVisiblePages","total","Pagination","pages","onPageChange","setVisiblePages","changePage","vps","activePage","previousText","array","nextText","BackgroundElement","SearchService","handleSearch$","raw","unsubscribe","term","doSearch","promise","city","Subject","debounceTime","distinctUntilChanged","Prompts","prompts","throttleDelay","formatOption","EAdditionalRateTypes","EBillingModes","ECategories","ECivilities","ECompanyTypes","EContractStatuses","EContractualCapacityUnits","ECustomerStatuses","ECustomerTypes","EDeliveryPointCategories","EDeliveryPointStates","EDeliveryStatuses","EEffectiveStartRanges","EEnergyTypes","EFirstPaymentCBStatuses","EHeatingTypes","EGridRates","EHousingTypes","EInvoiceRoutingModes","EInstallmentFrequencies","EOrderStatuses","EPaymentModes","EProductTypes","EProfiles","ERateOptions","EReadingFrequencies","ERebateCodeTypes","EResidenceTypes","EResultSponsor","ERoles","ESavingModes","ESettlementFrequencies","ESubscriptionTypes","ETimeframes","ETimeslots","ETypes","EUnitAmounts","PostalCodeSelect","componentDidUpdate","prevProps","componentWillUnmount","searchService","setRaw","handleSelection","throttle","initialSelection","initialOptions","onSelection","refreshPostalCodeOptions","toPromise","codes","pc","_this$state","components_CustomSelect","selects","nextState","isCyclicalProduct","isEqualProduct","prod1","prod2","rateLess1","omit","rateLess2","isEqual","isEqualAuthorizedPackages","auth1","auth2","winter1","winter2","summer1","summer2","getAddressStreetLabel","parseOrderRebateCode","orderCode","shouldBreak","thirdParty","toEnergies","energies","ELECTRICITY_AND_GAS","ELECTRICTY","GAS","ELECTRICITY","requiresPayment","firstPaymentCB","CYCLICAL_BILLING","filterAppointments","appointments","condition","element","available","lastDay","tomorrow","before","AdminSubscriptionContainer","Situation","WordingDebitDay","ProfilePage","baseClassName","paymentModeOptions","paymentModes","directDebit","DIRECT_DEBIT","paymentCB","BANK_TRANSFER","preparePaymentModOptions","cyclicalProducts","energyTypes","elec","gas","switchingSupplierOptions","later","initialDateValues","changingSupplierStartTime","electricityExpress","electricityFirstPaymentCB","electricityTimeslots","electricityTimeslotSelection","gasExpress","gasFirstPaymentCB","gasTimeslots","gasTimeslotSelection","movingInElectricityDatePick","movingInGasDatePick","addressValue","addressCoords","civilitySelection","currentProcessTypeSelection","electricityAppointments","firstNameValue","gasAppointments","IBANValue","identicalAddressToggleState","isJointContract","paymentModeSelection","postalCodeSelection","lastNameValue","SituationSection","paymentMethod","debitDaysEnum","handleAddressInput","handleCoordsInput","handleIBANInput","handleIdenticalAddressToggle","handleJointContractToggle","handleMovingInDateCalenderOptions","handleMovingInDatePickerPick","handlePaymentModeSelection","handlePostalCodeSelection","handleSituationToggle","handleSwitchingSupplierContractStartTimeSelection","handleTimeslotSelection","validate","handleDebitDay","init","siteOptionSelection","isCyclicalProductElec","isCyclicalProductGas","initialParams","movingInParams","switchParams","coords","iban","parsePreviousMovingInParams","SWITCH","parsePreviousSwitchParams","initialRange","coholderCivility","coholderFirstName","coholderLastName","fetchAppointments","prevState","prevIsIndividual","isIndividual","prevSiteOptionSelection","prevMovingInElectricityDatePick","prevMovingInGasDatePick","_this$props3","_this$state2","isSwitch","shouldUpdateelectricityTimeslots","shouldUpdategasTimeslots","fetchTimeSlots","getCalendarAppointment","shouldFetchElectricityAppointements","shouldFetchGasAppointments","electricity","searchAppointmentTimeslot","nextValue","identical","toggled","_this$state4","_this$props5","wekiwiPro","day","actualDate","_this$state5","apps","appDate","matchDate","nextFirstPaymentCB","situation","_this$props6","_this$state6","prepareDateValue","startTime","getDateByEnergy","nextDateProps","opt","timeslot","hasElectricity","hasGas","parsePreviousEnergyMovingInParams","electricityParams","timeslots","timeslotSelection","datePick","gasParams","appointmentsRes","previousDatePick","previousTimeslot","appointmentDay","previousAppDate","previousAppDateStr","appDateStr","timeslotsRes","switchData","nextDate","electricityEffectiveStartDate","gasEffectiveStartDate","electricityTimeslot","gasTimeslot","electricityDueDate","gasDueDate","_this$props8","onValidationStatusChange","_this$state7","hasValidInput","setHours","selectedDay","_this$props9","_this$state8","dateContract","bundle","switch","toDateContract","initialCoords","bcn","components_CustomRadio","movingIn","switchingSupplier","components_CustomDatePicker","dropdownContractOptions","dropdownContractOptionSelection","handleChangeTimeslotSelect","handleDateCalendarOption","handleDatePicker","handleDropdownContract","paddingLeft","dd","debitDayLabel","terms","disclaimerHead","disclaimerBody","components_AddressSelect","onAddressInputChange","onCoordsChange","onIdenticalAddressToggle","onPostalCodeSelection","identicalAddress","jointAccount","yes","no","components_CoordsInputs","Components","DateContainer","DateConatiner","renderInfosDiv","contractDate","selectedDate","dateExtraCoat","handleChangeBool","updatedSetting","defineProperty","hideDiv","handleChangeBoolSelect","showSelect","renderTextWithCalendar","shouldDisplayCBWarning","attention","renderTextSwitchByCalendar","classN","renderDescription","renderTheoreticalDate","switchType","selectedDates","renderTheoreticalDate21Days","updatedSelectedDates","renderCalendar","renderTitle","LOCAL","MONTH","weekdaysShort","WEEKDAYS_SHORT","weekdaysLong","WEEKDAYS_LONG","firstDayOfWeek","FIRST_DAY_OF_WEEK","inputProps","readOnly","onFocus","hideOnDayClick","onDayPickerShow","onDayPickerHide","renderSelectTimeslot","_this$props4","ts","noTimeslotLabel","remove","timeslotOptions","paragraphClassName","energyStr","timeslotSelectorElectricity","timeslotSelectorGas","timeslotSelectorTitle","timeslotSelectorPrompt","placeholderSelector","isLockedSituationSelect","nextSetting","Calender","displayText","moved","changeSupplier","CustomDatePicker","nextProps","CustomDatePicker_DateContainer","activeTileClassName","highlightedTileClassName","wrappedTextClassName","unwrappedTextClassName","wrapToggleClassName","Tile","onToggle","titleHint","wrapped","setWrapped","mainClassName","textStatusClassName","wrapToggleStr","cn","_len","names","_key","CheckboxTile","distinctCheckbox","components_CustomCheckbox","components_Tile","toIsc","fromCharCode","toColonHeading","removeSpaces","AddressSelect","checkboxesClassName","inputsClassName","addressClassName","addressError","setInitialAddress","setAddress","_useState5","_useState6","setCity","_useState7","_useState8","isIdentical","setIdentical","_useState9","_useState10","setCoords","_useState11","_useState12","coordsErrors","setCoordsErrors","nextErrors","firstNameChanged","lastNameChanged","ClientData","firstNameValidity","lastNameValidity","nextInput","formatAddressString","components_PostalCodeSelect","titleClassName","textClassName","CustomError","hiddenClassName","centeredClassName","windowClassName","contentClassName","backgroundClassName","closeButtonClassName","CustomOverlay","centered","handleClose","background","el","elHeight","getBoundingClientRect","winHeight","innerHeight","scrollIntoView","behavior","block","Separator","CloseButton","leftClassName","rightClassName","ToggleIndicator","textAlignment","isLeft","firstNameText","lastNameText","civilStatuses","mr","mme","MRS","MS","CoordsInputs","updates","merge","civilityValue","civilStatus","TimelineStatus","getColor","isPro","segmentIndx","colors","getDataSegment","prepare","loopArr","lastColor","getLabels","SegmentIcon","cur","getImageByColor","Segment","Segment_SegmentIcon","welcome","Step","isLast","openDetails","setOpen","dates","activContract","buildDates","_renderByType","_getDataSegment3","_getDataSegment4","first","second","isNextFull","check","component","Segment_Step","Segment_Segment","renderProfessional","_getDataSegment","_getDataSegment2","third","secondLabel","renderIndividual","lb","wording","PaymentCBModal","StripeForm","clientSecret","onFormValidate","clientName","setIsLoading","useElements","useStripe","onValidateForm","preventDefault","stripeElementError","getElement","CardNumberElement","elementError","confirmCardPayment","payment_method","card","billing_details","_x","renderFakeCard","cardNumber","isClicked","setisClicked","lib","onCopy","isDebugMode","onSubmit","label_card_number","react_stripe_umd","label_card_expiry","label_card_cvc","debugLabel","button_cancel","button_validate","withLoader_LoadingSpinner","Group","schemaProps","newOption","propsSelect","currentGroup","withSelectAll","AuthorizationSchemaGroup","AuthSchemaItem","handleSetCheckbox","handleSetActionMod","handleSetSubMenu","handleSetAccess","_ref$itemValues","itemValues","isChecked","subMenus","accessItem","actionModes","aMod","uId","subMenuItems","subMenuItem","uIdItem","accessItems","access","uIdMenu","READ_ONLY","elm","readeOnly","renderByActionType","sortingAlg","rang","getAuthorizationSchema","isSelectedAll","setSelectAll","itemsState","setItemValue","actionsModesState","setModesValue","subMenuState","setSubMenuValue","accessState","setAccessState","actModes","subMn","renderItems","prepareAccess","ai","build","buildAuthorizationSchema","prepareArr","itemKey","ItemElm","menuKey","MenuItem","AccessItem","ActionItem","prepareMenuObject","handleSetItemValue","newValues","newMenus","readOnlyItems","currentMenusByItem","newMenuValues","objBuild","mods","selectAll","AuthorizationSchemaGroup_AuthSchemaItem","LoadingSpinner","defaultOptions","loop","autoplay","animationData","dist_default","isStopped","LoaderModal","components_CustomModal","withLoader","debug","WrappedComponent","handleCloseModal","withLoader_LoaderModal","components_Modal","expiredSession","CustomInputNewGen","genericError","CustomButtonNewGen","footerAuth","WordingTitle","SlidingMenu","isOpen","setIsOpen","_React$useState","_React$useState2","isOpenIndividual","setIsOpenIndividual","individual","subItem","subIndex","CustomButton_CustomButtonNewGen","button","countries","AuthPage","AuthContainer","fields","toggle","responseMessage","handleButtonLogin","handleButtonPassForgot","handleInputError","isSlidingMenuOpen","handleSlidingMenu","isEmail","handleEnterPressed","keyCode","which","components_SlidingMenu","passForgot","title2","subTitle","subTitle2","CustomInput_CustomInputNewGen","errorMsg","msg","validButton","login","errorLogin","errorPassword","pass","passForgotLoginPage","dispatchProps","authDispatch","resetPasswordDispatch","resetAuthErrorsDispatch","WrappedAuth","_React$Component","trim","errorEmail","notEmail","notLogin","notPassword","handleSlidingMenuOpen","slidingMenu","sendError","errorTitle","createClass","_this$props$authState","authState","isSignIn","isAuthenticated","isVlaidated","Redirect","connect","ResetPasswordPage","responseMessages","confirmPassword","handleGoBack","errorForm","regex","formatErrorMessage","NewPass","passValidate","backButton","renderConnexion","FooterAuth","resetAuthError","WrappedPassword","ResetPasswordContainer","temporaryPassword","VALIDATION","AdminHomePage","buildFinalContracts","finalContracts","elecPrepare","selectedFrequency","gasPrepare","isCyclical","fmtDate","billingModeCode","hLog","handleRequest","args","defaultError","pathStr","errCode","errMessage","RequestErrors","_x2","checkSponsor","resultSponsor","OK","KO","_x6","searchSiret","_callee5","_context5","_callee4","_context4","X-INSEE-Api-Key-Integration","json","_x7","_callee7","_args7","_context7","_callee6","previousContract","isPaymentSchedule","daysList","_context6","isNaN","deliveryState","getDeliveryPointPackages","_callee8","_args8","_context8","filterGetPackagesError","getPackDynamic","_callee9","_args9","_context9","getRawDeliveryPointPackages","_callee10","_args10","_context10","getEstimatesPackages","_callee11","_args11","_context11","_callee12","_args12","_context12","getOrder","_callee14","_args14","_context14","_callee13","_context13","getOrderStatus","_callee16","_args16","_context16","_callee15","_context15","getSurveyPackages","_callee17","survey","_args17","_context17","getProducts","_callee19","_args19","_context19","_callee18","_context18","ctr","nextCtr","hasElectricityMatch","hasGasMatch","compareAllJsonFieldsInArray","noMatchingElectricityPackages","noMatchingGasPackages","Steps","_callee21","_args21","_context21","_callee20","_context20","saveOrder","_callee23","_args23","_context23","_callee22","_context22","savingMode","SEND_EMAIL_LINK","_ref24","_callee25","_context25","_ref25","_callee24","dayStr","monthStr","dateStr","_context24","without","_x8","_x9","_ref26","_callee27","_args27","_context27","_ref27","_callee26","_context26","getCasesHistory","_ref28","_callee28","_context28","subtract","toISOString","offset","CustomerFormModal","accomodationType","area","heatingType","inhabitants","livingIn","accomodationOptions","accomodationTypes","PRINCIPAL","SECONDARY","accomodation","areaOptions","gap","heatingTypeOptions","heatingTypes","common","COLLECTIVE","inhabitantsOptions","livingInOptions","livingInTypes","apartment","APPARTMENT","house","HOUSE","CustomerSurveyModal","handleValidationClick","handleConsumptionInput","handleAccomodationTypeSelection","handleAreaSelection","handleHeatingTypeSelection","handleInhabitantsSelection","handleLivingInSelection","handleRateOptionSelection","onCancel","onValidation","newAddress","recoverySurvey","validCount","numberPath","streetPath","numberStreet","isc","rateOptions","prompt","highLow","totalHours","unknown","cancel","PaymentIframeModal","Success","orderReference","Icon","congratulations","Retry","logoClassName","buttonsClassName","finalizeClassName","onFinalize","onRetry","ErrorMessage","refused","tch","finalize","callback","retry","stripeProm","loadStripe","StripeContainer","stripeInformations","billName","components_StripeForm","billingIframeSrc","firstBillingLock","firstPaymentLock","paymentIframeSrc","BILLING","stripeErrorMessage","iframeClassName","iframeRegex","parseIframeSrc","srcStr","handleBillingOnLoad","handleFinalize","handlePaymentOnLoad","attemptPayment","handleSuccess","closeModalButton","previousOrder","validation","firstPaymentCBStatus","PENDING","IN_FAILURE","CANCELED","hasCompletedOrder","orderStatus","FINALIZED","FINALIZED_WITHOUT_DOC","hasCompletedPayment","payOnly","SUCCESS","PAYMENT","RETRY_PAYMENT","prevOrder","pay","load","checkOrderStatus","signatureTitle","missingOrderNumber","orderStatusFetch","isSuccess","isIdle","IN_PROGRESS","isFailure","signatureError","unexpected","paymentStatus","onClose","recursionCount","paymentTitle","paymentStatusRefresh","setLoading","_this3","currentStep","components_CloseButton","onLoad","StripeFormContainer","errMsg","PaymentIframeModal_Retry","PaymentIframeModal_Success","PaymentIframeModal_PaymentIframeModal","ResetModal","onBack","onConfirm","back","confirm","legalStatuses","LegalStatuses","nom","inputRefreshDelay","validationDelay","birthDateText","businessNameText","businessName","SIRETText","legalStatus","SIRET","mailAddressText","mailAddress","phoneNumberText","phoneNumber","hasError","defaultBirthTown","ClientDataSection","pendingValidation","handleSetForeignData","birthTownCountry","handleBirthTownName","birthTownTownName","handleChangeCountryBirth","birthTownPostalCode","newCountry","newPostalCOde","newTownName","birthDatePick","birthDatePickPro","businessNameValue","SIRETValue","mailAddressValue","phoneNumberValue","addressAddressValue","firstNameError","lastNameError","birthDateError","birthDateErrorPro","businessNameError","groupError","SIRETError","mailAddressError","phoneNumberError","addressAddressError","civilStatusSelection","legalStatusSelection","APE","defaultGroup","groupSelected","groupSelection","handleBirthTownSelection","handleLegalStatusSelection","handleGroupSelection","handleBirthDatePick","handleBirthDatePickPro","handleBusinessNameInput","handleSIRETInput","handleMailAddressInput","handlePhoneNumberInput","handleBusinessNameChange","handleSIRETChange","handleMailAddressChange","handlePhoneNumberChange","handleAddressChange","handleFirstNameError","debounce","handleLastNameError","handleBusinessNameError","handleSIRETError","handleMailAddressError","handlePhoneNumberError","handleAddressError","initWithUrl","checkData","birthCountry","birthPostalCode","birthTown","prepareControlledObject","emptyField","birthDateValidity","birthConditionValidity","SIRETValidity","mailAddressValidity","groupValidity","phoneNumberValidity","addressValidity","getGroupError","getBirthDateError","getBirthDateErrorPro","accents","formatPhoneNumberString","formatLastNameString","ape","getFirstNameError","getLastNameError","getBusinessNameError","force","getSIRETError","getMailAddressError","getPhoneNumberError","getAddressError","hasIdenticalAddress","birthTownCheck","isValidForm","validatePostalCode","onIsIndividualToggle","coordsInputsErrors","coordsInputsValues","countryIsFrance","admin_Group","business","components_CustomDate","vl","countryBirth","birthPlace","MissingInformations","MissingInformationSection","requiresPCE","requiresPDL","showScrollButton","setShowScrollButton","promptText","handleScroll","scrollY","addEventListener","removeEventListener","scrollTo","BackUp","SeasonalOffersModal","gaugeClassName","bodyClassName","parseGaugeProps","authorizedPackages","pckg","initialProgress","findIndex","sum","win","max","parseGaugeSelectedItem","valueSum","valueWin","authorizedElectricityPackages","authorizedGasPackages","dismiss","electricityEnabled","gasEnabled","initialElectricitySelection","initialGasSelection","onValidate","handleSetGaugeProps","electricitySelection","setElectricitySelection","gasSelection","setGasSelection","electricityActivated","setElectricityActivated","gasActivated","setGasActivated","electricityGaugeProps","gasGaugeProps","electricityDefault","gasDefault","electricityTitle","components_EnergyGauge","gasTitle","optionsClassName","Recap","Options","electricityOptions","gasOptions","toggleOption","electricityOptionSelection","gasOptionSelection","components_CheckboxTile","clientConsumption","initState","ClientConsumption","handleModalClick","handleEstimatesPackagesByClient","isValide","setValide","showError","setShowError","showEstimateErr","setEstimetesErr","initStateValues","buildByEnergy","currContract","buildRateOption","st","currEstimate","checkByEnergy","en","checkGas","checkElec","valide","hightLowCheck","checkQuantity","coming","estQuantity","renderByRateOption","rateProp","currentEstimate","est","checkEstimate","estimateErr","handleSetTotalHourAndUnknown","initialConsumption","typeKey","handleSetHighLow","overrideModalClick","rt","border","currRate","mainEstimateErr","btnBack","btnValidate","esAcc","esCurr","findCurrEstim","rateState","_buildResponse","nextEstimate","nextTimeframe","filterOptions","opts","optionFilter","mapPackagePrepaymentFrequencies","currency","fee","displayFee","monthly","bimonthly","fourmonthly","quarterly","initialElectricityRateOptions","initialGasRateOptions","authorizedElectricityPackageSelection","authorizedGasPackageSelection","electricityFrequencies","electricityFrequencySelection","electricityPlans","electricityPlanSelection","electricityProducts","electricityProductSelection","gasFrequencies","gasFrequencySelection","gasPlans","gasPlanSelection","gasProducts","gasProductSelection","initialElectricityOptionSelection","initialGasOptionSelection","shouldShowGauge","showConsumptionModal","sortAuthorizedPackages","orderedTimeframePackages","summerIndex","winterIndex","_$partition","partition","_$partition2","matchFrequency","freq","OfferSection","controlChangeAfterSave","checkMainElec","checkMainGas","checkProductSelection","checkPlanSelection","checkFrequencySelection","checkElectricityProductSelection","checkElectricityPlanSelection","checkElectricityFrequency","electricitySelectedOptions","checkElectricityOptionSelection","checkGasProductSelection","checkGasPlanSelection","checkGasFrequency","gasSelectedOptions","checkGasOptionSelection","handleConsumptionModal","handleSeasonalOfferModalDismiss","handleElectricityFrequencySelection","handleElectricityPlanSelection","handleElectricityProductSelection","handleGasFrequencySelection","handleGasPlanSelection","handleGasProductSelection","handleOptionSelection","handleSeasonalOffersModalToggle","validateSeasonalOffersModal","prevContracts","prevElectricityEnabled","prevGasEnabled","prevPackages","prevProducts","prevFrequencies","prevIsPackageValid","isPackageValid","prevDeliveryPointPackages","deliveryPointPackages","refresh","plans","recommendedElectricityPlans","recommendedGasPlans","mappedFrequencies","prod","onProductSelection","dynamicValidation","electricityProductWithOptions","gasProductWithOptions","selectedElectricityOptions","selectedGasOptions","isFee","FEE","electricityProduct","electricityFrequency","electricityPackage","electricitySeasonalPackages","gasProduct","gasFrequency","gasPackage","gasSeasonalPackages","gaugeTarget","_this$state3","should","hasCyclicalElectricity","hasCyclicalGas","_this$props7","errorOffer","electricityProductText","electricityPlanText","gasProductText","gasPlanText","frequencyText","hasCyclicalElectricityProduct","hasCyclicalGasProduct","allowSeasonalSelection","shouldAllowSeasonalSelection","electricityPlanDefaultLabel","cyclicalPlaceholderText","gasPlanDefaultLabel","hasErrorOffer","heading","classnames","disabled-section","components_ToggleIndicator","seasonalActivation","adjust","components_CustomOverlay","modals_SeasonalOffersModal","OfferSection_Options","errorMessageAfterChangeInitailParams","OfferSection_ClientConsumption","RecapField","fieldsClassName","formatUnit","formattedUnit","PERCENT","formatUnitLabel","formattedLabel","EURO_KWH","unitPrice","formatFields","lines","shortid","generate","ln","line","RecapSection_RecapField","unitPricesArr","RecapGroup","rawDetailsPriceLines","priceAfterPresentation","rawPriceLine","formatLine","is","TOTAL_AMOUNT","isRawPriceDetail","l","TOTAL_BUDGET","isRebateDetail","ECONOMY","DISCOUNTED_UNIT_PRICE","DISCOUNTED_UNIT_PRICE_TTC","isPriceAfterRebateDetail","sortRawDetailsPriceLines","forfais","gaugeProps","renderChosenPackage","rawPrice","fined","prevAmount","nextAmount","additionalRatesDuplicateValue","detailsPrice_HT","nup","discountPrice_HT","discountPrice_TTC","groupsClassName","radioToggleClassName","codeInputClassName","codeOptions","sponsor","SPONSOR","promotional","PROMOTION","cashback","CASHBACK","Sections","RecapSection","onCodeValidation","validateSponsorCode","codeSelectionDefault","codeType","codeSelection","setCodeSelection","codeInputToggled","toggleCodeInput","setCode","codeError","setCodeError","selectedCode","codeInputHint","sponsorHint","cashbackHint","getCodeHint","codeInputPlaceholder","sponsorPlaceholder","promotionalPlaceholder","cashbackPlaceholder","getCodePlaceholder","handleCodeSelection","offerArr","groupClassNameSuffix","cntr","RecapSection_RecapGroup","components_CustomError","defaultTitle","missingSelection","Site","compoundOption","siteOptions","SiteSection","PCEError","PCEValue","PDLError","PDLValue","requestError","handleMissingSiteIDIfNeeded","handlePCEInput","handlePDLInput","handleSiteOptionSelection","submitData","onSiteOptionSelection","manageSelection","spltEng","PCE","PDL","hasValidPCE","checkPCEValidity","hasValidPDL","checkPDLValidity","validatePCE","validatePDL","recovery","onMissingSiteId","clickEnabled","PCERef","PDLRef","checkInputValidity","submitSiteData","validateSiteId","didValidateSurvey","elecAdress","gazAdress","offerPick","shouldShow","PDLPrompt","PCEPrompt","missingSiteID","Subscribe","saveClassName","signClassName","SubscribeSection","didSaveOrder","highlightSignature","triggerPopin","signatureEnabled","hasFinalizedOrder","isFinalized","signTitleString","sign","signButtonClassname","_ref2$electricityEffe","_ref2$gasEffectiveSta","hasAddress","every","save","hint1","hint2","hint","TopInformationSection","currOrderNbr","firstPaymentCBStatusStrs","orderStatusStrs","titleMode","maskClassName","buildSection","initialData","buildInitialSections","currentKey","customerContact","electricityDeliveryAddress","gasDeliveryAddress","isSurvey","masked","pendingOrder","rebateCode","rebateCodeType","selectedElectricityProduct","selectedGasProduct","shouldDisplayPaymentIframe","shouldDisplayResetModal","shouldDisplaySurveyModal","orderNbr","paramsOrderNumber","isNewSiteSectionData","pointsOfDeliveries","createRef","cloneDeep","fetchAppointmentTimeslot","fetchCalendarAppointment","getNextDisplayedSections","handleProductSelection","handleIsIndividualToggle","onSelectedGroup","handleMissingSiteID","handleMissingInformations","handleSiteModalValidation","hideModal","onReceivePackages","searchSIRET","handleClientDataValidation","handleCodeValidation","handleOfferValidation","handlePackDynamicValidation","handlePaymentModalDismiss","handleReset","handleResetCancel","handleSituationValidation","reset","triggerSignaturePopin","fetchOrder","bannedProperties","partialPrevState","partialState","isSign","customerAddress","client","typePayment","electricityContract","gasContract","buildPendingOrder","SDD","OTHER","previousOrderReference","previousOrderStatus","previousElectricityContractNumber","previousGasContractNumber","onInit","productCodePro","didSignOrder","getInitialSections","tp","COHOLDER","orderStr","orderStatuses","inProgress","paymentStr","finalized","paymentStatuses","pending","canceled","inFailure","errorHandler","finalContract","electricityIndex","gasIndex","newContracts","newPackages","newPackage","newContact","electricityEnergy","gasEnergy","budget","budgets","updatedErrorOffer","packageReal","dynamicPackage","elecPackage","ngPackage","updatedDeliveryPointPackages","missingEnergies","isNewSiteSectionDataCheckRender","paymentCBStatus","housingType","residenceType","inhabitantsNumber","parseGetPackageResponse","elecContract","addressParts","gazContract","_this4","parseGetProductsResponse","pendingState","nextKey","checkPointOfDelivery","offerCheck","section","targetSection","resetInitialData","_this$state9","nextSections","nextSectionsArr","checkDeliveryPoints","didCompleteSubcription","clientData","siteData","offerData","situationData","recapData","_this5","parsePreviousClientData","parsePreviousSiteData","parsePreviousOfferData","parsePreviousSituationData","parsePreviousRecapData","_x31","_x32","_this6","pkgRes","_this$state11","mainContract","isSame","a1","a2","addr1","addr2","compareAddress","subscriptionType","orderResponse","previousElectricityContract","previousGasContract","handleGetPackages","_map","_map2","elecPoints","gasPoints","prodRes","previousElectricityPackages","previousGasPackages","previousElectricityPlanSelection","previousGasPlanSelection","authPkg","previousElectricityFrequency","previousGasFrequency","previousElectricityOptions","previousGasOptions","movingInData","pick","nextStartRange","nextSwitchData","startRange","offerRes","fmtElectricity","rs","fmtGas","resContracts","buildOrder","handlerProps","_this7","defaultText","previousExternalReference","_this8","_this9","_this$state14","_this$getStatusWordin","getStatusWording","_this$getStatusWordin2","shouldShowSiteSection","shouldShowOfferSection","shouldShowStatusSection","shouldShowRecapSection","shouldShowMissingInformationSection","shouldShowSubscribeSection","shouldAllowSignOrder","shouldApplyMask","shouldHighlightSignButton","initialClientData","initialSiteData","initialOfferData","initialSituationData","initialRecapData","clientDataSectionKey","getSectionCurrentKey","siteSectionKey","offerSectionKey","situationSectionKey","recapSectionKey","missingInformationsSectionKey","subscribeSectionKey","modals_PaymentIframeModal","modals_ResetModal","ICLogo","sections_TopInformationSection","sections_ClientDataSection","modals_CustomerSurveyModal","components_Separator","sections_SiteSection","sections_OfferSection","sections_SituationSection","sections_RecapSection","sections_MissingInformationSection","sections_SubscribeSection","expKey","hasExpiredSession","didExpired","AdminSubscriptionPage","dispatch","dispatchCheckSessionExpiration","expired","own","withCheck","_args","ErrorScreen","NotFoundPage","NotFoundContainer","components_ErrorScreen","handleDayChange","CustomUpload","accept","multiple","SearchCaseContainer","situationStatus","searchClientRequest","searchClientSuccess","searchClientFailure","CustomerContracSearch","handleShowModal","useDispatch","isDisabledActionBtn","isMixed","isLimited","clientLastName","setclientLastName","clientFirstName","setClientFirstName","customerPhone","setCustomerPhone","customerEmail","setCustomerEmail","clientId","setClientId","setFrom","_useState13","_useState14","showGroupErrorMesage","setShowErroGroup","_useState15","_useState16","setTo","_useState17","_useState18","showErrorModal","setShowErrorModal","_useState19","_useState20","caseId","setCaseId","_useState21","_useState22","refExt","setRefExt","_useState23","_useState24","setCreatedBy","_useState25","defaultVal","renderDefaultGroup","_useState26","customerGroup","setCustomerGroup","_useState27","_useState28","customerSituation","setCustomerSituation","groupeValue","isObject","groupeCondition","mainCondition","elementMap","num_case","client_ref","clientPhoneNbr","btn_validate","small","btn_reset","button_reset","clientAccessButton","buttonAccessClient","clientAccessInput","upload_csv","components_CustomUpload_CustomUpload","btn","renderEndorsementGeneration","admin_CustomDate","withModal","_temp","_getPrototypeOf2","showModal","handleConfirmValidate","handleState","modalMessage","handleHideModal","_this$handleState","customerContractDispatch","uploadAmendmentsDispatch","resetUploadDispatch","WrappedSearchContainer","SearchContainer","schema","CASE","SEARCH_CASE","parsedAmendments","riders","getDescriptionStyleByCode","ErrorElement","defaultButton","defaultRowsNumber","TablePagination","getSafePage","canNextFromData","applyPage","showPageSizeOptions","showPageJump","canPrevious","onPageSizeChange","_this$props$PreviousC","PreviousComponent","_this$props$NextCompo","NextComponent","_this$props$showTotal","showTotalPages","dataLength","canNext","dataLengthCheck","cs","table-pagination-visibility","pageText","withTriangle","customElmTopAndBottom","collapseOnDataChange","customPageSIze","TheadComponent","renderCustomElement","showPaginationTop","resizable","useOutsideClick","contains","mappingStatus","Status","transferCustomerContract","transferContractDispatch","transferError","currentItem","setCurrentItem","setModal","setCurrentContract","divRef","allContracts","prepareColumns","accessor","transfertContractSubComponent","energie","no_contract","admin_Status","input_client_id","btn_client_access","btn_cancel","renderTransferContractModal","noResult","components_ErrorElement","admin_CustomTable","customerNbrOutdated","customerNbrTargeted","userName","success_text","error_text","CustomerContractContainer","ResetPasswordButton","labelTitle","warningMessageTitle","confMessage","ReinitSubscriptionEmailButton","reinitSubscriptionEmailDispatch","handleSubscriptionSendEmail","_ref$defaultEmail","defaultEmail","currentEmail","setCurrentEmail","sendCondition","sendEmail","reinit_message","enter_email","advice_message","UserAdministrationResult","CreateUserModal","getCivilityError","getUserNameError","userNameValidity","getClientNumberError","clientNumberValidity","EProcessType","createUser","isCustomerAndContract","setClientLastName","clientEmail","setClientEmail","groupId","setGroupId","setCivility","clientLastNameError","setClientLastNameError","clientFirstNameError","setClientFirstNameError","clientEmailError","setClientEmailError","civilityError","setCivilityError","setGroupError","setUsername","userNameError","setUserNameError","clientNumber","setClientNumber","clientNumberError","setClientNumberError","_useState29","_useState30","isCreatingUser","setCreatingUser","charAt","toLocaleLowerCase","createUserCondition","createClientCondition","buttonReset","btn_hide_modal","CreateGroupModal","succesMessage","failureMessage","createUsermodalResponse","RemoveUserButton","manageUser","setAdminSuccessModal","isAdminSpace","RemoveUser","removeUser","warningTitle","question","DELETE","EnableOrDesableuserButton","desableUser","enableUser","DesableUser","DISABLE","EnableUser","ENABLE","AdministrationClientSpace","openUserModal","setUserModal","openAdminSuccessModal","handleShowPopUp","setHandleShowPopUp","UserAdministrationContainer_RemoveUserButton","EnableOrDesableUserButton","UserAdministrationContainer_CreateUserModal","OutsideClickClass","wrapperRef","componentDidMount","handleClickOutside","setWrapperRef","node","CustomCollapse","firstElement","hideFirst","customClassName","setHeight","childrenElm","MessageCollapse","initialLength","admin_CustomCollapse","truncate","removeErrorDispatch","removeReinitSubscriptionMessageDispatch","transferGetContractDispatch","adminClientSpaceAsyncDispatch","admin_MessageCollapse","see_customer","openClient","handleButtonDropdown","viewIndex","showDropdown","OutsideClickClass_OutsideClickClass","CustomerContractContainer_ResetPasswordButton","CustomerContractContainer_ReinitSubscriptionEmailButton","userStatus","admin_client_space","subscriptionSendEmail","handleIdClientInput","idClient","renderResetPasswordModal","no_error","error_message","try_again_message","success_message","renderReinitSubscriptionEmailModal","error_code","success_code","reinit_success_message","enableOrDessableUserResponseModal","downloadDataTable","allCustomerContract","download_csv","onscroll","onScroll","getElementsByClassName","pageYOffset","classList","queryParams","orders","_this$props$transferS","transferState","_this$props$manageUse","manageUserState","it","box","countryIso","company","legalForme","naceCode","vatable","vatNumber","fax","phone1","phone2","phone3","customerCategory","dateOfBirth","placeOfBirth","language","perimeters","CUSTOMER","itr","CustomerContractContainer_AdministrationClientSpace","administrationError","components_BackgroundElement","CustomerContractContainer_SubComponent","customerContractState","manageUserAsyncDispatch","searchUserGroupAsyncDispatch","createUserAsyncDispatch","getGroupAsyncDispatch","CustomerContractPage","groupListState","admin_SearchContainer","admin_CustomerContractContainer","searchUserGroup","casesExtractRequestDispatch","casesExtractSuccessDispatch","casesExtractFailureDispatch","csvLinkRef","CSVHeaders","setCSVHeaders","oui","non","CSVData","setCSVData","getHistoryCSVHeaders","headersArray","newHeader","getHistoryCSVData","splittedData","row","splittedRow","newObject","elem","prepareHistoryDownload","rawData","parsedData","click","asyncOnClick","Caseresult","startCase","directDebitDate","compareSortSelect","FilterSelect","allResultText","RetryFirstPaymentModal","resetRetryFirstPaymentResponse","CaseResult","selectedWording","filterMethod","caseNbr","agentCode","souscriptionCode","Filter","admin_FilterSelect","firstPaymentSlimCollectStatus","seeCustomer","sendActivationTitle","hasFailedPayment","sendFinalizeOrder","emailSubscriptionResent","sendActivation","prepareOrderToDownloadCSV","_order$customer$conta","orderError","_contract$deliveryPoi","contractType","flat","SearchCaseContainer_SubComponent","SearchCaseContainer_RetryFirstPaymentModal","resetFirstPayment","fetchOrderAsynDispatch","getRetryFirstPaymentAsyncDispatch","CasesPage","orderState","retryFirstPaymentState","admin_SearchCaseContainer","SearchCaseContainer_CaseResult","getGroup","groups","createGroup","isLimitedGroup","groupName","setGroupName","subGroup","setSubGroup","errorsState","setErrorState","authorisationType","setType","authorizationSchema","setSchema","renderFinalGroup","manageErrors","groupNameErr","getGroupNameError","subGroupErr","emptySubGroup","menuSchemaError","menuError","subMenuSchemaError","subMenuError","getSchemaSubMenuError","isValidMenu","GROUP","SUB_GROUP","MENU","SUB_MENU","gn","isFull","zIndex","overflow","addorselectGroup","selectGroup","uniqBy","inGr","addSubGroup","authtorisationTitle","admin_AuthorizationSchemaGroup","errs","renderErrors","createGroupModalResponse","UserAdministrationContainer","statusOption","checkCreateGroupPermission","checkCreateUserPermission","setUserId","setStatus","openGroupModal","setGroupModal","setLocked","searchCondition","btn_create_group","btn_create_user","UserAdministrationContainer_CreateGroupModal","checkUderAdministrationResultPermission","handleshowPopUp","showPopUp","setOpenGroupModal","createGroupAsyncDispatch","UserAdministrationPage","userGroupState","manageGroupState","searchState","isHaveActionsPermissionBySchema","ADMINISTRATION","MANAGE_USERS","CREATE_GROUP","CREATE_USER","admin_UserAdministrationContainer_UserAdministrationContainer","UserAdministrationContainer_UserAdministrationResult","getComponent","WrappedContent","Switch","sidebar","routingMap","Route","exact","resetReduxStoreDispatch","Main","_this$props$profileSt","profileState","components_SideBar","src_components_Footer","PureComponent","withBanner","handleChangeBanner","handleCloseModalBanner","bannerError","contractError","components_Banner","ArticleVideoContainer","videoId","displayVideo","frameBorder","allowFullScreen","stopVideo","querySelector","video","iframeSrc","pause","videos","video_id","ampersandPosition","getYoutubeId","PaymentStatusContainer","last","piecesDate","findNextAndLastPieces","lastPayment","noneData","nextPayment","targetPiece","closeModal","stripeState","setStripeState","useSelector","_useSelector2","handleRetry","renderContent","FailPieceContainer","DISABLED","FailPiece","handleChangeFailPiece","handleOpenModal","calendarOpen","setCalendarOpen","setSelectedDay","communication","components_CustomDayPicker","isWeekend","buttonClose","buttonSave","buttonChoice","buttonPaymentCB","setTargetPiece","isModalOpen","setIsModalOpen","handleCreatePaymentCB","failPieces","enableDirectDebit","enableDebitCard","incidentPaymentText","fp","FailPieceContainer_FailPiece","containers_PaymentCBModal","SelfWithdrawalModal","WordingCounters","counters","WordingData","WordingBottom","list","iMain","linkText","HeaderWording","TableHeader","renderSubComponent","timeframeConsumption","getEnergyPercentage","energyPath","components_CustomProgressbar","Graph","memo","showProgressBar","nextMeters","sortMeters","energyConsumption","components_StackedBar","ConsumptionContainer","v","autoTransfer","description1","meterReadDate","consumptionContext","getConsumptionDownloadData","downloadFileName","components_CustomTransfer","components_CustomTable","ConsumptionContainer_SelfWithdrawalModal","HomePage","HomeContainer","currentPieceForTimeline","components_TimelineStatus","containers_PaymentStatusContainer","containers_FailPieceContainer_FailPieceContainer","articleVideoText","containers_ArticleVideoContainer","WrappedHome","contractDispatch","filesListDispatch","createPaymentDispatch","fetchMeterReadingDispatch","resetCreatePaymentDispatch","resetContractDispatch","setContractDispatch","fetchContextDispatch","contractState","ff","handleUpdate","_this$props3$contract","_this$props4$profileS","_this$props4$contract","paymentState","fileState","consumptionState","HubspotContactForm","portalId","formId","script","appendChild","hbspt","forms","FormPage","FormContainer","handleChangeTextarea","categories","cart","question_2","question_3","priceCall","hours","applicationFormText","FormContainer_HubspotContactForm","createEventDispatch","resetCreateEventDispatch","WrappedForm","_this$props3$profileS","eventState","ModificationButtons","showButton","handleButtonCancel","handleButtonValidate","disabledValidate","buttons","BillPage","bill","BillContainer","handleRoutingMode","handleDownloadBill","setCheckUpdateInvoiceRouting","columnsTable","propsCell","totalAmountDu","download","checkUpdateInvoiceRouting","getLabelInvoiceRouting","ProfileContainer_ModificationButtons","updateBillingDispatch","resetBillingUpdateDispatch","WrappedBill","fileURL","documentId","documentType","invoiceRoutingChange","getContract","_this$props$contractS","FilePage","FileContainer","fileNameMapping","documentName","handleDownloadFile","generalCondition","wekiwi","wekiwiLink","CGVLink","CGV","ProofOfResidence","handleDownloadProofOfResidence","showDocument","_base64Str","_contentType","byte","binaryString","atob","binaryLen","bytes","Uint8Array","ascii","charCodeAt","base64ToArrayBuffer","Blob","WrappedFile","responseFetchPDF","documentKey","_this$props2$contract","_this$props2$profileS","_this$props2$profileS2","coholderName","cunstomerName","residenceAdress","handleSupportingDocuments","pdfName","EXPLANATIONS_OFFER_CAPACITY","handleOpenLocalFile","checkIsCAPA","ct","injectExplanationsOfferCapacityFile","capaContract","EXPLANATIONS_OFFER_CAPACITY_key","sortFiles","documentDate","filesToContainer","docs","SupportingDocumentErrorModal","useCallback","humanizeLabel","isInvoiceRunNumberMIGR","invoicing_run_number","payment_type","PaymentContainer","generateProof","generateTimeline","filteredPieces","useMemo","proof","balanceTitle","components_Balance","timeline","PaymentContainer_SupportingDocumentErrorModal","Montserrat100","textTransform","headerWording","Timeline_components_Header","TimelineProvider","useTimeline","TimelineContext","marginLeft","subContainerImage","subContainerLeft","subContainerRight","whiteBloc","lastText","CustomerContainer","_useTimeline","customerContainer","W","contractContainer","subContainer","containerDate","containerDateMarginTop","dateBold","ContractContainer","nextYearDate","isSameYear","sentence","timelineFrom","toLocaleString","kiwi","contractStartDate","timelineTable","totalTitle","totalValue","info","infoNB","infoText","TimelineTable","lastValidPiece","chosenPackage","globalAmount","dataObject","amountToPay","getPricePerMonth","secondChosenPackage","summerPrice","winterPrice","getAmountPerFrequency","monthDiff","timeDiff","getMonthDifference","isInteger","frequencyWording","remainingMonth","differenceInMonths","buildData","sentenceTop","mainContainer","bloc","infoWording","Informations","text_1","text_2","text_3","Informations_ImageText","smallText","Timeline_components_Footer","Timeline","components_CustomerContainer","components_ContractContainer","components_TimelineTable","generateTimelinePDF","PDFs_Timeline_Timeline","getSupportingDocumentsDispatch","WrappedPayment","_profileState$contact","pieceReference","pieceType","_profileState$contact2","_this$props6$profileS","_this$props6$contract","_this$props6$paymentS","array_pro","pro","companyLegalFormCode","CustomerContact","cnt","billing","addressTitle","Payment","samplingDate","getLabelPaymentMode","debitDaySuffix","ModificationCoholder","_ref$fields$contact","checkCoholder","handleChangeCivility","handleResetCoholder","addOwner","ModificationPayment","handlePaymentSection","paymentMethodSection","handleShowErrorMessage","validateItems","handleCheckUpdate","ibanCondition","debitDayCondition","isValidIbanCode","titleDebitDay","isValidDebitDay","ModificationContact","_props$fields$contact","phoneUpdated","ModificationBilling","handleChangeDropdown","onFocusDropdown","showErrorBilling","infoInputs","mainText","addressVal","postalCodes","currentPostalCode","ProfileContainer","currentContact","isValidContact","_fields$contact","coholderCondition","handleValidateContact","isValidBilling","_fields$billing","_fields$billing$addre","handleValidateBilling","handleValidateIban","subtitle","ProfileContainer_ModificationContact","showErrorCustomer","ProfileContainer_ModificationCoholder","ProfileContainer_CustomerContact","ProfileContainer_ModificationBilling","ProfileContainer_ModificationPayment","showErrorIban","ProfileContainer_Payment","updateCustomerDispatch","resetUpdateDispatch","WrappedProfile","loadingPostalCode","splitArr","codeValue","cityValue","netAreaValue","categoryToSend","subCategories","consumptionContactChange","addCoholder","deleteCoholder","BILLING_ADDRESS","invoicingContactChange","paymentModeChange","label_debitDay","getBilling","getContact","getResults","ParentingPage","SponsorContainer","_ref$fields","textParenting","inputTitle","placholderInput","ruleDescription","buttonValue","createSponsorDispatch","resetDispatch","WrappedParenting","ParentingContainer","SponsorPage","errorInput","RequestPage","findLabel","Arr","categ","compare","renderDataInOption","tab","statusEvent","EventContainer","eventDispatch","WrappedEvent","EventPage","_Component","MovePage","MoveContainer","textWithLink1","textLink","textWithLink2","customerStatus","containers_MoveContainer","FrequencyContainer","chosenFrequency","SlickButtonFix","currentSlide","slideCount","NextArrow","BackArrow","GaugeContainer","showGaugeTab","handleToggleGauge","handleChangePackageID","handleChangePrices","handleSetAdminChosenPackages","gaugeMaxValue","accumulator","isMultiple","tab1","tab2","userGroup","canSelectAllPackage","react_slick_lib_default","speed","slidesToShow","slidesToScroll","arrows","nextArrow","GaugeContainer_SlickButtonFix","GaugeContainer_NextArrow","prevArrow","GaugeContainer_BackArrow","nbrElmInSection","countSectionNbr","recommendedInfo","finalBuild","isRecommendedPush","buildPackagesForSlider","components_PackageElement","popupChoosePackage","PackageSettingContainer","handleSetShowOption","handleFetchPackage","adminChosenPackages","showFrequency","setShowFrequency","showGauge","setShowGauge","setShowGaugeTab","setFrequency","setPackageID","setPrices","containers_FrequencyContainer","containers_GaugeContainer","currentPackage","currentPackages","pk","handleValidateClick","PackageContainer","handleSetPayload","handleWordingModalMyMode","localUserGroup","setLocalUserGroup","setAdminChosenPackages","showOption","setShowOption","OPTION","recommendPackage","localGrp","separateDetails","detailDescription","beginDate","displayRateOption","contractualCapacityEL","priceOption","unshift","contractualCapacityNG","contractualCapacityUnitNG","components_EnergyDetail","components_PlanElement","components_OptionElement","PackageContainer_PackageSettingContainer","WAITING_FOURTEEN_DAY","RECOVERY","INITIALIZED","SENT_TO_MARKET","notAccessible","fetchPackageDispatch","fetchProductDispatch","updatePackageDispatch","WrappedPackage","newEstimates","prepareEvent","prepaymentFrequency","seasonalityThreshold","packageChange","eventCheckOptions","saveTree","saveTreeAdd","saveTreeSupp","green","greenAdd","greenSupp","plastic","plasticAdd","plasticSupp","changeOffer","renderWordingModalByMode","modalMode","popup_option","_this$props5$contract","_this$props7$profileS","_this$props7$contract","_this$props7$packageS","packageState","currentOffer","SettingPage","SettingContainer","isNewValid","new","isConfirmValid","old","toggles","isReceiveNews","isAuthorizeData","handleInput","handleError","showNewPass","showConfirmPass","buttonValue1","updatePasswordDispatch","WrappedSetting","fetchMeterDispatch","createIndexDispatch","resetCreateIndexDispatch","WrappedConsumption","setInitialState","_this$props$consumpti","highlow","registerName","timeframeCode","_this$props5$profileS","_this$props5$consumpt","WordingRoutes","pages_routes","home","pages_HomePage","pages_ConsumptionPage","pages_PackagePage","information","pages_ProfilePage","pages_SettingPage","sponsorship","pages_SponsorPage","move","pages_MovePage","pages_FilePage","bills","pages_BillPage","pages_PaymentPage","applicationForms","pages_FormPage","requests","pages_EventPage","notFound","defaults_NotFoundPage","root_WrappedContent","contextModal","close","isp","initialSearchParams","isUserAlias","AdminMain","UserMain","isFirstRedirect","ReactDOM","es","BrowserRouter","rest","ConnectedMain","navigator","serviceWorker","ready","registration","unregister"],"mappings":"6EAAAA,EAAAC,QAAiBC,EAAAC,EAAuB,gECAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,wECAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,oECAxCH,EAAAC,QAAA,4gJCAAD,EAAAC,QAAA,0pFCAAD,EAAAC,QAAiBC,EAAAC,EAAuB,0DCAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,wDCAxCH,EAAAC,QAAA,8uKCAAD,EAAAC,QAAiBC,EAAAC,EAAuB,iECAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,+DCAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,6DCAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,4DCAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,+DCAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,4DCAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,2DCAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,mECAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,+DCAxCH,EAAAC,QAAA,0zNCAAD,EAAAC,QAAiBC,EAAAC,EAAuB,2DCAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,6DCAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,8DCAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,6DCAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,4DCAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,4DCAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,kECAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,yDCAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,2DCAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,6DCAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,0DCAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,mECAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,6DCAxCH,EAAAC,QAAA,0nCCAAD,EAAAC,QAAiBC,EAAAC,EAAuB,oECAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,gECAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,qECAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,+DCAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,+DCAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,2ECAxCH,EAAAC,QAA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","file":"static/js/main.4b999f5c.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/ic-logo-wekiwi.b6bd8e11.svg\";","module.exports = __webpack_public_path__ + \"static/media/ic-wekiwi-popup-orange.5a995c92.png\";","module.exports = __webpack_public_path__ + \"static/media/Montserrat-ExtraBold.19ba7aa5.ttf\";","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/ic-email.e7c796e6.png\";","module.exports = __webpack_public_path__ + \"static/media/ic-phone.a2d20162.png\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIgAAACJCAYAAAD35nD3AAAACXBIWXMAAC4jAAAuIwF4pT92AAAHUElEQVR42u2dzXHbSBCFn1Ces5iBkIGQgbgRLDcC0xEsHYHpCJabARSBqQgMRWAqAzID8dwH7QENC8KCIIg/zs97VSqXVJJFznzqfj3TmLl5e3tDaDLGxADi0pdmAJLKt+0AvJY/F5HX0MbqxldAjDHFpM8Vhlg/v+35Xx8Vnr1+ZD7D4w0gxpgChrmCcDfxSzgUsADYisiegFwfigWAhUJxZ9nLK4DZisiWgEwPxWKAdDGVjgC2AFIRyQjIOKZyqR93cFsHACmAjQu+xWpAjDFzheKzp0XCo4KyIyCXg7EG8BBINfkMYG1j+rEKkADBqANlZVNEsQIQ9Rhrj1NJl9SzssGjRBbAsda1A8Lxrs8A9saYVbARRBe2UgD35KFRLwCW10o70ZXgWAP4RTha6R7ALx0zvyOIeo0twehlYpdTLuNHE8KxUK9BOLrrAcBOx9IfQIwxGwA/4M7SuM26BfBjqpQzaorRLfcUwJ+cVzfL4dEAUTgyppRJqpz5WJBEI8GR0G9MWuVkWgDYH0EUjox+Y3IdNZIMul4SEQ6vzGumc2AfIITDT0gGSTGa/3aEwxodACRDGNfegARUrRTd7FUllv5hDFLdDAGIj9XKs0KfocMjDaXnbmbIe2evtVP9LCLzqwFijEnhzzb9AcAGeWPxYGsK2gT184rv61FElpObVO1V8AGOI4CvIhKLyMbDB6A+G2OmBURd8j8eDN4TgFhENp77p03XyibqAMcM+Za96/ouIotAnre9BZDq3I0eQVK4/2zKFxFZB1b63iPv+x0PEO1DcH1n9ruIpAhTf1/aS9K6itHwtIfbi2G9yz4Hq5g6Ux63Ta2XRJDUcTiOyJ/SC123l6Sa6IK/AtdTy8aXIxkGSjXzwQDR6OGyjsgXwah3rQcBRBdZXK9atiEeH3VGD20W0KIWxtSHvzxGj45R5FwEWcH9LfyjzccrXFl356LIpzPRY+XBIGQjlK4J8p3aQjHeT02s/r7E8vFZN3nMT55HD6C+h6MLFEW6PXf01TcXo8ipxcOTC2XGmL0H5hQA/up7iJz2d2SejEedDiISt/YgnlQuhYaoXlKP4SiiyOISk7ry6M33SjHqN0I48WjVChAdEG9aCAdY/5gHUtE81D18VRdBlqz+PmgW0HtdERCqSYtGQNSo8NmWcHVXbU2MzhFEBeNBajMIAaEa00xUqV6YXqgPaSZi9KCa0moUcK6lWqSZMiAPHBeqykKk/oPRg/qgwodETC9Ukw8pAEk4HlRFCfDeMBQ78IJfMMzW/aXq23DkqreLAW0YMsa4cLPhH65dCKi53NlrRUXkJhr6VDzqAxwzx19/HCGs7eyr5HGHFUesYEbVzAdAKEaQRkBizuO4lYDLIiAEpElzphgCcjaCUOPpjoBQtRrr/hZ6EKYX6wC541wSkCZADpxLAtIEyJ5zOYoSXwChxpEXe1yfHHqtyw6tkfu+pyqX7n4JMoK4BEiXq0ee0f8IzyXcOzWIHoSaRBkBoWhSqc7aRxjhmEjKL0B4RDV1GhCeQkydkojsCw/ywuGgapYIfptURhGqqh0BoQgINQAgLj7SSI2q31eoRFVTQlEorY1FdV+kCEgdIFuOC1Vl4TcgmnPYfkgdytfHRqdCC8XoUQdIyvEJXulJQLTcZZoJO73smiIIzSqjB84BwkuICchpQNTBctEsPD2Vq5emCMIoEqZq57wWEL1nlmY1LHOatQZEtea4BaOTc30SEH0ijVEkjOiRXgwIowijx1lAGEXCjh5tIgijiN9anvuGs4AoYVwX8U/PbToJ2z56ueJ4hhc9WgOiGzj/cky90fe6VdM+EaTwIjSsHhhTXLBS3hoQEXltG5You1OLzuWwgCgkGVON86klu+QHupwPsgaf5XVRLyKyvvSHLgaklGqOHHNndETpNu2xI0hR1bD0dct37CcDRCFJ6Uec8R2d20h7nVEmIisAT5wDa/XYxXeUdfP21u9aV736MwNwz/mwzpT2Psy39ymHalrnrGzsggMD3WbaO4JUIskOvF7ECjguWQwbNYJUIsmC5a8/cAwKSKn8jZlu/IBjcEDoSfyCYxRAKpCw0Wh8PY0Fx6AmtcG8puh2lQd1Xo8ishzzF4x+mL++ga+cy8H1ZWw4JokgpUiSIF9Qu+Xc9tIBwGKqI9Qnuw6kVOFwab6f30imPF9/0vtiRORVRBaacrhe0l5HTSmLsczo1VNMTcqJkZ9H8cD5Pxs1Vl23650FpATKEnkTLb3J/73Gqs9WvReAKCQz5A1I38gFjvoHs5k6nVgLSCXtrBHuuskjgPW10on1gAQMinVgWA1IBZQV8iZp3zxKkUpSG8FwApCKR1koLK53rr2ov0hdeLFOAHIiqizgTnPSAfn5sxubo4UXgFRgSRSUhYWR5QX5Ok/m8s2iTgNSk4bm+pFg+gW4Z+Qtl5lC4cV9xN4A0hBhEuR7QAmAmf7b1fAeFYJX/XcHYO/z3cNeA9ICoHmb7wv5Tr//AOoJ/Dha7mXLAAAAAElFTkSuQmCC\"","module.exports = __webpack_public_path__ + \"static/media/ic-logo-sidebar.dbf359c0.svg\";","module.exports = __webpack_public_path__ + \"static/media/ic-logo-login.2d6f9f77.svg\";","module.exports = __webpack_public_path__ + \"static/media/ic-elec-off.12e4e0ed.svg\";","module.exports = __webpack_public_path__ + \"static/media/ic-elec-on.634b8b52.svg\";","module.exports = __webpack_public_path__ + \"static/media/ic-elec-green.8121e048.svg\";","module.exports = __webpack_public_path__ + \"static/media/ic-gas-off.6f87deaa.svg\";","module.exports = __webpack_public_path__ + \"static/media/ic-gas-on.f94bf669.svg\";","module.exports = __webpack_public_path__ + \"static/media/ic-logout-sidebar.b15a1177.svg\";","module.exports = __webpack_public_path__ + \"static/media/ic-wekiwi-popup.89869ab8.png\";","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/ic-avatar.00dd7701.svg\";","module.exports = __webpack_public_path__ + \"static/media/ic-linkedin.0495632f.svg\";","module.exports = __webpack_public_path__ + \"static/media/ic-instagram.9c8e481b.svg\";","module.exports = __webpack_public_path__ + \"static/media/ic-facebook.601d1384.svg\";","module.exports = __webpack_public_path__ + \"static/media/ic-youtube.893bee49.svg\";","module.exports = __webpack_public_path__ + \"static/media/ic-twitter.2fbbf272.svg\";","module.exports = __webpack_public_path__ + \"static/media/ic-certification.b5c45a59.svg\";","module.exports = __webpack_public_path__ + \"static/media/ic-menu.83ae48b9.svg\";","module.exports = __webpack_public_path__ + \"static/media/ic-menu-h.1181d8d6.svg\";","module.exports = __webpack_public_path__ + \"static/media/ic-triangle.90a41417.svg\";","module.exports = __webpack_public_path__ + \"static/media/ic-cross.f3230201.svg\";","module.exports = __webpack_public_path__ + \"static/media/ic-check-validate.84e7c4ec.svg\";","module.exports = __webpack_public_path__ + \"static/media/filter-symbol.1386b01c.svg\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEkAAAAgCAYAAABeiFVOAAAACXBIWXMAACxLAAAsSwGlPZapAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAALNSURBVHgB3ZrLccIwEIaFUwAdQAUcuUEFUAFUABXALTeoACqAIyeoADqgAqgAjpwSPmV2hnj80MqWeXwzTDxBsaVfq91fcmqXy+XH3Dmfz2a5XJrdbmevW62WGQwGZjQamU/ner3asa/Xazv2RqNhOp2OmUwm9rqGSHzR7XZt4ziItVqtbONPhLH3+337Mw5j3m63fyIh0PF4TL2RNP40obIEEoio2ul0+mk2myaPTxPqcDiY4XCYuHriRC6NQJZkVsS9C+QeIsh17BGR4Rod3BShSHLvynw+N+Px2Lk9yy3iYrFYGA3T6dQ+7N2gz5p+1+t1q40VCbX2+739ZagHPhuiR9PfxxxcE58ELtk+Dj5qNpuZV4UUQYImUbsSL1JR1pcukJ80SbBKZNI1AuEL4xpE8UYiFI1doRMkdE0EhkYE0lRj0k5SkERJjUWoXq9ntJ16BaEQRtsXtmCMOSkvR2l/RGO2I5q9m8/slQ1RrRWIPVpWhY9MDiRlbuKKCMVGuWq0JhEYW974vu4Nvk0OrFVwTYC3281sNhsbje1221QB5R3/poHocVkp/yxAHsyUxq2Cy0wVxcckaoqTSiSQpFh2SPvCpDF5rvjYHLVI4FPJqB7a7U8WZZhEV7xEAh+hxKhptj+v8Ozc6paGj+lkqRY1nb5RXGRyvEUCEYpOuFLEdPqYRKoXy7xI9BYSCeQ4wcdLaUwnvsvHJJax+S4skqCtYHLS6XKAR3l3PWoVtCY4C+/EnQaD1po6li3LgvwmlQcRqVzcTyMOkY1AmhSQR+kiAUsD/1L18YnWJLpS2nJ7hNODqt+s8CxOV8sWCIKIBEmHV6EI/bormEhQxbs6JoMICvmMoCKBLIMyE6lAste+wPAhSOJOg40o5bzo6SXC483kCCc0lYok+IqFKERkiKjM4ikiCThuvBAfBOMjtoElxAdhyDtUzGf9H8Ivn3f+V+7Kre8AAAAASUVORK5CYII=\"","module.exports = __webpack_public_path__ + \"static/media/arrow-subscription.1c72a81b.svg\";","module.exports = __webpack_public_path__ + \"static/media/ic-menu-orange.bfc33742.svg\";","module.exports = __webpack_public_path__ + \"static/media/ic-menu-orange-creu.cd88b5c6.svg\";","module.exports = __webpack_public_path__ + \"static/media/ic-arrow-back.f722c6cc.svg\";","module.exports = __webpack_public_path__ + \"static/media/ic-arrow-next.1442ff55.svg\";","module.exports = __webpack_public_path__ + \"static/media/ic-image-background-accueil.d24fc0df.png\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAnCAYAAACMo1E1AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAPRSURBVHgBzZhNbFRVFMf/574ZhrEWijauNE6/rIqfMSz8SLCtwKILtizcmFQSW42EqInoig0GMS0qExurCze6YaEBNkKxJrpRIyQUaJgyQwKs+GyZtjN99x7OfWWgLS2dmfumnd9mzrsfL/859757zzmEMuDJhiehVRuYXoMH+VX1gL8WINsLo2lceUhpjWHt6yMwOBGrz5xFiVApgznb0gk2O0H0ujzFip5IbFhjMO/zN6vXpX8reloxg3g8sRHKGxCzGY74mkeyY9Rd9/jo4FJjHyiOryfqEFuVBPQ2Wa2SvLwUxnD/5Qv5XU88d/EaShXH4y3PQJkjYiZQMTg9ls1vXvvYxdRCvQuK4xutDYj6/4j5KCoOZ8QJbRTPZOb3qPuGTjU1i7DB5RFmoYTx1X+5K7JS83tmPzA/+wgmpv6V5gYsO+LBvHmZ1mVuFFrmem4it2dlhFkoMUUqOaelYPDkUx1yeh7FSmPMRqpN/2nNWZ7zv0U14KmBghmI47HEVhh6GtUAo4WzjZ3WnPGcp95HNUG0M/i5c9gOA+XfAHt7NWpqgJ7tHsLAMHLKM60RMV90EWY5ddpgcIgxPQ3s6HEXqAgxPUXtSnzXCUd++j6KjjcJ+/ZrfJ3UCAOK0Kuy52g9QuC7/VFseUthb5/Gvj53gUqhTTyHJoRAPA78kIxgS4dCn3iv74CbQGbUE2ebDBBeOJTLAd07fPx+3ODwwSieX1/2q40KU5glJvHxhz1KDnrg9FmGA8qKc3rDfGQ50P+jCezWFqf/zVbcTYSEFbbnKx+/HjJ4r0vhpRfKF8cG4xFZ1Cviuzo4YoV9vMvHLwcN3t6m8NknEbhAhFElwo7DkcBjX84Is7fEF7vdhFm04WEr7m848vluH8kBg+3vKHz6UThXmEfmsIJnrOdycECSZ3S/G54wQb6o6Mlgx/JE4zHJ3ttRPRylmtFNMyGT7/WiitB5CgLfe2H6RNM52X/OGb0zzCP08Pkg8L0XpmvqQnXQUzDuiqPa1JD48WesJAr94rVjhce5eautjazy/kdFSxCLQJyGn9tAay5dLTTNyVuDhNaQDT6vYjkhW5KgzbOFBc0LjeVJqZWwlCR4OTzI1/CQeYWoiFqJheIjaenZJBdcGpUVlkHEe2MhYVhMnIVWj6YQj2ywmxSVwH58tjYSO3dm8SFFwLcaO2RPHJBlboU7KSl7dFFtZmipgaXVhMeat8rm/UC82V7i3JyM/gs+99Ka84eKnVRWNBgk4jbftWklBdmbTZJqUSinkwSwLF+8kXDMiprWf8hJkEGJ3AYaH188d/MWhgAAAABJRU5ErkJggg==\"","module.exports = __webpack_public_path__ + \"static/media/logo.891955d6.png\";","module.exports = __webpack_public_path__ + \"static/media/ok.b2b67f1b.png\";","module.exports = __webpack_public_path__ + \"static/media/error.1cf1f272.png\";","module.exports = __webpack_public_path__ + \"static/media/waiting.442ea3fa.png\";","module.exports = __webpack_public_path__ + \"static/media/abandonned.80d4d51f.png\";","module.exports = __webpack_public_path__ + \"static/media/ic-elec-counters.5b8de3ed.png\";","module.exports = __webpack_public_path__ + \"static/media/ic-gas-counters.f6c95cb0.png\";","module.exports = __webpack_public_path__ + \"static/media/ic-copy-clipboard.0681c160.svg\";","module.exports = __webpack_public_path__ + \"static/media/loader.0408da18.svg\";","module.exports = __webpack_public_path__ + \"static/media/Montserrat-Black.27e3649b.ttf\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAABKCAYAAADJwhY8AAALQklEQVRoQ9WaeVwUVxLHf93T3TNojEoCmygeaFRUouiux3pfKxA1rnjgx2jiiQfKKireUYxoPDDqekUw8UDjfX8EDfGKMSau6xlvE8UoWQ+CVxyYYXo/1T0NzTBH94DJbv0j9rxX79vvvapXVa8ZFF9KA3gGoC6AS8VXV1gDUwIKIwFsAhAPYEYJ6CukoiQA1wPoC+AH8WDpvkzH52dLErK4gFUIDAAtM5aM4A6P6sKtY8LNa0oKsriAYwEsUGDe72DA2nH8ESbM3PZ/BfBbAE0VmDKlgMtJRlT0ZQKZcPOtkoAszgx2BHDADnEeQD36e2k0j+jOhngm3FwiBlMcwFUAhhBU4Jvs7J8ybZPp7/YhLNI/Fm4xYebAP3IG37QbR3mCuLralNQ4xjzk8XMZ6bvFAhrX5huUhEV7O4OjyGjtM7RLTDO2GbXcWm7pnjzp0aRIDrMH8IuZsBejHWdRPFyuHNM2O1vr7HoLeBRAKxokpqth2eLhfPS3l21oNiZXGjeoEkPGoiyzCcAcALUAhO+cbhz696bMQa1G5A1gGwCH7TPw4NkuY2ZpEyMZSNiUXBw4bZN+SksQENpIWuZfAGQqM9Y+xHAqfQ5/iQk399cyi94ArgAwjJTXCmB2X0k2dlUGmrXRimnrrNJ/YyM4JEbxY5iwF2kALittypZGzvXPjEa/V7W5Ir2AtEx0lNGyIWk0nz44zNBBGfzwORvaTZCXuW4VBhc/Fc4yYTnDAZC/zJdl0TxGaHRFegFpL02kkV4x4djTXSZpH6qlQp8cZGaJ0qObnxvReLRl8qPHttnqNk2CWJxcxGfD6BPoyWD0APrbZ49cDBKHcEdju3OtHQF7Jliw7WvZmj8eyGHB9ryMh4/FyvT/oMrM/SsZIunBhgk8+rQxDPB0busBjAMwl5TzHE7m7jMGAUw5R8Dl+/IQvdQiPf5zDRanr8tGU8qIewuH8hWGLZF/+1tDFgdne3boWgEFAGcA1CHlsRGGPYlR/LuOcPT/H38RUb1/TpGfJvQyZE/pzZer1j8HD5/IW2DfTAGdmnDdmNDfdjnTRc+0AtKRRkcbOBbnLfuNlZ3NnjJIrUE5uHZXhiCpGcBYdkwTeDKckcssWLZX3gKRrQ3YNMl99KMV8DiA5qR02DuG1BUxfLirN6bn/1hhwZLdMgRBbZ4sSP+SnLhkQ/NY2dJJTi0R8JcarMvoRwtgDwBbSRnL4sbj7Ua/V3yYsu4ANxzKQ995FtQLZLBxYgGc0ifiIwt2fiO/QExXAxYP49e6ctxaAPcC6EzK+rU3pK8bz+f7PVeQWU9FxKywYslwDr5lig5BcARJUr4Mg3PLBVQK8CnvzOV4AiQwAgTLIDNzo1DKvzzrdvbczaz6N1pmWm6SxCgOsRHSqbPIsb8nwHQK8ahT3/aGk+vH8/nRs1YQV+3IUMhgSFq9zeLofOcuxx1gfr5hYHE/I8XoX8HX0/tox6bTpk5ULrKfydb+zUIBzWqzbZlw8xG1Flcj+gH4N4AAajyoI3s2OVYI0T68tpaDP7Fg9QHZWOJ6cpg7kCtiLK4AxwOYRx0NLB5kpBj9SnL2FPz9p2zoNE12OTUrUgwpZBveyZGidEWcARrtp0ZtavReO/ZCSpzwtrY50d+q4chcnLkhG8v2aTwiWvCFThZngEMBrKQODAPz5SSjqVZAye09x1dI+MKKqWvlGFLKq8cW9onORj4JoAl1eLcJe3V3vEAx4EuTyxlkLPLZHfA6gzspQjYTVrDMjoB9KBJSaKTsrBb70uAUxZTLUE5DcnKRgCZ1CjJCR8CDFAlRw3b12R+/mitUe+l0FB2tsuKTHfIyL4ziMKYbl5/4qwEpANivAH05R0CHBi9/9iTjOJ6HHrNkp92zpQFbpvJHmVAzJWeFwi3KcynfRd3KzI2Lq4xv/R6zR2NQwl+uu9npPlTP4HUAEtTcQVxWXE/OVzegTxXgxW3d3aiDeh9eTTaiZmVOqkwogOpcFxnrjajkp9O1cGWBBluAU6FeAU5dY0XCJnkfrh7DY2BHOV9RKBYCGFOs5fXvUgCYdUw35JHzNrSNk0+VEV0MWBYtSKUTBTB/eecP5q+O62HQ7/uC5gNVRgJPzwMnJDeqS9S5TJt6LA7PFyRDIcBgABcUbTn7TBA4Xbrlxs2+A8pIFRDgynjg9lJdSqx5AN9JNhS/sgzub5ZrOwRIBXAqhFP0e/zRVmMLXZqpMRlHqysF3azZwNEgwPpYl6qK7+Xg3iM5/Lq/2Qj/yByGAD8CMJUeBldlN11YKfTWpZUa09LSEqvlZgJwY5YuVX8dk4uT9hPl8DwBbUL4BgS4GUAv0tSpMTt330xhgi6t1LjRQcC3ZdFux4J0uZ1uM3Ox64R85G2byqN7c0NbAqSEXApGv5jEJ/VubZDKuprFcXnVHWkf0n7UKFGLLUhKlQPYlTE8hobLgFS4LUUPMzf7THijrCiVNzSLs+VVOuvci1PWWDHb7gtn9ecwJZKTAPNLAGKqqS2Y/OKkNsZWVwEfqTbkXHRYdHyKFTNSZGc9oy9Hf0tGckfJPcZGcK0XRHFU3tUmFfsBwVJFxLXo8IsfLLBgXbq8xIlRXNbYVdbXCHALBRH2ESLENNMOTXR0tJHvoz3oSTQaS8PoXJy5KRvJzg/5c91mWkIIcBwAxUfEi2k+IYCYX9Z1OfZbU4HqUzyhyb9rcDnPzED57maQwyY5vtA0s0WseToBqm+Mdoqppj1g8LnbkenEoNnTKvf3AmckT+ZS1EUl6STZZJQKSgT4JwBUiSch/gZimulrAK5LHK78nqvhyZq/kgqzLiUu2Yr522QDCa7KZF28Jb5GfyvBwmcABth7LxRTTU/BYLpTbb6tgEbKFZ3WKaRbPR+XjZ+bgeChObj1H9mhtAthFx86a5MugRRAOgaUGOnXrq2E1rsms1Q0KmoBFPNRaKVXKE50EYat+TIPAxLlkD/Aj3n28wOpjv1CDUh/q605XjxQ6ixE284iHJ78nitwN4CdPszF/u9l663qz869dd8m3SQ4AhZKmijZElNN9cHgg0Jjhkovpl8oRiSf6CC9EizYar8VKG3Cr8/N0pXZA2eA9IwqClRZUKSpmOYzqZDb0WsgiiYne1ANZ29GcUCy+h2cJR7fU3yiNJrY2xQ4ZwDWQIR8J6JEznrm0ImbUR9rdlVUrCoSSTkDfBVAFhW2VAyRYqqpjmTZ7qIXV9DkAwkSQI4F6DevYFntXbapTrNCWlylbg0BnHYYL/nCCuGN4EC2M/ScIvdSgAtyBHfonA0xyy344XbBFQU9Vqq4zt7PXW75OgCqdtIXRZKYBDwdGGooQ9l/m16JciTtTmjWLgzBhoNZ2H7chp0n7OdYQZ8YAP90p0JL8psAQPoeQS2UeYW2rI6A4EhUDQ5FtWrV4Ovri4yMDGTc+BcyTn+KO9dOSAHoXXueoer/E10aUOXX01bWAkg6BgGY5tRxexqh6O8ULdHU519yF3cGlf5UeaW3pm+1PN6VOAz6m72st44CFT3vpHUGHXVSWe794KpMMxGo+sIM/4dPRJ/nZhhMAh7lWnHLYpUCYZqli1TNACBHAjrFW0Cdw3jf/P8eMJbSA+/fX3NPukWgrVBEPM3gXQAVNA/jfUOK4AfqBaRP7MjL/15CXqLgItk+qrsZpGt6JXmiZF6J0a4BqOHwSai3z+h7miA7C/nGZY6z4QqQMnF1LbcSgJ/tnWnJ6wNIVSnz9tkkAMonKzeVErQa0hXgTPvJQW3ptt19Sla8TfAEQBm7ijDVN4nSI1eAj6hcWLxxveq9HQB9gpAvzgApxC+xj2S9wKT9fUPp5www/wsPL5SXRBe1QeK/S9qQZp6L22EAAAAASUVORK5CYII=\"","module.exports = __webpack_public_path__ + \"static/media/Web.2a3b4345.png\";","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAABz0lEQVRoQ+2YO04DMRCGPyNaJDqOwAmoKLgJd4CWPi3cgYsgCipOwBFoEIgOkUVDdpGzOOvH2OtV5K2i7Mzv/zG2oxj25DF7ooMmZGlJtkRaIoUcaKNVyNhk2JZIsnWFGlsiCmM7qzebkdmAAoX9ipBFLTVZOGQBCRQhZcK/M2AsIfLxIALDWTq3kEGMi4yKi6pZ4aK9T2yYZD7JjQoRQ+t6NGLD90mckpoyiBggNsmMdn//TdQytYX8HQAO8lHcooqjLIorVu+ZpQj5d5pZ0xbE0Ve0y6mx31K3Wdtg6OSakOti8hnfJ1PFPqzJPx+E1NYVHDctfXUOjA3UpJipl7vTMAa6qbCCEgnyxfJBbv+di/oiCx2tIFKKokPgWzV7isVjWy+AB0fTEfDpA/Ml4uvP9V7Ifjgux2PgPWSRJQgRsm892eFnvmyyc+ApRIT3JAgFUdTJ7H85+s+A5xjcmonI2msH2WvgNkZE7URcJ+INsIoVUVOIS8Q9cJkiopYQl4hHQI7f5GfuPeIS8QKcJivoG2sLeQVOtCJqj9YVcJdDRC0hubhv4cw9WkVEtESK2aoAbqOlMK9Ia0ukiK0K0JaIwrwirS2RIrYqQPcmkR+qoT8zYuylSQAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/Montserrat-Thin.43dd5b7a.ttf\";","module.exports = __webpack_public_path__ + \"static/media/Montserrat-Light.409c7f79.ttf\";","var map = {\n\t\"./Explanations_Offer_Capacity.pdf\": [\n\t\t939,\n\t\t3\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tvar ids = map[req];\n\tif(!ids) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\treturn __webpack_require__.e(ids[1]).then(function() {\n\t\tvar id = ids[0];\n\t\treturn __webpack_require__.t(id, 7);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = 922;\nmodule.exports = webpackAsyncContext;","export enum EEnergy {\n EL = 'EL',\n NG = 'NG',\n}\n\nexport enum ECustomerType {\n INDIVIDUAL = 'INDIVIDUAL',\n PROFESSIONAL = 'PROFESSIONAL',\n}\n\nexport enum ECustomerStatus {\n PROSPECT = 'PROSPECT',\n CUSTOMER = 'CUSTOMER',\n}\n\nexport enum ECustomerCategoryCode {\n CUSTOMERB2B = 'customerB2B',\n CUSTOMERB2C = 'customerB2C',\n}\n\nexport enum EBillingMode {\n PAYMENT_SCHEDULE = 'PAYMENT_SCHEDULE',\n CYCLICAL_BILLING = 'CYCLICAL_BILLING',\n}\n\nexport enum EProfile {\n RES1 = 'RES1',\n RES11 = 'RES11',\n RES2 = 'RES2',\n P011 = 'P011',\n P012 = 'P012',\n PRO1 = 'PRO1',\n PRO2 = 'PRO2',\n RES3 = 'RES3',\n RES4 = 'RES4',\n RES5 = 'RES5',\n}\n\nexport enum ECivility {\n MR = 'MR',\n MS = 'MS',\n MRS = 'MRS',\n}\n\nexport enum EAppointmentTimeslot {\n MORNING = 'MORNING',\n AFTERNOON = 'AFTERNOON',\n DAY = 'DAY',\n NONE = 'NONE',\n}\n\nexport enum EProcessTypes {\n MOVE_IN = 'MOVE_IN',\n SWITCH = 'SWITCH',\n}\n\nexport enum EFrequency {\n BIMONTHLY = 'BIMONTHLY',\n QUARTERLY = 'QUARTERLY',\n FOURMONTHLY = 'FOURMONTHLY',\n BIANNUAL = 'BIANNUAL',\n}\n\nexport enum EReadingFrequency {\n MONTHLY = 'MONTHLY',\n BIMONTHLY = 'BIMONTHLY',\n BIANNUAL = 'BIANNUAL',\n UNKNOWN = 'UNKNOWN',\n}\n\nexport enum ETimeframe {\n TOTAL_HOUR = 'TOTAL_HOUR',\n LOW = 'LOW',\n HIGH = 'HIGH',\n WINTER = 'WINTER',\n SUMMER = 'SUMMER',\n UNKNOWN = 'UNKNOWN',\n}\n\nexport enum ERateOption {\n TOTAL_HOUR = 'TOTAL_HOUR',\n HIGH_LOW = 'HIGH_LOW',\n UNKNOWN = 'UNKNOWN',\n}\n\nexport enum EIntermediate {\n SLIMPAY = 'slimpay',\n BANK = 'bank',\n BALANCE = 'balance',\n}\n\nexport enum ETransactionStatus {\n INITIALIZED = 'initialized',\n TRANSMITTED = 'transmitted',\n TRANSFER_FAILURE = 'transferFailure',\n TRANSACTION_FAILURE = 'transactionFailure',\n DETECTED_ANOMALY = 'detectedAnomaly',\n SUCCESS = 'success',\n CANCELLED = 'cancelled',\n DISPUTED = 'disputed',\n}\n\nexport enum EEffectiveStartRange {\n NOW = 'NOW',\n LATER = 'LATER',\n}\n\nexport enum EtypePayment {\n SDD = 'SDD',\n OTHER = 'OTHER',\n}\n\nexport enum EInvoiceRoutingMode {\n EMAIL = 'EMAIL',\n MAIL = 'MAIL',\n BOTH = 'BOTH',\n}\n\nexport enum EPaymentMode {\n CHECK = 'CHECK',\n DIRECT_DEBIT = 'DIRECT_DEBIT',\n BANK_TRANSFER = 'BANK_TRANSFER',\n}\n\nexport enum EPaymentModeKey {\n DIRECT_DEBIT = 'directDebit',\n CHECK = 'check',\n BANK_TRANSFER = 'bankTransfer',\n BANK_CARD = 'bankCard',\n CASH = 'cash',\n}\n\nexport enum EModeUpdateBilling {\n BILLING_ADDRESS = 'BILLING_ADDRESS',\n IBAN = 'IBAN',\n DEBIT_DAY = 'DEBIT_DAY',\n ROUTING_MODE = 'ROUTING_MODE',\n}\n\nexport enum EModeManageOffer {\n INSTALLMENT_FREQUENCY = 'INSTALLEMENT_FREQUENCY',\n PRODUCT = 'PRODUCT',\n PACKAGE = 'PACKAGE',\n OPTIONS = 'OPTIONS',\n}\n\nexport enum EAmountCategory {\n TOTAL_AMOUNT = 'TOTAL_AMOUNT',\n ADDITIONAL_RATE = 'ADDITIONAL_RATE',\n TOTAL_BUDGET = 'TOTAL_BUDGET',\n ECONOMY = 'ECONOMY',\n}\n\nexport enum EAmountType {\n FEE = 'FEE',\n OPTION = 'OPTION',\n DISCOUNT = 'DISCOUNT',\n}\n\nexport enum CreatePasswordMode {\n RESET = 'RESET',\n VALIDATION = 'VALIDATION',\n}\n\nexport enum EContractStatus {\n WAITING = 'waiting',\n RECOVERY = 'recovery',\n INITIALIZED = 'initialized',\n CANCELLED = 'canceled',\n ABONDONED = 'abandonned',\n REJECTED = 'rejected',\n SENT_TO_MARKET = 'sent_to_market',\n EFFECTIVE = 'effective',\n TERMINATED = 'terminated',\n VALIDATION_REJECTED = 'terminated',\n WAITING_FOURTEEN_DAY = 'waiting-14d',\n ACCEPTED = 'accepted',\n PAYMENT_FAILURE = 'paymentFailure',\n}\n\nexport enum EConsumptionStatus {\n ACTUAL = 'ACTUAL',\n RECTIFIED = 'RECTIFIED',\n}\n\nexport enum EMeterReadFrequency {\n HALF_YEAR = 'HALF_YEAR',\n MONTHLY = 'MONTHLY',\n BIMONTHLY = 'BIMONTHLY',\n}\n\nexport enum EPieceType {\n INVOICE = 'in',\n PREPAYMENT = 'pp',\n ADHOC = 'adhocPieces',\n}\n/**\n * List of all enums for kiwi pay api\n */\n\nexport enum EPAYPaymentMode {\n CHECK = 'check',\n DIRECT_DEBIT = 'directDebit',\n BANK_TRANSFER = 'bankTransfer',\n BANK_CARD = 'bankCard',\n CASH = 'cash',\n}\n\nexport enum EPAYTransactionStatus {\n INITIALIZED = 'initialized',\n TRANSMITTED = 'transmitted',\n TRANSFER_FAILURE = 'transferFailure',\n TRANSACTION_FAILURE = 'transactionFailure',\n DETECTED_ANOMALY = 'detectedAnomaly',\n SUCCESS = 'success',\n CANCELLED = 'cancelled',\n DISPUTED = 'disputed',\n}\n\nexport enum EPAYInvoiceStatus {\n NOT_SETTLED = 'notSettled',\n SETTLED = 'settled',\n CANCELLED = 'cancelled',\n RECOVERY_ONE = 'recovery1',\n RECOVERY_TWO = 'recovery2',\n LATE_PAYMENT = 'latePayment',\n}\n\nexport enum EPAYPrepaymentStatus {\n NOT_SETTLED = 'notSettled',\n SETTLED = 'settled',\n DROPPED = 'dropped',\n INCIDENT = 'incident',\n}\n\nexport enum EPAYContractStatus {\n WAITING_FOURTEEN_DAY = 'waiting-14d',\n RECOVERY = 'recovery',\n INITIALIZED = 'initialized',\n WAITING = 'waiting',\n CANCELLED = 'cancelled',\n ABONDONED = 'abandoned',\n VALIDATION_REJECTED = 'validationReject',\n REJECTED = 'rejected',\n SEND_TO_MARKET = 'sendToMkt',\n ACCEPTED = 'accepted',\n EFFECTIVE = 'effective',\n TERMINATED = 'terminated',\n}\n\nexport enum EPAYProcessStatus {\n PROCESSING = 'processing',\n DROPPED = 'dropped',\n TERMINATED = 'terminated',\n}\n\nexport enum EPAYProcessNature {\n IN = 'IN',\n PP = 'PP',\n ENERGY_CHECK = 'ENERCGYCHECK',\n REFUNDABLE_OVERCHARGE = 'REFUNDABLEOVERCHARGE',\n NONREFUNDABLE_OVERCHARGE = 'NONREFUNDABLEOVERCHARGE',\n RECOVERY = 'RECOVRY',\n}\n\nexport enum EPAYAccountingType {\n DEBIT = 'debit',\n CREDIT = 'credit',\n BALANCE = 'balance',\n}\n\nexport enum EPAYIntermediate {\n SLIMPAY = 'slimpay',\n BANK = 'bank',\n}\n\nexport enum EErrorsType {\n CUSTOMER_CONTRACT = 'CUSTOMER_CONTRACT',\n}\n\nexport enum EResponseCode {\n SUCCESS = '200',\n}\n\nexport enum EMode {\n DELETE = 'delete',\n ENABLE = 'enable',\n DISABLE = 'disable',\n}\n\nexport enum EGroups {\n FULL = 'FULL',\n LIMITED = 'LIMITED',\n}\n\nexport enum EActionMode {\n READ_ONLY = 'READ_ONLY',\n FULL = 'FULL',\n}\n\nexport enum EMenuLabels {\n ADMINISTRATION = 'Administration des utilisateurs',\n CASE = 'Affaires',\n CLIENT_CONTRACT = 'Client/contrat',\n}\n\nexport enum ESubMenuAdministrationLabel {\n CREATE_USER = 'Créer un utilisateur',\n CREATE_GROUP = 'Créer un groupe',\n MANAGE_USERS = 'Gérer les utilisateurs',\n}\n\nexport enum ESubMenuCaseLabel {\n CREATE_CASE = 'Créer une affaire',\n SEARCH_CASE = 'Rechercher une affaire',\n}\n\nexport enum EConsumptionContext {\n PERIODIC_METERING = 'PERIODIC_METERING',\n}\n\nexport enum EFileName {\n CONTRACT = 'CONTRACT',\n SEPA_MANDATE = 'SEPA_MANDATE',\n CONTRACT_AMENDMENT = 'CONTRACT_AMENDMENT',\n EL = 'EL',\n NG = 'NG',\n EXPLANATIONS_OFFER_CAPACITY = 'EXPLANATIONS_OFFER_CAPACITY',\n}\n\nexport enum ENature {\n INVOICE = 'in',\n PREPAYMENT = 'pp',\n BALANCE = 'balance',\n RECOVERY = 'recovery',\n ENERGY_CHEQUE = 'energyCheck',\n ACTIVATION = 'contractActivation',\n SECURITY_DEPOSIT = 'securityDeposit',\n EXTERNAL_RECOVERY_INVOICE = 'externalRecoveryOnIn',\n EXTERNAL_RECOVERY_PREPAYMENT = 'externalRecoveryOnPP',\n}\n","import { Epic } from 'redux-observable';\nimport { of, throwError } from 'rxjs';\nimport { mergeMap, catchError, filter } from 'rxjs/operators';\nimport {\n createAsyncAction,\n createStandardAction,\n isActionOf,\n ActionType,\n} from 'typesafe-actions';\n\nimport { RootAction, RootState, Services } from 'Types';\nimport { TEvent, TResponse } from 'Models';\n\nimport {\n FETCH_EVENT_REQUEST,\n FETCH_EVENT_SUCCESS,\n FETCH_EVENT_FAILURE,\n CREATE_EVENT_FAILURE,\n CREATE_EVENT_REQUEST,\n CREATE_EVENT_SUCCESS,\n CREATE_EVENT_RESET,\n} from './actionTypes';\n\ninterface IPayload {\n customerNbr: string;\n contractNbr: string;\n}\n\nexport interface ICreateEventPayload {\n customerNbr: string;\n contractNbr: string;\n date: string;\n category: string;\n subCategory: string;\n message: string;\n}\n\nexport interface ICreateEventResponse {\n eventNbr: string;\n code: string;\n message: string;\n}\n\nconst resetUpdate = createStandardAction(CREATE_EVENT_RESET)();\n\nconst createEventAsync = createAsyncAction(\n CREATE_EVENT_REQUEST,\n CREATE_EVENT_SUCCESS,\n CREATE_EVENT_FAILURE,\n)();\n\nconst fetchEventAsync = createAsyncAction(\n FETCH_EVENT_REQUEST,\n FETCH_EVENT_SUCCESS,\n FETCH_EVENT_FAILURE,\n)();\n\nexport type EventAction =\n | ActionType\n | ActionType\n | ActionType;\n\nconst preparePayload = ({\n contractNbr,\n customerNbr,\n}: {\n contractNbr: string;\n customerNbr: string;\n}) => {\n return {\n contractNbr,\n customerNbr,\n };\n};\n\nconst prepareCreateEventPayload = ({\n customerNbr,\n contractNbr,\n date,\n category,\n subCategory,\n message,\n}: ICreateEventPayload) => {\n return {\n customerNbr,\n contractNbr,\n date,\n category,\n subCategory,\n message,\n };\n};\n\nconst mapGetEvents = (action: RootAction, { apiRequest }: Services) => {\n const payload = preparePayload(action.payload);\n return apiRequest({\n path: '/getEvent',\n method: 'post',\n body: payload,\n }).pipe(\n mergeMap((response: TEvent[] & { errorMessage: string }) => {\n if (response) {\n // Check timeout always\n if (response.errorMessage) {\n return throwError({\n code: '200',\n message: response.errorMessage,\n });\n }\n return of(fetchEventAsync.success(response));\n }\n return throwError({ code: '200', message: response });\n }),\n catchError(error => of(fetchEventAsync.failure(error))),\n );\n};\n\nconst fetchEventEpic: Epic = (\n action$,\n state$,\n dependency,\n) =>\n action$.pipe(\n filter(isActionOf(fetchEventAsync.request)),\n mergeMap(action => mapGetEvents(action, dependency)),\n );\n\nconst mapCreateEvent = (action: RootAction, { apiRequest }: Services) => {\n const payload = prepareCreateEventPayload(action.payload);\n return apiRequest({\n path: '/createEvent',\n method: 'post',\n body: payload,\n }).pipe(\n mergeMap(\n (response: ICreateEventResponse & { errorMessage: string }) => {\n if (response) {\n // Check timeout always\n if (response.errorMessage) {\n return throwError({\n code: '200',\n message: response.errorMessage,\n });\n }\n const prepareToStore = {\n eventNbr: response.eventNbr,\n eventCategory: payload.category,\n eventSubcategory: payload.subCategory,\n referenceDate: payload.date,\n eventStatusCode: 'NEW',\n message: payload.message,\n };\n return of(createEventAsync.success(prepareToStore));\n }\n return throwError({ code: '200', message: response });\n },\n ),\n catchError(error => of(fetchEventAsync.failure(error))),\n );\n};\n\nconst createEventEpic: Epic = (\n action$,\n state$,\n dependency,\n) =>\n action$.pipe(\n filter(isActionOf(createEventAsync.request)),\n mergeMap(action => mapCreateEvent(action, dependency)),\n );\n\nexport {\n fetchEventAsync,\n fetchEventEpic,\n mapGetEvents,\n createEventAsync,\n createEventEpic,\n resetUpdate,\n mapCreateEvent,\n};\n","export const FETCH_LOGIN_REQUEST = 'FETCH_LOGIN_REQUEST';\nexport const FETCH_LOGIN_SUCCESS = 'FETCH_LOGIN_SUCCESS';\nexport const FETCH_LOGIN_FAILURE = 'FETCH_LOGIN_FAILURE';\nexport const REDUX_RESET_STATE = 'REDUX_RESET_STATE';\nexport const REMOVE_ERROR = 'REMOVE_ERROR';\nexport const REMOVE_REINIT_SUBSCRIPTION_MESSAGE =\n 'REMOVE_REINIT_SUBSCRIPTION_MESSAGE';\n\nexport const REINIT_SUBSCRIPTION_EMAIL_REQUEST =\n 'REINIT_SUBSCRIPTION_EMAIL_REQUEST';\nexport const REINIT_SUBSCRIPTION_EMAIL_SUCCESS =\n 'REINIT_SUBSCRIPTION_EMAIL_SUCCESS';\nexport const REINIT_SUBSCRIPTION_EMAIL_FAILURE =\n 'REINIT_SUBSCRIPTION_EMAIL_FAILURE';\n\nexport const RESET_PASSWORD_REQUEST = 'RESET_PASSWORD_REQUEST';\nexport const RESET_PASSWORD_SUCCESS = 'RESET_PASSWORD_SUCCESS';\nexport const RESET_PASSWORD_FAILURE = 'RESET_PASSWORD_FAILURE';\n\nexport const UPDATE_PASSWORD_REQUEST = 'UPDATE_PASSWORD_REQUEST';\nexport const UPDATE_PASSWORD_SUCCESS = 'UPDATE_PASSWORD_SUCCESS';\nexport const UPDATE_PASSWORD_FAILURE = 'UPDATE_PASSWORD_FAILURE';\n\nexport const FETCH_CONTEXT_REQUEST = 'FETCH_CONTEXT_REQUEST';\nexport const FETCH_CONTEXT_SUCCESS = 'FETCH_CONTEXT_SUCCESS';\nexport const FETCH_CONTEXT_FAILURE = 'FETCH_CONTEXT_FAILURE';\n\nexport const FETCH_CONTRACT_REQUEST = 'FETCH_CONTRACT_REQUEST';\nexport const FETCH_CONTRACT_SUCCESS = 'FETCH_CONTRACT_SUCCESS';\nexport const FETCH_CONTRACT_FAILURE = 'FETCH_CONTRACT_FAILURE';\nexport const RESET_CONTRACT_STATE = 'RESET_CONTRACT_STATE';\nexport const SET_CONTRACT = 'SET_CONTRACT';\n\nexport const FETCH_EVENT_REQUEST = 'FETCH_EVENT_REQUEST';\nexport const FETCH_EVENT_SUCCESS = 'FETCH_EVENT_SUCCESS';\nexport const FETCH_EVENT_FAILURE = 'FETCH_EVENT_FAILURE';\n\nexport const CREATE_EVENT_REQUEST = 'CREATE_EVENT_REQUEST';\nexport const CREATE_EVENT_SUCCESS = 'CREATE_EVENT_SUCCESS';\nexport const CREATE_EVENT_FAILURE = 'CREATE_EVENT_FAILURE';\nexport const CREATE_EVENT_RESET = 'CREATE_EVENT_RESET';\n\nexport const UPDATE_CUSTOMER_REQUEST = 'UPDATE_CUSTOMER_REQUEST';\nexport const UPDATE_CUSTOMER_SUCCESS = 'UPDATE_CUSTOMER_SUCCESS';\nexport const UPDATE_CUSTOMER_FAILURE = 'UPDATE_CUSTOMER_FAILURE';\nexport const UPDATE_CUSTOMER_RESET = 'UPDATE_CUSTOMER_RESET';\n\nexport const UPDATE_BILLING_REQUEST = 'UPDATE_BILLING_REQUEST';\nexport const UPDATE_BILLING_SUCCESS = 'UPDATE_BILLING_SUCCESS';\nexport const UPDATE_BILLING_FAILURE = 'UPDATE_BILLING_FAILURE';\n\nexport const FETCH_METER_CONFIG_REQUEST = 'FETCH_METER_CONFIG_REQUEST';\nexport const FETCH_METER_CONFIG_SUCCESS = 'FETCH_METER_CONFIG_SUCCESS';\nexport const FETCH_METER_CONFIG_FAILURE = 'FETCH_METER_CONFIG_FAILURE';\nexport const FETCH_METER_READING_REQUEST = 'FETCH_METER_READING_REQUEST';\nexport const FETCH_METER_READING_SUCCESS = 'FETCH_METER_READING_SUCCESS';\nexport const FETCH_METER_READING_FAILURE = 'FETCH_METER_READING_FAILURE';\n\nexport const CREATE_INDEX_REQUEST = 'CREATE_INDEX_REQUEST';\nexport const CREATE_INDEX_SUCCESS = 'CREATE_INDEX_SUCCESS';\nexport const CREATE_INDEX_FAILURE = 'CREATE_INDEX_FAILURE';\nexport const CREATE_INDEX_RESET = 'CREATE_INDEX_RESET';\n\nexport const CREATE_SPONSOR_REQUEST = 'CREATE_SPONSOR_REQUEST';\nexport const CREATE_SPONSOR_SUCCESS = 'CREATE_SPONSOR_SUCCESS';\nexport const CREATE_SPONSOR_FAILURE = 'CREATE_SPONSOR_FAILURE';\n\nexport const FETCH_LIST_FILES_REQUEST = 'FETCH_LIST_FILES_REQUEST';\nexport const FETCH_LIST_FILES_SUCCESS = 'FETCH_LIST_FILES_SUCCESS';\nexport const FETCH_LIST_FILES_FAILURE = 'FETCH_LIST_FILES_FAILURE';\n\nexport const FETCH_PIECES_REQUEST = 'FETCH_PIECES_REQUEST';\nexport const FETCH_PIECES_SUCCESS = 'FETCH_PIECES_SUCCESS';\nexport const FETCH_PIECES_FAILURE = 'FETCH_PIECES_FAILURE';\nexport const FETCH_EPINVOICES_REQUEST = 'FETCH_EPINVOICES_REQUEST';\nexport const FETCH_EPINVOICES_SUCCESS = 'FETCH_EPINVOICES_SUCCESS';\n\nexport const CREATE_PAYMENT_REQUEST = 'CREATE_PAYMENT_REQUEST';\nexport const CREATE_PAYMENT_SUCCESS = 'CREATE_PAYMENT_SUCCESS';\nexport const CREATE_PAYMENT_FAILURE = 'CREATE_PAYMENT_FAILURE';\nexport const CREATE_PAYMENT_RESET = 'CREATE_PAYMENT_RESET';\n\nexport const FETCH_BALANCE_REQUEST = 'FETCH_BALANCE_REQUEST';\nexport const FETCH_BALANCE_SUCCESS = 'FETCH_BALANCE_SUCCESS';\nexport const FETCH_BALANCE_FAILURE = 'FETCH_BALANCE_FAILURE';\nexport const FETCH_PACKAGE_REQUEST = 'FETCH_PACKAGE_REQUEST';\nexport const FETCH_PACKAGE_SUCCESS = 'FETCH_PACKAGE_SUCCESS';\nexport const FETCH_PACKAGE_FAILURE = 'FETCH_PACKAGE_FAILURE';\nexport const FETCH_PRODUCT_REQUEST = 'FETCH_PRODUCT_REQUEST';\nexport const FETCH_PRODUCT_SUCCESS = 'FETCH_PRODUCT_SUCCESS';\nexport const FETCH_PRODUCT_FAILURE = 'FETCH_PRODUCT_FAILURE';\nexport const FETCH_OFFER_REQUEST = 'FETCH_OFFER_REQUEST';\nexport const FETCH_OFFER_SUCCESS = 'FETCH_OFFER_SUCCESS';\nexport const FETCH_OFFER_FAILURE = 'FETCH_OFFER_FAILURE';\nexport const UPDATE_PACKAGE_REQUEST = 'UPDATE_PACKAGE_REQUEST';\nexport const UPDATE_PACKAGE_SUCCESS = 'UPDATE_PACKAGE_SUCCESS';\nexport const UPDATE_PACKAGE_FAILURE = 'UPDATE_PACKAGE_FAILURE';\nexport const UPDATE_PACKAGE_RESET = 'UPDATE_PACKAGE_RESET';\n\nexport const FETCH_ORDER_REQUEST = 'FETCH_ORDER_REQUEST';\nexport const FETCH_ORDER_SUCCESS = 'FETCH_ORDER_SUCCESS';\nexport const FETCH_ORDER_FAILURE = 'FETCH_ORDER_FAILURE';\n\nexport const SEARCH_USER_GROUP_REQUEST = 'SEARCH_USER_GROUP_REQUEST';\nexport const SEARCH_USER_GROUP_SUCCESS = 'SEARCH_USER_GROUP_SUCCESS';\nexport const SEARCH_USER_GROUP_FAILURE = 'SEARCH_USER_GROUP_FAILURE';\nexport const RESET_USER_GROUP_RESPONSE = 'RESET_USER_GROUP_RESPONSE';\n\nexport const CREATE_GROUP_REQUEST = 'CREATE_GROUP_REQUEST';\nexport const CREATE_GROUP_SUCCESS = 'CREATE_GROUP_SUCCESS';\nexport const CREATE_GROUP_FAILURE = 'CREATE_GROUP_FAILURE';\nexport const RESET_RESPONSE = 'RESET_RESPONSE';\nexport const GET_GROUP_REQUEST = 'GET_GROUP_REQUEST';\nexport const GET_GROUP_SUCCESS = 'GET_GROUP_SUCCESS';\nexport const GET_GROUP_FAILURE = 'GET_GROUP_FAILURE';\nexport const RESET_GROUP_RESPONSE = 'RESET_GROUP_RESPONSE';\n\nexport const CREATE_USER_REQUEST = 'CREATE_USER_REQUEST';\nexport const CREATE_USER_SUCCESS = 'CREATE_USER_SUCCESS';\nexport const CREATE_USER_FAILURE = 'CREATE_USER_FAILURE';\nexport const RESET_CREATE_USER_RESPONSE = 'RESET_CREATE_USER_RESPONSE';\n\nexport const MANAGE_USER_REQUEST = 'MANAGE_USER_REQUEST';\nexport const MANAGE_USER_SUCCESS = 'MANAGE_USER_SUCCESS';\nexport const MANAGE_USER_FAILURE = 'MANAGE_USER_FAILURE';\n\nexport const FETCH_CUSTOMER_CONTRACT_REQUEST =\n 'FETCH_CUSTOMER_CONTRACT_REQUEST';\nexport const FETCH_CUSTOMER_CONTRACT_SUCCESS =\n 'FETCH_CUSTOMER_CONTRACT_SUCCESS';\nexport const FETCH_CUSTOMER_CONTRACT_FAILURE =\n 'FETCH_CUSTOMER_CONTRACT_FAILURE';\n\nexport const TRANSFER_GET_CONTRACT_REQUEST = 'TRANSFER_GET_CONTRACT_REQUEST';\nexport const TRANSFER_GET_CONTRACT_SUCCESS = 'TRANSFER_GET_CONTRACT_SUCCESS';\nexport const TRANSFER_GET_CONTRACT_FAILURE = 'TRANSFER_GET_CONTRACT_FAILURE';\nexport const REMOVE_GET_TRANSFER_CONTRACT_MESSAGE =\n 'REMOVE_GET_TRANSFER_CONTRACT_MESSAGE';\n\nexport const TRANSFER_CONTRACT_REQUEST = 'TRANSFER_CONTRACT_REQUEST';\nexport const TRANSFER_CONTRACT_SUCCESS = 'TRANSFER_CONTRACT_SUCCESS';\nexport const TRANSFER_CONTRACT_FAILURE = 'TRANSFER_CONTRACT_FAILURE';\nexport const REMOVE_TRANSFER_CONTRACT_MESSAGE =\n 'REMOVE_TRANSFER_CONTRACT_MESSAGE';\n\nexport const REFRESH_SESSION_EXPIRATION_STATUS = 'CHECK_SESSION_EXPIRATION';\n\nexport const RESET_AUTH_ERRORS = 'RESET_AUTH_ERRORS';\n\nexport const ADMIN_CLIENT_SPACE_REQUEST = 'ADMIN_CLIENT_SPACE_REQUEST';\nexport const ADMIN_CLIENT_SPACE_SUCCESS = 'ADMIN_CLIENT_SPACE_SUCCESS';\nexport const ADMIN_CLIENT_SPACE_FAILURE = 'ADMIN_CLIENT_SPACE_FAILURE';\nexport const ADMIN_CLIENT_SPACE_RESET_RESPONSE =\n 'ADMIN_CLIENT_SPACE_RESET_RESPONSE';\n\nexport const SEARCH_USER_REQUEST = 'SEARCH_USER_REQUEST';\nexport const SEARCH_USER_SUCCESS = 'SEARCH_USER_SUCCESS';\nexport const SEARCH_USER_FAILURE = 'SEARCH_USER_FAILURE';\n\nexport const CASES_EXTRACT_REQUEST = 'ADMIN_CLIENT_SPACE_REQUEST';\nexport const CASES_EXTRACT_SUCCESS = 'ADMIN_CLIENT_SPACE_SUCCESS';\nexport const CASES_EXTRACT_FAILURE = 'ADMIN_CLIENT_SPACE_FAILURE';\n\nexport const PAYMENT_CB_REQUEST = 'PAYMENT_CB_REQUEST';\nexport const PAYMENT_CB_FAILURE = 'PAYMENT_CB_FAILURE';\nexport const PAYMENT_CB_SUCCESS = 'PAYMENT_CB_SUCCESS';\nexport const RESET_PAYMENT_CB_MODAL = 'RESET_PAYMENT_CB_MODAL';\n\nexport const GET_SUPPORTING_DOCUMENTS_REQUEST =\n 'GET_SUPPORTING_DOCUMENTS_REQUEST';\nexport const GET_SUPPORTING_DOCUMENTS_FAILURE =\n 'GET_SUPPORTING_DOCUMENTS_FAILURE';\nexport const GET_SUPPORTING_DOCUMENTS_SUCCESS =\n 'GET_SUPPORTING_DOCUMENTS_SUCCESS';\n\nexport const RESET_SUPPORTING_DOCUMENT = 'RESET_SUPPORTING_DOCUMENT';\n\nexport const UPLOAD_AMENDMENTS_REQUEST = 'UPLOAD_AMENDMENTS_REQUEST';\nexport const UPLOAD_AMENDMENTS_SUCCESS = 'UPLOAD_AMENDMENTS_SUCCESS';\nexport const UPLOAD_AMENDMENTS_FAILURE = 'UPLOAD_AMENDMENTS_FAILURE';\nexport const RESET_UPLOAD_AMENDMENTS = 'RESET_UPLOAD_AMENDMENTS';\n\nexport const CREATE_PASSWORD_REQUEST = 'CREATE_PASSWORD_REQUEST';\nexport const CREATE_PASSWORD_SUCCESS = 'CREATE_PASSWORD_SUCCESS';\nexport const CREATE_PASSWORD_FAILURE = 'CREATE_PASSWORD_FAILURE';\n\nexport const RETRY_FIRST_PAYMENT_REQUEST = 'RETRY_FIRST_PAYMENT_REQUEST';\nexport const RETRY_FIRST_PAYMENT_SUCCESS = 'RETRY_FIRST_PAYMENT_SUCCESS';\nexport const RETRY_FIRST_PAYMENT_FAILURE = 'RETRY_FIRST_PAYMENT_FAILURE';\nexport const RETRY_FIRST_PAYMENT_RESET_RESPONSE = 'RETRY_FIRST_PAYMENT_RESET_RESPONSE';\n\n\n","export default {\n URL: process.env.REACT_APP_BACKEND_HOST,\n URL_SUBSCRIPTION: process.env.REACT_APP_SUBSCRIPTION_BACKEND_HOST,\n URL_GET_SIRET: 'https://api.insee.fr/api-sirene/3.11/siret',\n URL_PAY: process.env.REACT_APP_PAYMENT,\n URL_ENERGYPAID: process.env.REACT_APP_ENERGYPAID,\n SUBSCRIPTION_LINK: process.env.REACT_APP_SUBSCRIPTION_URL,\n ApiKey: process.env.REACT_APP_API_KEY,\n SouscriptionApiKey: process.env.REACT_APP_API_KEY_SOUSCRIPTION,\n HOME_PAGE_LINK: 'https://wekiwi.fr/',\n ENV: process.env.REACT_APP_ENV,\n ExpiredSessionTimeout: 3600,\n\n EnergyPaid: {\n password: process.env.REACT_APP_ENERGYPAID_KEY,\n username: process.env.REACT_APP_ENERGYPAID_USER,\n },\n\n aws: {\n region: 'eu-west-3',\n apiVersion: '2015-03-31',\n accessKeyId: process.env.REACT_APP_LAMBDA_ACCESS_KEY,\n secretAccessKey: process.env.REACT_APP_LAMBDA_SECRET_KEY,\n },\n\n EffectiveStartDate: {\n NOW: {\n EL: {\n businessDays: 0,\n calendarDays: 14,\n },\n NG: {\n businessDays: 0,\n calendarDays: 14,\n },\n },\n LATER: {\n EL: {\n businessDays: 0,\n calendarDays: 14,\n },\n NG: {\n businessDays: 0,\n calendarDays: 14,\n },\n },\n },\n DefaultSwitchDueDate: {\n NOW: {\n EL: 0,\n NG: 0,\n },\n LATER: {\n EL: 0,\n NG: 0,\n },\n },\n\n FunctionNames: {\n getPackages: process.env.REACT_APP_FUNCTION_GET_PACKAGES,\n getOffers: process.env.REACT_APP_FUNCTION_GET_OFFERS,\n signOrder: process.env.REACT_APP_FUNCTION_SIGN_ORDER,\n searchOrder: process.env.REACT_APP_FUNCTION_SEARCH_ORDER,\n casesExtract: process.env.REACT_APP_FUNCTION_CASES_EXTRACT,\n },\n\n Stripe: {\n publicKey: process.env.REACT_APP_STRIPE_PUBLIC_KEY,\n },\n\n GroupsCanSelectAllPackage: ['ADMIN', 'COMDATA'],\n\n ChannelsFixSwitchLater: [\n /^UBER-SWITCH_VENTEDOMICILE$/,\n /^PIOUI$/,\n /^PIOUI_.+/,\n /^KOMPAR-ENERGIE$/,\n /^KOMPAR-ENERGIE_.+/,\n ],\n\n ChannelsDoorToDoor: ['C2E', 'DEPANN', 'GROUPE-POWER', 'POWER-DISTRIB'],\n\n ChannelInformationDocument: ['WEB', 'WEB-ADS'],\n\n HubspotPortalId : process.env.REACT_APP_HUBSPOT_PORTAL_ID,\n HubspotFormId : process.env.REACT_APP_HUBSPOT_FORM_ID,\n\n};\n","import React from 'react';\n\nimport DayPickerInput from 'react-day-picker/DayPickerInput';\nimport 'react-day-picker/lib/style.css';\n\nimport moment from 'moment';\n\nimport MomentLocaleUtils, {\n parseDate,\n formatDate,\n} from 'react-day-picker/moment';\nimport 'moment/locale/fr';\n\nconst currentYear = new Date().getFullYear();\n\n// const fromMonth_ = new Date(currentYear - 70, 0);\n// const toMonth_ = new Date(currentYear - 18, 11);\n\nconst FROM_MONTH = 120;\nconst TO_MONTH = 18;\nconst DEFAULT = currentYear - 1975;\nconst fromMonth_ = new Date(currentYear - FROM_MONTH, 0);\nconst toMonth_ = new Date(currentYear - TO_MONTH, 11);\n\nexport const renderValueDate = (date: any) => {\n const pDate = new Date(date);\n return pDate.getFullYear() === currentYear - FROM_MONTH\n ? new Date(currentYear - DEFAULT, pDate.getMonth(), pDate.getDate())\n : pDate;\n};\n\nexport const YearMonthForm = ({ date, onChange }: any) => {\n moment.locale('fr');\n const months = moment.months();\n const years = [];\n for (\n let i = fromMonth_.getFullYear();\n i <= toMonth_.getFullYear();\n i += 1\n ) {\n years.push(i);\n }\n\n const handleChange_ = (e: any) => {\n const { year, month } = e.target.form;\n onChange(new Date(year.value, month.value));\n };\n\n return (\n
\n \n {months.map((month: any, i: any) => (\n \n ))}\n \n \n {years.map(year => (\n \n ))}\n \n \n );\n};\n\ntype Props = {\n value: any;\n onDateChange?: any;\n maxDate?: string;\n error?: string;\n};\n\ntype State = {\n month_: any;\n};\n\nconst modifiersStyles = {\n highlighted: {\n color: 'white',\n backgroundColor: '#ffb40a',\n },\n\n outside: { color: '#8954ba', backgroundColor: 'white' },\n};\n\nclass CustomDate extends React.Component {\n constructor(props: Props) {\n super(props);\n this.handleYearMonthChange = this.handleYearMonthChange.bind(this);\n this.state = {\n month_: this.renderStateFromMonth(),\n };\n }\n\n /**\n * Function to set month onChange\n * @param {Date} month_ The month to display in the calendar.\n */\n handleYearMonthChange(month: any) {\n this.setState({ month_: month });\n }\n\n renderStateFromMonth = () =>\n fromMonth_.getFullYear() === currentYear - 80 // 1939\n ? new Date(currentYear - DEFAULT, 1, 1)\n : fromMonth_;\n\n renderDate = (date: any, value: any) =>\n (value === '' || value === undefined) &&\n date.getFullYear() === currentYear - FROM_MONTH\n ? new Date(currentYear - DEFAULT, 0, 1)\n : date;\n\n render() {\n const { onDateChange, value, maxDate, error } = this.props;\n const { month_ } = this.state;\n\n return (\n \n {\n onDateChange(renderValueDate(dt));\n }}\n placeholder=\"JJ/MM/AAAA\"\n format=\"DD/MM/YYYY\"\n value={\n value !== '' && value !== undefined\n ? renderValueDate(value)\n : undefined\n }\n parseDate={parseDate}\n formatDate={formatDate}\n dayPickerProps={{\n locale: 'fr',\n modifiers: {\n highlighted: new Date(value),\n },\n modifiersStyles,\n month: month_,\n fromMonth: fromMonth_,\n toMonth: toMonth_,\n localeUtils: MomentLocaleUtils as any,\n disabledDays: {\n after: new Date(maxDate ? maxDate : ''),\n },\n\n captionElement: ({ date }: any) => (\n \n ),\n }}\n />\n {error && error !== '' && (\n

{error}

\n )}\n
\n );\n }\n}\n\nexport { fromMonth_, toMonth_ };\nexport default CustomDate;\n","import IconLogoSideBar from '../assets/icons/ic-logo-sidebar.svg';\nimport IconLogoLogin from '../assets/icons/ic-logo-login.svg';\nimport IconElecOff from '../assets/icons/ic-elec-off.svg';\nimport IconElecOn from '../assets/icons/ic-elec-on.svg';\nimport IconElecGreen from '../assets/icons/ic-elec-green.svg';\nimport IconGasOff from '../assets/icons/ic-gas-off.svg';\nimport IconGasOn from '../assets/icons/ic-gas-on.svg';\nimport IconLogOut from '../assets/icons/ic-logout-sidebar.svg';\nimport IconWekiwi from '../assets/icons/ic-wekiwi-popup.png';\nimport IconWekiwiOrange from '../assets/icons/ic-wekiwi-popup-orange.png';\nimport IconWekiwiNew from '../assets/icons/logo-wekiwi-new.png';\nimport IconAvatar from '../assets/icons/ic-avatar.svg';\nimport IconLinkedin from '../assets/icons/ic-linkedin.svg';\nimport IconInstagram from '../assets/icons/ic-instagram.svg';\nimport IconFacebook from '../assets/icons/ic-facebook.svg';\nimport IconYoutube from '../assets/icons/ic-youtube.svg';\nimport IconTwitter from '../assets/icons/ic-twitter.svg';\nimport IconCertification from '../assets/icons/ic-certification.svg';\nimport IcMenu from '../assets/icons/ic-menu.svg';\nimport IcMenuH from '../assets/icons/ic-menu-h.svg';\nimport IcTriangle from '../assets/icons/ic-triangle.svg';\nimport IcCross from '../assets/icons/ic-cross.svg';\nimport IcCheckValidate from '../assets/icons/ic-check-validate.svg';\nimport IcFilterSymbol from '../assets/icons/filter-symbol.svg';\nimport IcArrowDown from '../assets/icons/arrow-down.png';\nimport IcArrowSubscription from '../assets/icons/arrow-subscription.svg';\n\nimport IcMenuOrange from '../assets/icons/ic-menu-orange.svg';\nimport IcMenuOrangeCreu from '../assets/icons/ic-menu-orange-creu.svg';\n\nimport IconArrowBack from '../assets/icons/ic-arrow-back.svg';\nimport IconArrowNext from '../assets/icons/ic-arrow-next.svg';\nimport IconAccueilNewWekiwi from '../assets/icons/ic-image-background-accueil.png';\nimport IconArrowOpenMenu from '../assets/icons/icon-arrow-open-menu.png';\n\n// timline status\nimport IconTimelineLogo from '../assets/icons/timeline-status/logo.png';\nimport IconTimelineOk from '../assets/icons/timeline-status/ok.png';\nimport IconTimelineError from '../assets/icons/timeline-status/error.png';\nimport IconTimelineWaiting from '../assets/icons/timeline-status/waiting.png';\nimport IconTimelineAbandonned from '../assets/icons/timeline-status/abandonned.png';\n\nimport IconElecCounters from '../assets/icons/ic-elec-counters.png';\nimport IconGasCounters from '../assets/icons/ic-gas-counters.png';\n\nimport IconCopyClipboard from '../assets/icons/ic-copy-clipboard.svg';\nimport IconLoader from '../assets/loader.svg';\n\nexport default {\n 'ic-elec-counters': IconElecCounters,\n 'ic-gas-counters': IconGasCounters,\n 'ic-logo-sidebar': IconLogoSideBar,\n 'ic-timeline-status-ok': IconTimelineOk,\n 'ic-timeline-status-logo': IconTimelineLogo,\n 'ic-timeline-status-error': IconTimelineError,\n 'ic-timeline-status-waiting': IconTimelineWaiting,\n 'ic-timeline-status-abandonned': IconTimelineAbandonned,\n 'ic-logo-login': IconLogoLogin,\n 'ic-elec-off': IconElecOff,\n 'ic-elec-on': IconElecOn,\n 'ic-elec-green': IconElecGreen,\n 'ic-gas-on': IconGasOn,\n 'ic-gas-off': IconGasOff,\n 'ic-logout-sidebar': IconLogOut,\n 'ic-wekiwi-popup': IconWekiwi,\n 'ic-wekiwi-popup-orange': IconWekiwiOrange,\n 'ic-avatar': IconAvatar,\n 'ic-linkedin': IconLinkedin,\n 'ic-instagram': IconInstagram,\n 'ic-facebook': IconFacebook,\n 'ic-youtube': IconYoutube,\n 'ic-twitter': IconTwitter,\n 'ic-certification': IconCertification,\n 'ic-menu': IcMenu,\n 'ic-menu-h': IcMenuH,\n 'ic-menu-orange': IcMenuOrange,\n 'ic-menu-orange-creu': IcMenuOrangeCreu,\n 'ic-triangle': IcTriangle,\n 'ic-cross': IcCross,\n 'ic-check-validate': IcCheckValidate,\n 'ic-filter-symbol': IcFilterSymbol,\n 'ic-arrow-back': IconArrowBack,\n 'ic-arrow-next': IconArrowNext,\n 'ic-loader': IconLoader,\n 'ic-copy-clipboard': IconCopyClipboard,\n 'ic-wekiwi-new': IconWekiwiNew,\n 'ic-new-logo-accueil-background': IconAccueilNewWekiwi,\n 'ic-arrow-open-menu': IconArrowOpenMenu,\n 'ic-arrow-down': IcArrowDown,\n 'ic-arrow-subscribtion': IcArrowSubscription,\n};\n","import * as H from 'history';\nimport IBAN from 'iban';\nimport Papa from 'papaparse';\n\nimport {\n TAddress,\n TContract,\n TCustomer,\n TEPInvoice,\n TMeterRead,\n TPackage,\n TScheme,\n TThirdParty,\n TTransaction,\n TWordingItem,\n} from 'Models';\n\nimport {\n EActionMode,\n EBillingMode,\n ECivility,\n ECustomerType,\n EFrequency,\n EGroups,\n EInvoiceRoutingMode,\n EMeterReadFrequency,\n EPaymentMode,\n EPAYTransactionStatus,\n EPieceType,\n ERateOption,\n ETimeframe,\n} from './enums';\n\nimport uniqBy from 'lodash/uniqBy';\n\nimport Config from './config';\nimport WordingCommon from './wording.json';\nimport { fromMonth_, toMonth_ } from '../components/CustomDate/CustomDate';\nimport { SelectOption, TSchemaProps } from 'Types';\nimport map from 'lodash/map';\nimport get from 'lodash/get';\nimport resources from './resources';\nimport { isNil } from 'lodash';\nimport { isFirstDayOfMonth, parse } from 'date-fns';\n\nconst PackageWording = WordingCommon.PackagePage;\nconst CommonWording = WordingCommon.Common;\n\nconst WordingMapping = WordingCommon.mapping;\n\nconst log = (title: string, message: any) => {\n if (Config.ENV === 'PREPRODUCTION') {\n console.log(title, message);\n }\n};\n\nconst isValidString = (value?: string): boolean => {\n return value !== undefined && value !== '';\n};\n\nconst isValidEmail = (value?: string): boolean => {\n if (value === undefined) {\n return false;\n }\n const regex = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n return regex.test(String(value).toLowerCase());\n};\n\nconst isValidPhone = (value?: string): boolean => {\n if (value && value.length === 10) {\n const sub = value.substr(0, 2);\n if (sub === '06' || sub === '07') {\n const regex = /^((06)|(07))[0-9]{8}$/;\n return regex.test(String(value));\n }\n }\n return false;\n};\n\nconst isValidPassword = (value?: string): boolean => {\n if (value === undefined) {\n return false;\n }\n if (value.length < 6) {\n return false;\n }\n const regex = /[^\\w\\d]*(([0-9]+.*[A-Za-z]+.*)|[A-Za-z]+.*([0-9]+.*))/;\n return regex.test(value);\n};\n\nconst isValidIban = (value?: string): boolean => {\n if (value === undefined) {\n return false;\n }\n return IBAN.isValid(value);\n};\n\nconst pad = (s: number) => {\n return s < 10 ? `0${s}` : s;\n};\n\nconst isValidName = (\n value: string = '',\n allowSpecialChars: boolean = false,\n): boolean => {\n if (value === undefined) {\n return false;\n }\n if (allowSpecialChars) {\n return new RegExp(/^[a-zA-Z\\' \\-]+/g).test(value);\n }\n return value.indexOf(' ') >= 0;\n};\n\nconst isValidBirthDate = (value: Date | null | undefined): boolean => {\n if (!value) return false;\n const today = new Date();\n const birthDate = value;\n let age = today.getFullYear() - birthDate.getFullYear();\n const m = today.getMonth() - birthDate.getMonth();\n if (m < 0 || (m === 0 && today.getDate() < birthDate.getDate())) {\n age = age - 1;\n }\n if (age >= 72) return false;\n const year = value.getFullYear();\n const isInRange =\n year <= toMonth_.getFullYear() && year >= fromMonth_.getFullYear();\n return isInRange;\n};\n\nconst isValidBirthDatePro = (value: Date | null | undefined): boolean => {\n if (!value) return false;\n const today = new Date();\n const birthDate = value;\n let age = today.getFullYear() - birthDate.getFullYear();\n const m = today.getMonth() - birthDate.getMonth();\n if (m < 0 || (m === 0 && today.getDate() < birthDate.getDate())) {\n age = age - 1;\n }\n if (age >= 101) return false;\n const year = value.getFullYear();\n const isInRange =\n year <= toMonth_.getFullYear() && year >= fromMonth_.getFullYear();\n return isInRange;\n};\n\nconst getFormattedDate = (date?: string | Date) => {\n if (!date) {\n return '';\n }\n\n const d = new Date(date);\n return d\n ? [pad(d.getDate()), pad(d.getMonth() + 1), d.getFullYear()].join('/')\n : undefined;\n};\n\nconst getFormattedDateToBackEnd = (\n d: Date,\n reversed: boolean = false,\n separator: string = '-',\n): string => {\n let units = [d.getFullYear(), pad(d.getMonth() + 1), pad(d.getDate())];\n if (reversed) units = units.reverse();\n return units.join(separator);\n};\n\nconst getDateFormatted = (d: Date | undefined): string | undefined => {\n if (d !== undefined) {\n return [d.getFullYear(), pad(d.getMonth() + 1), pad(d.getDate())].join(\n '-',\n );\n }\n return undefined;\n};\n\nconst getTodayDate = (): string => {\n const d = new Date();\n return [d.getFullYear(), pad(d.getMonth() + 1), pad(d.getDate())].join('-');\n};\n\nconst isWeekend = (date: Date): boolean => {\n return date.getDay() === 6 || date.getDay() === 0;\n};\n\nconst displayIban = (iban: string): string =>\n iban.toUpperCase().replace(/[^A-Z0-9]/g, '');\n\nconst displayNumberOnly = (value: string): string =>\n value.replace(/[^\\d ]/g, '');\n\nconst displayPhoneWithoutPrefix = (value: string): string =>\n value.replace(/[^\\d ][3]{2}/g, '0');\n\nconst getPhoneWithPrefix = (value: string) => value.replace(/^(0)/, '+33');\n\nconst findContractByNumber = (nbr: string, arr: TContract[]): TContract => {\n const object =\n arr.find((contract: TContract) => contract.contractNumber === nbr) ||\n arr[0];\n return object;\n};\n\nconst findCoholder = (contract?: TContract): TThirdParty | undefined => {\n if (contract && contract.thirdParties) {\n return contract.thirdParties.find(\n (e: TThirdParty) => e.role === 'COHOLDER',\n );\n }\n return undefined;\n};\n\nconst displayPlaceholder = (size: number): string => {\n let res = '';\n if (size > 0) {\n const list = Array.from(Array(size).keys());\n list.forEach(i => {\n res += `${i + 1}`;\n });\n }\n return res;\n};\n\nconst getYoutubeId = (link: string): string => {\n const s = link.split('v=');\n if (s.length < 1) {\n return '';\n }\n let video_id = s[1];\n const ampersandPosition = video_id.indexOf('&');\n if (ampersandPosition !== -1) {\n video_id = video_id.substring(0, ampersandPosition);\n }\n return video_id;\n};\n\nconst getTimeframeFromLabel = (label: string): string => {\n switch (label) {\n case 'Base':\n return 'TOTAL_HOUR';\n case 'Heure pleine':\n return 'HIGH';\n case 'Heure creuse':\n return 'LOW';\n default:\n return '';\n }\n};\n\nconst getLabelByValue = (\n value: string,\n arr: Array<{\n value: string;\n label: string;\n }>,\n): string => {\n const objFind = arr.find(\n (obj: { value: string; label: string }) => obj.value === value,\n ) || {\n value: '',\n label: '',\n };\n return objFind.label;\n};\n\nconst transformPriceLabel = (label: string): string => {\n if (label === PackageWording.price.totalhour.label) {\n return PackageWording.price.totalhour.text;\n }\n if (label === PackageWording.price.high.label) {\n return PackageWording.price.high.text;\n }\n if (label === PackageWording.price.low.label) {\n return PackageWording.price.low.text;\n }\n if (label === PackageWording.price.paymentFrequency.label) {\n return PackageWording.price.paymentFrequency.text;\n }\n return label;\n};\n\nconst displayFrequency = (frequency: EFrequency): string => {\n const freq = PackageWording.frequencies.find(\n f => f.value === frequency,\n ) || {\n text: '',\n };\n return freq.text;\n};\n\nconst displayRateOption = (rateOption: ERateOption): string => {\n const f = PackageWording.rateOptions.find(r => r.value === rateOption) || {\n text: '',\n };\n return f.text;\n};\n\nconst displayTimeframe = (timeframe: ETimeframe): string => {\n return CommonWording.timeframeConsumption[timeframe];\n};\n\nconst displayDateFromNumber = (d: {\n date: number;\n month: number;\n year: number;\n}): string => {\n const { date, month, year } = d;\n const dayLabel = `${date < 10 ? `0${date}` : date}`;\n const monthLabel = `${month + 1 < 10 ? `0${month + 1}` : month + 1}`;\n return `${dayLabel}/${monthLabel}/${year}`;\n};\n\nconst transformAuthorizedPackages = (packages?: TPackage[][]): number[][] => {\n if (packages === undefined) {\n return [[]];\n }\n const res = packages\n .map(p => {\n if (p && p.length === 2) {\n return p\n .sort((x: TPackage, y: TPackage) =>\n x.timeframe < y.timeframe ? -1 : 1,\n )\n .map((x: TPackage) => parseInt(x.amount, 0));\n }\n return [0, 0];\n })\n .sort((x, y) => (x[0] < y[0] ? -1 : 1));\n return res;\n};\n\nconst transformAuthorizedPackagesToPackages = (\n packages?: TPackage[][],\n): TPackage[][] => {\n if (packages === undefined) {\n return [[]];\n }\n const res = packages\n .map(p => {\n if (p && p.length === 2) {\n return p\n .sort((x: TPackage, y: TPackage) =>\n x.timeframe < y.timeframe ? -1 : 1,\n )\n .map((x: TPackage) => x);\n }\n return [p[0], p[0]];\n })\n .sort((x, y) =>\n parseInt(x[0].amount, 0) < parseInt(y[0].amount, 0) ? -1 : 1,\n );\n return res;\n};\n\nconst findPackagesByRange = (\n range: number[],\n packages?: TPackage[][],\n): TPackage[] => {\n if (packages === undefined) {\n return [];\n }\n const r = transformAuthorizedPackagesToPackages(packages);\n return (\n r.find(\n (ps: TPackage[]) =>\n Number(ps[0].amount) === range[0] &&\n Number(ps[1].amount) === range[1],\n ) || []\n );\n};\n\nconst findPackageById = (\n packageID: string,\n packages?: TPackage[],\n recommended?: boolean,\n): TPackage | undefined => {\n if (packages === undefined) {\n return undefined;\n }\n const pkg = packages.find(p => p.id === packageID);\n if (pkg === undefined && recommended) {\n return packages.find(p => p.recommended);\n }\n\n return pkg;\n};\n\nconst getLabelCivility = (civility: ECivility): string => {\n const value = civility as string;\n const res = WordingCommon.EnumItem.civilities.find(\n (c: TWordingItem) => c.value === value,\n ) || { label: '' };\n return res.label;\n};\n\nconst getLabelInvoiceRouting = (routingMode: EInvoiceRoutingMode): string => {\n const value = routingMode as string;\n const res = WordingCommon.BillPage.routingMode.values.find(\n (c: TWordingItem) => c.value === value,\n ) || { label: '' };\n return res.label;\n};\n\nconst getLabelPaymentMode = (paymentMode: EPaymentMode): string => {\n const value = paymentMode as string;\n const res = WordingCommon.EnumItem.paymentModes.find(\n (c: TWordingItem) => c.value === value,\n ) || { label: '' };\n return res.label;\n};\n\nconst comparePieces = (a: TEPInvoice, b: TEPInvoice): number => {\n const x = new Date(a.invoicing_period_end_date).getTime();\n const y = new Date(b.invoicing_period_end_date).getTime();\n if (x < y) {\n return -1;\n }\n if (x > y) return 1;\n return 0;\n};\n\nconst findNextAndLastPieces = (\n pieces?: TEPInvoice[],\n): { next: TEPInvoice | undefined; last: TEPInvoice | undefined } => {\n let next: TEPInvoice | undefined;\n let last: TEPInvoice | undefined;\n if (pieces === undefined) {\n return {\n next,\n last,\n };\n }\n const sortedPieces = pieces.sort(comparePieces);\n const currentDate = new Date().getTime();\n sortedPieces.forEach((piece: TEPInvoice) => {\n const piecesDate = new Date(piece.invoicing_period_end_date).getTime();\n if (piecesDate > currentDate && next === undefined) {\n next = piece;\n }\n if (piecesDate < currentDate) {\n last = piece;\n }\n });\n\n return {\n next,\n last,\n };\n};\n\nconst findLastValidPiece = (\n pieces?: TEPInvoice[],\n): { lastValid: TEPInvoice | undefined } => {\n let lastValid: TEPInvoice | undefined;\n\n if (pieces === undefined) {\n return {\n lastValid,\n };\n }\n const sortedPieces = pieces;\n const currentDate = new Date().getTime();\n sortedPieces.forEach((piece: TEPInvoice) => {\n const dd = parse(\n piece.invoicing_period_end_date,\n 'dd/MM/yyyy',\n new Date(),\n );\n const piecesDate = dd.getTime();\n if (\n piecesDate < currentDate &&\n // à remplacer par ('reconciled' || 'Reconciled')\n piece.status === ('reconciled' || 'Reconciled')\n // && piece.internal_invoice_nature_code === 'instalment'\n ) {\n lastValid = piece;\n }\n // if (\n // piecesDate < currentDate &&\n // piece.status === ('reconciled' || 'Reconciled')\n // && piece.internal_invoice_nature_code === 'settlement'\n // ) {\n // tmp = piece;\n // }\n });\n\n return {\n lastValid,\n };\n};\n\nconst validTransactionStatus = (status: EPAYTransactionStatus) => {\n if (\n status === EPAYTransactionStatus.SUCCESS ||\n status === EPAYTransactionStatus.INITIALIZED ||\n status === EPAYTransactionStatus.TRANSMITTED ||\n status === EPAYTransactionStatus.TRANSACTION_FAILURE ||\n status === EPAYTransactionStatus.DETECTED_ANOMALY ||\n status === EPAYTransactionStatus.DISPUTED\n ) {\n return true;\n }\n return false;\n};\n\nconst findLastValidTransaction = (\n transactions?: TTransaction[],\n): { lastValidTransaction: TTransaction | undefined } => {\n let lastValidTransaction: TTransaction | undefined;\n if (transactions === undefined) {\n return {\n lastValidTransaction,\n };\n }\n const sortedTrans = transactions.sort(compareTransaction);\n const currentDate = new Date().getTime();\n sortedTrans.forEach((transaction: TTransaction) => {\n const transactionDate = new Date(transaction.dueDate).getTime();\n if (\n transactionDate < currentDate &&\n validTransactionStatus(transaction.status)\n ) {\n lastValidTransaction = transaction;\n }\n });\n return {\n lastValidTransaction,\n };\n};\n\nconst findBillingModeCode = (cntt: any) => {\n return cntt.billingModeCode as EBillingMode;\n};\n\nconst concatUrl = (\n customer: TCustomer,\n thirdParties: TThirdParty[] | undefined,\n): string => {\n const contact = customer.contact;\n const birthdate = contact.birthdate\n ? `&birthdate=${contact.birthdate}`\n : '';\n const url = `${Config.SUBSCRIPTION_LINK}/?customerType=${customer.type}&civility=${contact.customerFullName.civility}&firstName=${contact.customerFullName.firstName}&lastName=${contact.customerFullName.lastName}&email=${contact.email}&phone=${contact.phone}${birthdate}`;\n\n if (customer.type === ECustomerType.INDIVIDUAL) {\n const coholder = thirdParties\n ? thirdParties.find(p => p.role === 'COHOLDER')\n : undefined;\n if (\n coholder &&\n coholder.civility &&\n coholder.firstName &&\n coholder.lastName\n ) {\n return `${url}&coholderCivility=${coholder.civility}&coholderFirstName=${coholder.firstName}&coholderLastName=${coholder.lastName}`;\n }\n return url;\n }\n return `${url}&companyName=${contact.companyName}&companyType=${contact.companyType}&identificationNumber=${contact.identificationNumber}&activityCode=${contact.activityCode}`;\n};\n\nconst filteredArr = (arr: any[], type: string): any[] =>\n arr.reduce((acc, current) => {\n const x = acc.find((item: any) => item[type] === current[type]);\n if (!x) {\n return acc.concat([current]);\n }\n return acc;\n }, []);\n\nconst compareTransaction = (a: TTransaction, b: TTransaction): number => {\n const x = new Date(a.dueDate).getTime();\n const y = new Date(b.dueDate).getTime();\n if (x < y) {\n return -1;\n }\n if (x > y) return 1;\n return 0;\n};\n\nconst getLatestTransaction = (\n trans?: TTransaction[],\n): TTransaction | undefined => {\n if (trans && trans.length > 0) {\n const sortedTrans = trans.sort(compareTransaction);\n return sortedTrans[sortedTrans.length - 1];\n }\n return undefined;\n};\n\ntype EnergyConsumption = {\n consumptions: number[];\n highs: number[];\n lows: number[];\n totalhours: number[];\n packages: number[];\n labels: string[];\n};\n\nconst sortMeters = (meters: TMeterRead[]) =>\n meters.sort((a: TMeterRead, b: TMeterRead) => {\n const x = parse(a.endDate, 'yyyy-MM-dd', new Date()).getTime();\n const y = parse(b.endDate, 'yyyy-MM-dd', new Date()).getTime();\n if (x < y) {\n return 1;\n }\n if (x > y) return -1;\n return 0;\n });\n\nconst generateLast12MonthsLabels = (meters: TMeterRead[]): Date[] => {\n if (meters.length === 0) return [];\n\n const lastDate = parse(meters[0].endDate, 'yyyy-MM-dd', new Date());\n\n const labelsDateObjects: Date[] = [];\n\n const toLastMonth = isFirstDayOfMonth(\n parse(meters[0].endDate, 'yyyy-MM-dd', new Date()),\n )\n ? 1\n : 0;\n\n for (let i = 0; i < 12; i += 1) {\n const newDate = new Date(lastDate);\n newDate.setMonth(lastDate.getMonth() - i - toLastMonth);\n labelsDateObjects.push(newDate);\n }\n\n labelsDateObjects.reverse();\n\n return labelsDateObjects;\n};\n\nconst getEnergyConsumption = (\n meters: TMeterRead[],\n ps?: TPackage[],\n): EnergyConsumption => {\n const consumptions: number[] = Array(12).fill(0);\n const highs: number[] = Array(12).fill(0);\n const lows: number[] = Array(12).fill(0);\n const totalhours: number[] = Array(12).fill(0);\n let packages: number[] = [];\n\n if (ps) {\n if (ps.length === 1) {\n packages = Array(12).fill(ps[0].quantityMonthly);\n } else {\n const summer = ps.find(p => p.timeframe === ETimeframe.SUMMER);\n const winter = ps.find(p => p.timeframe === ETimeframe.WINTER);\n const sp = summer ? summer.quantityMonthly : 0;\n const wp = winter ? winter.quantityMonthly : 0;\n packages = [wp, wp, wp, sp, sp, sp, sp, sp, sp, sp, wp, wp];\n }\n }\n\n const labels: string[] = [];\n\n let lastYear = new Date();\n if (meters.length > 0) {\n lastYear = parse(meters[0].endDate, 'yyyy-MM-dd', new Date());\n }\n\n lastYear.setFullYear(lastYear.getFullYear() - 1);\n const lastYearDate = lastYear.getTime();\n // Use for loop instead of forEach for better performance\n for (const element of meters) {\n const m = element;\n\n const start = parse(m.startDate, 'yyyy-MM-dd', new Date());\n\n if (lastYearDate < start.getTime()) {\n const end = parse(m.endDate, 'yyyy-MM-dd', new Date());\n const startMonth = start.getMonth();\n const endMonth = end.getMonth();\n\n const high = (m.meterRead &&\n m.meterRead.find(x => x.timeframe === ETimeframe.HIGH)) || {\n consumption: 0,\n };\n const low = (m.meterRead &&\n m.meterRead.find(x => x.timeframe === ETimeframe.LOW)) || {\n consumption: 0,\n };\n const totalhour = (m.meterRead &&\n m.meterRead.find(\n x => x.timeframe === ETimeframe.TOTAL_HOUR,\n )) || { consumption: 0 };\n\n if (m.readingFrequency === EMeterReadFrequency.MONTHLY) {\n consumptions[endMonth] += parseFloat(m.quantity);\n labels.push(m.endDate);\n highs[endMonth] += high.consumption;\n lows[endMonth] += low.consumption;\n totalhours[endMonth] += totalhour.consumption;\n } else if (startMonth === endMonth) {\n consumptions[startMonth] += parseFloat(m.quantity);\n labels.push(m.endDate);\n highs[startMonth] += high.consumption;\n lows[startMonth] += low.consumption;\n totalhours[startMonth] += totalhour.consumption;\n } else {\n let limit = endMonth - startMonth;\n labels.push(m.endDate);\n if (limit < 0) {\n limit += 12;\n }\n for (let j = 0; j <= limit; j += 1) {\n const startYear =\n start.getFullYear() + (startMonth + j > 11 ? 1 : 0);\n\n const sj = (startMonth + j) % 12;\n\n const s = j === 0 ? start : new Date(startYear, sj, 1);\n\n const controlYearE =\n s.getMonth() === 11 ? startYear + 1 : startYear;\n\n const e =\n j === limit\n ? end\n : new Date(controlYearE, (sj + 1) % 12, 1);\n\n const fraction = (+e - +s) / (+end - +start);\n\n consumptions[sj] += parseFloat(m.quantity) * fraction;\n\n highs[sj] += high.consumption * fraction;\n lows[sj] += low.consumption * fraction;\n totalhours[sj] += totalhour.consumption * fraction;\n }\n }\n }\n }\n /* const labelsDateObjects = labels.map(label =>\n parse(label, 'yyyy-MM-dd', new Date()),\n );\n console.log(labelsDateObjects)\n labelsDateObjects.sort((a, b) => a.getTime() - b.getTime());\n console.log(labelsDateObjects)\n const labelsTimestamps = labelsDateObjects.map(date => date.getTime());\n\n const minTimestamp = Math.min(...labelsTimestamps);\n\n const oldestDate = new Date(minTimestamp);\n while (labelsDateObjects.length <= 12) {\n const newDate = new Date(oldestDate);\n newDate.setMonth(newDate.getMonth() - 1);\n labelsDateObjects.unshift(newDate);\n oldestDate.setTime(newDate.getTime());\n console.log(labelsDateObjects)\n }*/\n\n const labelsDateObjects = generateLast12MonthsLabels(meters);\n\n // labelsDateObjects.sort((a, b) => a.getTime() - b.getTime());\n const sortFinalLabels = labelsDateObjects.map(date =>\n date.toLocaleDateString('fr-FR', { month: '2-digit', year: 'numeric' }),\n );\n // sortFinalLabels = [...new Set(sortFinalLabels)];\n // sortFinalLabels = sortFinalLabels.slice(-12);\n if (meters.length > 0) {\n const endMonth = parse(\n meters[0].endDate,\n 'yyyy-MM-dd',\n new Date(),\n ).getMonth();\n const shift = (endMonth + 1) % 12;\n const consumptionsArray = shiftArray(\n consumptions,\n 0,\n shift,\n ) as number[];\n const highsArray = shiftArray(highs, 0, shift) as number[];\n const lowsArray = shiftArray(lows, 0, shift) as number[];\n const totalhoursArray = shiftArray(totalhours, 0, shift) as number[];\n const labelsArray = sortFinalLabels;\n const packageArray = shiftArray(packages, 0, shift) as number[];\n\n return {\n packages: packageArray,\n consumptions: consumptionsArray,\n highs: highsArray,\n lows: lowsArray,\n totalhours: totalhoursArray,\n labels: labelsArray,\n };\n }\n\n return { packages, consumptions, highs, lows, totalhours, labels };\n};\n\nconst getEnergyPercentage = (\n consumptions: number[],\n packages: number[],\n month: number,\n): number => {\n if (consumptions.length !== 12 || packages.length !== 12) {\n return 0;\n }\n const m = month === 0 ? 11 : month - 1;\n return Number(((consumptions[m] * 100) / packages[m]).toFixed(2));\n};\n\ntype StringOrNumber = number | string;\n\nconst shiftArray = (\n arr: StringOrNumber[],\n direction: number,\n n: number,\n): StringOrNumber[] => {\n const times = n > arr.length ? n % arr.length : n;\n return arr.concat(\n arr.splice(0, direction > 0 ? arr.length - times : times),\n );\n};\n\ntype DownloadData = {\n row: number;\n date: string;\n context: string;\n startDate: string;\n endDate: string;\n consumption: string;\n};\n\nconst getConsumptionDownloadData = (meters: TMeterRead[]): DownloadData[] => {\n const data: DownloadData[] = [];\n\n for (let i = 0; i < meters.length; i += 1) {\n const m = meters[i];\n\n data.push({\n row: i,\n date: getFormattedDate(m.meterReadDate) || '',\n context: m.consumptionContext,\n startDate: getFormattedDate(m.startDate) || '',\n endDate: getFormattedDate(m.endDate) || '',\n consumption: m.quantity,\n });\n }\n\n return data;\n};\n\nconst compareMeterRead = (a: TMeterRead, b: TMeterRead): number => {\n const x = new Date(a.endDate).getTime();\n const y = new Date(b.endDate).getTime();\n if (x < y) {\n return 1;\n }\n if (x > y) return -1;\n return 0;\n};\n\nconst sortedConsumptionList = (meters?: TMeterRead[]): TMeterRead[] => {\n if (meters) {\n const noDuplicateMeters = removeDuplicateConsumptionList(meters);\n return noDuplicateMeters.sort(compareMeterRead);\n }\n return [];\n};\n\nconst removeDuplicateConsumptionList = (\n meters?: TMeterRead[],\n): TMeterRead[] => {\n if (meters) {\n const seen = new Set();\n return meters.filter(e => {\n const obj = JSON.stringify({\n startDate: e.startDate,\n endDate: e.endDate,\n quantity: e.quantity,\n });\n const duplicate = seen.has(obj);\n seen.add(obj);\n return !duplicate;\n });\n }\n return [];\n};\n\nconst compare = (a: any, b: any, property: string) => {\n if (a[property] < b[property]) return -1;\n if (a[property] > b[property]) return 1;\n return 0;\n};\n\nconst displayCustomerNumber = (nbr: string) => {\n const regex = /\\bADMIN:/;\n return regex.test(nbr) ? nbr.replace('ADMIN:', '') : nbr;\n};\n\nconst buildClassName = (nodes: string[], separator: string = '__') => {\n return nodes.join(separator);\n};\n\nconst capitalizeFirstLetter = (str: string = ''): string => {\n const arr = str.split('');\n if (!!arr[0]) arr[0] = arr[0].toUpperCase();\n return arr.join('');\n};\n\nconst formatNameString = (\n str: string = '',\n setInitialCap?: boolean,\n): string => {\n let fmt = str.replace(/[^\\a-zA-Z -- ç é è]/g, '');\n if (!!setInitialCap) fmt = capitalizeFirstLetter(fmt);\n return fmt;\n};\n\nfunction formatFirstNameString(value: string = ''): string {\n return formatNameString(value, true);\n}\n\nfunction formatLastNameString(value: string = ''): string {\n return formatNameString(value, true);\n}\n\nfunction formatGroupNameString(value: string = ''): string {\n return formatNameString(value, true);\n}\n\nfunction formatSIRETString(value: string = ''): string {\n return value.replace(/[^\\d]/g, '').slice(0, 14);\n}\n\nfunction formatPhoneNumberString(value: string = ''): string {\n return value.replace(/[^\\d]/g, '').slice(0, 10);\n}\n\nfunction formatGroupString(value: string = ''): string {\n return value.replace(/\\s/, '').slice(0, 10);\n}\n\nfunction formatAddressString(value: string = ''): string {\n return value.replace(/[^a-z^A-Z^0-9^.^\\-^' ]/g, '');\n}\n\nfunction formatPostalCodeString(value: string = ''): string {\n return value.replace(/[^\\d]/g, '').slice(0, 5);\n}\n\nfunction formatSiteString(value: string = '') {\n let fmt = value.replace(/[^\\d]/g, '').slice(0, 14);\n if (fmt.length === 14) {\n const chunks: string[] = [];\n let i = fmt.length;\n while (i > 0) {\n const startIndex = i - 3 >= 0 ? i - 3 : 0;\n const nextChunk = fmt.substring(startIndex, i);\n chunks.push(nextChunk);\n i = startIndex;\n }\n fmt = chunks.reverse().join(' ');\n }\n return fmt;\n}\n\nfunction formatAlphanumericString(value: string, upper: boolean = false) {\n let str = value.replace(/[^a-z0-9]/gi, '');\n if (upper) str = str.toUpperCase();\n return str;\n}\n\nconst httpSuccessRegexp = new RegExp(/^2[\\d]{2}$/g);\n\nfunction isHttpSuccess(code: any) {\n return httpSuccessRegexp.test(`${code}`);\n}\n\nfunction parseQueryParams(\n location: H.Location | Location,\n host: string,\n protocol: string,\n): Map {\n const params = new Map();\n try {\n const path = location.pathname;\n const search = location.search;\n const url = new URL(`${protocol}//${host}${path}${search}`);\n const entries = url.searchParams;\n entries.forEach((value, key) => {\n let typedValue: string | number = value;\n const numberValue = Number(value);\n if (!!numberValue) typedValue = numberValue;\n\n if (params.has(key)) {\n params.set(\n key,\n `${params.get(key) as string}|${typedValue as string}`,\n );\n } else params.set(key, typedValue);\n });\n } catch (err) {\n console.error(err);\n params.clear();\n return params;\n }\n return params;\n}\n\nconst formatCustomerContract = (customersContract: any[]): any[] => {\n let arr: any[] = [];\n arr = [\n ...arr,\n ...customersContract.map(value => {\n return { ...value };\n }),\n ];\n return arr;\n};\n\nconst isEmpty = (arr: any[]) => arr && arr.length !== 0;\n\nfunction getHost(\n params: Map = new Map(),\n extendedPath: string[] = [],\n): string {\n const protocol = location.protocol;\n const slashes = protocol.concat('//');\n const host = slashes.concat(window.location.host);\n let paramStr: string = '';\n if (params.size > 0) {\n paramStr = '?';\n params.forEach((value: string, key: string) => {\n paramStr += `${key}=${value}`;\n });\n }\n const url = `${host}/${extendedPath.join('/')}${paramStr}`;\n return url;\n}\n\nconst isEmptySelectOption = (\n selection?: string | SelectOption,\n): boolean => {\n return selection !== undefined && selection !== '';\n};\n\nfunction getSelectOptionValue(status: SelectOption): string {\n return status !== null ? (Object.values(status)[2] as string) : '';\n}\n\nasync function sleep(ms: number) {\n return new Promise(resolve => setTimeout(resolve, ms));\n}\n\ntype ArrayOrMap = V[] | Map;\nasync function forEach(\n collection: ArrayOrMap,\n fn: (value: V, index: K | number, collection: ArrayOrMap) => void,\n) {\n if (collection instanceof Array) {\n const length: number = collection.length;\n for (let i = 0; i < length; i = i + 1) {\n await fn(collection[i], i, collection);\n }\n } else if (collection instanceof Map) {\n const entries = collection.entries();\n for (const entry of entries) {\n await fn(entry[1], entry[0], collection);\n }\n }\n}\n\nconst isLimitedAuthorization = ({ subGroupMode, groupMode }: TSchemaProps) => {\n return groupMode === EGroups.LIMITED && subGroupMode === EGroups.LIMITED;\n};\n\nconst isFullAuthorization = ({ subGroupMode, groupMode }: TSchemaProps) => {\n return groupMode === EGroups.FULL && subGroupMode === EGroups.FULL;\n};\n\nconst isMixedAuthorization = ({ subGroupMode, groupMode }: TSchemaProps) => {\n return groupMode === EGroups.LIMITED && subGroupMode === EGroups.FULL;\n};\n\nconst isHaveActionsPermission = ({ actionMode }: TSchemaProps) => {\n return actionMode === EActionMode.FULL;\n};\n\nconst getInitialGroup = (group: string) => group.split('_')[0];\n\nconst getAllInitialGroups = (groups: string[]) =>\n uniqBy(\n map(groups, (group: string, id: number) => {\n const inGr = getInitialGroup(group);\n return {\n id,\n label: inGr,\n value: inGr,\n };\n }),\n 'value',\n );\n\nconst isHaveActionsPermissionBySchema = (\n menuLabel: string,\n subMenuLabel: string,\n authSchema: TScheme[],\n) => {\n const currMenu = authSchema.find(m => m.label === menuLabel);\n\n if (currMenu) {\n const currSubMenu = currMenu.subMenu.find(\n sm => sm.label === subMenuLabel,\n );\n\n return currSubMenu\n ? currSubMenu.actionMode === EActionMode.FULL\n : false;\n }\n\n return false;\n};\n\nconst isLimitedAuthorizationBySchema = (\n menuLabel: string,\n subMenuLabel: string,\n authSchema: TScheme[],\n) => {\n const currMenu = authSchema.find(m => m.label === menuLabel);\n\n if (currMenu) {\n const currSubMenu = currMenu.subMenu.find(\n sm => sm.label === subMenuLabel,\n );\n\n return currSubMenu\n ? currSubMenu.groupMode === EGroups.LIMITED &&\n currSubMenu.subGroupMode === EGroups.LIMITED\n : false;\n }\n\n return false;\n};\n\nconst isUserLimitedBySchema = (\n menuLabel: string,\n subMenuLabel: string,\n authSchema: TScheme[],\n) => {\n const currMenu = authSchema.find(m => m.label === menuLabel);\n\n if (currMenu) {\n const currSubMenu = currMenu.subMenu.find(\n sm => sm.label === subMenuLabel,\n );\n\n if (currSubMenu) {\n return currSubMenu.userLimited\n ? currSubMenu.userLimited\n : undefined;\n }\n }\n\n return undefined;\n};\n\nconst isOdd = (num: number): boolean => (num % 2 ? false : true);\n\ntype MappingTypes =\n | 'energyTypes'\n | 'contractStatus'\n | 'orderStatus'\n | 'firstPaymentCBStatus'\n | 'firstPaymentSlimCollectStatus'\n | 'paymentSDD';\nconst getLabelByType = (value: string, type: MappingTypes) => {\n return getLabelByValue(value, WordingMapping[type]);\n};\n\ntype TUserStatus = 'ENABLED' | 'DISABLED';\nconst getImgSrcByUserStatus = (status: TUserStatus) => {\n switch (status) {\n case 'ENABLED':\n return resources['ic-check-validate'];\n\n case 'DISABLED':\n return resources['ic-cross'];\n\n default:\n return resources['ic-cross'];\n }\n};\n\nconst isHtml = (str: string) =>\n str.includes('') || str.includes('

');\n\nconst compareAddress = (a1: TAddress, a2: TAddress) => {\n let addr1 = '';\n let addr2 = '';\n if (a1.number) {\n addr1 = `${a1.number} ${a1.street}-${a1.townName}-${a1.postalCode}`;\n } else {\n addr1 = `${a1.street}-${a1.townName}-${a1.postalCode}`;\n }\n if (a2.number) {\n addr2 = `${a2.number} ${a2.street}-${a2.townName}-${a2.postalCode}`;\n } else {\n addr2 = `${a2.street}-${a2.townName}-${a2.postalCode}`;\n }\n return JSON.stringify(addr1) === JSON.stringify(addr2);\n};\n\ntype Line = [string, string];\n\nconst additionalRatesDuplicateValue = (arr: Line[]): Line[] => {\n let fined: any[] = [];\n const init: any[] = [];\n arr.forEach(element => {\n if (element[0] === 'Frais lié à la fréquence de prépaiement') {\n if (fined.length === 0) {\n fined = element;\n } else {\n const prevAmount = fined[1].split(' ');\n const nextAmount = element[1].split(' ');\n\n const result =\n parseFloat(prevAmount[0]) + parseFloat(nextAmount[0]);\n\n fined = [fined[0], `${result.toFixed(2)} €`];\n }\n } else init.push(element);\n });\n\n return [...init, [...fined]];\n};\n\nconst buildPackagesForSlider = (packages: []) => {\n const init = [[]];\n\n let nbrElmInSection = 0;\n let countSectionNbr = 0;\n\n let recommendedInfo: any[] = [];\n\n packages.forEach(pkg => {\n if (nbrElmInSection < 4) {\n init[countSectionNbr].push(pkg);\n\n if ((pkg as any).recommended) {\n recommendedInfo = [countSectionNbr, nbrElmInSection];\n }\n nbrElmInSection += 1;\n } else {\n init.push([]);\n\n countSectionNbr += 1;\n nbrElmInSection = 1;\n\n init[countSectionNbr].push(pkg);\n\n if ((pkg as any).recommended) {\n recommendedInfo = [countSectionNbr, nbrElmInSection];\n }\n }\n });\n\n let finalBuild: any[] = [];\n let first: any[] = [];\n let isRecommendedPush = false;\n\n init.forEach((arr, idx) => {\n if (idx === recommendedInfo[0]) {\n isRecommendedPush = true;\n }\n\n if (isRecommendedPush) finalBuild = [...finalBuild, ...arr];\n else first = [...first, ...arr];\n });\n\n return [...finalBuild, ...first];\n};\n\nconst array_move = (arr: any[], old_index: number, new_index: number) => {\n if (new_index >= arr.length) {\n let k = new_index - arr.length + 1;\n // tslint:disable-next-line:no-increment-decrement\n while (k--) {\n arr.push(undefined);\n }\n }\n arr.splice(new_index, 0, arr.splice(old_index, 1)[0]);\n return arr;\n};\n\nconst canSelectAllPackage = () => {\n const userGroup = localStorage.getItem('userGroup');\n\n if (userGroup === null) return false;\n\n return Config.GroupsCanSelectAllPackage.reduce(\n (acc, curr) => acc || userGroup.includes(curr),\n false,\n );\n};\n\nconst addSelectAllToSelect = (opt: any[]) => [\n {\n id: 'select-all',\n label: 'Tout sélectionner',\n value: 'select-all',\n },\n ...opt,\n];\n\nconst parseSrcIframe = (dt: string): string => {\n const iframeRegex: RegExp = / {\n let nDays = days;\n const now = new Date(date);\n const dayOfTheWeek = now.getDay();\n const deliveryDay = dayOfTheWeek + days;\n let calendarDays = days;\n let deliveryWeeks;\n if (deliveryDay >= 6) {\n nDays -= 6 - dayOfTheWeek;\n calendarDays += 2;\n deliveryWeeks = Math.floor(nDays / 5);\n calendarDays += deliveryWeeks * 2;\n }\n now.setTime(now.getTime() + calendarDays * 24 * 60 * 60 * 1000);\n return now;\n};\n\nconst addDays = (date: string | Date, days: number) => {\n const result = new Date(date);\n result.setDate(result.getDate() + days);\n return result;\n};\n\n/**\n *\n * @param {Date} date\n * @param {'EL' | 'NG'} energy\n * @param {'NOW' | 'LATER'} type\n * @param {boolean} isCyclic\n *\n * *SWITCH_NOW (default dueDate +0)\n * ---------- EL => dueDate + 7 business + 2 calenders days\n * ---------- NG => dueDate + 7 business + 4 calenders days\n *\n * *SWITCH_LATER (default dueDate +14)\n * ---------- EL => dueDate + 7 business + 2 calenders\n * ---------- NG => dueDate + 7 business + 4 calenders\n */\nconst prepareEffectiveStartDate = (\n date: Date,\n energy: 'EL' | 'NG',\n type: 'NOW' | 'LATER',\n isCyclic: boolean = false,\n) => {\n const { EffectiveStartDate } = Config;\n\n const { businessDays, calendarDays } = EffectiveStartDate[type][energy];\n if (isCyclic || type === 'NOW') {\n return date;\n } else {\n const nextBusinessDate = addBusinessDays(businessDays, date);\n return addDays(nextBusinessDate, calendarDays);\n }\n};\n\nconst prepareFrequenciesToDisplay = (arr: any[]) => {\n const predicate = (a: any, b: any) => {\n const map = {\n MONTHLY: 0,\n BIMONTHLY: 1,\n QUARTERLY: 2,\n FOURMONTHLY: 3,\n } as any;\n\n if (map[a.value] < map[b.value]) {\n return -1;\n }\n\n if (map[a.value] > map[b.value]) {\n return 1;\n }\n\n return 0;\n };\n\n return arr.sort(predicate);\n};\n\nconst addMonth = (date: Date, nmMonth: number) =>\n new Date(date.setMonth(date.getMonth() + nmMonth));\n\nconst transformPieceType = (pt: string) => {\n switch (pt) {\n case EPieceType.ADHOC:\n return 'adhoc';\n\n default:\n return pt;\n }\n};\nconst getAPEFromObject = (obj: any) =>\n (get(\n obj,\n 'etablissement.uniteLegale.activitePrincipaleUniteLegale',\n '',\n ) as any).replaceAll('.', '');\n\nconst parseUploadAmendments = async (file: File): Promise =>\n new Promise((resolve, reject) =>\n Papa.parse(file, {\n header: true,\n skipEmptyLines: true,\n complete(results: any) {\n if (results.errors.length === 0) return resolve(results.data);\n\n console.error('Parsing errors: ', results.errors);\n return reject(results.errors);\n },\n }),\n );\n\nconst checkIsDisableSwitchSelect = ({ channel }: { channel: string }) => {\n if (isNil(channel)) return false;\n\n return Config.ChannelsFixSwitchLater.some(curr => curr.test(channel));\n};\n\nexport {\n compare,\n checkIsDisableSwitchSelect,\n parseUploadAmendments,\n transformPieceType,\n addMonth,\n getAPEFromObject,\n prepareFrequenciesToDisplay,\n parseSrcIframe,\n prepareEffectiveStartDate,\n addSelectAllToSelect,\n canSelectAllPackage,\n array_move,\n buildPackagesForSlider,\n isOdd,\n isHtml,\n getImgSrcByUserStatus,\n displayCustomerNumber,\n additionalRatesDuplicateValue,\n compareAddress,\n getLabelByType,\n isHaveActionsPermission,\n getAllInitialGroups,\n isMixedAuthorization,\n isHaveActionsPermissionBySchema,\n log,\n isLimitedAuthorizationBySchema,\n findBillingModeCode,\n isFullAuthorization,\n getInitialGroup,\n filteredArr,\n isValidPhone,\n isValidEmail,\n isValidPassword,\n isValidIban,\n isValidName,\n isValidString,\n isValidBirthDate,\n isValidBirthDatePro,\n findCoholder,\n getLabelCivility,\n getLabelInvoiceRouting,\n getLabelPaymentMode,\n getFormattedDate,\n findContractByNumber,\n displayIban,\n isLimitedAuthorization,\n isUserLimitedBySchema,\n displayNumberOnly,\n getTodayDate,\n displayPlaceholder,\n getYoutubeId,\n getTimeframeFromLabel,\n getLabelByValue,\n getFormattedDateToBackEnd,\n transformPriceLabel,\n displayFrequency,\n displayDateFromNumber,\n displayRateOption,\n displayTimeframe,\n transformAuthorizedPackages,\n findPackageById,\n findPackagesByRange,\n findNextAndLastPieces,\n findLastValidPiece,\n findLastValidTransaction,\n displayPhoneWithoutPrefix,\n getPhoneWithPrefix,\n concatUrl,\n isWeekend,\n getLatestTransaction,\n getEnergyConsumption,\n getEnergyPercentage,\n shiftArray,\n getConsumptionDownloadData,\n sortedConsumptionList,\n removeDuplicateConsumptionList,\n buildClassName,\n formatNameString,\n capitalizeFirstLetter,\n formatFirstNameString,\n formatLastNameString,\n formatSIRETString,\n formatPhoneNumberString,\n formatAddressString,\n formatPostalCodeString,\n formatSiteString,\n formatCustomerContract,\n isEmpty,\n getDateFormatted,\n isEmptySelectOption,\n formatAlphanumericString,\n isHttpSuccess,\n parseQueryParams,\n getHost,\n getSelectOptionValue,\n formatGroupString,\n sleep,\n formatGroupNameString,\n forEach,\n addDays,\n sortMeters,\n};\n","import { Epic } from 'redux-observable';\nimport { of, forkJoin, throwError } from 'rxjs';\nimport {\n mergeMap,\n catchError,\n filter,\n switchMap,\n timeout,\n} from 'rxjs/operators';\nimport {\n createAsyncAction,\n createStandardAction,\n isActionOf,\n ActionType,\n getType,\n} from 'typesafe-actions';\n\nimport {\n mapCreateEvent,\n ICreateEventPayload,\n createEventAsync,\n} from './event.actions';\nimport { RootAction, RootState, Services } from 'Types';\nimport {\n TCustomer,\n TContract,\n TCustomerFullName,\n TAddress,\n TThirdParty,\n TResponse,\n} from 'Models';\n\nimport { getTodayDate } from '../utils/helpers';\nimport { EModeUpdateBilling } from '../utils/enums';\n\nimport {\n FETCH_CONTEXT_REQUEST,\n FETCH_CONTEXT_SUCCESS,\n FETCH_CONTEXT_FAILURE,\n UPDATE_CUSTOMER_REQUEST,\n UPDATE_CUSTOMER_SUCCESS,\n UPDATE_CUSTOMER_FAILURE,\n UPDATE_CUSTOMER_RESET,\n UPDATE_BILLING_REQUEST,\n UPDATE_BILLING_SUCCESS,\n UPDATE_BILLING_FAILURE,\n UPDATE_PASSWORD_REQUEST,\n UPDATE_PASSWORD_SUCCESS,\n UPDATE_PASSWORD_FAILURE,\n CREATE_SPONSOR_REQUEST,\n CREATE_SPONSOR_SUCCESS,\n CREATE_SPONSOR_FAILURE,\n} from './actionTypes';\nimport { fetchLoginAsync } from './auth.actions';\nimport { isEmpty } from 'lodash';\n\nexport interface IContext {\n customer: TCustomer;\n contracts: TContract[];\n message?: string;\n errorMessage?: string;\n}\n\nexport interface IContextRequest {\n customerNbr: string;\n}\n\nconst resetUpdate = createStandardAction(UPDATE_CUSTOMER_RESET)();\n\nconst fetchContextAsync = createAsyncAction(\n FETCH_CONTEXT_REQUEST,\n FETCH_CONTEXT_SUCCESS,\n FETCH_CONTEXT_FAILURE,\n)();\n\nexport interface IPassword {\n user: string;\n oldPassword: string;\n newPassword: string;\n token: string;\n}\n\nconst updatePasswordAsync = createAsyncAction(\n UPDATE_PASSWORD_REQUEST,\n UPDATE_PASSWORD_SUCCESS,\n UPDATE_PASSWORD_FAILURE,\n)();\n\nexport interface ISponsor {\n sponsorId: string;\n sponsorFirstName: string;\n sponsorLastName: string;\n targetEmail: string;\n}\n\nconst createSponsorAsync = createAsyncAction(\n CREATE_SPONSOR_REQUEST,\n CREATE_SPONSOR_SUCCESS,\n CREATE_SPONSOR_FAILURE,\n)();\n\ninterface IRequestUpdateCoholder {\n mode: string;\n civility: string;\n firstName: string;\n customerNbr?: string;\n contractNbr: string;\n}\n\ninterface IRequestUpdateCustomer {\n customerNbr: string;\n email: string;\n phone: string;\n marketing: boolean;\n newsletter: boolean;\n}\n\nexport interface IRequestUpdateCustomerCoholderEvent {\n customer: IRequestUpdateCustomer;\n coholder?: IRequestUpdateCoholder;\n event: ICreateEventPayload;\n}\n\ninterface IResponseUpdateCoholder {\n code: string;\n message: string;\n mode?: string;\n civility?: string;\n firstName?: string;\n}\ninterface IResponseUpdateCustomer {\n code: string;\n message: string;\n email?: string;\n phone?: string;\n marketing?: boolean;\n newsletter?: boolean;\n}\n\ntype IResponseUpdateCustomerCoholder = IResponseUpdateCoholder &\n IResponseUpdateCustomer;\n\nconst updateCustomerAsync = createAsyncAction(\n UPDATE_CUSTOMER_REQUEST,\n UPDATE_CUSTOMER_SUCCESS,\n UPDATE_CUSTOMER_FAILURE,\n)<\n IRequestUpdateCustomerCoholderEvent,\n IResponseUpdateCustomerCoholder,\n IResponseUpdateCustomerCoholder\n>();\n\nexport interface IRequestUpdateBillingEvent {\n paymentMode: IRequestUpdateBilling;\n event: ICreateEventPayload;\n}\n\ninterface IRequestUpdateBilling {\n mode: EModeUpdateBilling;\n customerNbr?: string;\n contractNbr?: string;\n ibanCode?: string;\n rumCode?: string;\n billingAddress?: TAddress;\n customerFullName?: TCustomerFullName;\n email?: string;\n debitDay?: string;\n routingMode?: string;\n}\n\ninterface IResponseUpdateBilling {\n code: string;\n message: string;\n mode: EModeUpdateBilling;\n billingAddress?: TAddress;\n customerFullName?: TCustomerFullName;\n contractNbr?: string;\n ibanCode?: string;\n email?: string;\n debitDay?: string;\n routingMode?: string;\n}\n\nconst updateBillingAsync = createAsyncAction(\n UPDATE_BILLING_REQUEST,\n UPDATE_BILLING_SUCCESS,\n UPDATE_BILLING_FAILURE,\n)();\n\nexport type ProfileAction =\n | ActionType\n | ActionType\n | ActionType\n | ActionType\n | ActionType\n | ActionType;\n\nconst preparePayloadGetContext = ({ customerNbr }: { customerNbr: string }) => {\n return { customerNbr };\n};\n\nconst mapGetContext = (action: RootAction, { apiRequest }: Services) => {\n const payload = preparePayloadGetContext(action.payload);\n return apiRequest({\n path: '/getContext',\n method: 'post',\n body: payload,\n }).pipe(\n mergeMap((response: IContext) => {\n const userId = sessionStorage.getItem('currentClient');\n if (response && response.customer && !isEmpty(response.contracts)) {\n if (userId) {\n return of(\n fetchLoginAsync.success({\n userId,\n }),\n fetchContextAsync.success(response),\n );\n }\n return of(fetchContextAsync.success(response));\n }\n const message =\n response.message ||\n response.errorMessage ||\n 'Une erreur est survenue';\n return of(\n fetchContextAsync.failure({\n code: userId ? '505' : '500',\n message,\n }),\n );\n }),\n catchError(error => of(fetchContextAsync.failure(error))),\n );\n};\n\nconst preparePayloadUpdateCustomer = ({\n customerNbr,\n email,\n phone,\n marketing,\n newsletter,\n}: IRequestUpdateCustomer) => {\n return {\n customerNbr,\n email,\n phone,\n marketing,\n newsletter,\n };\n};\n\nconst mapUpdateCustomer = (action: RootAction, { apiRequest }: Services) => {\n const payload = preparePayloadUpdateCustomer(action.payload.customer);\n return apiRequest({\n path: '/updateCustomer',\n method: 'post',\n body: payload,\n }).pipe(\n mergeMap((response: IResponseUpdateCustomer) => {\n const prepareToStore = {\n code: response ? response.code : '500',\n message: response ? response.message : 'failure',\n email: payload.email,\n phone: payload.phone,\n marketing: payload.marketing,\n newsletter: payload.newsletter,\n };\n return of(prepareToStore);\n }),\n catchError(error => of(error)),\n );\n};\n\nconst preparePayloadUpdateCoholder = ({\n mode,\n contractNbr,\n civility,\n firstName,\n}: {\n mode: string;\n civility: string;\n firstName: string;\n contractNbr: string;\n}) => {\n const prepareObject: TThirdParty = {\n civility,\n firstName,\n role: 'COHOLDER',\n effectiveDate: getTodayDate(),\n code: '',\n lastName: '',\n contractNbr: '', \n };\n return {\n mode,\n contractNbr,\n coholder: [prepareObject],\n };\n};\n\nconst mapUpdateCoholder = (action: RootAction, { apiRequest }: Services) => {\n const payload = preparePayloadUpdateCoholder(action.payload.coholder);\n return apiRequest({\n path: '/manageCoholder',\n method: 'post',\n body: payload,\n }).pipe(\n mergeMap((response: IResponseUpdateCoholder) => {\n return of({\n code: response ? response.code : '500',\n message: response ? response.message : 'failure',\n mode: action.payload.coholder.mode,\n civility: action.payload.coholder.civility,\n firstName: action.payload.coholder.firstName,\n });\n }),\n catchError(error => of(error)),\n );\n};\n\nconst fetchContextEpic: Epic = (\n action$,\n state$,\n dependency,\n) =>\n action$.pipe(\n filter(isActionOf(fetchContextAsync.request)),\n mergeMap(action => mapGetContext(action, dependency)),\n );\n\nconst updateCustomerEpic: Epic = (\n action$,\n state$,\n dependency,\n) =>\n action$.pipe(\n filter(isActionOf(updateCustomerAsync.request)),\n switchMap(\n (action: RootAction) => mapUpdateCustomer(action, dependency),\n (action: RootAction, r: IResponseUpdateCustomerCoholder) => [\n action,\n r,\n ],\n ),\n switchMap(([action, customerResponse]) => {\n if (action.payload.coholder && customerResponse.code === '200') {\n return forkJoin(\n of(action),\n of(customerResponse),\n mapUpdateCoholder(action, dependency),\n );\n }\n\n return forkJoin(of(action), of(customerResponse));\n }),\n switchMap(([action, customerResponse, coholderResponse]) => {\n if (customerResponse.code !== '200') {\n return throwError(customerResponse);\n }\n\n const modifiedAction = {\n type: getType(createEventAsync.request),\n payload: {\n ...action.payload.event,\n },\n };\n if (coholderResponse) {\n return forkJoin(\n of(customerResponse),\n of(coholderResponse),\n mapCreateEvent(modifiedAction, dependency),\n );\n }\n return forkJoin(\n of(customerResponse),\n mapCreateEvent(modifiedAction, dependency),\n );\n }),\n\n switchMap(([customerResponse, coholderResponse, eventResponse]) => {\n if (coholderResponse) {\n return of(\n updateCustomerAsync.success({\n ...customerResponse,\n ...coholderResponse,\n }),\n );\n }\n\n return of(updateCustomerAsync.success(customerResponse));\n }),\n catchError(error => {\n return of(\n updateCustomerAsync.failure({\n code: error.code,\n message: error.message,\n }),\n );\n }),\n );\n\nconst preparePayloadUpdateBilling = ({\n customerNbr,\n contractNbr,\n mode,\n ibanCode,\n rumCode,\n billingAddress,\n customerFullName,\n email,\n debitDay,\n routingMode,\n}: IRequestUpdateBilling) => {\n switch (mode) {\n case EModeUpdateBilling.IBAN:\n return {\n mode,\n customerNbr,\n ibanCode,\n rumCode,\n };\n\n case EModeUpdateBilling.DEBIT_DAY: {\n return {\n mode,\n contractNbr,\n debitDay,\n };\n }\n\n case EModeUpdateBilling.ROUTING_MODE: {\n return {\n mode,\n contractNbr,\n routingMode,\n };\n }\n\n default:\n return {\n mode,\n customerNbr,\n contractNbr,\n customerFullName,\n email,\n billingAddress,\n };\n }\n};\n\nconst mapUpdateBilling = (action: RootAction, { apiRequest }: Services) => {\n const payload = preparePayloadUpdateBilling(action.payload.paymentMode);\n return apiRequest({\n path: '/updateBillingData',\n method: 'post',\n body: payload,\n }).pipe(\n mergeMap((response: IResponseUpdateBilling) => {\n if (response && response.code === '200') {\n return of({\n code: response.code,\n message: response.message,\n mode: payload.mode,\n customerNbr: payload.customerNbr,\n ibanCode: payload.ibanCode,\n billingAddress: payload.billingAddress,\n customerFullName: payload.customerFullName,\n email: payload.email,\n debitDay: payload.debitDay,\n routingMode: payload.routingMode,\n });\n }\n return of({\n code: '500',\n message: 'failure',\n });\n }),\n catchError(error => of(error)),\n );\n};\n\nconst updateBillingEpic: Epic = (\n action$,\n state$,\n dependency,\n) =>\n action$.pipe(\n filter(isActionOf(updateBillingAsync.request)),\n switchMap(\n (action: RootAction) => mapUpdateBilling(action, dependency),\n (action: RootAction, r: IResponseUpdateBilling) => [action, r],\n ),\n switchMap(([action, billingResponse]) => {\n if (billingResponse.code !== '200') {\n return forkJoin([of(billingResponse), of(undefined)]);\n }\n const modifiedAction = {\n type: getType(createEventAsync.request),\n payload: {\n ...action.payload.event,\n },\n };\n return forkJoin([\n of(billingResponse),\n mapCreateEvent(modifiedAction, dependency),\n ]);\n }),\n switchMap(([billingResponse, eventResponse]) => {\n if (billingResponse.code !== '200') {\n return of(\n updateBillingAsync.failure({\n code: billingResponse.code,\n message: billingResponse.message,\n }),\n );\n }\n return of(updateBillingAsync.success(billingResponse));\n }),\n catchError(error => {\n return of(\n updateBillingAsync.failure({\n code: error.code,\n message: error.message,\n }),\n );\n }),\n );\n\nconst preparePayloadUpdatePassword = ({\n user,\n oldPassword,\n newPassword,\n token,\n}: IPassword) => {\n return {\n user,\n oldPassword,\n newPassword,\n token,\n };\n};\n\nconst mapUpdatePassword = (action: RootAction, { apiRequest }: Services) => {\n const payload = preparePayloadUpdatePassword(action.payload);\n return apiRequest({\n path: '/changePassword',\n method: 'post',\n body: payload,\n }).pipe(\n mergeMap((response: TResponse) => {\n return of(updatePasswordAsync.success(''));\n }),\n catchError(error => of(updatePasswordAsync.failure(error))),\n );\n};\n\nconst updatePasswordEpic: Epic = (\n action$,\n state$,\n dependency,\n) =>\n action$.pipe(\n filter(isActionOf(updatePasswordAsync.request)),\n mergeMap(action => mapUpdatePassword(action, dependency)),\n );\n\nconst preparePayloadCreateSponsor = ({\n sponsorId,\n sponsorFirstName,\n sponsorLastName,\n targetEmail,\n}: ISponsor) => {\n return {\n sponsorId,\n sponsorFirstName,\n sponsorLastName,\n targetEmail,\n };\n};\n\nconst mapCreateSponsor = (action: RootAction, { apiRequest }: Services) => {\n const payload = preparePayloadCreateSponsor(action.payload);\n return apiRequest({\n path: '/sponsoring',\n method: 'post',\n body: payload,\n }).pipe(\n mergeMap((response: TResponse) => {\n return of(createSponsorAsync.success(''));\n }),\n catchError(error => of(createSponsorAsync.failure(error))),\n );\n};\n\nconst createSponsorEpic: Epic = (\n action$,\n state$,\n dependency,\n) =>\n action$.pipe(\n filter(isActionOf(createSponsorAsync.request)),\n mergeMap(action => mapCreateSponsor(action, dependency)),\n );\n\nexport {\n fetchContextEpic,\n fetchContextAsync,\n mapGetContext,\n updateCustomerAsync,\n updateCustomerEpic,\n mapUpdateCustomer,\n resetUpdate,\n updateBillingEpic,\n updateBillingAsync,\n mapUpdateBilling,\n mapUpdateCoholder,\n updatePasswordAsync,\n updatePasswordEpic,\n createSponsorAsync,\n createSponsorEpic,\n};\n","import { throwError } from 'rxjs';\nimport { ajax } from 'rxjs/ajax';\nimport { map, catchError } from 'rxjs/operators';\n\nimport config from '../utils/config';\nimport { log as consoleLog } from '../utils/helpers';\n\ntype TPayloadLogger = Partial<{\n tag: string;\n customerType: string;\n triggerButton: string;\n serviceCalled: string;\n statusAction: string;\n logMessage: string;\n returnCode: string;\n energyList: string;\n customerIdentificationKey: string;\n environnement: string;\n timestamp: string;\n app: string;\n channel: string;\n}>;\n\ntype TRequestLogStreaming = {\n jsonLog: string;\n};\n\ntype TPropsLogger = Partial<{\n tag: string;\n customerType: string;\n triggerButton: string;\n serviceCalled: string;\n statusAction: string;\n logMessage: string;\n returnCode: string;\n energyList: string[];\n customerIdentificationKey: string;\n}>;\n\nconst prepareEnergyList = (arrEnergies: string[]) =>\n arrEnergies.length === 2 ? 'EL/NG' : arrEnergies[0];\n\nconst controlData = (dt: any, slDt: any, custom?: string) => {\n if (custom) {\n switch (custom) {\n case 'energyList':\n return dt && prepareEnergyList(dt);\n\n default:\n return undefined;\n }\n }\n\n if (dt !== undefined) return dt;\n if (slDt !== undefined) return slDt;\n\n return undefined;\n};\n\nconst prepareObject = (props: TPropsLogger): TPayloadLogger => {\n const {\n tag,\n customerType,\n triggerButton,\n serviceCalled,\n statusAction,\n logMessage,\n returnCode,\n energyList,\n customerIdentificationKey,\n } = props;\n const dataLS = localStorage.getItem('log_streaming');\n const localStorageData = dataLS ? JSON.parse(dataLS) : {};\n\n const prepareData = {\n tag: controlData(tag, localStorageData.tag),\n customerType: controlData(customerType, localStorageData.customerType),\n triggerButton: controlData(\n triggerButton,\n localStorageData.triggerButton,\n ),\n serviceCalled: controlData(\n serviceCalled,\n localStorageData.serviceCalled,\n ),\n logMessage: controlData(logMessage, localStorageData.logMessage),\n // ( success => RAS, fail => stacktrace)$\n returnCode: controlData(returnCode, localStorageData.returnCode),\n statusAction: controlData(statusAction, localStorageData.statusAction),\n\n energyList: controlData(\n energyList,\n localStorageData.energyList,\n 'energyList',\n ),\n\n customerIdentificationKey: controlData(\n customerIdentificationKey,\n localStorageData.customerIdentificationKey,\n ),\n\n environnement: config.ENV,\n timestamp: Date.now().toString(),\n app: 'CLIENT-SPACE',\n channel: 'WEB',\n };\n\n const channel = localStorage.getItem('channel');\n if (channel) {\n prepareData.channel = channel;\n }\n\n return prepareData;\n};\n\nconst log = ({\n tag,\n customerType,\n triggerButton,\n serviceCalled,\n statusAction,\n logMessage,\n returnCode,\n energyList,\n customerIdentificationKey,\n}: TPropsLogger) => {\n const prepareData = prepareObject({\n tag,\n customerType,\n triggerButton,\n serviceCalled,\n statusAction,\n logMessage,\n returnCode,\n energyList,\n customerIdentificationKey,\n });\n\n const payload: TRequestLogStreaming = {\n jsonLog: JSON.stringify(prepareData),\n };\n\n localStorage.setItem('log_streaming', payload.jsonLog);\n\n const settings = {\n method: 'POST',\n url: `${config.URL_SUBSCRIPTION}/getLogsStreaming`,\n headers: {\n 'Content-Type': 'application/json',\n 'x-api-key': config.ApiKey,\n },\n responseType: 'json',\n crossDomain: true,\n body: payload,\n };\n\n consoleLog(`Prepare Object /getLogsStreaming => `, prepareData);\n consoleLog(`FO Data: POST /getLogsStreaming ====> `, payload);\n\n const call = ajax(settings).pipe(\n catchError(({ message, response, status }) => {\n const error = {\n ajaxError: message,\n code: status,\n message,\n };\n if (response) {\n error.code = response.code;\n error.message = response.message;\n }\n\n return throwError(error);\n }),\n map(({ response }) => {\n consoleLog(`BO Response: POST /getLogsStreaming ====> `, response);\n return response;\n }),\n );\n\n const subscribe = call.subscribe(\n err =>\n err && consoleLog(`Error from API /getLogsStreaming ====> `, err),\n res =>\n res !== null &&\n consoleLog(`BO Response: POST /getLogsStreaming ====> `, res),\n );\n\n return subscribe;\n};\n\nexport { log };\n","import { Epic } from 'redux-observable';\nimport { of, forkJoin } from 'rxjs';\nimport { mergeMap, catchError, filter, switchMap } from 'rxjs/operators';\nimport {\n createAsyncAction,\n createStandardAction,\n isActionOf,\n ActionType,\n getType,\n} from 'typesafe-actions';\nimport { RootAction, RootState, Services } from 'Types';\n\nimport { mapGetContext, fetchContextAsync } from './profile.actions';\n\nimport {\n FETCH_LOGIN_REQUEST,\n FETCH_LOGIN_SUCCESS,\n FETCH_LOGIN_FAILURE,\n RESET_PASSWORD_REQUEST,\n RESET_PASSWORD_SUCCESS,\n RESET_PASSWORD_FAILURE,\n REDUX_RESET_STATE,\n REMOVE_ERROR,\n REINIT_SUBSCRIPTION_EMAIL_REQUEST,\n REINIT_SUBSCRIPTION_EMAIL_SUCCESS,\n REINIT_SUBSCRIPTION_EMAIL_FAILURE,\n REMOVE_REINIT_SUBSCRIPTION_MESSAGE,\n REFRESH_SESSION_EXPIRATION_STATUS,\n CASES_EXTRACT_REQUEST,\n CASES_EXTRACT_SUCCESS,\n CASES_EXTRACT_FAILURE,\n RESET_AUTH_ERRORS,\n} from './actionTypes';\nimport Config from '../utils/config';\nimport { log } from '../services/logger';\nimport { TScheme } from 'Models';\n\ninterface IPayload {\n user?: string;\n password?: string;\n email?: string;\n userId?: string;\n token?: string;\n accessToken?: string;\n error?: string;\n message?: string;\n groupe?: string;\n autorizationsScheme?: TScheme[];\n code?: string;\n reinit?: string;\n validated?: string;\n}\n\ninterface IPayloadReinitSubscription {\n id: string;\n email: string;\n message?: string;\n code?: string;\n}\n\nconst fetchLoginAsync = createAsyncAction(\n FETCH_LOGIN_REQUEST,\n FETCH_LOGIN_SUCCESS,\n FETCH_LOGIN_FAILURE,\n)();\n\nconst casesExtractAsync = createAsyncAction(\n CASES_EXTRACT_REQUEST,\n CASES_EXTRACT_SUCCESS,\n CASES_EXTRACT_FAILURE,\n)();\n\nconst resetPasswordAsync = createAsyncAction(\n RESET_PASSWORD_REQUEST,\n RESET_PASSWORD_SUCCESS,\n RESET_PASSWORD_FAILURE,\n)();\n\nconst reinitSubscriptionEmailAsync = createAsyncAction(\n REINIT_SUBSCRIPTION_EMAIL_REQUEST,\n REINIT_SUBSCRIPTION_EMAIL_SUCCESS,\n REINIT_SUBSCRIPTION_EMAIL_FAILURE,\n)();\n\nconst resetReduxStore = createStandardAction(REDUX_RESET_STATE)();\nconst removeError = createStandardAction(REMOVE_ERROR)();\nconst resetAuthErrors = createStandardAction(RESET_AUTH_ERRORS)();\nconst removeReinitSubscriptionMessage = createStandardAction(\n REMOVE_REINIT_SUBSCRIPTION_MESSAGE,\n)();\n\nconst refreshSessionExpirationStatus = createStandardAction(\n REFRESH_SESSION_EXPIRATION_STATUS,\n)();\n\nexport type AuthAction =\n | ActionType\n | ActionType\n | ActionType\n | ActionType\n | ActionType\n | ActionType\n | ActionType\n | ActionType;\n\nconst preparePayloadLogin = ({ user, password }: IPayload) => {\n return {\n user,\n password,\n };\n};\n\nconst mapPostLogin = (action: RootAction, { apiRequest }: Services) => {\n const payload = preparePayloadLogin(action.payload);\n return apiRequest({\n path: '/login',\n method: 'post',\n body: payload,\n }).pipe(\n mergeMap((response: IPayload) => {\n if (response && response.token) {\n const currentUser = (payload.user as string).replace(\n 'ADMIN:',\n '',\n );\n if (\n response.email &&\n response.email !== currentUser &&\n response.user !== currentUser\n ) {\n return of({\n error: 'Erreur de connexion: Veuillez réessayer',\n });\n }\n if (!response.email && response.user !== currentUser) {\n return of({\n error: 'Erreur de connexion: Veuillez réessayer',\n });\n }\n const user = {\n userId: response.user,\n token: response.token,\n accessToken: response.accessToken,\n groupe: response.groupe,\n autorizationsScheme: response.autorizationsScheme,\n };\n if (user.token && user.accessToken) {\n localStorage.setItem('token', user.token);\n\n localStorage.setItem('accessToken', user.accessToken);\n const dt = String(\n new Date().getTime() +\n 1000 * Config.ExpiredSessionTimeout,\n );\n localStorage.setItem('expires', dt);\n }\n return of(user);\n }\n const user = {\n userId: response.user,\n validated: response.validated,\n };\n if (user.validated) {\n localStorage.setItem('isValidated', String(user.validated));\n }\n if (user.userId) {\n localStorage.setItem(\n 'userIdCreatePassword',\n String(user.userId),\n );\n }\n\n const message = response.message || 'Une erreur est survenue';\n return of({ error: message });\n }),\n catchError(error => {\n return of({ error: error.message });\n }),\n );\n};\n\nconst fetchLoginEpic: Epic = (\n action$,\n state$,\n dependency,\n) =>\n action$.pipe(\n filter(isActionOf(fetchLoginAsync.request)),\n switchMap(\n (action: RootAction) => mapPostLogin(action, dependency),\n (action: RootAction, r: IPayload) => [action, r],\n ),\n switchMap(([action, loginResponse]) => {\n if (loginResponse.error) {\n return forkJoin(\n of(loginResponse),\n of(\n fetchContextAsync.failure({\n code: '500',\n message: 'Erreur de connexion: Veuillez réessayer',\n }),\n ),\n );\n }\n const modifiedAction = {\n ...action,\n payload: {\n ...action.payload,\n customerNbr: loginResponse.userId,\n },\n };\n return forkJoin(\n of(loginResponse),\n mapGetContext(modifiedAction, dependency),\n );\n }),\n switchMap(([loginResponse, contextResponse]) => {\n if (\n loginResponse &&\n loginResponse.groupe !== undefined &&\n loginResponse.autorizationsScheme !== undefined\n ) {\n if (loginResponse.token && loginResponse.userId) {\n localStorage.setItem('userId', loginResponse.userId);\n }\n\n if (loginResponse.token && loginResponse.groupe) {\n localStorage.setItem('userGroup', loginResponse.groupe);\n }\n return of(fetchLoginAsync.success(loginResponse));\n }\n if (\n loginResponse &&\n loginResponse.token &&\n contextResponse.type === getType(fetchContextAsync.success)\n ) {\n if (loginResponse.token && loginResponse.userId) {\n localStorage.setItem('userId', loginResponse.userId);\n }\n\n log({\n triggerButton: 'validate-button',\n tag: 'auth-connexion-page',\n customerIdentificationKey: loginResponse.userId,\n serviceCalled: '/login',\n returnCode: '200',\n statusAction: 'SUCCESS',\n });\n return of(\n fetchLoginAsync.success(loginResponse),\n fetchContextAsync.success(contextResponse.payload),\n );\n }\n const message = loginResponse.error || 'Une erreur est survenue';\n const errResponse = loginResponse.error\n ? { code: 'Error', message: loginResponse.error }\n : { code: 'Error', message: 'Une erreur est survenue' };\n\n log({\n triggerButton: 'validate-button',\n tag: 'auth-connexion-page',\n serviceCalled: '/login',\n returnCode: errResponse.code,\n logMessage: errResponse.message,\n statusAction: 'Failure',\n });\n return of(\n fetchLoginAsync.failure({\n error: message,\n }),\n );\n }),\n catchError(error => {\n log({\n triggerButton: 'validate-button',\n tag: 'auth-connexion-page',\n serviceCalled: '/login',\n returnCode: '500',\n logMessage: 'FAILURE',\n statusAction: 'Failure',\n });\n return of(\n fetchLoginAsync.failure({\n error: error.message,\n }),\n );\n }),\n );\n\nconst preparePayloadResetPassword = ({ email }: IPayload) => {\n return {\n customerNbr: email,\n mode: 'RESET',\n };\n};\n\nconst mapPostResetPassword = (action: RootAction, { apiRequest }: Services) => {\n const payload = preparePayloadResetPassword(action.payload);\n return apiRequest({\n path: '/resetPassword',\n method: 'post',\n body: payload,\n }).pipe(\n mergeMap((response: IPayload) => {\n if (\n response.code &&\n (response.code === 'MISSING_PARAMETER' ||\n response.code === 'UNEXPECTED_ERROR' ||\n response.code === 'NO_RESPONSE_FROM_PARTNER')\n ) {\n return of(\n resetPasswordAsync.failure(\n response.message || 'Une erreur est survenue',\n ),\n );\n }\n return of(resetPasswordAsync.success(response.message || ''));\n }),\n catchError(error => {\n return of(resetPasswordAsync.failure(error.message));\n }),\n );\n};\n\nconst resetPasswordEpic: Epic = (\n action$,\n state$,\n dependency,\n) =>\n action$.pipe(\n filter(isActionOf(resetPasswordAsync.request)),\n mergeMap(action => mapPostResetPassword(action, dependency)),\n );\n\nconst preparePayloadReinitSubscriptionEmail = ({\n id,\n email,\n}: IPayloadReinitSubscription) => {\n return {\n customerNbr: id,\n email,\n };\n};\n\nconst mapReinitSubscriptionEmail = (\n action: RootAction,\n { apiRequest }: Services,\n) => {\n const payload = preparePayloadReinitSubscriptionEmail(action.payload);\n return apiRequest({\n path: '/reinitSubscriptionEmail',\n method: 'post',\n body: payload,\n }).pipe(\n mergeMap((response: IPayloadReinitSubscription) => {\n if (response.code !== '500') {\n return of(reinitSubscriptionEmailAsync.success('OK'));\n }\n return of(\n reinitSubscriptionEmailAsync.failure(\n response.message as string,\n ),\n );\n }),\n catchError(error => {\n return of(reinitSubscriptionEmailAsync.failure(error.message));\n }),\n );\n};\n\nconst reinitSubscriptionEmailEpic: Epic<\n RootAction,\n RootAction,\n RootState,\n Services\n> = (action$, state$, dependency) =>\n action$.pipe(\n filter(isActionOf(reinitSubscriptionEmailAsync.request)),\n mergeMap(action => mapReinitSubscriptionEmail(action, dependency)),\n );\n\nexport {\n fetchLoginEpic,\n fetchLoginAsync,\n resetPasswordAsync,\n resetPasswordEpic,\n resetReduxStore,\n removeError,\n reinitSubscriptionEmailEpic,\n reinitSubscriptionEmailAsync,\n removeReinitSubscriptionMessage,\n refreshSessionExpirationStatus,\n casesExtractAsync,\n resetAuthErrors,\n};\n","import { Epic } from 'redux-observable';\nimport { of, throwError } from 'rxjs';\nimport { mergeMap, catchError, filter } from 'rxjs/operators';\nimport {\n createAsyncAction,\n createStandardAction,\n isActionOf,\n ActionType,\n} from 'typesafe-actions';\n\nimport { RootAction, RootState, Services } from 'Types';\nimport { TContract, TResponse } from 'Models';\n\nimport {\n FETCH_CONTRACT_REQUEST,\n FETCH_CONTRACT_SUCCESS,\n FETCH_CONTRACT_FAILURE,\n RESET_CONTRACT_STATE,\n SET_CONTRACT,\n} from './actionTypes';\n\ninterface IPayload {\n customerNbr: string;\n contractNbr: string;\n contract?: TContract;\n error?: string;\n}\n\ninterface IPayloadSetContract {\n contract: TContract;\n}\n\nconst fetchContractAsync = createAsyncAction(\n FETCH_CONTRACT_REQUEST,\n FETCH_CONTRACT_SUCCESS,\n FETCH_CONTRACT_FAILURE,\n)();\n\nconst resetContractState = createStandardAction(RESET_CONTRACT_STATE)();\n\nconst setContract = createStandardAction(SET_CONTRACT)();\n\nexport type ContractAction =\n | ActionType\n | ActionType\n | ActionType;\n\nconst preparePayloadGetContract = ({ customerNbr, contractNbr }: IPayload) => {\n return { customerNbr, contractNbr };\n};\n\nconst mapGetContract = (action: RootAction, { apiRequest }: Services) => {\n const payload = preparePayloadGetContract(action.payload);\n return apiRequest({\n path: '/getContract',\n method: 'post',\n body: payload,\n }).pipe(\n mergeMap((response: IPayload) => {\n if (response) {\n return of(\n fetchContractAsync.success({\n ...response,\n contractNbr: action.payload.contractNbr,\n }),\n );\n }\n return throwError({ code: '200', message: response });\n }),\n catchError(error => {\n return of(fetchContractAsync.failure(error));\n }),\n );\n};\n\nconst fetchContractEpic: Epic = (\n action$,\n state$,\n dependency,\n) =>\n action$.pipe(\n filter(isActionOf(fetchContractAsync.request)),\n mergeMap(action => mapGetContract(action, dependency)),\n );\n\nexport {\n fetchContractEpic,\n fetchContractAsync,\n mapGetContract,\n resetContractState,\n setContract,\n};\n","import { Epic } from 'redux-observable';\nimport { of, forkJoin, throwError, Observable } from 'rxjs';\nimport { mergeMap, switchMap, catchError, filter, merge } from 'rxjs/operators';\nimport {\n createAsyncAction,\n createStandardAction,\n isActionOf,\n ActionType,\n} from 'typesafe-actions';\n\nimport { RootAction, RootState, Services } from 'Types';\nimport { TMeterRead, TResponse } from 'Models';\nimport { ERateOption } from '../utils/enums';\n\nimport {\n FETCH_METER_CONFIG_REQUEST,\n FETCH_METER_CONFIG_SUCCESS,\n FETCH_METER_CONFIG_FAILURE,\n FETCH_METER_READING_REQUEST,\n FETCH_METER_READING_SUCCESS,\n FETCH_METER_READING_FAILURE,\n CREATE_INDEX_REQUEST,\n CREATE_INDEX_SUCCESS,\n CREATE_INDEX_FAILURE,\n CREATE_INDEX_RESET,\n} from './actionTypes';\n\ninterface IPayload {\n contractNbr: string;\n pointOfDelivery: string;\n readingDate?: string;\n energyType?: string;\n meterReads?: Array<{\n meterNumber: string;\n registerName: string;\n timeframeCode: string;\n value: string;\n }>;\n}\n\nexport interface IMeterConfigResponse {\n rateOption: ERateOption;\n digitSize: number;\n meterNumber: string;\n error?: string;\n code?: string;\n message?: string;\n}\n\nconst resetCreateIndex = createStandardAction(CREATE_INDEX_RESET)();\n\nconst fetchMeterConfigAsync = createAsyncAction(\n FETCH_METER_CONFIG_REQUEST,\n FETCH_METER_CONFIG_SUCCESS,\n FETCH_METER_CONFIG_FAILURE,\n)();\n\nconst fetchMeterReadingAsync = createAsyncAction(\n FETCH_METER_READING_REQUEST,\n FETCH_METER_READING_SUCCESS,\n FETCH_METER_READING_FAILURE,\n)();\n\nconst createIndexAsync = createAsyncAction(\n CREATE_INDEX_REQUEST,\n CREATE_INDEX_SUCCESS,\n CREATE_INDEX_FAILURE,\n)();\n\nexport type ConsumptionAction =\n | ActionType\n | ActionType\n | ActionType\n | ActionType;\n\nconst preparePayloadMeterReading = ({\n contractNbr,\n pointOfDelivery,\n energyType,\n}: IPayload) => {\n return {\n contractNbr,\n pointOfDelivery,\n energyType,\n };\n};\n\nconst preparePayloadMeterConfig = ({\n contractNbr,\n pointOfDelivery,\n readingDate,\n}: IPayload) => {\n return {\n contractNbr,\n pointOfDelivery,\n readingDate,\n };\n};\n\nconst mapGetMeterReading = (\n action: RootAction,\n { apiRequest }: Services,\n): Observable<{\n reads: TMeterRead[];\n error?: string;\n code?: string;\n message?: string;\n}> => {\n const payload = preparePayloadMeterReading(action.payload);\n return apiRequest({\n path: '/getMeterReads',\n method: 'post',\n body: payload,\n }).pipe(\n mergeMap((response: any) => {\n if (response && !response.code) {\n return of({\n reads: response,\n code: '200',\n });\n }\n const message = 'Une erreur est survenue';\n return of({\n message,\n reads: [],\n code: '500',\n });\n }),\n catchError(error => {\n return of({\n reads: [],\n error: error.message,\n code: error.code,\n message: error.message,\n });\n }),\n );\n};\n\nconst mapGetMeterConfig = (\n action: RootAction,\n { apiRequest }: Services,\n): Observable => {\n const payload = preparePayloadMeterConfig(action.payload);\n return apiRequest({\n path: '/getMeterConfiguration',\n method: 'post',\n body: payload,\n }).pipe(\n mergeMap((response: IMeterConfigResponse) => {\n if (response && !response.code) {\n return of({\n ...response,\n code: '200',\n });\n }\n const message = response.message || 'Une erreur est survenue';\n return of({ code: '500', message });\n }),\n catchError(error => {\n return of({\n error: error.message,\n code: error.code,\n message: error.message,\n });\n }),\n );\n};\n\nconst fetchMeterEpic: Epic = (\n action$,\n state$,\n dependency,\n) =>\n action$.pipe(\n filter(isActionOf(fetchMeterConfigAsync.request)),\n switchMap(\n (action: RootAction) => mapGetMeterConfig(action, dependency),\n (action: RootAction, r: IMeterConfigResponse | TResponse) => [\n action,\n r,\n ],\n ),\n switchMap(([action, response]) => {\n if (response.code !== '200') {\n throwError({ code: response.code, message: response.message });\n }\n return forkJoin(\n of(response),\n mapGetMeterReading(action, dependency),\n );\n }),\n switchMap(([meterConfigResponse, meterReadingResponse]) => {\n let meterConfig;\n let meterReading;\n\n if (meterConfigResponse.code !== '200') {\n meterConfig = fetchMeterConfigAsync.failure(\n meterConfigResponse,\n );\n } else {\n meterConfig = fetchMeterConfigAsync.success(\n meterConfigResponse,\n );\n }\n if (meterReadingResponse.code && meterReadingResponse.message) {\n meterReading = fetchMeterReadingAsync.failure({\n code: meterReadingResponse.code,\n message: meterReadingResponse.message,\n });\n } else {\n meterReading = fetchMeterReadingAsync.success(\n meterReadingResponse.reads,\n );\n }\n return of(meterConfig, meterReading);\n }),\n catchError(error => of(fetchMeterConfigAsync.failure(error))),\n );\n\nconst fetchMeterReadingEpic: Epic<\n RootAction,\n RootAction,\n RootState,\n Services\n> = (action$, state$, dependency) =>\n action$.pipe(\n filter(isActionOf(fetchMeterReadingAsync.request)),\n switchMap(\n (action: RootAction) => mapGetMeterReading(action, dependency),\n (action, r) => [action, r],\n ),\n switchMap(([action, response]) => {\n if (response && response.code === '200') {\n return of(fetchMeterReadingAsync.success(response.reads));\n }\n const message = response.message || 'Une erreur est survenue';\n return of(\n fetchMeterReadingAsync.failure({\n code: response.code || '500',\n message,\n }),\n );\n }),\n catchError(error => of(fetchMeterReadingAsync.failure(error))),\n );\n\nconst preparePayloadIndex = ({\n contractNbr,\n pointOfDelivery,\n readingDate,\n meterReads,\n energyType,\n}: IPayload) => {\n return {\n energyType,\n contractNbr,\n pointOfDelivery,\n readingDate,\n meterReads,\n };\n};\n\nconst mapPostIndex = (action: RootAction, { apiRequest }: Services) => {\n const payload = preparePayloadIndex(action.payload);\n return apiRequest({\n path: '/createIndex',\n method: 'post',\n body: payload,\n }).pipe(\n mergeMap((response: any) => {\n if (response.code !== undefined && response.code !== '200') {\n return of(\n createIndexAsync.failure({\n code: response.code,\n message: response.message,\n }),\n );\n }\n\n return of(createIndexAsync.success('success'));\n }),\n catchError(error => {\n return of(createIndexAsync.failure(error));\n }),\n );\n};\n\nconst createIndexEpic: Epic = (\n action$,\n state$,\n dependency,\n) =>\n action$.pipe(\n filter(isActionOf(createIndexAsync.request)),\n mergeMap(action => mapPostIndex(action, dependency)),\n );\n\nexport {\n fetchMeterConfigAsync,\n fetchMeterReadingAsync,\n fetchMeterEpic,\n fetchMeterReadingEpic,\n resetCreateIndex,\n createIndexAsync,\n createIndexEpic,\n};\n","import { Epic } from 'redux-observable';\nimport { of, throwError } from 'rxjs';\nimport { mergeMap, catchError, filter } from 'rxjs/operators';\nimport { createAsyncAction, isActionOf, ActionType } from 'typesafe-actions';\n\nimport { RootAction, RootState, Services } from 'Types';\nimport { TFile, TResponse } from 'Models';\n\nimport {\n FETCH_LIST_FILES_REQUEST,\n FETCH_LIST_FILES_SUCCESS,\n FETCH_LIST_FILES_FAILURE,\n} from './actionTypes';\nimport isArray from 'lodash/isArray';\n\ninterface IFetchFileListRequest {\n customerNbr: string;\n contractNbr: string;\n mode: string;\n}\n\nconst fetchFilesListAsync = createAsyncAction(\n FETCH_LIST_FILES_REQUEST,\n FETCH_LIST_FILES_SUCCESS,\n FETCH_LIST_FILES_FAILURE,\n)();\n\nexport type FileActions = ActionType;\n\nconst preparePayloadListFile = ({\n contractNbr,\n customerNbr,\n mode = 'DOCUMENT',\n}: IFetchFileListRequest) => {\n return {\n contractNbr,\n customerNbr,\n mode,\n };\n};\n\nconst mapGetFiles = (action: RootAction, { apiRequest }: Services) => {\n const payload = preparePayloadListFile(action.payload);\n return apiRequest({\n path: '/getDocumentsList',\n method: 'post',\n body: payload,\n }).pipe(\n mergeMap((response: TFile) => {\n if (response) {\n return of(fetchFilesListAsync.success(response));\n }\n return throwError({ code: '200', message: response });\n }),\n catchError(error => of(fetchFilesListAsync.failure(error))),\n );\n};\n\nconst fetchFileEpic: Epic = (\n action$,\n state$,\n dependency,\n) =>\n action$.pipe(\n filter(isActionOf(fetchFilesListAsync.request)),\n mergeMap(action => mapGetFiles(action, dependency)),\n );\n\nexport { fetchFilesListAsync, mapGetFiles, fetchFileEpic };\n","import { Font } from '@react-pdf/renderer';\n\nimport Montserrat400 from '../../../assets/fonts/Montserrat/Montserrat-Black.ttf';\nimport Montserrat800 from '../../../assets/fonts/Montserrat/Montserrat-ExtraBold.ttf';\n\nFont.register({\n family: 'Montserrat',\n fonts: [\n {\n fontWeight: 400,\n src: Montserrat400,\n },\n {\n fontWeight: 800,\n src: Montserrat800,\n },\n ],\n});\n","import React from 'react';\n\nimport { Image, View, StyleSheet } from '@react-pdf/renderer';\n\nimport Logo from '../../../../assets/icons/PDFs/ProofOfPayment/ic-logo-sidebar.png';\n\nconst styles = StyleSheet.create({\n container: {\n flexDirection: 'column',\n backgroundColor: '#ffb40a',\n alignItems: 'center',\n },\n img: {\n width: '110px',\n height: '55px',\n padding: '10px 0px',\n },\n});\n\nexport default () => (\n \n \n \n);\n","import React, { FC } from 'react';\nimport { View, StyleSheet } from '@react-pdf/renderer';\n\nconst styles = StyleSheet.create({\n container: {\n padding: 20,\n flex: 1,\n flexDirection: 'column',\n },\n});\n\nconst Container: FC = ({ children }) => (\n {children}\n);\n\nexport default Container;\n","import React from 'react';\n\nimport { StyleSheet, Text } from '@react-pdf/renderer';\n\nconst styles = StyleSheet.create({\n pageNumber: {\n position: 'absolute',\n fontSize: 12,\n bottom: 30,\n left: 0,\n right: 0,\n textAlign: 'center',\n color: 'grey',\n },\n});\nconst PageNumber = () => (\n `${pageNumber} / ${totalPages}`}\n fixed\n />\n);\nexport default PageNumber;\n","import React from 'react';\n\nimport { View, StyleSheet, Text } from '@react-pdf/renderer';\nimport Wording from '../../wording.json';\n\nconst styles = StyleSheet.create({\n container: {\n flexDirection: 'column',\n justifyContent: 'center',\n alignItems: 'center',\n },\n primary: {\n fontWeight: 800,\n fontSize: 30,\n color: '#000000',\n fontFamily: 'Montserrat',\n },\n secondary: {\n fontWeight: 800,\n fontSize: 10,\n color: '#5e5e5e',\n fontFamily: 'Montserrat',\n },\n});\n\nexport default () => {\n const {\n titles: { main, sub_title },\n } = Wording;\n\n return (\n \n {main}\n {sub_title}\n \n );\n};\n","import { createContext } from 'react';\nimport { ProofPaymentProps } from '../type';\n\nconst context = createContext({} as any);\n\nexport const ProofOfPaymentProvider = context.Provider;\n\nexport default context;\n","import { useContext } from 'react';\n\nimport ProofContext from './ProofOfPaymentContext';\n\nimport { ProofPaymentProps } from '../type';\n\nexport default function useProof(): ProofPaymentProps {\n return useContext(ProofContext);\n}\n","import React, { FC } from 'react';\n\nimport { View, StyleSheet, Text, Image } from '@react-pdf/renderer';\n\nimport ElecIcon from '../../../../../assets/icons/PDFs/ProofOfPayment/ic-elec.png';\nimport GasIcon from '../../../../../assets/icons/PDFs/ProofOfPayment/ic-gas.png';\n\nimport Wording from '../../wording.json';\nimport { useProof } from '../../lib';\nimport { getFormattedDate } from '../../../../../utils/helpers';\n\nconst styles = StyleSheet.create({\n container: {\n flexDirection: 'column',\n backgroundColor: '#D5D5D5',\n },\n energyImg: {\n width: 30,\n height: 65,\n paddingBottom: 20,\n paddingTop: 5,\n margin: 'auto',\n },\n textContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n },\n infoTitle: {\n fontFamily: 'Montserrat',\n fontWeight: 800,\n fontSize: 9,\n },\n infoValue: {\n fontSize: 9,\n },\n infoMargin: {\n marginBottom: 10,\n },\n});\n\ntype InfoProps = {\n style?: any;\n title: string;\n value: string;\n};\n\nconst Info: FC = ({ title, value, style = {} }) => (\n \n {title}: \n {value}\n \n);\n\nconst {\n customerInfo: { dateOfIssue, customerNbr, contractNbr, phone, mail },\n} = Wording;\n\nconst CustomerInfo = () => {\n const { customer, contract } = useProof();\n\n const getImageSrcByEnergy = (energy: 'EL' | 'NG') =>\n energy === 'EL' ? ElecIcon : GasIcon;\n return (\n \n \n \n \n \n\n \n \n \n );\n};\n\nexport default CustomerInfo;\n","import React, { FC } from 'react';\nimport { View, StyleSheet, Text, Image } from '@react-pdf/renderer';\n\nimport ArrowIcon from '../../../../../assets/icons/PDFs/ProofOfPayment/arrow.png';\nimport Wording from '../../wording.json';\n\nconst { beneficiaryInfo } = Wording;\n\nconst styles = StyleSheet.create({\n container: {\n flexDirection: 'row',\n alignItems: 'center',\n width: 110,\n marginBottom: 10,\n marginTop: 10,\n },\n\n img: {\n objectFit: 'cover',\n width: 25,\n height: 30,\n },\n\n text: {\n fontFamily: 'Montserrat',\n fontWeight: 800,\n fontSize: 11,\n },\n});\n\nconst BeneficiaryTitle: FC = () => (\n \n \n\n {beneficiaryInfo.title}\n \n);\n\nexport default BeneficiaryTitle;\n","import React, { FC } from 'react';\n\nimport { View, StyleSheet, Text, Image } from '@react-pdf/renderer';\n\nimport MailIcon from '../../../../../assets/icons/PDFs/ProofOfPayment/ic-email.png';\nimport PhoneIcon from '../../../../../assets/icons/PDFs/ProofOfPayment/ic-phone.png';\nimport FacebookIcon from '../../../../../assets/icons/PDFs/ProofOfPayment/Facebook.png';\nimport WebIcon from '../../../../../assets/icons/PDFs/ProofOfPayment/Web.png';\nimport YoutubeIcon from '../../../../../assets/icons/PDFs/ProofOfPayment/Youtube.png';\n\nimport { beneficiaryInfo } from '../../wording.json';\n\nimport Title from '../titles/BeneficiaryTitle';\n\nconst styles = StyleSheet.create({\n container: {\n flexDirection: 'column',\n marginTop: 10,\n padding: '10px 0px',\n },\n\n imgTextContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n padding: '2px 0px',\n },\n phoneText: {\n width: 120,\n },\n\n img: {\n width: 18,\n height: 18,\n marginRight: 5,\n },\n text: {\n fontSize: 9,\n },\n\n margin: {\n fontSize: 9,\n padding: '6px 0px',\n },\n moreText: {\n marginTop: 5,\n padding: '5px 0px',\n fontSize: 9,\n },\n});\n\nconst ImageText: FC<{ src: any; text?: string; elm?: any }> = ({\n src,\n text,\n\n children,\n}) => (\n \n \n {children && children}\n {text && {text}}\n \n);\n\nconst BeneficiaryInfo: FC = () => {\n return (\n \n \n\n <ImageText src={MailIcon} text={beneficiaryInfo.email} />\n <ImageText src={PhoneIcon}>\n <View>\n <Text style={styles.text}>{beneficiaryInfo.phone}</Text>\n <Text style={{ ...styles.text, ...styles.phoneText }}>\n {beneficiaryInfo.phoneDescription}\n </Text>\n </View>\n </ImageText>\n\n <Text style={styles.moreText}>{beneficiaryInfo.more}</Text>\n\n <ImageText src={FacebookIcon} text={beneficiaryInfo.facebook} />\n <ImageText src={WebIcon}>\n <View>\n <Text style={styles.text}>{beneficiaryInfo.url}</Text>\n <Text style={styles.text}>{beneficiaryInfo.urlfq}</Text>\n </View>\n </ImageText>\n\n <ImageText src={YoutubeIcon} text={beneficiaryInfo.youtube} />\n </View>\n );\n};\n\nexport default BeneficiaryInfo;\n","import React from 'react';\n\nimport { View, StyleSheet } from '@react-pdf/renderer';\n\nimport CustomerInfo from './CustomerInfo';\nimport BeneficiaryInfo from './BeneficiaryInfo';\n\nconst styles = StyleSheet.create({\n container: {\n flexDirection: 'column',\n backgroundColor: '#D5D5D5',\n padding: 10,\n borderRadius: 15,\n height: '100%',\n },\n});\n\nconst LeftColumn = () => {\n return (\n <View style={styles.container}>\n <CustomerInfo />\n\n <BeneficiaryInfo />\n </View>\n );\n};\n\nexport default LeftColumn;\n","import React, { FC } from 'react';\n\nimport { View, Text, StyleSheet } from '@react-pdf/renderer';\n\nconst styles = StyleSheet.create({\n container: {\n borderBottom: 3,\n borderBottomColor: '#000',\n marginTop: 5,\n },\n text: {\n fontFamily: 'Montserrat',\n fontWeight: 800,\n fontSize: 12,\n },\n});\n\ntype Props = {\n title: string;\n};\n\nconst Section: FC<Props> = ({ title }) => (\n <View style={styles.container}>\n <Text style={styles.text}>{title}</Text>\n </View>\n);\nexport default Section;\n","import React from 'react';\n\nimport { StyleSheet, Text } from '@react-pdf/renderer';\n\nimport Wording from '../../wording.json';\n\nconst styles = StyleSheet.create({\n text: {\n fontFamily: 'Montserrat',\n fontWeight: 800,\n fontSize: 15,\n marginBottom: 10,\n },\n});\n\nconst ObjectTitle = () => {\n return <Text style={styles.text}>{Wording.object}</Text>;\n};\n\nexport default ObjectTitle;\n","import React, { FC } from 'react';\n\nimport { StyleSheet, Text, View } from '@react-pdf/renderer';\n\nconst styles = StyleSheet.create({\n container: {\n flexDirection: 'column',\n padding: '8px 0px',\n },\n title: {\n fontFamily: 'Montserrat',\n fontWeight: 800,\n fontSize: 10,\n },\n\n value: {\n fontSize: 10,\n },\n});\n\ntype Props = {\n title: string;\n data: {\n name: string;\n number_street: string;\n zip_code_city: string;\n };\n};\n\nconst Adresse: FC<Props> = ({\n title,\n data: { name, number_street, zip_code_city },\n}) => (\n <View style={styles.container}>\n <Text style={styles.title}> {title} : </Text>\n <Text style={styles.value}> {name} </Text>\n <Text style={styles.value}> {number_street} </Text>\n <Text style={styles.value}> {zip_code_city} </Text>\n </View>\n);\n\nexport default Adresse;\n","import React, { FC } from 'react';\n\nimport { View, StyleSheet, Text } from '@react-pdf/renderer';\n\nconst styles = StyleSheet.create({\n textValueContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n },\n title: {\n fontFamily: 'Montserrat',\n fontWeight: 800,\n fontSize: 10,\n },\n value: {\n fontSize: 10,\n },\n});\n\nexport const TextValue: FC<{ title: string; value: string }> = ({\n title,\n value,\n}) => (\n <View style={styles.textValueContainer}>\n <Text style={styles.title}>{title} : </Text>\n <Text style={styles.value}>{value}</Text>\n </View>\n);\n\nexport default TextValue;\n","import React from 'react';\n\nimport { View, StyleSheet } from '@react-pdf/renderer';\n\nimport Wording from '../../wording.json';\n\nimport TextValue from './TextValue';\nimport { useProof } from '../../lib';\n\nconst styles = StyleSheet.create({\n container: {\n padding: '10px 0px',\n },\n});\n\ntype Frequencies =\n | 'MONTHLY'\n | 'BIMONTHLY'\n | 'QUARTERLY'\n | 'FOURMONTHLY'\n | 'BIANNUAL'\n | 'UNKNOWN';\n\nconst {\n sections: {\n offer: { type, frequency, modulation, EL, NG, frequencyMapping },\n },\n} = Wording;\n\nconst mappingEnergy = (energy: 'EL' | 'NG') => (energy === 'EL' ? EL : NG);\nconst modulationCheck = (chosenPackages: any[] | undefined) => {\n if (!chosenPackages) return '';\n return chosenPackages.length > 1 ? 'Oui' : 'Non';\n};\n\nconst Offer = () => {\n const {\n contract: { energy, installmentFrequency, chosenPackages },\n } = useProof();\n\n return (\n <View style={styles.container}>\n <TextValue title={type} value={mappingEnergy(energy)} />\n <TextValue\n title={frequency}\n value={frequencyMapping[installmentFrequency as Frequencies]}\n />\n <TextValue\n title={modulation}\n value={modulationCheck(chosenPackages)}\n />\n </View>\n );\n};\n\nexport default Offer;\n","import React from 'react';\n\nimport { View, StyleSheet } from '@react-pdf/renderer';\n\nimport Wording from '../../wording.json';\n\nimport TextValue from './TextValue';\nimport { useProof } from '../../lib';\nimport { getFormattedDate } from '../../../../../utils/helpers';\n\nconst styles = StyleSheet.create({\n container: {\n padding: '10px 0px',\n },\n});\n\nconst {\n sections: {\n summary: {\n transactionDate,\n paymentMode,\n paymentRef,\n paymentModeMapping,\n },\n },\n} = Wording;\n\nconst Summary = () => {\n const {\n piece: { payment_method_name: piecePaymentMode, date: paymentDate, id },\n } = useProof();\n\n // const transactionDueDate =\n // processusList && processusList[0] && processusList[0].transactions\n // ? processusList[0].transactions[0].dueDate\n // : undefined;\n\n const findPaymentMode = paymentModeMapping.find(\n pm => pm.value === piecePaymentMode,\n ) || { label: '' };\n return (\n <View style={styles.container}>\n <TextValue title={transactionDate} value={paymentDate || ''} />\n <TextValue title={paymentMode} value={piecePaymentMode} />\n <TextValue title={paymentRef} value={id} />\n </View>\n );\n};\n\nexport default Summary;\n","import ReactPDF, { Text, View } from '@react-pdf/renderer';\nimport React, { FC } from 'react';\n\nexport type TableCellProps = {\n weighting?: number;\n\n style?: ReactPDF.Style;\n\n textAlign?: 'left' | 'center' | 'right';\n\n isHeader?: boolean;\n\n fontSize?: number | string;\n};\n\nexport const Cell: FC<TableCellProps> = props => {\n let content: any;\n\n if (typeof props.children === 'string') {\n content = <Text>{props.children}</Text>;\n } else if (typeof props.children === 'number') {\n content = <Text>{props.children.toString()}</Text>;\n } else {\n content = props.children;\n }\n\n const defaultStyle: ReactPDF.Style = {\n flex: props.weighting || 1,\n // @ts-ignore\n justifyContent: 'stretch',\n textAlign: props.textAlign || 'left',\n fontSize: props.fontSize || (props.isHeader === true ? 14 : 12),\n borderRight: '1pt solid black',\n wordWrap: 'break-word',\n whiteSpace: 'pre-wrap',\n };\n\n const mergedStyles: ReactPDF.Style[] = [defaultStyle, props.style || {}];\n return (\n <View style={mergedStyles} wrap={true}>\n {content}\n </View>\n );\n};\n\nexport default Cell;\n","import React, { FC } from 'react';\n\nimport Cell, { TableCellProps } from './Cell';\n\nexport type DataTableCellProps = {\n data?: any;\n Cell: (data: any) => React.ReactNode | JSX.Element | string | number;\n} & TableCellProps;\n\nexport const DataCell: FC<DataTableCellProps> = props => {\n return (\n <Cell\n {...props}\n style={{\n ...props.style,\n ...(props.data.style || {}),\n }}\n >\n {props.Cell(props.data)}\n </Cell>\n );\n};\n\nexport default DataCell;\n","import { View } from '@react-pdf/renderer';\nimport React, { FC } from 'react';\n\nexport type TableRowProps = {\n fontSize?: number | string;\n textAlign?: 'left' | 'center' | 'right';\n data?: any;\n style?: any;\n};\n\nexport const Row: FC<TableRowProps> = props => {\n const rowCells: any[] = React.Children.toArray(props.children);\n\n let remainingWeighting = 1;\n let numberOfWeightingsDefined = 0;\n rowCells.forEach((i: any) => {\n if (i.props.weighting !== undefined) {\n remainingWeighting -= i.props.weighting;\n // tslint:disable-next-line:no-increment-decrement\n numberOfWeightingsDefined++;\n }\n });\n\n const weightingsPerNotSpecified = Math.ceil(\n remainingWeighting / (rowCells.length - numberOfWeightingsDefined),\n );\n return (\n <View\n // @ts-ignore\n style={{\n borderBottom: '1pt solid black',\n borderRight: '1pt solid black',\n borderLeft: '1pt solid black',\n borderTop: '1pt solid black',\n width: '100%',\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'stretch',\n }}\n >\n {rowCells.map((rc, columnIndex) =>\n React.cloneElement(rc, {\n weighting: rc.props.weighting || weightingsPerNotSpecified,\n data: props.data,\n key: columnIndex,\n fontSize: props.fontSize,\n textAlign: rc.props.textAlign || props.textAlign,\n includeLeftBorder: columnIndex === 0,\n includeRightBorder: columnIndex !== rowCells.length - 1,\n style: rc.props.style || props.style,\n }),\n )}\n </View>\n );\n};\n\nexport default Row;\n","import React, { FC } from 'react';\n\nimport Row, { TableRowProps } from './Row';\n\nexport const Header: FC<TableRowProps> = props => {\n const rowCells: any[] = React.Children.toArray(props.children);\n\n return (\n <Row {...props} key={'header'}>\n {rowCells.map((rc, columnIndex) =>\n React.cloneElement(rc, {\n key: columnIndex,\n isHeader: true,\n fontSize: props.fontSize,\n textAlign: props.textAlign,\n style: {\n ...(props.style || {}),\n ...(rc.props.style || {}),\n },\n }),\n )}\n </Row>\n );\n};\n\nexport default Header;\n","import React, { FC } from 'react';\nimport Row, { TableRowProps } from './Row';\n\nexport type TableBodyProps = {\n data?: any[];\n} & TableRowProps;\n\nexport const Body: FC<TableBodyProps> = props => {\n const rowCells: any[] = React.Children.toArray(props.children);\n\n const dataRows = props.data || [];\n\n return dataRows.map((data: any, rowIndex: any) => (\n <Row {...props} key={rowIndex} data={data}>\n {rowCells}\n </Row>\n ));\n};\n\nexport default Body;\n","import React, { FC } from 'react';\n\nimport Header from './Header';\nimport Body from './Body';\nimport { View } from '@react-pdf/renderer';\n\ntype TableProps = {\n data?: any[];\n};\n\nexport const Table: FC<TableProps> = props => {\n let tableHeader: any = null;\n let tableBody: any = null;\n\n React.Children.forEach(props.children, (c: any) => {\n if (c.type === Header) {\n tableHeader = c;\n } else if (c.type === Body) {\n tableBody = React.cloneElement(c, {\n data: c.props.data || props.data || [],\n });\n }\n });\n return (\n <View\n style={{\n width: '100%',\n }}\n >\n {tableHeader}\n {tableBody}\n </View>\n );\n};\n\nexport default Table;\n","import { View, StyleSheet } from '@react-pdf/renderer';\nimport React from 'react';\n\nimport { Enums } from '../../../../../utils/wording.json';\nimport { useProof } from '../../lib';\n\nimport { Table, Header, Cell, DataCell, Body } from '../Table';\n\nconst styles = StyleSheet.create({\n header: {\n backgroundColor: '#ffb40a',\n padding: '5px 0',\n fontFamily: 'Montserrat',\n fontWeight: 800,\n fontSize: 11,\n },\n\n body: {\n padding: '3px 10px',\n },\n\n rowStyle: {\n backgroundColor: '#D5D5D5',\n fontFamily: 'Montserrat',\n fontWeight: 800,\n },\n});\n\nconst CustomTable = () => {\n const { piece }: any = useProof();\n\n const { amount, internal_invoice_nature_text } = piece;\n /*\n const tableAmount =\n piece.type === 'pp'\n ? parseFloat((piece as any).totalAmount) -\n parseFloat(piece.amountToPay as any)\n : piece.amountPaid;\n\n const process =\n processusList && processusList[0] && processusList[0].transactions\n ? processusList[0]\n : undefined;\n\n const mappedProcessNature =\n process && process.nature\n ? Enums.processNature.find(pr => pr.value === process.nature)\n : { label: '' };\n*/\n const dataToDisplay = [\n {\n transactionName: internal_invoice_nature_text,\n amount: `${amount}€`,\n },\n\n {\n style: styles.rowStyle,\n\n transactionName: 'Total',\n amount: `${amount}€`,\n },\n ];\n return (\n <View>\n <Table data={dataToDisplay}>\n <Header textAlign=\"center\" style={styles.header}>\n <Cell>Type de transaction</Cell>\n <Cell>Montant</Cell>\n </Header>\n <Body style={styles.body}>\n <DataCell Cell={r => r.transactionName} />\n <DataCell Cell={r => r.amount} textAlign=\"right\" />\n </Body>\n </Table>\n </View>\n );\n};\n\nexport default CustomTable;\n","import React from 'react';\nimport { View, StyleSheet } from '@react-pdf/renderer';\n\nimport Wording from '../../wording.json';\n\nimport Section from '../titles/Section';\nimport Object from '../titles/Object';\nimport Adresse from './Adresse';\n\nimport Offer from './Offer';\nimport Summary from './Summary';\n\nimport CustomTable from './CustomTable';\nimport { useProof } from '../../lib';\n\nconst styles = StyleSheet.create({\n container: {\n flexDirection: 'column',\n backgroundColor: '#fff',\n padding: '10px 20px',\n width: '73.5%',\n },\n});\n\nconst {\n address: { beneficiary, clientTitle },\n sections: { offer, summary },\n} = Wording;\n\nconst RightColumn = () => {\n const {\n customer: { name },\n address,\n } = useProof();\n\n return (\n <View style={styles.container}>\n <Object />\n\n <Adresse\n title={clientTitle}\n data={{\n name: `${name.civility} ${name.firstName} ${name.lastName}`,\n number_street: `${address.number} ${address.street}`,\n zip_code_city: `${address.postalCode} ${address.townName}`,\n }}\n />\n\n <Adresse title={beneficiary.title} data={beneficiary.data} />\n\n <Section title={offer.title} />\n <Offer />\n\n <Section title={summary.title} />\n <Summary />\n\n <CustomTable />\n </View>\n );\n};\n\nexport default RightColumn;\n","import React from 'react';\n\nimport { View, StyleSheet, Text } from '@react-pdf/renderer';\n\nimport { bottom } from '../wording.json';\nimport { getFormattedDate } from '../../../../utils/helpers';\nimport { useProof } from '../lib';\n\nconst styles = StyleSheet.create({\n container: {},\n fullName: {\n padding: '10px 0',\n fontFamily: 'Montserrat',\n fontWeight: 800,\n fontSize: 13,\n },\n\n text: {\n fontSize: 13,\n },\n});\n\nconst BottomText = () => {\n const {\n piece,\n customer: { name },\n } = useProof();\n\n // const transactionDueDate =\n // processusList && processusList[0] && processusList[0].transactions\n // ? processusList[0].transactions[0].dueDate\n // : undefined;\n\n return (\n <View style={styles.container}>\n <Text style={styles.text}>\n {bottom.attestDate}\n {piece.date || ''} :\n </Text>\n <Text\n style={styles.fullName}\n >{`${name.civility} ${name.firstName} ${name.lastName} `}</Text>\n\n <Text style={styles.text}>{bottom.text}</Text>\n </View>\n );\n};\n\nexport default BottomText;\n","import React from 'react';\n\nimport { View, StyleSheet, Image, Text } from '@react-pdf/renderer';\n\nimport LogoWekiwi from '../../../../assets/icons/PDFs/ProofOfPayment/ic-logo-wekiwi.png';\n\nimport { footer } from '../wording.json';\n\nconst styles = StyleSheet.create({\n container: {\n alignItems: 'flex-end',\n position: 'relative',\n },\n\n img: {\n width: 90,\n height: 90,\n position: 'absolute',\n right: 0,\n opacity: 0.1,\n },\n\n textContainer: {\n position: 'absolute',\n right: 0,\n bottom: -60,\n alignItems: 'flex-end',\n },\n\n text: {\n fontSize: 13,\n },\n});\n\nconst Footer = () => (\n <View style={styles.container}>\n <Image src={LogoWekiwi} style={styles.img} />\n\n <View style={styles.textContainer}>\n <Text style={styles.text}>{footer.text1}</Text>\n <Text style={styles.text}>{footer.text2}</Text>\n </View>\n </View>\n);\n\nexport default Footer;\n","import React, { FC } from 'react';\n\nimport { Document, Page, View, StyleSheet } from '@react-pdf/renderer';\n\nimport './fonts';\n\nimport Header from './components/Header';\nimport Container from './components/Container';\nimport PageNumber from './components/PageNumber';\n\nimport MainTitle from './components/titles/Main';\n\nimport LeftColumn from './components/LeftColumn';\nimport RightColumn from './components/RightColumn';\n\nimport BottomText from './components/BottomText';\n\nimport Footer from './components/Footer';\n\nimport { ProofPaymentProps } from './type';\nimport { ProofOfPaymentProvider } from './lib';\n\nconst media: any = {\n '@media max-width: 400': {\n flexDirection: 'column',\n },\n};\n\nconst styles = StyleSheet.create({\n page: {},\n container: {\n padding: 20,\n flex: 1,\n flexDirection: 'column',\n ...media,\n },\n columnsContainer: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n marginTop: 40,\n marginBottom: 20,\n },\n});\n\nconst ProofOfPayment: FC<ProofPaymentProps> = props => {\n return (\n <ProofOfPaymentProvider value={{ ...props }}>\n <Document author=\"Wekiwi SAS\" title=\"JUSTIFICATIF-DE-PAIEMENT\">\n <Page size=\"A4\" style={styles.page}>\n <Header />\n\n <Container>\n <MainTitle />\n\n <View style={styles.columnsContainer}>\n <LeftColumn />\n <RightColumn />\n </View>\n\n <BottomText />\n\n <Footer />\n </Container>\n\n <PageNumber />\n </Page>\n </Document>\n </ProofOfPaymentProvider>\n );\n};\n\nexport default ProofOfPayment;\n","import { Epic } from 'redux-observable';\nimport { of, throwError } from 'rxjs';\nimport { mergeMap, catchError, filter, switchMap } from 'rxjs/operators';\nimport {\n createAsyncAction,\n createStandardAction,\n isActionOf,\n ActionType,\n} from 'typesafe-actions';\nimport {\n TResponse,\n TInvoice,\n TPrepayment,\n TTransaction,\n TAdhoc,\n TEPInvoice,\n} from 'Models';\nimport { RootAction, RootState, Services } from 'Types';\nimport Config from '../utils/config';\nimport {\n FETCH_PIECES_FAILURE,\n FETCH_PIECES_SUCCESS,\n FETCH_PIECES_REQUEST,\n CREATE_PAYMENT_REQUEST,\n CREATE_PAYMENT_SUCCESS,\n CREATE_PAYMENT_FAILURE,\n CREATE_PAYMENT_RESET,\n FETCH_BALANCE_REQUEST,\n FETCH_BALANCE_SUCCESS,\n FETCH_BALANCE_FAILURE,\n GET_SUPPORTING_DOCUMENTS_REQUEST,\n GET_SUPPORTING_DOCUMENTS_FAILURE,\n GET_SUPPORTING_DOCUMENTS_SUCCESS,\n RESET_SUPPORTING_DOCUMENT,\n FETCH_EPINVOICES_REQUEST,\n FETCH_EPINVOICES_SUCCESS,\n} from './actionTypes';\nimport { ProofPaymentProps } from '../components/PDFs/ProofOfPayment/type';\n\nimport { generateProofOfPayment } from '../components/PDFs/ProofOfPayment';\nimport { config } from 'process';\nexport type GetSupportingDocumentsRequest = Partial<{\n mode: 'proofOfResidence' | 'proofOfPayment';\n contractNbr: string;\n customerNbr: string;\n customerType: string;\n cunstomerName: {\n civility: string;\n firstName: string;\n lastName: string;\n };\n coholderName: {\n civility: string;\n firstName: string;\n lastName: string;\n };\n energyType: string;\n subscriptionDate: string;\n residenceAdress: {\n number: string;\n street: string;\n netArea: string;\n postalCode: string;\n country: string;\n townName: string;\n };\n pieceReference: string;\n pieceType: string;\n pointOfDelivery: string;\n\n actionProps: ProofPaymentProps;\n}>;\n\ninterface IResubmitCollectionRequest {\n dueDate: string;\n piece: TEPInvoice;\n}\ninterface IResubmitCollectionResponse {\n status: string;\n}\n\ninterface IBalanceRequest {\n customerNbr: string;\n contractNbr: string;\n invoiceNbr?: string;\n mode?: string;\n}\n\ninterface IBalanceResponse {\n customerBalance: string;\n contractBalance: string;\n invoiceBalance: string;\n code?: string;\n message?: string;\n}\n\nconst resetUpdate = createStandardAction(CREATE_PAYMENT_RESET)();\nconst resetSupportingDocumentError = createStandardAction(\n RESET_SUPPORTING_DOCUMENT,\n)();\n\ninterface IPieceRequest {\n contractNbr: string;\n invoiceId?: string;\n}\ninterface IPieceResponse {\n invoices: TInvoice[];\n prepayments: TPrepayment[];\n adhocPieces: TAdhoc[];\n error?: TResponse;\n}\n\ninterface IEPInvoiceRequest {\n customerNbr: string;\n contractNbr: string;\n}\n\ninterface IEPInvoiceResponse {\n epInvoice: TEPInvoice[];\n error?: TResponse;\n}\n\nconst fetchPiecesAsync = createAsyncAction(\n FETCH_PIECES_REQUEST,\n FETCH_PIECES_SUCCESS,\n FETCH_PIECES_FAILURE,\n)<IPieceRequest, IPieceResponse, TResponse>();\n\nconst fetchEPInvoicesAsync = createAsyncAction(\n FETCH_EPINVOICES_REQUEST,\n FETCH_EPINVOICES_SUCCESS,\n FETCH_PIECES_FAILURE,\n)<IEPInvoiceRequest, IEPInvoiceResponse, TResponse>();\n\nconst createPaymentAsync = createAsyncAction(\n CREATE_PAYMENT_REQUEST,\n CREATE_PAYMENT_SUCCESS,\n CREATE_PAYMENT_FAILURE,\n)<IResubmitCollectionRequest, IResubmitCollectionResponse, TResponse>();\n\nconst fetchBalanceAsync = createAsyncAction(\n FETCH_BALANCE_REQUEST,\n FETCH_BALANCE_SUCCESS,\n FETCH_BALANCE_FAILURE,\n)<IBalanceRequest, IBalanceResponse, IBalanceResponse>();\n\nconst getSupportingDocumentsAsync = createAsyncAction(\n GET_SUPPORTING_DOCUMENTS_REQUEST,\n GET_SUPPORTING_DOCUMENTS_SUCCESS,\n GET_SUPPORTING_DOCUMENTS_FAILURE,\n)<GetSupportingDocumentsRequest, any, string>();\n\nexport type PiecesAction =\n | ActionType<typeof createPaymentAsync>\n | ActionType<typeof fetchPiecesAsync>\n | ActionType<typeof fetchEPInvoicesAsync>\n | ActionType<typeof resetUpdate>\n | ActionType<typeof getSupportingDocumentsAsync>\n | ActionType<typeof resetSupportingDocumentError>\n | ActionType<typeof fetchBalanceAsync>;\n\nconst prepareBalancePayload = ({\n contractNbr,\n customerNbr,\n}: {\n contractNbr: string;\n customerNbr: string;\n}): IBalanceRequest => {\n return {\n contractNbr,\n customerNbr,\n mode: 'CONTRACT_BALANCE',\n };\n};\n\nconst mapGetBalance = (action: RootAction, { apiRequest }: Services) => {\n const payload = prepareBalancePayload(action.payload);\n return apiRequest<IBalanceResponse>({\n path: '/getBalance',\n method: 'post',\n body: payload,\n }).pipe(\n mergeMap((response: IBalanceResponse) => {\n if (response) return of(fetchBalanceAsync.success(response));\n return throwError({ code: '200', message: response });\n }),\n catchError(error => of(fetchBalanceAsync.failure(error))),\n );\n};\n\nconst fetchBalanceEpic: Epic<RootAction, RootAction, RootState, Services> = (\n action$,\n state$,\n dependency,\n) =>\n action$.pipe(\n filter(isActionOf(fetchBalanceAsync.request)),\n mergeMap(action => mapGetBalance(action, dependency)),\n );\n\nconst preparePiecesPayload = ({ contractNbr, invoiceId }: IPieceRequest) => {\n if (invoiceId) {\n return {\n invoiceId,\n contractId: contractNbr,\n };\n }\n return {\n contractId: contractNbr,\n };\n};\n\nconst mapGetPiece = (action: RootAction, { apiRequest }: Services) => {\n const payload = preparePiecesPayload(action.payload);\n return apiRequest<IPieceResponse>({\n path: '/financialPieces',\n method: 'post',\n body: payload,\n isPay: true,\n }).pipe(\n mergeMap((response: IPieceResponse) => {\n if (response && response.error === undefined) {\n return of(fetchPiecesAsync.success(response));\n }\n let message = 'failure';\n if (response.error) {\n message = response.error.description || 'failure';\n }\n return of(fetchPiecesAsync.failure({ code: '500', message }));\n }),\n catchError(error => of(fetchPiecesAsync.failure(error))),\n );\n};\n\nconst prepareEPInvoicesPayload = ({\n contractNbr,\n customerNbr,\n}: IEPInvoiceRequest) => {\n return {\n jsonrpc: '2.0',\n id: 'EC01',\n params: {\n username: Config.EnergyPaid.username,\n password: Config.EnergyPaid.password,\n customer_ref: customerNbr,\n contract_ref: contractNbr,\n },\n };\n};\n\nconst mapGetEPInvoice = (action: RootAction, { apiRequest }: Services) => {\n const payload = prepareEPInvoicesPayload(action.payload);\n return apiRequest<IEPInvoiceResponse>({\n path: '/ws_portal_get_customer_invoice_list/wsportal',\n method: 'post',\n body: payload,\n isPay: false,\n isPayEP: true,\n }).pipe(\n mergeMap((response: IEPInvoiceResponse) => {\n if (response && response.error === undefined) {\n return of(fetchEPInvoicesAsync.success(response));\n }\n let message = 'failure';\n if (response.error) {\n message = response.error.description || 'failure';\n }\n return of(fetchEPInvoicesAsync.failure({ code: '500', message }));\n }),\n catchError(error => of(fetchEPInvoicesAsync.failure(error))),\n );\n};\n\nconst mapGetSupportingDocuments = (\n action: RootAction,\n { apiRequest }: Services,\n) => {\n const {\n payload: { actionProps, ...apiPayload },\n }: any = action;\n\n return apiRequest<any>({\n path: '/getSupportingDocuments',\n method: 'post',\n body: apiPayload,\n }).pipe(\n mergeMap((response: any) => {\n if (response && typeof response === 'string') {\n generateProofOfPayment(actionProps);\n\n return of(getSupportingDocumentsAsync.success(response));\n }\n\n return of(getSupportingDocumentsAsync.failure(response.message));\n }),\n catchError(error =>\n of(getSupportingDocumentsAsync.failure(error.message)),\n ),\n );\n};\n\nconst getSupportingDocumentsEpic: Epic<\n RootAction,\n RootAction,\n RootState,\n Services\n> = (action$, state$, dependency) =>\n action$.pipe(\n filter(isActionOf(getSupportingDocumentsAsync.request)),\n mergeMap(action => mapGetSupportingDocuments(action, dependency)),\n );\n\nconst fetchPiecesEpic: Epic<RootAction, RootAction, RootState, Services> = (\n action$,\n state$,\n dependency,\n) =>\n action$.pipe(\n filter(isActionOf(fetchPiecesAsync.request)),\n mergeMap(action => mapGetPiece(action, dependency)),\n );\n\nconst fetchEPInvoiceEpic: Epic<RootAction, RootAction, RootState, Services> = (\n action$,\n state$,\n dependency,\n) =>\n action$.pipe(\n filter(isActionOf(fetchEPInvoicesAsync.request)),\n mergeMap(action => mapGetEPInvoice(action, dependency)),\n );\n\nconst prepareCreatePaymentPayload = ({\n piece,\n dueDate,\n}: IResubmitCollectionRequest) => {\n return {\n payment: piece,\n dueDate,\n mode: 'CREATE_PAYMENT',\n customerNbr: piece.partner_ref,\n contractNbr: piece.contract,\n };\n};\n\nconst mapResubmit = (action: RootAction, { apiRequest }: Services) => {\n const payload = prepareCreatePaymentPayload(action.payload);\n return apiRequest<any>({\n path: '/getDocumentsList',\n method: 'post',\n body: payload,\n }).pipe(\n switchMap((response: any) => {\n if (response && response.financialPieces) {\n if (response.financialPieces.result.status === 'ok') {\n return of(\n createPaymentAsync.success({\n status: 'ok',\n }),\n );\n }\n const message = response.error\n ? response.description\n : 'Erreur';\n return of(createPaymentAsync.failure({ code: '500', message }));\n }\n return of(\n createPaymentAsync.failure({ code: '500', message: 'Erreur' }),\n );\n }),\n catchError(error => {\n return of(\n createPaymentAsync.failure({\n code: error.code,\n message: error.message,\n }),\n );\n }),\n );\n};\n\nconst createPaymentEpic: Epic<RootAction, RootAction, RootState, Services> = (\n action$,\n state$,\n dependency,\n) =>\n action$.pipe(\n filter(isActionOf(createPaymentAsync.request)),\n mergeMap(action => mapResubmit(action, dependency)),\n );\n\nexport {\n mapGetPiece,\n mapGetEPInvoice,\n fetchPiecesAsync,\n fetchEPInvoicesAsync,\n fetchPiecesEpic,\n fetchEPInvoiceEpic,\n createPaymentEpic,\n createPaymentAsync,\n resetUpdate,\n mapGetBalance,\n fetchBalanceAsync,\n fetchBalanceEpic,\n getSupportingDocumentsEpic,\n getSupportingDocumentsAsync,\n resetSupportingDocumentError,\n};\n","import { pdf } from '@react-pdf/renderer';\nimport React from 'react';\nimport ProofOfPayment from './ProofOfPayment';\nimport { ProofPaymentProps } from './type';\n\nexport default function(props: ProofPaymentProps) {\n pdf(<ProofOfPayment {...props} />)\n .toBlob()\n .then(blob => {\n window.open(URL.createObjectURL(blob));\n });\n}\n","import { Epic } from 'redux-observable';\nimport { of, forkJoin, Observable, throwError } from 'rxjs';\nimport { mergeMap, switchMap, catchError, filter, merge } from 'rxjs/operators';\nimport {\n createAsyncAction,\n createStandardAction,\n isActionOf,\n ActionType,\n getType,\n} from 'typesafe-actions';\n\nimport { RootAction, RootState, Services } from 'Types';\nimport {\n TPackage,\n TPrepaymentFrequency,\n TContract,\n TProduct,\n TOffer,\n TResponse,\n TEstimate,\n} from 'Models';\nimport {\n EEnergy,\n ECustomerType,\n EModeManageOffer,\n EFrequency,\n ETimeframe,\n ERateOption,\n} from '../utils/enums';\nimport {\n FETCH_PACKAGE_REQUEST,\n FETCH_PACKAGE_SUCCESS,\n FETCH_PACKAGE_FAILURE,\n FETCH_PRODUCT_REQUEST,\n FETCH_PRODUCT_SUCCESS,\n FETCH_PRODUCT_FAILURE,\n FETCH_OFFER_REQUEST,\n FETCH_OFFER_SUCCESS,\n FETCH_OFFER_FAILURE,\n UPDATE_PACKAGE_REQUEST,\n UPDATE_PACKAGE_SUCCESS,\n UPDATE_PACKAGE_FAILURE,\n UPDATE_PACKAGE_RESET,\n} from './actionTypes';\nimport { getTodayDate } from '../utils/helpers';\nimport {\n mapCreateEvent,\n ICreateEventPayload,\n createEventAsync,\n} from './event.actions';\nimport { getNewAdditionalRates } from '../utils/network/request';\n\ninterface IPayloadPackage {\n contractNbr: string;\n estimates?: TEstimate[];\n customerType?: ECustomerType;\n energy?: EEnergy;\n reference?: string;\n packagesList?: TPackage[];\n prepaymentFrequencies?: TPrepaymentFrequency[];\n error?: string;\n productCode?: TProduct;\n contracts?: TContract[];\n contract?: TContract;\n}\n\ninterface IPayloadPackDynamicRequest {\n contracts: TContract[];\n}\n\ninterface IPayloadPackDynamicResponse {\n packages: TPackage[];\n}\n\ninterface IPayloadProduct {\n customerType?: ECustomerType;\n contracts?: TContract[];\n productsList?: TProduct[];\n error?: string;\n}\n\ninterface IPayloadOffer {\n customerType?: ECustomerType;\n contracts?: TContract[];\n offers?: TOffer[];\n products?: TProduct[];\n contractNbr?: string;\n error?: string;\n code?: string;\n message?: string;\n}\n\nexport interface IPayloadUpdatePackage {\n customerType?: string;\n customerNbr?: string;\n contract?: TContract;\n mode?: EModeManageOffer;\n chosenPackages?: TPackage[];\n frequency?: EFrequency;\n product?: TProduct;\n option?: {\n label: string;\n active: boolean;\n };\n offer?: TOffer;\n contractNbr?: string;\n code?: string;\n message?: string;\n description?: string;\n event?: ICreateEventPayload;\n}\n\nconst resetUpdate = createStandardAction(UPDATE_PACKAGE_RESET)();\n\nconst fetchPackageAsync = createAsyncAction(\n FETCH_PACKAGE_REQUEST,\n FETCH_PACKAGE_SUCCESS,\n FETCH_PACKAGE_FAILURE,\n)<IPayloadPackage, IPayloadPackage, TResponse>();\n\nconst fetchProductAsync = createAsyncAction(\n FETCH_PRODUCT_REQUEST,\n FETCH_PRODUCT_SUCCESS,\n FETCH_PRODUCT_FAILURE,\n)<IPayloadProduct, IPayloadProduct, TResponse>();\n\nconst fetchOfferAsync = createAsyncAction(\n FETCH_OFFER_REQUEST,\n FETCH_OFFER_SUCCESS,\n FETCH_OFFER_FAILURE,\n)<IPayloadOffer, IPayloadOffer, TResponse>();\n\nconst updatePackageAsync = createAsyncAction(\n UPDATE_PACKAGE_REQUEST,\n UPDATE_PACKAGE_SUCCESS,\n UPDATE_PACKAGE_FAILURE,\n)<IPayloadUpdatePackage, IPayloadUpdatePackage, TResponse>();\n\nexport type PackageAction =\n | ActionType<typeof fetchPackageAsync>\n | ActionType<typeof fetchProductAsync>\n | ActionType<typeof fetchOfferAsync>\n | ActionType<typeof updatePackageAsync>\n | ActionType<typeof resetUpdate>;\n\nconst preparePayloadFetchPackage = ({\n energy,\n reference,\n customerType,\n estimates,\n}: IPayloadPackage) => {\n return {\n customerType,\n mode: 'POINT_OF_DELIVERY',\n estimates,\n pointOfDeliveryList: [\n {\n energy,\n reference,\n },\n ],\n };\n};\n\nconst preparePayloadFetchPackageEstimates = ({\n customerType,\n estimates,\n}: IPayloadPackage) => {\n return {\n customerType,\n mode: 'ESTIMATE',\n estimates,\n };\n};\n\nconst preparePayloadFetchPackDynamic = ({ contract }: any) => {\n return {\n contracts: [\n {\n ...contract,\n },\n ],\n };\n};\n\nconst mapFetchPackage = (action: RootAction, { apiRequest }: Services) => {\n const payload = preparePayloadFetchPackage(action.payload);\n return apiRequest<IPayloadPackage>({\n path: '/getPackages',\n method: 'post',\n body: payload,\n isSubscription: true,\n }).pipe(\n mergeMap((response: IPayloadPackage) => {\n if (!response) {\n return of(\n fetchPackageAsync.failure({\n code: '500',\n message: 'Erreur serveur',\n }),\n );\n }\n return of(\n fetchPackageAsync.success({\n packagesList: response.packagesList,\n prepaymentFrequencies: response.prepaymentFrequencies,\n contractNbr: action.payload.contractNbr,\n productCode: action.payload.productCode,\n contracts: response.contracts && response.contracts,\n contract: action.payload.contract,\n }),\n );\n }),\n catchError(error => of(fetchPackageAsync.failure(error))),\n );\n};\n\nconst mapFetchPackageEstimates = (\n action: RootAction,\n { apiRequest }: Services,\n) => {\n const estimate = [\n {\n timeFrame: ETimeframe.TOTAL_HOUR,\n quantity: action.payload.packagesList[0].packageQuantity + 1,\n energy: action.payload.packagesList[0].energy,\n },\n ];\n\n const payload = preparePayloadFetchPackageEstimates({\n ...action.payload,\n estimates: estimate,\n });\n\n return apiRequest<IPayloadPackage>({\n path: '/getPackages',\n method: 'post',\n body: payload,\n isSubscription: true,\n }).pipe(\n mergeMap((response: IPayloadPackage) => {\n if (!response) {\n return of(\n fetchPackageAsync.failure({\n code: '500',\n message: 'Erreur serveur',\n }),\n );\n }\n return of(\n fetchPackageAsync.success({\n packagesList: response.packagesList,\n prepaymentFrequencies: response.prepaymentFrequencies,\n contractNbr: action.payload.contractNbr,\n productCode: action.payload.productCode,\n contracts: response.contracts && response.contracts,\n }),\n );\n }),\n catchError(error => of(fetchPackageAsync.failure(error))),\n );\n};\n\nconst mapFetchPackDynamic = (action: RootAction, { apiRequest }: Services) => {\n const payload = preparePayloadFetchPackDynamic(action.payload);\n return apiRequest<IPayloadPackDynamicResponse>({\n path: '/getPack',\n method: 'post',\n body: payload,\n isSubscription: true,\n }).pipe(\n mergeMap((response: IPayloadPackDynamicResponse) => {\n if (!response) {\n return of(\n fetchPackageAsync.failure({\n code: '500',\n message: 'Erreur serveur',\n }),\n );\n }\n return of(\n fetchPackageAsync.success({\n packagesList: response.packages,\n contractNbr: action.payload.contractNbr,\n customerType: action.payload.contracts[0].customerType,\n contract: action.payload.contract,\n }),\n );\n }),\n catchError(error => of(fetchPackageAsync.failure(error))),\n );\n};\n\nconst fetchPackageEpic: Epic<RootAction, RootAction, RootState, Services> = (\n action$,\n state$,\n dependency,\n) =>\n action$.pipe(\n filter(isActionOf(fetchPackageAsync.request)),\n switchMap(action =>\n mapFetchPackage(action, dependency).pipe(\n switchMap(response => mapFetchPackDynamic(response, dependency).pipe(\n switchMap(response =>\n mapFetchPackageEstimates(response, dependency),\n ),\n )),\n ),\n ),\n catchError(error => of(fetchPackageAsync.failure(error))),\n );\n\nconst getEstimates = (contract?: TContract): TEstimate[] => {\n if (contract === undefined) {\n return [];\n }\n const estimates = contract.estimates;\n if (estimates && estimates[0].quantity > 0) {\n return estimates;\n }\n if (contract.rateOption === ERateOption.TOTAL_HOUR) {\n return [\n {\n energy: contract.energy,\n timeframe: ETimeframe.TOTAL_HOUR,\n quantity: 1,\n },\n ];\n }\n if (contract.rateOption === ERateOption.HIGH_LOW) {\n return [\n {\n energy: contract.energy,\n timeframe: ETimeframe.HIGH,\n quantity: 1,\n },\n {\n energy: contract.energy,\n timeframe: ETimeframe.LOW,\n quantity: 1,\n },\n ];\n }\n return [];\n};\n\nconst preparePayloadFetchOffer = ({\n contracts,\n customerType,\n}: IPayloadOffer) => {\n const modifiedContracts =\n contracts &&\n contracts.map(contract => {\n const estimates = getEstimates(contract);\n return {\n ...contract,\n estimates,\n };\n });\n return {\n customerType,\n contracts: modifiedContracts,\n\n contractChannel: Boolean(\n modifiedContracts &&\n modifiedContracts[0] &&\n modifiedContracts[0].channel,\n )\n ? (modifiedContracts as any)[0].channel\n : null,\n };\n};\n\nconst mapFetchOffer = (\n action: RootAction,\n { apiRequest }: Services,\n): Observable<IPayloadOffer> => {\n const payload = preparePayloadFetchOffer(action.payload);\n return apiRequest<IPayloadOffer>({\n path: '/getOffers',\n method: 'post',\n body: payload,\n isSubscription: true,\n }).pipe(\n mergeMap((response: IPayloadOffer) => {\n if (response && response.code !== 'UNEXPECTED_ERROR') {\n const contractNbr = action.payload.contracts[0].contractNumber;\n return of({\n contractNbr,\n offers: response.offers,\n });\n }\n return of({\n code: '500',\n message: 'failure',\n error: 'failure',\n });\n }),\n catchError(error =>\n of({\n code: '500',\n message: 'failure',\n error: 'failure',\n }),\n ),\n );\n};\n\nconst fetchOfferEpic: Epic<RootAction, RootAction, RootState, Services> = (\n action$,\n state$,\n dependency,\n) =>\n action$.pipe(\n filter(isActionOf(fetchOfferAsync.request)),\n mergeMap(action => mapFetchOffer(action, dependency)),\n );\n\nconst preparePayloadFetchProduct = ({\n customerType,\n contracts,\n}: IPayloadProduct) => {\n return {\n customerType,\n contracts,\n contextOfUse: 'MARKET',\n contractChannel: Boolean(\n contracts && contracts[0] && contracts[0].channel,\n )\n ? (contracts as any)[0].channel\n : null,\n };\n};\n\nconst mapFetchProduct = (\n action: RootAction,\n { apiRequest }: Services,\n): Observable<IPayloadProduct> => {\n const payload = preparePayloadFetchProduct(action.payload);\n return apiRequest<IPayloadProduct>({\n path: '/getProducts',\n method: 'post',\n body: payload,\n isSubscription: true,\n }).pipe(\n mergeMap((response: IPayloadProduct) => {\n if (response.productsList) {\n return of({ productsList: response.productsList });\n }\n return of({\n error: 'failure',\n code: '200',\n message: 'Erreur serveur',\n });\n }),\n catchError(error =>\n of({\n error: error.message,\n code: error.code,\n message: error.message,\n }),\n ),\n );\n};\n\nconst fetchProductEpic: Epic<RootAction, RootAction, RootState, Services> = (\n action$,\n state$,\n dependency,\n) =>\n action$.pipe(\n filter(isActionOf(fetchProductAsync.request)),\n switchMap(\n (action: RootAction) => mapFetchProduct(action, dependency),\n (action: RootAction, r: IPayloadProduct) => [action, r],\n ),\n switchMap(([action, productResponse]) => {\n if (productResponse.code === '401') {\n return forkJoin(\n of(productResponse),\n mapFetchOffer(action, dependency),\n );\n // return throwError(productResponse);\n }\n const { contracts }: IPayloadProduct = action.payload;\n if (contracts && contracts[0].offer) {\n return forkJoin(of(productResponse));\n }\n return forkJoin(\n of(productResponse),\n mapFetchOffer(action, dependency),\n );\n }),\n switchMap(([productResponse, offerResponse]) => {\n const promiseProduct = productResponse.error\n ? fetchProductAsync.failure({\n code: '500',\n message: 'Erreur serveur',\n })\n : fetchProductAsync.success({\n productsList: productResponse.productsList,\n });\n if (!offerResponse) {\n return of(promiseProduct);\n }\n const promiseOffer = offerResponse.error\n ? fetchOfferAsync.failure({\n code: '500',\n message: 'Erreur serveur',\n })\n : fetchOfferAsync.success({\n products: productResponse.productsList,\n offers: offerResponse.offers,\n contractNbr: offerResponse.contractNbr,\n });\n\n return of(promiseProduct, promiseOffer);\n }),\n catchError(error => {\n return of(fetchProductAsync.failure(error));\n }),\n );\n\nconst createProduct = ({\n payloadProduct,\n contract,\n}: {\n payloadProduct: any;\n contract: any;\n}) => ({\n ...payloadProduct,\n additionalRates:\n contract.chosenProduct.additionalRates ||\n payloadProduct.additionalRates,\n});\n\nconst preparePayloadUpdatePackage = ({\n customerNbr,\n contract,\n mode,\n product,\n chosenPackages,\n frequency,\n option,\n}: IPayloadUpdatePackage) => {\n if (contract === undefined) {\n return {\n customerNbr,\n mode,\n contract,\n };\n }\n const modifiedContract: TContract = { ...contract };\n switch (mode) {\n case EModeManageOffer.INSTALLMENT_FREQUENCY: {\n if (frequency) {\n modifiedContract.installmentFrequency = frequency;\n }\n break;\n }\n\n case EModeManageOffer.PACKAGE: {\n if (chosenPackages) {\n modifiedContract.chosenPackages = chosenPackages;\n }\n break;\n }\n\n case EModeManageOffer.PRODUCT: {\n if (product) {\n const today = getTodayDate();\n modifiedContract.chosenProduct = {\n ...createProduct({ contract, payloadProduct: product }),\n effectiveDate: today,\n };\n // modifiedContract.effectiveStartDate = today;\n }\n break;\n }\n\n case EModeManageOffer.OPTIONS: {\n if (option) {\n let additionalRates =\n modifiedContract.chosenProduct.additionalRates;\n if (additionalRates) {\n additionalRates = additionalRates.map(r => {\n if (r.label !== option.label) {\n if (r.updated) delete r.updated;\n return r;\n }\n return {\n ...r,\n active: option.active,\n updated: true,\n };\n });\n }\n modifiedContract.chosenProduct = {\n ...modifiedContract.chosenProduct,\n additionalRates,\n };\n }\n break;\n }\n\n default:\n break;\n }\n return {\n customerNbr,\n mode,\n contract: modifiedContract,\n };\n};\n\nconst mapUpdatePackage = (action: RootAction, { apiRequest }: Services) => {\n const payload = preparePayloadUpdatePackage(action.payload);\n return apiRequest<IPayloadUpdatePackage>({\n path: '/manageOffer',\n method: 'post',\n body: payload,\n }).pipe(\n mergeMap((response: IPayloadUpdatePackage) => {\n // Server might respond with code and description\n // It should always return code and message\n\n if (response) {\n if (response.code === 'OK') {\n return of({\n code: response.code,\n contract: payload.contract,\n });\n }\n if (response.code === 'KO') {\n return of({\n code: response.code,\n description: response.description,\n });\n }\n }\n\n return of({\n code: '500',\n message: 'Erreur serveur',\n });\n }),\n catchError(error => of(error)),\n );\n};\n\nconst updatePackageEpic: Epic<RootAction, RootAction, RootState, Services> = (\n action$,\n state$,\n dependency,\n) =>\n action$.pipe(\n filter(isActionOf(updatePackageAsync.request)),\n switchMap(\n (action: RootAction) => {\n if (action.payload.mode === EModeManageOffer.PRODUCT) {\n const modifiedAction = {\n ...action,\n payload: {\n ...action.payload,\n contracts: [\n {\n ...action.payload.contract,\n chosenProduct: createProduct({\n payloadProduct: action.payload.product,\n contract: action.payload.contract,\n }),\n },\n ],\n },\n };\n return mapFetchOffer(modifiedAction, dependency);\n }\n return mapUpdatePackage(action, dependency);\n },\n (action: RootAction, r: IPayloadUpdatePackage) => [action, r],\n ),\n switchMap(([action, packageResponse]) => {\n if (packageResponse.offers) {\n const modifiedAction = {\n ...action,\n payload: {\n ...action.payload,\n contract: {\n ...action.payload.contract,\n\n chosenProduct: createProduct({\n payloadProduct: action.payload.product,\n contract: action.payload.contract,\n }),\n offer: packageResponse.offers[0],\n },\n },\n };\n return forkJoin(\n of(action),\n mapUpdatePackage(modifiedAction, dependency),\n of(packageResponse),\n );\n }\n return forkJoin(of(action), of(packageResponse));\n }),\n switchMap(([action, firstResponse, secondResponse]) => {\n const newActionEvent = {\n type: getType(createEventAsync.request),\n payload: { ...action.payload.event },\n };\n if (\n firstResponse.code !== 'KO' &&\n secondResponse &&\n secondResponse.offers\n ) {\n return forkJoin(\n of(firstResponse),\n of({\n offers: secondResponse.offers,\n contractNbr: secondResponse.contractNbr,\n }),\n mapCreateEvent(newActionEvent, dependency),\n );\n }\n\n if (firstResponse.code === 'OK') {\n return forkJoin(\n of(firstResponse),\n of(undefined),\n mapCreateEvent(newActionEvent, dependency),\n );\n }\n return forkJoin(of(firstResponse));\n }),\n switchMap(([firstResponse, secondResponse, eventResponse]) => {\n if (\n firstResponse.code === '401' ||\n firstResponse.code === '500' ||\n firstResponse.code === '0'\n ) {\n return of(updatePackageAsync.failure(firstResponse));\n }\n\n if (secondResponse) {\n return of(\n updatePackageAsync.success(firstResponse),\n fetchOfferAsync.success(secondResponse),\n );\n }\n\n return of(updatePackageAsync.success(firstResponse));\n }),\n catchError(error => {\n return of(updatePackageAsync.failure(error));\n }),\n );\n\nexport {\n fetchPackageAsync,\n fetchPackageEpic,\n fetchProductAsync,\n fetchProductEpic,\n fetchOfferAsync,\n fetchOfferEpic,\n updatePackageAsync,\n updatePackageEpic,\n resetUpdate,\n};\n","import { of } from 'rxjs';\nimport { mergeMap, catchError, filter } from 'rxjs/operators';\nimport {\n createAsyncAction,\n ActionType,\n isActionOf,\n createStandardAction,\n} from 'typesafe-actions';\nimport { ReducerError, RootAction, RootState, Services, TError } from 'Types';\nimport {\n FETCH_CUSTOMER_CONTRACT_FAILURE,\n FETCH_CUSTOMER_CONTRACT_REQUEST,\n FETCH_CUSTOMER_CONTRACT_SUCCESS,\n RESET_UPLOAD_AMENDMENTS,\n UPLOAD_AMENDMENTS_FAILURE,\n UPLOAD_AMENDMENTS_REQUEST,\n UPLOAD_AMENDMENTS_SUCCESS,\n} from './actionTypes';\nimport { Epic } from 'redux-observable';\n\nimport { TCustomer } from '../constants/key-system';\n\nexport type TCustomerContractPayload = Partial<{\n customerId: string;\n contractId: string;\n clientFirstName: string;\n clientLastName: string;\n companyName: string;\n fromDate: string;\n toDate: string;\n}>;\n\nexport type TUploadAmendmentsPayload = {\n riders: Array<{\n contractNbr: string;\n customerNbr: string;\n riderEffectiveStartDate: string;\n productCode: string;\n productType: string;\n refDateForFixedPrice: string;\n p0_hc: string;\n p0: string;\n indice: string;\n }>;\n};\ninterface IResponseClient {\n customers: TCustomer[];\n}\n\nconst fetchCustomerContractAsync = createAsyncAction(\n FETCH_CUSTOMER_CONTRACT_REQUEST,\n FETCH_CUSTOMER_CONTRACT_SUCCESS,\n FETCH_CUSTOMER_CONTRACT_FAILURE,\n)<TCustomerContractPayload, IResponseClient, ReducerError>();\n\nconst uploadAmendmentsAsync = createAsyncAction(\n UPLOAD_AMENDMENTS_REQUEST,\n UPLOAD_AMENDMENTS_SUCCESS,\n UPLOAD_AMENDMENTS_FAILURE,\n)<TUploadAmendmentsPayload, any, ReducerError>();\n\nconst resetUploadAmendments = createStandardAction(RESET_UPLOAD_AMENDMENTS)();\n\nexport type CustomersContractAction =\n | ActionType<typeof fetchCustomerContractAsync>\n | ActionType<typeof resetUploadAmendments>\n | ActionType<typeof uploadAmendmentsAsync>;\n\nconst preparePayloadCustomerContract = (\n payload: TCustomerContractPayload,\n): TCustomerContractPayload => {\n return { ...payload };\n};\n\nconst mapGetCustomerContract = (\n action: RootAction,\n { apiRequest }: Services,\n) => {\n const payload = preparePayloadCustomerContract(action.payload);\n return apiRequest<IResponseClient>({\n path: '/customerAndContract',\n method: 'post',\n body: payload,\n isPay: true,\n }).pipe(\n mergeMap((response: any & TError) => {\n if (\n response.code === 'MISSING_PARAMETER' ||\n response.code === 'NO_RESPONSE_FROM_PARTNER'\n ) {\n return of(\n fetchCustomerContractAsync.failure({\n code: response.code,\n message: response.description,\n }),\n );\n }\n return of(fetchCustomerContractAsync.success(response));\n }),\n catchError(error => {\n return of(\n fetchCustomerContractAsync.failure({\n code: error.code,\n message: error.description,\n }),\n );\n }),\n );\n};\n\nconst mapUploadAmendments = (action: RootAction, { apiRequest }: Services) => {\n return apiRequest<any>({\n path: '/uploadAmendments',\n method: 'post',\n body: action.payload,\n }).pipe(\n mergeMap((response: any & TError) => {\n if (\n response.code === 'MISSING_PARAMETER' ||\n response.code === 'NO_RESPONSE_FROM_PARTNER'\n ) {\n return of(\n uploadAmendmentsAsync.failure({\n code: response.code,\n message: response.description,\n }),\n );\n }\n return of(uploadAmendmentsAsync.success(response));\n }),\n catchError(error => {\n return of(\n uploadAmendmentsAsync.failure({\n code: error.code,\n message: error.description,\n }),\n );\n }),\n );\n};\n\nconst uploadAmendmentsEpic: Epic<\n RootAction,\n RootAction,\n RootState,\n Services\n> = (action$, state$, dependency) =>\n action$.pipe(\n filter(isActionOf(uploadAmendmentsAsync.request)),\n mergeMap(action => mapUploadAmendments(action, dependency)),\n );\n\nconst customerContractEpic: Epic<\n RootAction,\n RootAction,\n RootState,\n Services\n> = (action$, state$, dependency) =>\n action$.pipe(\n filter(isActionOf(fetchCustomerContractAsync.request)),\n mergeMap(action => mapGetCustomerContract(action, dependency)),\n );\n\nexport {\n fetchCustomerContractAsync,\n customerContractEpic,\n mapGetCustomerContract,\n uploadAmendmentsAsync,\n uploadAmendmentsEpic,\n resetUploadAmendments,\n};\n","import WordingConstant from '../wording.json';\n\nconst Wording = WordingConstant.Errors;\nconst defaultMessage = Wording.default;\n\n// Generics\n\nexport class RequestError extends Error {\n public code: number | null | string;\n public data: any | null;\n constructor(\n message: string = defaultMessage,\n code: number | null | string = null,\n data: any | null = null,\n ) {\n super(message);\n this.code = code;\n this.data = data;\n }\n}\n\nexport class ParsingError extends RequestError {\n constructor() {\n super(Wording.parsing, null, null);\n }\n}\n\nexport class FunctionNameError extends RequestError {\n constructor() {\n super(Wording.fnName, null, null);\n }\n}\n\nexport function parseError(res: any) {\n // TODO\n return new RequestError(defaultMessage);\n}\n\n// Specifics\n\nexport class ExternalError extends RequestError {\n constructor(message: string) {\n super(message);\n }\n}\n\nexport class NoDaysListError extends RequestError {\n constructor(message?: string) {\n super(message || Wording.noDaysList);\n }\n}\n\nexport class NoPackageListError extends RequestError {\n constructor(message?: string) {\n super(message || Wording.noPackageList);\n }\n}\n\nexport class NoMatchingPackagesError extends RequestError {\n constructor(message?: string) {\n super(message || Wording.noMatchingPackages);\n }\n}\n\nexport class CompletePackagesError extends RequestError {\n constructor(message?: string) {\n super(message || Wording.noMatchingPackages);\n }\n}\n\nexport class NoEnergySelectionError extends RequestError {\n constructor(message?: string) {\n super(message || Wording.noEnergySelection);\n }\n}\n\nexport class SessionExpiredError extends RequestError {\n constructor(message?: string) {\n super(message || Wording.sessionExpired);\n }\n}\n","import { of } from 'rxjs';\nimport { mergeMap, catchError, filter } from 'rxjs/operators';\nimport { createAsyncAction, ActionType, isActionOf } from 'typesafe-actions';\nimport { ReducerError, RootAction, RootState, Services } from 'Types';\nimport {\n FETCH_ORDER_REQUEST,\n FETCH_ORDER_SUCCESS,\n FETCH_ORDER_FAILURE,\n SEARCH_USER_REQUEST,\n SEARCH_USER_SUCCESS,\n SEARCH_USER_FAILURE,\n} from './actionTypes';\nimport { TContract, TFinance, TOrder } from 'Models';\nimport { Epic } from 'redux-observable';\n\nimport { RequestError } from '../utils/network/errors';\n\nimport config from '../utils/config';\nimport {\n EFirstPaymentCBStatuses,\n EOrderStatuses,\n TAddress,\n TBirthTown,\n} from '../utils/network/types';\nimport { ECivility, ECustomerType } from '../utils/enums';\nimport { log } from '../utils/helpers';\n\nexport type TOrderPayload = Partial<{\n fromDate: string | null;\n toDate: string | null;\n email: string | null;\n orderNumber: string | null;\n firstName: string | null;\n lastName: string | null;\n processType: string | null;\n phone: string | null;\n externalReference: string | null;\n channel: string | null | string[];\n createdBy: string | null;\n}>;\n\nexport type TOrderResponse = {\n order: {\n orderReference: string;\n externalReference: string;\n orderStatus: EOrderStatuses;\n firstPaymentCBStatus: EFirstPaymentCBStatuses;\n customer: {\n customerNumber: string;\n type: ECustomerType;\n contact: {\n civility: ECivility;\n firstName: string;\n lastName: string;\n birthdate: string;\n address: TAddress;\n birthTown: Partial<TBirthTown> &\n Required<Pick<TBirthTown, 'townName' | 'country'>>;\n email: string;\n phone: string;\n companyName: string;\n };\n finance: Partial<TFinance>;\n };\n contracts: TContract[];\n };\n channel: string;\n};\n\nconst fetchOrderAsync = createAsyncAction(\n FETCH_ORDER_REQUEST,\n FETCH_ORDER_SUCCESS,\n FETCH_ORDER_FAILURE,\n)<TOrderPayload, TOrder[], ReducerError>();\n\nconst searchClientAsync = createAsyncAction(\n SEARCH_USER_REQUEST,\n SEARCH_USER_SUCCESS,\n SEARCH_USER_FAILURE,\n)<TOrderPayload, TOrderResponse[], ReducerError>();\n\nexport type FetchOrderAction = ActionType<\n typeof fetchOrderAsync | typeof searchClientAsync\n>;\n\nconst preparePayloadOrder = (payload: TOrderPayload): TOrderPayload => {\n return {\n fromDate: payload.fromDate || null,\n toDate: payload.toDate || null,\n email: payload.email || null,\n orderNumber: payload.orderNumber || null,\n firstName: payload.firstName || null,\n lastName: payload.lastName || null,\n processType: payload.processType || null,\n phone: payload.phone || null,\n externalReference: payload.externalReference || null,\n channel: payload.channel || null,\n createdBy: payload.createdBy || null,\n };\n};\n\nconst mapGetOrder = (action: RootAction, { apiRequest }: Services) => {\n const payload = preparePayloadOrder(action.payload);\n\n return apiRequest<TOrder[]>({\n isSubscription: true,\n method: 'POST',\n path: '/searchOrder',\n body: payload,\n lambdaFunctionName: config.FunctionNames.searchOrder,\n }).pipe(\n mergeMap((response: any | RequestError) => {\n if (\n response instanceof RequestError &&\n response.code !== undefined\n ) {\n return of(\n fetchOrderAsync.failure({\n code: response.code as string,\n message: response.message,\n }),\n );\n }\n\n if (response) {\n try {\n const res = JSON.parse(JSON.stringify(response));\n return of(fetchOrderAsync.success(res));\n } catch (e) {\n return of(\n fetchOrderAsync.failure({\n code: '400',\n message: 'Données indisponibles',\n }),\n );\n }\n }\n\n return of(\n fetchOrderAsync.failure({\n code: '400',\n message: 'Données indisponibles',\n }),\n );\n }),\n catchError(error => {\n return of(\n fetchOrderAsync.failure({\n code: error.code,\n message:\n error.code === '0'\n ? error.message\n : JSON.parse(error.message).message,\n }),\n );\n }),\n );\n};\n\nconst orderEpic: Epic<RootAction, RootAction, RootState, Services> = (\n action$,\n state$,\n dependency,\n) =>\n action$.pipe(\n filter(isActionOf(fetchOrderAsync.request)),\n mergeMap(action => mapGetOrder(action, dependency)),\n );\n\nconst mapGetSearchedClients = (\n action: RootAction,\n { apiRequest }: Services,\n) => {\n const payload = preparePayloadOrder(action.payload);\n\n return apiRequest<TOrder[]>({\n isSubscription: true,\n method: 'POST',\n path: '/searchOrder',\n body: payload,\n lambdaFunctionName: config.FunctionNames.searchOrder,\n }).pipe(\n mergeMap((response: any | RequestError) => {\n if (\n response instanceof RequestError &&\n response.code !== undefined\n ) {\n return of(\n searchClientAsync.failure({\n code: response.code as string,\n message: response.message,\n }),\n );\n }\n\n if (response) {\n try {\n const res = JSON.parse(JSON.stringify(response));\n\n return of(searchClientAsync.success(res));\n } catch (e) {\n return of(\n searchClientAsync.failure({\n code: '400',\n message: 'Données indisponibles',\n }),\n );\n }\n }\n\n return of(\n searchClientAsync.failure({\n code: '400',\n message: 'Données indisponibles',\n }),\n );\n }),\n catchError(error => {\n return of(\n searchClientAsync.failure({\n code: error.code,\n message:\n error.code === '0'\n ? error.message\n : JSON.parse(error.message).message,\n }),\n );\n }),\n );\n};\n\nconst searchClientEpic: Epic<RootAction, RootAction, RootState, Services> = (\n action$,\n state$,\n dependency,\n) =>\n action$.pipe(\n filter(isActionOf(searchClientAsync.request)),\n mergeMap(action => mapGetSearchedClients(action, dependency)),\n );\n\nexport {\n fetchOrderAsync,\n searchClientAsync,\n orderEpic,\n mapGetOrder,\n searchClientEpic,\n};\n","import { of } from 'rxjs';\nimport { mergeMap, catchError, filter } from 'rxjs/operators';\nimport {\n createAsyncAction,\n ActionType,\n isActionOf,\n createStandardAction,\n} from 'typesafe-actions';\nimport { ReducerError, RootAction, RootState, Services, TError } from 'Types';\nimport {\n SEARCH_USER_GROUP_REQUEST,\n SEARCH_USER_GROUP_SUCCESS,\n SEARCH_USER_GROUP_FAILURE,\n} from './actionTypes';\nimport { TUser } from 'Models';\nimport { Epic } from 'redux-observable';\n\nexport type TUserPayload = Partial<{\n userName: string;\n email: string;\n firstName: string;\n lastName: string;\n group: string;\n userStatus: string;\n}>;\n\ninterface IResponseClient {\n userList: TUser[];\n code?: string;\n message?: string;\n}\n\nconst searchUserGroupAsync = createAsyncAction(\n SEARCH_USER_GROUP_REQUEST,\n SEARCH_USER_GROUP_SUCCESS,\n SEARCH_USER_GROUP_FAILURE,\n)<TUserPayload, IResponseClient, ReducerError>();\n\nexport type searchUserGroupAction = ActionType<typeof searchUserGroupAsync>;\n\nconst preparePayloadSearchUserGroup = (payload: TUserPayload): TUserPayload => {\n return { ...payload };\n};\n\nconst mapGetSearchUserGroup = (\n action: RootAction,\n { apiRequest }: Services,\n) => {\n const payload = preparePayloadSearchUserGroup(action.payload);\n return apiRequest<IResponseClient>({\n path: '/searchUserGroup',\n method: 'post',\n body: payload,\n isPay: false,\n isSubscription: false,\n }).pipe(\n mergeMap((response: any & TError) => {\n if (\n response.code === 'MISSING_PARAMETER' ||\n response.code === 'NO_RESPONSE_FROM_PARTNER'\n ) {\n return of(\n searchUserGroupAsync.failure({\n code: response.code,\n message: response.description,\n }),\n );\n } else if (response.code === 'EMPTY_RESPONSE') {\n return of(\n searchUserGroupAsync.success({\n userList: [],\n code: response.code,\n message: response.message,\n }),\n );\n }\n return of(searchUserGroupAsync.success(response));\n }),\n catchError(error => {\n return of(\n searchUserGroupAsync.failure({\n code: error.code,\n message: error.description,\n }),\n );\n }),\n );\n};\n\nconst searchUserGroupEpic: Epic<RootAction, RootAction, RootState, Services> = (\n action$,\n state$,\n dependency,\n) =>\n action$.pipe(\n filter(isActionOf(searchUserGroupAsync.request)),\n mergeMap(action => mapGetSearchUserGroup(action, dependency)),\n );\n\nexport { searchUserGroupAsync, searchUserGroupEpic, mapGetSearchUserGroup };\n","import { of } from 'rxjs';\nimport { mergeMap, catchError, filter } from 'rxjs/operators';\nimport {\n createAsyncAction,\n ActionType,\n isActionOf,\n createStandardAction,\n} from 'typesafe-actions';\nimport { ReducerError, RootAction, RootState, Services, TError } from 'Types';\nimport {\n RETRY_FIRST_PAYMENT_REQUEST,\n RETRY_FIRST_PAYMENT_SUCCESS,\n RETRY_FIRST_PAYMENT_FAILURE,\n RETRY_FIRST_PAYMENT_RESET_RESPONSE,\n} from './actionTypes';\nimport { TUser } from 'Models';\nimport { Epic } from 'redux-observable';\n\nexport type TRetryPaymentPayload = Partial<{\n customerNbr: string;\n mode: string;\n}>;\n\ninterface IResponseClient {\n status: string,\n message: string,\n}\n\nconst caseResultRetryFirstPaymentAsync = createAsyncAction(\n RETRY_FIRST_PAYMENT_REQUEST,\n RETRY_FIRST_PAYMENT_SUCCESS,\n RETRY_FIRST_PAYMENT_FAILURE,\n RETRY_FIRST_PAYMENT_RESET_RESPONSE,\n)<TRetryPaymentPayload, IResponseClient, ReducerError>();\n\nconst retryFirstPayment = createStandardAction(\n RETRY_FIRST_PAYMENT_RESET_RESPONSE,\n)();\n\nexport type RetryFirstPaymentAction =\n | ActionType<typeof caseResultRetryFirstPaymentAsync>\n | ActionType<typeof retryFirstPayment>;\n\nconst preparePayloadClientSpace = (payload: TRetryPaymentPayload): TRetryPaymentPayload => {\n return { ...payload };\n};\n\nconst mapGetRetryFirstPayment = (action: RootAction, { apiRequest }: Services) => {\n const payload = preparePayloadClientSpace(action.payload);\n return apiRequest<IResponseClient>({\n path: '/retryFirstPayment',\n method: 'POST',\n body: payload,\n isSubscription: true,\n }).pipe(\n mergeMap((response: any & TError) => {\n if (\n response.code === 'MISSING_PARAMETER' ||\n response.code === 'NO_RESPONSE_FROM_PARTNER'\n ) {\n return of(\n caseResultRetryFirstPaymentAsync.failure({\n code: response.code,\n message: response.description,\n }),\n );\n }\n return of(caseResultRetryFirstPaymentAsync.success(response));\n }),\n catchError(error => {\n return of(\n caseResultRetryFirstPaymentAsync.failure({\n code: error.code,\n message: error.description,\n }),\n );\n }),\n );\n};\n\nconst RetryFirstPaymentEpic: Epic<\n RootAction,\n RootAction,\n RootState,\n Services\n> = (action$, state$, dependency) =>\n action$.pipe(\n filter(isActionOf(caseResultRetryFirstPaymentAsync.request)),\n mergeMap(action => mapGetRetryFirstPayment(action, dependency)),\n );\n\nexport {\n caseResultRetryFirstPaymentAsync,\n RetryFirstPaymentEpic,\n mapGetRetryFirstPayment,\n retryFirstPayment,\n};\n","import { of } from 'rxjs';\nimport { mergeMap, catchError, filter } from 'rxjs/operators';\nimport {\n createAsyncAction,\n ActionType,\n isActionOf,\n createStandardAction,\n} from 'typesafe-actions';\nimport { ReducerError, RootAction, RootState, Services, TError } from 'Types';\nimport {\n CREATE_GROUP_REQUEST,\n CREATE_GROUP_SUCCESS,\n CREATE_GROUP_FAILURE,\n RESET_GROUP_RESPONSE,\n} from './actionTypes';\nimport { TResponse } from 'Models';\nimport { Epic } from 'redux-observable';\n\nexport type TAuthorizationSchemaSubMenu = {\n id: string;\n label: string;\n root: string;\n groupMode: string;\n subGroupMode: string;\n actionMode: string;\n userLimited?: string;\n};\n\nexport type TAuthorizationSchema = {\n id: string;\n label: string;\n subMenu: TAuthorizationSchemaSubMenu[];\n};\n\nexport type TGroupPayload = Partial<{\n group: string;\n autorizationsScheme: TAuthorizationSchema[];\n}>;\n\nconst createGroupAsync = createAsyncAction(\n CREATE_GROUP_REQUEST,\n CREATE_GROUP_SUCCESS,\n CREATE_GROUP_FAILURE,\n)<TGroupPayload, TResponse, ReducerError>();\n\nconst resetGroupResponse = createStandardAction(RESET_GROUP_RESPONSE)();\n\nexport type CreateGroupAction =\n | ActionType<typeof createGroupAsync>\n | ActionType<typeof resetGroupResponse>;\n\nconst preparePayloadCreateGroup = (payload: TGroupPayload): TGroupPayload => {\n return { ...payload };\n};\n\nconst mapCreateGroup = (action: RootAction, { apiRequest }: Services) => {\n const payload = preparePayloadCreateGroup(action.payload);\n return apiRequest<TResponse>({\n path: '/createGroup',\n method: 'post',\n body: payload,\n isPay: false,\n isSubscription: false,\n }).pipe(\n mergeMap((response: any & TError) => {\n if (\n response.code === 'MISSING_PARAMETER' ||\n response.code === 'NO_RESPONSE_FROM_PARTNER'\n ) {\n return of(\n createGroupAsync.failure({\n code: response.code,\n message: response.description,\n }),\n );\n }\n return of(createGroupAsync.success(response));\n }),\n catchError(error => {\n return of(\n createGroupAsync.failure({\n code: error.code,\n message: error.description,\n }),\n );\n }),\n );\n};\n\nconst createGroupEpic: Epic<RootAction, RootAction, RootState, Services> = (\n action$,\n state$,\n dependency,\n) =>\n action$.pipe(\n filter(isActionOf(createGroupAsync.request)),\n mergeMap(action => mapCreateGroup(action, dependency)),\n );\n\nexport {\n createGroupAsync,\n createGroupEpic,\n mapCreateGroup,\n resetGroupResponse,\n};\n","import { of } from 'rxjs';\nimport { mergeMap, catchError, filter } from 'rxjs/operators';\nimport {\n createAsyncAction,\n ActionType,\n isActionOf,\n createStandardAction,\n} from 'typesafe-actions';\nimport { ReducerError, RootAction, RootState, Services, TError } from 'Types';\nimport {\n GET_GROUP_REQUEST,\n GET_GROUP_SUCCESS,\n GET_GROUP_FAILURE,\n RESET_USER_GROUP_RESPONSE,\n} from './actionTypes';\nimport { Epic } from 'redux-observable';\n\ninterface IResponseClient {\n groupList: [];\n}\n\nexport type TGetGroupPayload = Partial<{\n group: string;\n}>;\n\nconst getGroupAsync = createAsyncAction(\n GET_GROUP_REQUEST,\n GET_GROUP_SUCCESS,\n GET_GROUP_FAILURE,\n RESET_USER_GROUP_RESPONSE,\n)<undefined, IResponseClient, ReducerError>();\n\nconst resetGroupListResponse = createStandardAction(\n RESET_USER_GROUP_RESPONSE,\n)();\n\nexport type getGroupAction =\n | ActionType<typeof getGroupAsync>\n | ActionType<typeof resetGroupListResponse>;\n\nconst preparePayloadGetGroup = (payload: string): string => {\n return payload;\n};\n\nconst mapGetGroup = (action: RootAction, { apiRequest }: Services) => {\n const payload = preparePayloadGetGroup(action.payload);\n return apiRequest<IResponseClient>({\n path: '/getGroup',\n method: 'post',\n body: 'group',\n isPay: false,\n isSubscription: false,\n }).pipe(\n mergeMap((response: any & TError) => {\n if (\n response.code === 'MISSING_PARAMETER' ||\n response.code === 'NO_RESPONSE_FROM_PARTNER'\n ) {\n return of(\n getGroupAsync.failure({\n code: response.code,\n message: response.description,\n }),\n );\n }\n return of(getGroupAsync.success(response));\n }),\n catchError(error => {\n return of(\n getGroupAsync.failure({\n code: error.code,\n message: error.description,\n }),\n );\n }),\n );\n};\n\nconst getGroupEpic: Epic<RootAction, RootAction, RootState, Services> = (\n action$,\n state$,\n dependency,\n) =>\n action$.pipe(\n filter(isActionOf(getGroupAsync.request)),\n mergeMap(action => mapGetGroup(action, dependency)),\n );\n\nexport { getGroupAsync, getGroupEpic, mapGetGroup, resetGroupListResponse };\n","import { of } from 'rxjs';\nimport { mergeMap, catchError, filter } from 'rxjs/operators';\nimport {\n createAsyncAction,\n ActionType,\n isActionOf,\n createStandardAction,\n} from 'typesafe-actions';\nimport { ReducerError, RootAction, RootState, Services, TError } from 'Types';\nimport {\n CREATE_USER_REQUEST,\n CREATE_USER_SUCCESS,\n CREATE_USER_FAILURE,\n RESET_CREATE_USER_RESPONSE,\n} from './actionTypes';\nimport { TResponse } from 'Models';\nimport { Epic } from 'redux-observable';\n\nexport type TCreateUserPayload = Partial<{\n group: string;\n firstName: string;\n lastName: string;\n email: string;\n civility: string;\n userName?: string;\n}>;\n\nconst createUserAsync = createAsyncAction(\n CREATE_USER_REQUEST,\n CREATE_USER_SUCCESS,\n CREATE_USER_FAILURE,\n)<TCreateUserPayload, TResponse, ReducerError>();\n\nconst resetCreateUserResponse = createStandardAction(\n RESET_CREATE_USER_RESPONSE,\n)();\n\nexport type CreateUserAction =\n | ActionType<typeof createUserAsync>\n | ActionType<typeof resetCreateUserResponse>;\n\nconst preparePayloadCreateUser = (\n payload: TCreateUserPayload,\n): TCreateUserPayload => {\n return { ...payload };\n};\n\nconst mapCreateUser = (action: RootAction, { apiRequest }: Services) => {\n const payload = preparePayloadCreateUser(action.payload);\n return apiRequest<TResponse>({\n path: '/createUser',\n method: 'post',\n body: payload,\n isPay: false,\n isSubscription: false,\n }).pipe(\n mergeMap((response: any & TError) => {\n if (\n response.code === 'MISSING_PARAMETER' ||\n response.code === 'NO_RESPONSE_FROM_PARTNER'\n ) {\n return of(\n createUserAsync.failure({\n code: response.code,\n message: response.description,\n }),\n );\n }\n return of(createUserAsync.success(response));\n }),\n catchError(error => {\n return of(\n createUserAsync.failure({\n code: error.code,\n message: error.description,\n }),\n );\n }),\n );\n};\n\nconst createUserEpic: Epic<RootAction, RootAction, RootState, Services> = (\n action$,\n state$,\n dependency,\n) =>\n action$.pipe(\n filter(isActionOf(createUserAsync.request)),\n mergeMap(action => mapCreateUser(action, dependency)),\n );\n\nexport {\n createUserAsync,\n createUserEpic,\n mapCreateUser,\n resetCreateUserResponse,\n};\n","import { of } from 'rxjs';\nimport { mergeMap, catchError, filter } from 'rxjs/operators';\nimport { createAsyncAction, ActionType, isActionOf } from 'typesafe-actions';\nimport { ReducerError, RootAction, RootState, Services, TError } from 'Types';\nimport {\n CREATE_PASSWORD_FAILURE,\n CREATE_PASSWORD_SUCCESS,\n CREATE_PASSWORD_REQUEST,\n} from './actionTypes';\nimport { TResponse } from 'Models';\nimport { Epic } from 'redux-observable';\nimport { CreatePasswordMode } from '../utils/enums';\n\nexport type TCreatePasswordPayload = Partial<{\n customerNbr: string;\n temporaryPassword: string;\n newPassword: string;\n mode: CreatePasswordMode;\n}>;\n\nconst createPasswordAsync = createAsyncAction(\n CREATE_PASSWORD_FAILURE,\n CREATE_PASSWORD_SUCCESS,\n CREATE_PASSWORD_REQUEST,\n)<TCreatePasswordPayload, TResponse, ReducerError>();\n\nexport type CreatePasswordAction = ActionType<typeof createPasswordAsync>;\n\nconst preparePayloadCreatePssword = (\n payload: TCreatePasswordPayload,\n): TCreatePasswordPayload => {\n return { ...payload };\n};\n\nconst mapCreatePassword = (action: RootAction, { apiRequest }: Services) => {\n const payload = preparePayloadCreatePssword(action.payload);\n return apiRequest<TResponse>({\n path: '/resetPassword',\n method: 'post',\n body: payload,\n isPay: false,\n isSubscription: false,\n }).pipe(\n mergeMap((response: TResponse | TError) => {\n if (\n response.code === 'MISSING_PARAMETER' ||\n response.code === 'UNEXPECTED_ERROR' ||\n response.code === 'NO_RESPONSE_FROM_PARTNER'\n ) {\n return of(\n createPasswordAsync.failure({\n code: response.code,\n message: response.message,\n }),\n );\n }\n return of(createPasswordAsync.success(response as TResponse));\n }),\n catchError(error => {\n return of(\n createPasswordAsync.failure({\n code: error.code,\n message: error.description,\n }),\n );\n }),\n );\n};\n\nconst createPasswordEpic: Epic<RootAction, RootAction, RootState, Services> = (\n action$,\n state$,\n dependency,\n) =>\n action$.pipe(\n filter(isActionOf(createPasswordAsync.request)),\n mergeMap(action => mapCreatePassword(action, dependency)),\n );\n\nexport { createPasswordAsync, createPasswordEpic, mapCreatePassword };\n","import { of } from 'rxjs';\nimport { mergeMap, catchError, filter } from 'rxjs/operators';\nimport {\n createAsyncAction,\n ActionType,\n isActionOf,\n createStandardAction,\n} from 'typesafe-actions';\nimport { ReducerError, RootAction, RootState, Services, TError } from 'Types';\nimport {\n MANAGE_USER_REQUEST,\n MANAGE_USER_SUCCESS,\n MANAGE_USER_FAILURE,\n RESET_RESPONSE,\n} from './actionTypes';\nimport { TResponse } from 'Models';\nimport { Epic } from 'redux-observable';\n\nexport type TManageUserPayload = Partial<{\n mode: string;\n firstName: string;\n lastName: string;\n userName: string;\n}>;\n\nconst manageUserAsync = createAsyncAction(\n MANAGE_USER_REQUEST,\n MANAGE_USER_SUCCESS,\n MANAGE_USER_FAILURE,\n)<TManageUserPayload, TResponse, ReducerError>();\n\nconst resetManageUserResponse = createStandardAction(RESET_RESPONSE)();\n\nexport type ManageUserAction =\n | ActionType<typeof manageUserAsync>\n | ActionType<typeof resetManageUserResponse>;\n\nconst preparePayloadManageUser = (\n payload: TManageUserPayload,\n): TManageUserPayload => {\n return { ...payload };\n};\n\nconst mapManageUser = (action: RootAction, { apiRequest }: Services) => {\n const payload = preparePayloadManageUser(action.payload);\n return apiRequest<TResponse>({\n path: '/manageUser',\n method: 'post',\n body: payload,\n isPay: false,\n isSubscription: false,\n }).pipe(\n mergeMap((response: any & TError) => {\n if (\n response.code === 'MISSING_PARAMETER' ||\n response.code === 'NO_RESPONSE_FROM_PARTNER'\n ) {\n return of(\n manageUserAsync.failure({\n code: response.code,\n message: response.description,\n }),\n );\n }\n return of(manageUserAsync.success(response));\n }),\n catchError(error => {\n return of(\n manageUserAsync.failure({\n code: error.code,\n message: error.description,\n }),\n );\n }),\n );\n};\n\nconst manageUserEpic: Epic<RootAction, RootAction, RootState, Services> = (\n action$,\n state$,\n dependency,\n) =>\n action$.pipe(\n filter(isActionOf(manageUserAsync.request)),\n mergeMap(action => mapManageUser(action, dependency)),\n );\n\nexport {\n manageUserAsync,\n manageUserEpic,\n mapManageUser,\n resetManageUserResponse,\n};\n","import { of } from 'rxjs';\nimport { mergeMap, catchError, filter } from 'rxjs/operators';\nimport {\n createAsyncAction,\n ActionType,\n isActionOf,\n createStandardAction,\n} from 'typesafe-actions';\nimport { ReducerError, RootAction, RootState, Services, TError } from 'Types';\nimport {\n TRANSFER_GET_CONTRACT_REQUEST,\n TRANSFER_GET_CONTRACT_SUCCESS,\n TRANSFER_GET_CONTRACT_FAILURE,\n REMOVE_GET_TRANSFER_CONTRACT_MESSAGE,\n TRANSFER_CONTRACT_REQUEST,\n TRANSFER_CONTRACT_SUCCESS,\n TRANSFER_CONTRACT_FAILURE,\n REMOVE_TRANSFER_CONTRACT_MESSAGE,\n} from './actionTypes';\nimport { Epic } from 'redux-observable';\n\nimport { TCustomer } from '../constants/key-system';\nimport config from '../utils/config';\nimport { TOrderPayload } from './searchOrder.actions';\nimport { TOrder } from 'Models';\nimport { RequestError } from '../utils/network/errors';\n\nexport type TCustomerContractPayload = Partial<{\n customerId: string;\n contractId: string;\n clientFirstName: string;\n clientLastName: string;\n companyName: string;\n fromDate: string;\n toDate: string;\n}>;\n\nexport interface ITransferContract {\n customerNbrOutdated: string;\n customerNbrTargeted: string;\n contractNbr: string;\n userName: string;\n}\n\ninterface IResponseClient {\n customers: TCustomer[];\n}\n\nconst transferGetContractAsync = createAsyncAction(\n TRANSFER_GET_CONTRACT_REQUEST,\n TRANSFER_GET_CONTRACT_SUCCESS,\n TRANSFER_GET_CONTRACT_FAILURE,\n)<TCustomerContractPayload, TOrder[], ReducerError>();\n\nconst transferContractAsync = createAsyncAction(\n TRANSFER_CONTRACT_REQUEST,\n TRANSFER_CONTRACT_SUCCESS,\n TRANSFER_CONTRACT_FAILURE,\n)<ITransferContract, any, ReducerError>();\n\nconst resetResponse = createStandardAction(\n REMOVE_GET_TRANSFER_CONTRACT_MESSAGE,\n)();\n\nconst resetResponseTransfer = createStandardAction(\n REMOVE_TRANSFER_CONTRACT_MESSAGE,\n)();\n\nexport type TransferContractAction =\n | ActionType<typeof transferGetContractAsync>\n | ActionType<typeof transferContractAsync>\n | ActionType<typeof resetResponseTransfer>\n | ActionType<typeof resetResponse>;\n\nconst preparePayloadGetTransferContract = (\n payload: TCustomerContractPayload,\n): TCustomerContractPayload => {\n return { ...payload };\n};\n\nconst preparePayloadOrder = (customerNumber: string): TOrderPayload => {\n return {\n fromDate: '',\n toDate: '',\n email: '',\n orderNumber: customerNumber,\n firstName: '',\n lastName: '',\n processType: '',\n phone: '',\n externalReference: '',\n channel: '',\n createdBy: '',\n };\n};\n\nconst mapGetTransferContract = (\n action: RootAction,\n { apiRequest }: Services,\n) => {\n const payload = preparePayloadOrder(action.payload.customerId);\n\n return apiRequest<TOrder[]>({\n isSubscription: true,\n method: 'POST',\n path: '/searchOrder',\n body: payload,\n lambdaFunctionName: config.FunctionNames.searchOrder,\n }).pipe(\n mergeMap((response: any | RequestError) => {\n if (\n response instanceof RequestError &&\n response.code !== undefined\n ) {\n return of(\n transferGetContractAsync.failure({\n code: response.code as string,\n message: response.message,\n }),\n );\n }\n\n if (response) {\n try {\n const res = JSON.parse(JSON.stringify(response));\n return of(transferGetContractAsync.success(res));\n } catch (e) {\n return of(\n transferGetContractAsync.failure({\n code: '500',\n message: 'erreur interne',\n }),\n );\n }\n }\n return of(transferGetContractAsync.success(response));\n }),\n catchError(error => {\n return of(\n transferGetContractAsync.failure({\n code: '400',\n message: 'Données indisponibles',\n }),\n );\n }),\n );\n};\nconst preparePayloadTransferContract = (\n payload: ITransferContract,\n): ITransferContract => {\n return { ...payload };\n};\nconst mapTransferContract = (action: RootAction, { apiRequest }: Services) => {\n const payload = preparePayloadTransferContract(action.payload);\n return apiRequest<any>({\n path: '/transferContract',\n method: 'post',\n body: payload,\n }).pipe(\n mergeMap((response: any & TError) => {\n if (\n response.code === 'MISSING_PARAMETER' ||\n response.code === '400' ||\n response.code === 'NO_RESPONSE_FROM_PARTNER'\n ) {\n return of(\n transferContractAsync.failure({\n code: response.code,\n message: response.description || response.message,\n }),\n );\n }\n return of(transferContractAsync.success(response));\n }),\n catchError(error => {\n return of(\n transferContractAsync.failure({\n code: error.code,\n message: error.description || error.message,\n }),\n );\n }),\n );\n};\n\nconst transferGetContractEpic: Epic<\n RootAction,\n RootAction,\n RootState,\n Services\n> = (action$, state$, dependency) =>\n action$.pipe(\n filter(isActionOf(transferGetContractAsync.request)),\n mergeMap(action => mapGetTransferContract(action, dependency)),\n );\n\nconst transferContractEpic: Epic<\n RootAction,\n RootAction,\n RootState,\n Services\n> = (action$, state$, dependency) =>\n action$.pipe(\n filter(isActionOf(transferContractAsync.request)),\n mergeMap(action => mapTransferContract(action, dependency)),\n );\n\nexport {\n transferGetContractAsync,\n transferGetContractEpic,\n mapGetTransferContract,\n resetResponse,\n mapTransferContract,\n transferContractAsync,\n resetResponseTransfer,\n transferContractEpic,\n};\n","import { of } from 'rxjs';\nimport { mergeMap, catchError, filter } from 'rxjs/operators';\nimport {\n createAsyncAction,\n ActionType,\n isActionOf,\n createStandardAction,\n} from 'typesafe-actions';\nimport { ReducerError, RootAction, RootState, Services, TError } from 'Types';\nimport {\n ADMIN_CLIENT_SPACE_REQUEST,\n ADMIN_CLIENT_SPACE_SUCCESS,\n ADMIN_CLIENT_SPACE_FAILURE,\n ADMIN_CLIENT_SPACE_RESET_RESPONSE,\n} from './actionTypes';\nimport { TUser } from 'Models';\nimport { Epic } from 'redux-observable';\n\nexport type TUserPayload = Partial<{\n userName: string;\n email: string;\n firstName: string;\n lastName: string;\n group: string;\n userStatus: string;\n}>;\n\ninterface IResponseClient {\n userList: TUser[];\n}\n\nconst adminClientSpaceAsync = createAsyncAction(\n ADMIN_CLIENT_SPACE_REQUEST,\n ADMIN_CLIENT_SPACE_SUCCESS,\n ADMIN_CLIENT_SPACE_FAILURE,\n ADMIN_CLIENT_SPACE_RESET_RESPONSE,\n)<TUserPayload, IResponseClient, ReducerError>();\n\nconst resetAdminClientSpaceResponse = createStandardAction(\n ADMIN_CLIENT_SPACE_RESET_RESPONSE,\n)();\n\nexport type AdminClientSpaceAction =\n | ActionType<typeof adminClientSpaceAsync>\n | ActionType<typeof resetAdminClientSpaceResponse>;\n\nconst preparePayloadClientSpace = (payload: TUserPayload): TUserPayload => {\n return { ...payload };\n};\n\nconst mapGetClientSpace = (action: RootAction, { apiRequest }: Services) => {\n const payload = preparePayloadClientSpace(action.payload);\n return apiRequest<IResponseClient>({\n path: '/searchUserGroup',\n method: 'post',\n body: payload,\n isPay: false,\n isSubscription: false,\n }).pipe(\n mergeMap((response: any & TError) => {\n if (\n response.code === 'MISSING_PARAMETER' ||\n response.code === 'NO_RESPONSE_FROM_PARTNER'\n ) {\n return of(\n adminClientSpaceAsync.failure({\n code: response.code,\n message: response.description,\n }),\n );\n }\n return of(adminClientSpaceAsync.success(response));\n }),\n catchError(error => {\n return of(\n adminClientSpaceAsync.failure({\n code: error.code,\n message: error.description,\n }),\n );\n }),\n );\n};\n\nconst adminClientSpaceEpic: Epic<\n RootAction,\n RootAction,\n RootState,\n Services\n> = (action$, state$, dependency) =>\n action$.pipe(\n filter(isActionOf(adminClientSpaceAsync.request)),\n mergeMap(action => mapGetClientSpace(action, dependency)),\n );\n\nexport {\n adminClientSpaceAsync,\n adminClientSpaceEpic,\n mapGetClientSpace,\n resetAdminClientSpaceResponse,\n};\n","import { TEPInvoice } from 'Models';\nimport { Epic } from 'redux-observable';\nimport { of, throwError } from 'rxjs';\nimport { mergeMap, catchError, filter } from 'rxjs/operators';\n\nimport { RootAction, RootState, Services } from 'Types';\n\nimport {\n createAsyncAction,\n isActionOf,\n ActionType,\n createAction,\n} from 'typesafe-actions';\nimport {\n PAYMENT_CB_FAILURE,\n PAYMENT_CB_REQUEST,\n PAYMENT_CB_SUCCESS,\n RESET_PAYMENT_CB_MODAL,\n} from './actionTypes';\n\nexport type TPaymentCBRequest = {\n dueDate: string;\n payment: TEPInvoice;\n};\n\nexport type TPaymentCBResponse = {\n adhocPaymentId: string;\n stripe: {\n billName: string;\n amount: string;\n clientSecret: string;\n };\n iframe: string;\n transactionId: string;\n};\n\nconst createPaymentCBAsync = createAsyncAction(\n PAYMENT_CB_REQUEST,\n PAYMENT_CB_SUCCESS,\n PAYMENT_CB_FAILURE,\n)<TPaymentCBRequest, TPaymentCBResponse, any>();\n\nconst resetModal = createAction(RESET_PAYMENT_CB_MODAL);\n\nexport type PaymentCBAction =\n | ActionType<typeof createPaymentCBAsync>\n | ActionType<typeof resetModal>;\n\nconst prepareCreatePaymentPayload = ({\n payment,\n dueDate,\n}: TPaymentCBRequest) => {\n return {\n payment,\n dueDate,\n mode: 'CREATE_PAYMENT',\n customerNbr: payment.partner_ref,\n contractNbr: payment.contract,\n };\n};\n\nconst mapCreateCBPayment = (action: RootAction, { apiRequest }: Services) => {\n const payload = prepareCreatePaymentPayload(action.payload);\n return apiRequest<TPaymentCBResponse>({\n path: '/paymentCB',\n method: 'post',\n body: payload,\n isSubscription: true,\n }).pipe(\n mergeMap((response: TPaymentCBResponse) => {\n if (response) return of(createPaymentCBAsync.success(response));\n return throwError({ code: '400', message: response });\n }),\n catchError(error => {\n return of(createPaymentCBAsync.failure(error));\n }),\n );\n};\n\nconst createCBPaymentEpic: Epic<RootAction, RootAction, RootState, Services> = (\n action$,\n state$,\n dependency,\n) =>\n action$.pipe(\n filter(isActionOf(createPaymentCBAsync.request)),\n mergeMap(action => mapCreateCBPayment(action, dependency)),\n );\n\nexport {\n createCBPaymentEpic,\n mapCreateCBPayment,\n createPaymentCBAsync,\n resetModal,\n};\n","import { combineEpics } from 'redux-observable';\n\nimport {\n fetchLoginEpic,\n resetPasswordEpic,\n reinitSubscriptionEmailEpic,\n} from '../_actions/auth.actions';\nimport {\n fetchContextEpic,\n updateCustomerEpic,\n updateBillingEpic,\n updatePasswordEpic,\n createSponsorEpic,\n} from '../_actions/profile.actions';\nimport { fetchContractEpic } from '../_actions/contract.actions';\nimport { fetchEventEpic, createEventEpic } from '../_actions/event.actions';\nimport {\n fetchMeterEpic,\n fetchMeterReadingEpic,\n createIndexEpic,\n} from '../_actions/consumption.actions';\nimport { fetchFileEpic } from '../_actions/file.actions';\nimport {\n fetchPiecesEpic,\n fetchEPInvoiceEpic,\n createPaymentEpic,\n fetchBalanceEpic,\n getSupportingDocumentsEpic,\n} from '../_actions/payment.actions';\nimport {\n fetchPackageEpic,\n fetchProductEpic,\n fetchOfferEpic,\n updatePackageEpic,\n} from '../_actions/package.actions';\n\nimport {\n customerContractEpic,\n uploadAmendmentsEpic,\n} from '../_actions/customerContract.actions';\nimport { orderEpic, searchClientEpic } from '../_actions/searchOrder.actions';\nimport { searchUserGroupEpic } from '../_actions/searchUserGroup.actions';\nimport { RetryFirstPaymentEpic } from '../_actions/caseResult.action';\nimport { createGroupEpic } from '../_actions/createGroup.actions';\nimport { getGroupEpic } from '../_actions/getGroup.actions';\nimport { createUserEpic } from '../_actions/createUser.actions';\nimport { createPasswordEpic } from '../_actions/createPassword.actions';\nimport { manageUserEpic } from '../_actions/manageUser.actions';\nimport {\n transferGetContractEpic,\n transferContractEpic,\n} from '../_actions/transferContract.actions';\nimport { adminClientSpaceEpic } from '../_actions/administrationClientSpace.actions';\n\nimport { createCBPaymentEpic } from '../_actions/paymentCB.actions';\n\nexport default combineEpics(\n fetchLoginEpic,\n resetPasswordEpic,\n getSupportingDocumentsEpic,\n fetchContextEpic,\n fetchContractEpic,\n fetchEventEpic,\n createEventEpic,\n updateCustomerEpic,\n updateBillingEpic,\n fetchMeterEpic,\n fetchMeterReadingEpic,\n createIndexEpic,\n uploadAmendmentsEpic,\n updatePasswordEpic,\n createSponsorEpic,\n fetchFileEpic,\n fetchPiecesEpic,\n fetchEPInvoiceEpic,\n transferContractEpic,\n createPaymentEpic,\n fetchBalanceEpic,\n fetchPackageEpic,\n fetchProductEpic,\n fetchOfferEpic,\n updatePackageEpic,\n customerContractEpic,\n reinitSubscriptionEmailEpic,\n orderEpic,\n searchUserGroupEpic,\n createGroupEpic,\n getGroupEpic,\n createUserEpic,\n manageUserEpic,\n transferGetContractEpic,\n adminClientSpaceEpic,\n createCBPaymentEpic,\n searchClientEpic,\n createPasswordEpic,\n RetryFirstPaymentEpic,\n);\n","import { Reducer } from 'redux';\nimport { getType } from 'typesafe-actions';\n\nimport * as actions from '../_actions/auth.actions';\nimport * as contractActions from '../_actions/contract.actions';\nimport * as profileActions from '../_actions/profile.actions';\nimport * as eventActions from '../_actions/event.actions';\nimport * as consumptionActions from '../_actions/consumption.actions';\nimport * as fileActions from '../_actions/file.actions';\nimport * as paymentActions from '../_actions/payment.actions';\nimport * as packageActions from '../_actions/package.actions';\nimport * as customerContractActions from '../_actions/customerContract.actions';\nimport * as orderActions from '../_actions/searchOrder.actions';\nimport * as userGroupActions from '../_actions/searchUserGroup.actions';\nimport * as createGroupActions from '../_actions/createGroup.actions';\nimport * as getGroupActions from '../_actions/getGroup.actions';\nimport * as createUserActions from '../_actions/createUser.actions';\nimport * as manageUserActions from '../_actions/manageUser.actions';\nimport * as transferContractActions from '../_actions/transferContract.actions';\nimport * as adminClientSpaceActions from '../_actions/administrationClientSpace.actions';\nimport * as paymentCBActions from '../_actions/paymentCB.actions';\nimport * as createPasswordActions from '../_actions/createPassword.actions';\nimport * as caseResultActions from '../_actions/caseResult.action';\n\nimport { TScheme } from 'Models';\n\nexport type AuthState = Readonly<{\n loading: boolean;\n error?: string;\n message?: string;\n token?: string;\n userId?: string;\n unauthorized: boolean;\n autorizationsScheme: TScheme[];\n groupe?: string;\n reinit?: string;\n}>;\n\nconst initialScheme: TScheme = {\n id: '',\n label: '',\n subMenu: [\n {\n id: '',\n label: '',\n root: '',\n groupMode: '',\n subGroupMode: '',\n actionMode: '',\n },\n ],\n};\n\nexport const initialState: AuthState = {\n loading: false,\n error: undefined,\n token: undefined,\n message: undefined,\n userId: undefined,\n unauthorized: false,\n groupe: undefined,\n autorizationsScheme: [{ ...initialScheme }],\n reinit: undefined,\n};\n\ntype Actions =\n | actions.AuthAction\n | contractActions.ContractAction\n | profileActions.ProfileAction\n | eventActions.EventAction\n | consumptionActions.ConsumptionAction\n | fileActions.FileActions\n | paymentActions.PiecesAction\n | packageActions.PackageAction\n | customerContractActions.CustomersContractAction\n | userGroupActions.searchUserGroupAction\n | createGroupActions.CreateGroupAction\n | getGroupActions.getGroupAction\n | createUserActions.CreateUserAction\n | manageUserActions.ManageUserAction\n | transferContractActions.TransferContractAction\n | orderActions.FetchOrderAction\n | paymentCBActions.PaymentCBAction\n | adminClientSpaceActions.AdminClientSpaceAction\n | createPasswordActions.CreatePasswordAction\n | caseResultActions.RetryFirstPaymentAction;\n\nconst authReducer: Reducer<AuthState, Actions> = (\n state = initialState,\n action: Actions,\n) => {\n switch (action.type) {\n case getType(actions.resetAuthErrors):\n return {\n ...state,\n error: undefined,\n message: undefined,\n code: undefined,\n };\n case getType(actions.refreshSessionExpirationStatus):\n return {\n ...state,\n unauthorized: action.payload.valueOf(),\n };\n case getType(actions.removeReinitSubscriptionMessage):\n return {\n ...state,\n reinit: '',\n };\n case getType(actions.removeError):\n return {\n ...state,\n error: 'no errors occurred',\n };\n case getType(actions.fetchLoginAsync.request):\n case getType(actions.reinitSubscriptionEmailAsync.request):\n case getType(createPasswordActions.createPasswordAsync.request):\n case getType(caseResultActions.caseResultRetryFirstPaymentAsync.request):\n case getType(actions.resetPasswordAsync.request): {\n return {\n ...state,\n loading: true,\n error: undefined,\n message: undefined,\n code: undefined,\n };\n }\n\n case getType(createPasswordActions.createPasswordAsync.success):\n return {\n ...state,\n loading: false,\n message: action.payload.message,\n error: undefined,\n code: action.payload.code,\n };\n case getType(caseResultActions.caseResultRetryFirstPaymentAsync.success):\n return {\n ...state,\n loading: false,\n message: action.payload.message,\n error: undefined,\n code: action.payload.status,\n };\n case getType(caseResultActions.caseResultRetryFirstPaymentAsync.failure):\n return {\n ...state,\n loading: false,\n message: action.payload.message,\n error: undefined,\n code: action.payload.code,\n };\n case getType(createPasswordActions.createPasswordAsync.failure):\n return {\n ...state,\n loading: false,\n error: action.payload.message,\n message: undefined,\n code: action.payload.code,\n };\n\n case getType(actions.fetchLoginAsync.failure): {\n return {\n ...state,\n loading: false,\n error: action.payload.error,\n };\n }\n\n case getType(actions.fetchLoginAsync.success): {\n return {\n ...state,\n loading: false,\n token: action.payload.token,\n userId: action.payload.userId,\n groupe: action.payload.groupe,\n autorizationsScheme:\n action.payload.autorizationsScheme !== undefined\n ? [...action.payload.autorizationsScheme]\n : [{ ...initialScheme }],\n };\n }\n\n case getType(actions.resetPasswordAsync.failure): {\n return {\n ...state,\n loading: false,\n message: undefined,\n error: action.payload,\n };\n }\n\n case getType(actions.resetPasswordAsync.success): {\n return {\n ...state,\n loading: false,\n error: undefined,\n message: action.payload,\n };\n }\n\n case getType(actions.reinitSubscriptionEmailAsync.failure): {\n return {\n ...state,\n loading: false,\n error: action.payload,\n };\n }\n\n case getType(actions.reinitSubscriptionEmailAsync.success): {\n return {\n ...state,\n loading: false,\n reinit: action.payload,\n };\n }\n case getType(paymentCBActions.createPaymentCBAsync.request):\n case getType(actions.casesExtractAsync.request):\n case getType(contractActions.fetchContractAsync.request):\n case getType(eventActions.createEventAsync.request):\n case getType(adminClientSpaceActions.adminClientSpaceAsync.request):\n case getType(eventActions.fetchEventAsync.request):\n case getType(orderActions.searchClientAsync.request):\n case getType(consumptionActions.fetchMeterConfigAsync.request):\n case getType(consumptionActions.fetchMeterReadingAsync.request):\n case getType(consumptionActions.createIndexAsync.request):\n case getType(profileActions.fetchContextAsync.request):\n case getType(profileActions.updatePasswordAsync.request):\n case getType(profileActions.updateCustomerAsync.request):\n case getType(profileActions.updateBillingAsync.request):\n case getType(fileActions.fetchFilesListAsync.request):\n case getType(paymentActions.createPaymentAsync.request):\n case getType(paymentActions.fetchPiecesAsync.request):\n case getType(paymentActions.fetchEPInvoicesAsync.request):\n case getType(profileActions.createSponsorAsync.request):\n case getType(packageActions.fetchPackageAsync.request):\n case getType(createGroupActions.createGroupAsync.request):\n case getType(getGroupActions.getGroupAsync.request):\n case getType(packageActions.fetchProductAsync.request):\n case getType(manageUserActions.manageUserAsync.request):\n case getType(createUserActions.createUserAsync.request):\n case getType(\n customerContractActions.fetchCustomerContractAsync.request,\n ):\n case getType(customerContractActions.uploadAmendmentsAsync.request):\n case getType(orderActions.fetchOrderAsync.request):\n case getType(userGroupActions.searchUserGroupAsync.request):\n case getType(transferContractActions.transferGetContractAsync.request):\n case getType(transferContractActions.transferContractAsync.request):\n case getType(packageActions.updatePackageAsync.request): {\n return {\n ...state,\n loading: true,\n };\n }\n case getType(paymentCBActions.createPaymentCBAsync.success):\n case getType(actions.casesExtractAsync.success):\n case getType(contractActions.fetchContractAsync.success):\n case getType(eventActions.fetchEventAsync.success):\n case getType(eventActions.createEventAsync.success):\n case getType(consumptionActions.fetchMeterConfigAsync.success):\n case getType(consumptionActions.fetchMeterReadingAsync.success):\n case getType(consumptionActions.createIndexAsync.success):\n case getType(profileActions.fetchContextAsync.success):\n case getType(profileActions.updatePasswordAsync.success):\n case getType(orderActions.searchClientAsync.success):\n case getType(profileActions.updateCustomerAsync.success):\n case getType(profileActions.updateBillingAsync.success):\n case getType(profileActions.createSponsorAsync.success):\n case getType(fileActions.fetchFilesListAsync.success):\n case getType(paymentActions.createPaymentAsync.success):\n case getType(paymentActions.fetchPiecesAsync.success):\n case getType(paymentActions.fetchEPInvoicesAsync.request):\n case getType(packageActions.fetchPackageAsync.success):\n case getType(packageActions.fetchProductAsync.success):\n case getType(userGroupActions.searchUserGroupAsync.success):\n case getType(getGroupActions.getGroupAsync.success):\n case getType(createUserActions.createUserAsync.success):\n case getType(manageUserActions.manageUserAsync.success):\n case getType(transferContractActions.transferGetContractAsync.success):\n case getType(transferContractActions.transferContractAsync.success):\n case getType(adminClientSpaceActions.adminClientSpaceAsync.success):\n case getType(createGroupActions.createGroupAsync.success):\n case getType(\n customerContractActions.fetchCustomerContractAsync.success,\n ):\n case getType(orderActions.fetchOrderAsync.success):\n case getType(actions.casesExtractAsync.failure):\n case getType(customerContractActions.uploadAmendmentsAsync.success):\n case getType(packageActions.updatePackageAsync.success): {\n return {\n ...state,\n loading: false,\n };\n }\n case getType(paymentCBActions.createPaymentCBAsync.failure):\n case getType(packageActions.fetchProductAsync.failure):\n case getType(orderActions.searchClientAsync.failure):\n case getType(packageActions.fetchPackageAsync.failure):\n case getType(packageActions.updatePackageAsync.failure):\n case getType(profileActions.updateCustomerAsync.failure):\n case getType(profileActions.updateBillingAsync.failure):\n case getType(profileActions.fetchContextAsync.failure):\n case getType(profileActions.updatePasswordAsync.failure):\n case getType(profileActions.createSponsorAsync.failure):\n case getType(paymentActions.createPaymentAsync.failure):\n case getType(paymentActions.fetchPiecesAsync.failure):\n case getType(paymentActions.fetchEPInvoicesAsync.request):\n case getType(eventActions.fetchEventAsync.failure):\n case getType(eventActions.createEventAsync.failure):\n case getType(contractActions.fetchContractAsync.failure):\n case getType(consumptionActions.createIndexAsync.failure):\n case getType(consumptionActions.fetchMeterConfigAsync.failure):\n case getType(consumptionActions.fetchMeterReadingAsync.failure):\n case getType(userGroupActions.searchUserGroupAsync.failure):\n case getType(getGroupActions.getGroupAsync.failure):\n case getType(createUserActions.createUserAsync.failure):\n case getType(manageUserActions.manageUserAsync.failure):\n case getType(adminClientSpaceActions.adminClientSpaceAsync.failure):\n case getType(transferContractActions.transferGetContractAsync.failure):\n case getType(transferContractActions.transferContractAsync.failure):\n case getType(createGroupActions.createGroupAsync.failure):\n case getType(customerContractActions.uploadAmendmentsAsync.failure):\n case getType(\n customerContractActions.fetchCustomerContractAsync.failure,\n ):\n case getType(orderActions.fetchOrderAsync.failure):\n case getType(fileActions.fetchFilesListAsync.failure): {\n const { code } = action.payload;\n return {\n ...state,\n loading: false,\n unauthorized: code === '401',\n };\n }\n\n default:\n return state;\n }\n};\n\nexport default authReducer;\n","import {\n TContract,\n TCustomerFullName,\n TAddress,\n TContact,\n TFinance,\n TFile,\n TFiles,\n TAmountWithLabel,\n TUnitPriceWithLabel,\n TProduct,\n TPackage,\n TEPInvoice,\n} from 'Models';\nimport {\n EAmountCategory,\n ERateOption,\n EEnergy,\n EContractStatus,\n ECivility,\n EFrequency,\n EEffectiveStartRange,\n EReadingFrequency,\n ETimeframe,\n EBillingMode,\n EProcessTypes,\n EAppointmentTimeslot,\n EInvoiceRoutingMode,\n} from './enums';\nimport { getTodayDate } from './helpers';\n\nexport const initialCustomerFullName: TCustomerFullName = {\n civility: 'MR',\n firstName: '',\n lastName: '',\n};\n\nexport const initialAddress: TAddress = {\n country: 'FR',\n netArea: '',\n number: '',\n postalCode: '',\n street: '',\n townName: '',\n};\n\nexport const initialContact: TContact = {\n customerFullName: {\n civility: ECivility.MR,\n firstName: '',\n lastName: '',\n },\n birthdate: '',\n address: {\n number: '',\n street: '',\n netArea: '',\n postalCode: '',\n townName: '',\n country: 'FR',\n },\n email: '',\n phone: '',\n companyName: '',\n companyType: '',\n identificationNumber: '',\n activityCode: '',\n newsletter: false,\n marketing: false,\n};\n\nexport const initialFinance: TFinance = {\n paymentMode: EBillingMode.PAYMENT_SCHEDULE,\n ibanCode: '',\n bicCode: '',\n bankName: '',\n accountOwnerFirstName: '',\n accountOwnerLastName: '',\n rumCode: '',\n invoiceRoutingMode: EInvoiceRoutingMode.EMAIL,\n invoiceEmail: '',\n debitDay: '',\n termCode: '',\n};\n\nexport const initialFile: TFile = {\n documentsList: [],\n financialPieces: {\n id: '',\n result: {\n status: '',\n invoice_list: [],\n payment_list: [],\n },\n },\n};\nexport const initialEPInvoice: TEPInvoice = {\n id: '',\n partner_name: '',\n partner_reference: '',\n invoice_type: '',\n invoice_number: '',\n invoice_date: '',\n invoice_date_due: '',\n invoice_amount_total_signed: '',\n invoice_amount_residual_signed: '',\n invoice_state: '',\n hgz_invoice_nature_code: '',\n hgz_invoice_nature_text: '',\n internal_invoice_nature_code: '',\n date: '',\n payment_method_code: '',\n payment_method_name: '',\n internal_invoice_nature_text: '',\n invoicing_period_end_date: '',\n invoicing_period_start_date: '',\n status: '',\n amount: '',\n contract: '',\n partner_ref: '',\n replacing_payment_count: '0',\n energy_paid_number_replays: '0',\n};\nexport const initialFiles: TFiles = {\n documentDate: '',\n documentKey: '',\n documentName: '',\n documentType: '',\n contractNbr: '',\n energyType: '',\n};\n\nexport const initialAmountWithLabel: TAmountWithLabel = {\n label: '',\n amount: '',\n unit: '',\n category: EAmountCategory.ADDITIONAL_RATE,\n unitPrices: [],\n};\n\nexport const initialUnitPriceWithLabel: TUnitPriceWithLabel = {\n label: '',\n price: '',\n unit: '',\n};\n\nexport const initialProduct: TProduct = {\n productCode: '',\n productType: '',\n label: '',\n description: '',\n energy: EEnergy.EL,\n default: true,\n rateOption: undefined,\n additionalRates: undefined,\n};\n\nconst today = getTodayDate();\n\nexport const initialContract: TContract = {\n contractNumber: '',\n contractStatus: EContractStatus.EFFECTIVE,\n channel: 'WEB',\n effectiveStartRange: EEffectiveStartRange.NOW,\n effectiveStartDate: '',\n subscriptionDate: today,\n lastRenewDate: '',\n sponsorNumber: '',\n energy: EEnergy.EL,\n contractCategory: '',\n deliveryCategoryCode: '',\n deliveryPoint: {\n pointOfDelivery: '',\n deliveryPointCategory: '',\n grdCode: '',\n state: '',\n gridRate: '',\n deliveryStatus: '',\n address: {\n number: '',\n street: '',\n netArea: '',\n postalCode: '',\n townName: '',\n country: 'FR',\n },\n profile: '',\n meterNumber: '',\n meterType: '',\n smartMeterStatus: '',\n netArea: '',\n readingFrequency: EReadingFrequency.MONTHLY,\n contractualCapacity: 0,\n contractualCapacityUnit: '',\n process: {\n type: EProcessTypes.MOVE_IN,\n express: false,\n supplierCalendar: '',\n appointmentTimeslot: EAppointmentTimeslot.NONE,\n index: {\n type: '',\n date: '',\n registers: [\n {\n value: 0,\n timeframe: ETimeframe.UNKNOWN,\n },\n ],\n },\n },\n },\n billingMode: EBillingMode.PAYMENT_SCHEDULE,\n installmentFrequency: EFrequency.BIMONTHLY,\n settlementFrequency: EFrequency.BIANNUAL,\n finance: {\n paymentMode: EBillingMode.PAYMENT_SCHEDULE,\n ibanCode: '',\n bicCode: '',\n bankName: '',\n accountOwnerLastName: '',\n accountOwnerFirstName: '',\n billingContact: undefined,\n rumCode: '',\n invoiceRoutingMode: EInvoiceRoutingMode.EMAIL,\n invoiceEmail: '',\n debitDay: '',\n termCode: '',\n },\n thirdParties: [],\n rateOption: ERateOption.UNKNOWN,\n chosenProduct: initialProduct,\n};\n\nexport const initialPackage: TPackage = {\n id: '',\n amount: '',\n energy: EEnergy.EL,\n currency: '',\n quantityMonthly: 0,\n packageQuantity: 0,\n recommended: false,\n timeframe: ETimeframe.UNKNOWN,\n authorizedPackages: undefined,\n};\n","import { Reducer } from 'redux';\nimport { getType } from 'typesafe-actions';\n\nimport { TContact } from 'Models';\nimport { ECivility, ECustomerType } from '../utils/enums';\n\nimport * as actions from '../_actions/profile.actions';\nimport { initialCustomerFullName } from '../utils/initialState';\n\nexport type ProfileState = Readonly<{\n error?: string;\n customerType: ECustomerType;\n customerNumber: string;\n customerCategoryCode: string;\n contact: TContact;\n updateResponse: {\n code: string;\n message: string;\n };\n checkUpdateProfile: {\n checkUpdateContact: boolean;\n checkUpdateBilling: boolean;\n checkUpdateIban: boolean;\n };\n}>;\n\nexport const initialState = {\n error: undefined,\n customerType: ECustomerType.INDIVIDUAL,\n customerNumber: '',\n customerCategoryCode: '',\n contact: {\n marketing: false,\n newsletter: false,\n customerFullName: {\n civility: ECivility.MR,\n firstName: '',\n lastName: '',\n },\n birthdate: '',\n address: {\n number: '',\n street: '',\n netArea: '',\n postalCode: '',\n townName: '',\n country: 'FR',\n },\n email: '',\n phone: '',\n companyName: '',\n companyType: '',\n identificationNumber: '',\n activityCode: '',\n },\n updateResponse: {\n code: '',\n message: '',\n },\n checkUpdateProfile: {\n checkUpdateContact: false,\n checkUpdateBilling: false,\n checkUpdateIban: false,\n },\n};\n\ntype Actions = actions.ProfileAction;\n\nconst profileReducer: Reducer<ProfileState, Actions> = (\n state = initialState,\n action: Actions,\n) => {\n switch (action.type) {\n case getType(actions.fetchContextAsync.request): {\n return {\n ...state,\n updateResponse: {\n code: '',\n message: '',\n },\n };\n }\n\n case getType(actions.fetchContextAsync.failure): {\n return {\n ...state,\n updateResponse: {\n code: action.payload.code,\n message:\n action.payload.message ||\n action.payload.description ||\n '',\n },\n };\n }\n\n case getType(actions.fetchContextAsync.success): {\n const {\n customerNumber,\n customerCategoryCode,\n type,\n contact: {\n customerFullName,\n address,\n email,\n phone,\n newsletter,\n marketing,\n activityCode,\n birthdate,\n companyName,\n companyType,\n identificationNumber,\n },\n } = action.payload.customer;\n\n return {\n ...state,\n customerNumber,\n customerCategoryCode,\n customerType: type,\n contact: {\n ...state.contact,\n email,\n phone,\n newsletter: newsletter || false,\n marketing: marketing || false,\n activityCode,\n birthdate,\n companyName,\n companyType,\n identificationNumber,\n customerFullName: (customerFullName && {\n civility: customerFullName.civility,\n firstName: customerFullName.firstName,\n lastName: customerFullName.lastName,\n }) || { ...initialCustomerFullName },\n address: {\n number:\n address.number ||\n state.contact.address.number ||\n '',\n street: address.street || '',\n netArea:\n address.netArea ||\n state.contact.address.netArea ||\n '',\n postalCode: address.postalCode || '',\n townName: address.townName || '',\n country:\n address.country || state.contact.address.country,\n },\n },\n };\n }\n\n case getType(actions.updateCustomerAsync.request):\n return {\n ...state,\n };\n\n case getType(actions.updateCustomerAsync.success):\n return {\n ...state,\n updateResponse: {\n code: '200',\n message: 'success',\n },\n contact: {\n ...state.contact,\n email: action.payload.email || state.contact.email,\n phone: action.payload.phone || state.contact.phone,\n newsletter:\n action.payload.newsletter || state.contact.newsletter,\n marketing:\n action.payload.marketing || state.contact.marketing,\n },\n };\n\n case getType(actions.resetUpdate):\n return {\n ...state,\n updateResponse: {\n code: '',\n message: '',\n },\n };\n\n case getType(actions.updateBillingAsync.request):\n return {\n ...state,\n };\n\n case getType(actions.updateCustomerAsync.failure):\n case getType(actions.updateBillingAsync.failure):\n case getType(actions.updatePasswordAsync.failure):\n case getType(actions.createSponsorAsync.failure): {\n console.log('failure detected in profile reducer');\n return {\n ...state,\n updateResponse: {\n code: '500',\n message: 'failure',\n },\n };\n }\n\n case getType(actions.updateBillingAsync.success):\n case getType(actions.updatePasswordAsync.success):\n case getType(actions.createSponsorAsync.success): {\n return {\n ...state,\n updateResponse: {\n code: '200',\n message: 'success',\n },\n };\n }\n\n default:\n return state;\n }\n};\n\nexport default profileReducer;\n","import { Reducer } from 'redux';\nimport { getType } from 'typesafe-actions';\nimport { TContact, TContract } from 'Models';\nimport { EModeUpdateBilling, EEnergy } from '../utils/enums';\nimport { initialContract, initialContact } from '../utils/initialState';\n\nimport * as actions from '../_actions/contract.actions';\nimport * as profileActions from '../_actions/profile.actions';\nimport * as packageActions from '../_actions/package.actions';\nimport { isEmpty } from 'lodash';\n\n// TODO: remove currentContract\nexport type ContractState = Readonly<{\n loading: boolean;\n error?: string;\n contracts: TContract[];\n selectedContractNumber: string;\n currentContract: {\n index: number;\n id: string;\n };\n}>;\n\nexport const initialState = {\n loading: false,\n error: undefined,\n contracts: [\n {\n ...initialContract,\n },\n ],\n selectedContractNumber: '',\n currentContract: {\n index: 0,\n id: '',\n },\n};\n\ntype Actions =\n | actions.ContractAction\n | profileActions.ProfileAction\n | packageActions.PackageAction;\n\nconst contractReducer: Reducer<ContractState, Actions> = (\n state = initialState,\n action: Actions,\n) => {\n switch (action.type) {\n case getType(actions.resetContractState): {\n return {\n ...state,\n loading: false,\n error: undefined,\n };\n }\n\n case getType(actions.fetchContractAsync.request): {\n return {\n ...state,\n loading: true,\n };\n }\n\n case getType(actions.fetchContractAsync.failure): {\n return {\n ...state,\n loading: false,\n error: 'failure',\n };\n }\n\n case getType(actions.fetchContractAsync.success): {\n const selectedContractNumber = action.payload.contractNbr;\n const contracts = state.contracts.map(c => {\n const { contract } = action.payload;\n if (contract && c.contractNumber === selectedContractNumber) {\n // Attach offer if getContract does not return it\n const isFetched = true;\n const offer = c.offer ? c.offer : contract.offer;\n if (\n contract.deliveryPoint.deliveryPointCategory &&\n contract.deliveryPoint.deliveryPointCategory !== ''\n ) {\n return {\n ...contract,\n isFetched,\n offer,\n contractNumber: selectedContractNumber,\n };\n }\n const deliveryPointCategory =\n contract.energy === EEnergy.EL\n ? 'C5'\n : contract.deliveryPoint.gridRate;\n return {\n ...contract,\n isFetched,\n offer,\n contractNumber: selectedContractNumber,\n deliveryPoint: {\n ...contract.deliveryPoint,\n deliveryPointCategory,\n },\n };\n }\n return c;\n });\n return {\n ...state,\n selectedContractNumber,\n contracts,\n loading: false,\n currentContract: {\n index: contracts.length - 1,\n id: action.payload.contractNbr,\n },\n error: undefined,\n };\n }\n\n case getType(profileActions.fetchContextAsync.success): {\n const { contracts } = action.payload;\n const selectedContractNumber = contracts[0].contractNumber;\n const modifiedContracts = contracts.map(contract => {\n if (selectedContractNumber === contract.contractNumber) {\n if (contract.deliveryPoint.deliveryPointCategory) {\n return {\n ...contract,\n isFetched: true,\n };\n }\n const deliveryPointCategory =\n contract.energy === EEnergy.EL\n ? 'C5'\n : contract.deliveryPoint.gridRate;\n return {\n ...contract,\n isFetched: true,\n deliveryPoint: {\n ...contract.deliveryPoint,\n deliveryPointCategory,\n },\n };\n }\n return contract;\n });\n return {\n ...state,\n selectedContractNumber,\n contracts: modifiedContracts,\n currentContract: {\n index: 0,\n id: selectedContractNumber,\n },\n };\n }\n\n case getType(profileActions.updateCustomerAsync.success): {\n const { civility, firstName, mode } = action.payload;\n\n const contracts = state.contracts.map(contract => {\n if (contract.contractNumber !== state.selectedContractNumber) {\n return contract;\n }\n if (mode && mode !== 'delete') {\n const thirdParties = contract.thirdParties.map(p => {\n if (p.role !== 'COHOLDER') {\n return p;\n }\n return {\n ...p,\n civility,\n firstName,\n };\n });\n return {\n ...contract,\n thirdParties:\n thirdParties.length > 0\n ? thirdParties\n : [\n {\n role: 'COHOLDER',\n civility,\n firstName,\n },\n ],\n };\n }\n return {\n ...contract,\n thirdParties: contract.thirdParties.filter(\n p => p.role !== 'COHOLDER',\n ),\n };\n });\n\n return {\n ...state,\n contracts,\n };\n }\n\n case getType(profileActions.updateBillingAsync.success): {\n const {\n billingAddress,\n ibanCode,\n email,\n customerFullName,\n mode,\n debitDay,\n routingMode,\n } = action.payload;\n const contracts = state.contracts.map(contract => {\n if (contract.contractNumber !== state.selectedContractNumber) {\n return contract;\n }\n if (mode === EModeUpdateBilling.IBAN && ibanCode) {\n return {\n ...contract,\n finance: {\n ...contract.finance,\n ibanCode,\n },\n };\n }\n\n if (mode === EModeUpdateBilling.DEBIT_DAY && debitDay) {\n return {\n ...contract,\n finance: {\n ...contract.finance,\n debitDay: debitDay || contract.finance.debitDay,\n },\n };\n }\n\n if (mode === EModeUpdateBilling.ROUTING_MODE && routingMode) {\n return {\n ...contract,\n finance: {\n ...contract.finance,\n invoiceRoutingMode:\n routingMode ||\n contract.finance.invoiceRoutingMode,\n },\n };\n }\n\n if (contract.finance) {\n let billingContact: TContact = { ...initialContact };\n if (contract.finance.billingContact) {\n billingContact = {\n ...contract.finance.billingContact,\n };\n }\n billingContact = {\n ...billingContact,\n customerFullName:\n customerFullName || billingContact.customerFullName,\n address: billingAddress || billingContact.address,\n email: email || billingContact.email,\n };\n contract.finance = {\n ...contract.finance,\n billingContact,\n };\n }\n return contract;\n });\n return {\n ...state,\n contracts,\n };\n }\n\n case getType(packageActions.updatePackageAsync.success): {\n const { contract } = action.payload;\n if (contract === undefined) {\n return {\n ...state,\n };\n }\n const contracts = state.contracts.map(c => {\n if (c.contractNumber === contract.contractNumber) {\n return contract;\n }\n return c;\n });\n return {\n ...state,\n contracts,\n };\n }\n\n // Use the the product from the productsList\n // Only if the current chosenProduct is empty (contains only productCode)\n case getType(packageActions.fetchOfferAsync.success): {\n const { offers, products, contractNbr } = action.payload;\n const contracts = state.contracts.map(contract => {\n const c = { ...contract };\n if (\n offers &&\n c.offer === undefined &&\n c.energy === offers[0].energy\n ) {\n c.offer = offers[0];\n }\n if (\n c.contractNumber !== contractNbr ||\n c.chosenProduct.additionalRates ||\n offers === undefined ||\n products === undefined\n ) {\n return c;\n }\n const { productCode } = offers[0].product;\n const chosenProduct = products.find(\n p => p.productCode === productCode,\n );\n\n if (chosenProduct) {\n return {\n ...c,\n chosenProduct,\n };\n }\n return c;\n });\n return {\n ...state,\n contracts,\n };\n }\n\n case getType(actions.setContract): {\n const { contract } = action.payload;\n const contracts = state.contracts.map(c => {\n if (contract.contractNumber === c.contractNumber) {\n return contract;\n }\n return c;\n });\n return {\n ...state,\n selectedContractNumber: contract.contractNumber,\n contracts,\n };\n }\n\n default:\n return state;\n }\n};\n\nexport default contractReducer;\n","import { Reducer } from 'redux';\nimport { getType } from 'typesafe-actions';\nimport { TEvent } from 'Models';\n\nimport * as actions from '../_actions/event.actions';\n\nexport type EventState = Readonly<{\n events: TEvent[];\n updateResponse: {\n code: string;\n message: string;\n };\n}>;\nexport const initialState = {\n events: [],\n updateResponse: {\n code: '',\n message: '',\n },\n};\n\ntype Actions = actions.EventAction;\n\nconst eventReducer: Reducer<EventState, Actions> = (\n state = initialState,\n action: Actions,\n) => {\n switch (action.type) {\n case getType(actions.fetchEventAsync.request):\n return { ...state };\n case getType(actions.fetchEventAsync.failure):\n return { ...state };\n case getType(actions.createEventAsync.request):\n return { ...state };\n\n case getType(actions.fetchEventAsync.success): {\n return {\n ...state,\n events: action.payload,\n };\n }\n\n case getType(actions.createEventAsync.success): {\n return {\n ...state,\n events: [...state.events, action.payload],\n updateResponse: {\n code: '200',\n message: 'success',\n },\n };\n }\n case getType(actions.createEventAsync.failure):\n return {\n ...state,\n updateResponse: {\n code: '500',\n message: 'failure',\n },\n };\n\n case getType(actions.resetUpdate):\n return {\n ...state,\n updateResponse: {\n code: '',\n message: '',\n },\n };\n\n default:\n return { ...state };\n }\n};\n\nexport default eventReducer;\n","import { Reducer } from 'redux';\nimport { getType } from 'typesafe-actions';\n\nimport { TMeterRead } from 'Models';\nimport { ERateOption } from '../utils/enums';\n\nimport * as actions from '../_actions/consumption.actions';\n\nimport WordingConstant from '../utils/wording.json';\n\nconst Wording = WordingConstant.Common;\n\nexport type ConsumptionState = Readonly<{\n rateOption: ERateOption;\n digitSize: number;\n meterNumber: string;\n meters: TMeterRead[];\n updateResponse: {\n code: string;\n message: string;\n };\n errorMeterConfig?: string;\n errorMeterReading?: string;\n}>;\n\nexport const initialState = {\n rateOption: ERateOption.UNKNOWN,\n digitSize: 0,\n meterNumber: '',\n meters: [],\n updateResponse: {\n code: '',\n message: '',\n },\n errorMeterConfig: undefined,\n errorMeterReading: undefined,\n};\n\ntype Actions = actions.ConsumptionAction;\n\nconst consumptionReducer: Reducer<ConsumptionState, Actions> = (\n state = initialState,\n action: Actions,\n) => {\n switch (action.type) {\n case getType(actions.fetchMeterConfigAsync.request): {\n return {\n ...state,\n };\n }\n case getType(actions.fetchMeterReadingAsync.request): {\n return {\n ...state,\n };\n }\n\n case getType(actions.fetchMeterConfigAsync.failure): {\n return {\n ...state,\n errorMeterConfig: Wording.noData,\n };\n }\n\n case getType(actions.fetchMeterReadingAsync.failure): {\n return {\n ...state,\n errorMeterReading: Wording.noData,\n meters: [],\n meterNumber: '',\n digitSize: 0,\n };\n }\n\n case getType(actions.fetchMeterConfigAsync.success): {\n return {\n ...state,\n rateOption: action.payload.rateOption,\n digitSize: Number(action.payload.digitSize),\n meterNumber: action.payload.meterNumber,\n errorMeterConfig: undefined,\n };\n }\n\n case getType(actions.fetchMeterReadingAsync.success): {\n return {\n ...state,\n meters: action.payload || [],\n errorMeterReading: undefined,\n };\n }\n\n case getType(actions.createIndexAsync.failure): {\n return {\n ...state,\n updateResponse: {\n code: action.payload.code || '500',\n message: action.payload.message || 'failure',\n },\n };\n }\n\n case getType(actions.createIndexAsync.success): {\n return {\n ...state,\n updateResponse: {\n code: '200',\n message: 'success',\n },\n };\n }\n\n case getType(actions.resetCreateIndex):\n return {\n ...state,\n updateResponse: {\n code: '',\n message: '',\n },\n };\n\n default:\n return { ...state };\n }\n};\n\nexport default consumptionReducer;\n","import { Reducer } from 'redux';\nimport { getType } from 'typesafe-actions';\nimport { TFile, TFiles, TEPInvoice } from 'Models';\n\nimport * as actions from '../_actions/file.actions';\nimport {\n initialFile,\n initialEPInvoice,\n initialFiles,\n} from '../utils/initialState';\n\nexport type FileState = Readonly<{\n files: TFile;\n documents: TFiles[];\n invoices: TEPInvoice[];\n payments: TEPInvoice[];\n}>;\n\nexport const initialState = {\n files: initialFile,\n documents: [],\n invoices: [],\n payments: [],\n};\n\ntype Actions = actions.FileActions;\n\nconst fileReducer: Reducer<FileState, Actions> = (\n state = initialState,\n action: Actions,\n) => {\n switch (action.type) {\n case getType(actions.fetchFilesListAsync.request):\n return { ...state };\n\n case getType(actions.fetchFilesListAsync.failure):\n return { ...state };\n\n case getType(actions.fetchFilesListAsync.success): {\n return {\n ...state,\n files: action.payload,\n documents: action.payload.documentsList,\n invoices: action.payload.financialPieces\n ? action.payload.financialPieces.result.invoice_list\n : [],\n payments: action.payload.financialPieces\n ? action.payload.financialPieces.result.payment_list\n : [],\n };\n }\n default:\n return { ...state };\n }\n};\n\nexport default fileReducer;\n","import { Reducer } from 'redux';\nimport { getType } from 'typesafe-actions';\nimport {\n TResponse,\n TPiece,\n TTransaction,\n TProcessus,\n TEPInvoice,\n} from 'Models';\n\nimport * as actions from '../_actions/payment.actions';\nimport { EPieceType, EPaymentModeKey } from '../utils/enums';\n\nexport type PaymentSupportingDocuments = {\n loading: boolean;\n errorMessage: undefined | string;\n};\n\nexport type PaymentState = Readonly<{\n pieces: TPiece[];\n epInvoices: TEPInvoice[];\n epPayments: TEPInvoice[];\n updateResponse: TResponse;\n balance?: {\n customerBalance: string;\n contractBalance: string;\n invoiceBalance: string;\n };\n\n supportingDocument: PaymentSupportingDocuments;\n}>;\nexport const initialState = {\n pieces: [],\n epInvoices: [],\n epPayments: [],\n updateResponse: {\n code: '',\n message: '',\n },\n balance: undefined,\n\n supportingDocument: {\n loading: false,\n errorMessage: undefined,\n },\n};\n\ntype Actions = actions.PiecesAction;\n\nconst paymentReducer: Reducer<PaymentState, Actions> = (\n state = initialState,\n action: Actions,\n) => {\n switch (action.type) {\n case getType(actions.fetchPiecesAsync.success): {\n const { invoices, prepayments, adhocPieces } = action.payload;\n const ps: TPiece[] = [];\n if (invoices) {\n invoices.forEach(invoice => {\n ps.push({\n ...invoice,\n type: EPieceType.INVOICE,\n });\n });\n }\n if (prepayments) {\n prepayments.forEach(pp => {\n ps.push({\n ...pp,\n type: EPieceType.PREPAYMENT,\n });\n });\n }\n\n if (adhocPieces) {\n adhocPieces.forEach(adh => {\n // TODO\n // if (\n // !(\n // adh.initialTransactionStatus !== 'success' &&\n // adh.paymentMode === EPaymentModeKey.BANK_CARD &&\n // adh.paymentNature === 'contractActivation'\n // )\n // ) {\n // ps.push({\n // ...adh,\n // type: EPieceType.ADHOC,\n // });\n // }\n\n ps.push({\n ...adh,\n type: EPieceType.ADHOC,\n });\n });\n }\n return {\n ...state,\n pieces: ps,\n };\n }\n case getType(actions.fetchBalanceAsync.success): {\n return {\n ...state,\n balance: action.payload,\n };\n }\n case getType(actions.createPaymentAsync.success):\n // Update the piece from where transaction locates\n return {\n ...state,\n updateResponse: {\n code: '200',\n message: 'success',\n },\n };\n case getType(actions.createPaymentAsync.failure):\n return {\n ...state,\n updateResponse: {\n code: '500',\n message: 'failure',\n },\n };\n case getType(actions.resetUpdate):\n return {\n ...state,\n updateResponse: {\n code: '',\n message: '',\n },\n };\n\n case getType(actions.getSupportingDocumentsAsync.request): {\n return {\n ...state,\n supportingDocument: {\n loading: true,\n errorMessage: undefined,\n },\n };\n }\n\n case getType(actions.getSupportingDocumentsAsync.success): {\n return {\n ...state,\n supportingDocument: {\n loading: false,\n errorMessage: undefined,\n },\n };\n }\n\n case getType(actions.getSupportingDocumentsAsync.failure): {\n return {\n ...state,\n supportingDocument: {\n loading: false,\n errorMessage: action.payload,\n },\n };\n }\n\n case getType(actions.resetSupportingDocumentError): {\n return {\n ...state,\n supportingDocument: {\n loading: false,\n errorMessage: undefined,\n },\n };\n }\n\n default:\n return { ...state };\n }\n};\n\nexport default paymentReducer;\n","import { Reducer } from 'redux';\nimport { getType } from 'typesafe-actions';\nimport { TPackage, TPrepaymentFrequency, TProduct, TOffer } from 'Models';\n\nimport * as actions from '../_actions/package.actions';\n\nexport type PackageState = Readonly<{\n loadingPackage: boolean;\n loadingOffer: boolean;\n pkg: Record<string, TPackage[]>;\n prepaymentFrequencies: Record<string, TPrepaymentFrequency[]>;\n offer: Record<string, TOffer>;\n products: TProduct[];\n updateResponse: {\n code: string;\n message: string;\n };\n description?: string;\n}>;\n\nexport const initialState = {\n loadingPackage: false,\n loadingOffer: false,\n pkg: {},\n prepaymentFrequencies: {},\n offer: {},\n products: [],\n updateResponse: {\n code: '',\n message: '',\n },\n};\n\ntype Actions = actions.PackageAction;\n\nconst packageReducer: Reducer<PackageState, Actions> = (\n state = initialState,\n action: Actions,\n) => {\n switch (action.type) {\n case getType(actions.fetchPackageAsync.request):\n return {\n ...state,\n loadingPackage: true,\n };\n\n case getType(actions.fetchPackageAsync.failure):\n return {\n ...state,\n loadingPackage: false,\n };\n\n case getType(actions.fetchPackageAsync.success): {\n const {\n packagesList,\n prepaymentFrequencies,\n contractNbr,\n } = action.payload;\n const pf: Record<string, TPrepaymentFrequency[]> =\n state.prepaymentFrequencies;\n if (prepaymentFrequencies) {\n pf[contractNbr] = prepaymentFrequencies;\n }\n const pkg: Record<string, TPackage[]> = state.pkg;\n if (packagesList) {\n pkg[contractNbr] = packagesList;\n }\n return {\n ...state,\n pkg,\n prepaymentFrequencies: pf,\n loadingPackage: false,\n };\n }\n\n case getType(actions.fetchProductAsync.request):\n return {\n ...state,\n loadingOffer: true,\n };\n\n case getType(actions.fetchProductAsync.success): {\n return {\n ...state,\n products: action.payload.productsList || state.products,\n loadingOffer: false,\n };\n }\n\n case getType(actions.fetchProductAsync.failure):\n case getType(actions.fetchOfferAsync.failure): {\n return {\n ...state,\n loadingOffer: false,\n };\n }\n\n case getType(actions.fetchOfferAsync.success): {\n const { offers, contractNbr } = action.payload;\n const offer: Record<string, TOffer> = {\n ...state.offer,\n };\n if (offers && contractNbr) {\n offer[contractNbr] = offers[0];\n }\n return {\n ...state,\n offer,\n loadingOffer: false,\n };\n }\n\n case getType(actions.updatePackageAsync.failure): {\n return {\n ...state,\n updateResponse: {\n code: '500',\n message: 'failure',\n },\n };\n }\n\n case getType(actions.updatePackageAsync.success): {\n if (action.payload.code === 'KO') {\n return {\n ...state,\n description: action.payload.description,\n updateResponse: {\n code: '500',\n message: 'Erreur serveur',\n },\n };\n }\n\n if (action.payload.code === 'OK') {\n return {\n ...state,\n description: undefined,\n updateResponse: {\n code: '200',\n message: 'success',\n },\n };\n }\n return {\n ...state,\n description: undefined,\n updateResponse: {\n code: '500',\n message: 'Erreur serveur',\n },\n };\n }\n\n case getType(actions.resetUpdate):\n return {\n ...state,\n description: undefined,\n updateResponse: {\n code: '',\n message: '',\n },\n };\n\n default:\n return { ...state };\n }\n};\n\nexport default packageReducer;\n","import { Reducer } from 'redux';\nimport { getType } from 'typesafe-actions';\n\nimport * as actions from '../_actions/customerContract.actions';\n\nimport { TCustomer } from '../constants/key-system';\n\nexport type CustomersContractState = Readonly<{\n error?: string;\n customers: TCustomer[];\n transferContract?: TCustomer[];\n\n updateResponse: {\n code: string;\n message: string;\n };\n}>;\n\nconst initialState = {\n customers: [],\n error: undefined,\n transferContract: [],\n\n updateResponse: {\n code: '',\n message: '',\n },\n};\n\ntype Actions = actions.CustomersContractAction;\n\nconst customersContractReducer: Reducer<CustomersContractState, Actions> = (\n state = initialState,\n action: Actions,\n) => {\n switch (action.type) {\n case getType(actions.fetchCustomerContractAsync.success): {\n return {\n ...state,\n customers: action.payload.customers,\n error: undefined,\n };\n }\n\n case getType(actions.fetchCustomerContractAsync.failure):\n return {\n ...state,\n customers: [],\n error: action.payload.code,\n };\n\n case getType(actions.uploadAmendmentsAsync.request): {\n return {\n ...state,\n updateResponse: {\n code: '0',\n message: '',\n },\n };\n }\n\n case getType(actions.uploadAmendmentsAsync.success): {\n return {\n ...state,\n updateResponse: {\n code: '200',\n message: 'success',\n },\n };\n }\n\n case getType(actions.uploadAmendmentsAsync.failure): {\n return {\n ...state,\n updateResponse: {\n code: '500',\n message: 'failure',\n },\n };\n }\n\n case getType(actions.resetUploadAmendments): {\n return {\n ...state,\n updateResponse: {\n code: '',\n message: '',\n },\n };\n }\n\n default:\n return { ...state };\n }\n};\n\nexport default customersContractReducer;\n","import { Reducer } from 'redux';\nimport { getType } from 'typesafe-actions';\n\nimport * as actions from '../_actions/searchOrder.actions';\n\nimport { TOrder } from 'Models';\n\nexport type OrderState = Readonly<{\n error?: string;\n message?: string;\n order: TOrder[];\n searchClient: {\n error?: string;\n message?: string;\n order: actions.TOrderResponse[];\n };\n}>;\n\nconst initialState = {\n order: [],\n error: undefined,\n message: undefined,\n searchClient: {\n order: [],\n error: undefined,\n message: undefined,\n },\n};\n\ntype Actions = actions.FetchOrderAction;\n\nconst orderReducer: Reducer<OrderState, Actions> = (\n state = initialState,\n action: Actions,\n) => {\n switch (action.type) {\n case getType(actions.fetchOrderAsync.success): {\n return {\n ...state,\n order: action.payload,\n error: undefined,\n message: undefined,\n };\n }\n\n case getType(actions.fetchOrderAsync.failure): {\n return {\n ...state,\n order: [],\n error: action.payload.code,\n message: action.payload.message,\n };\n }\n\n // SEARCH CLIENT\n case getType(actions.searchClientAsync.success): {\n return {\n ...state,\n searchClient: {\n order: action.payload,\n error: undefined,\n message: undefined,\n },\n };\n }\n\n case getType(actions.searchClientAsync.failure): {\n return {\n ...state,\n searchClient: {\n order: [],\n error: action.payload.code,\n message: action.payload.message,\n },\n };\n }\n\n default:\n return { ...state };\n }\n};\n\nexport default orderReducer;\n","import { Reducer } from 'redux';\nimport { getType } from 'typesafe-actions';\nimport { TResponse, TUser } from 'Models';\nimport * as actions from '../_actions/searchUserGroup.actions';\nimport * as createGroupActions from '../_actions/createGroup.actions';\nimport * as getGroupActions from '../_actions/getGroup.actions';\nimport * as createUserActions from '../_actions/createUser.actions';\nimport * as manageUserActions from '../_actions/manageUser.actions';\nimport * as administrationClientSpace from '../_actions/administrationClientSpace.actions';\n\nexport type UserGroupState = Readonly<{\n error?: string;\n userList: TUser[];\n groupList: string[];\n administrationList: TUser[];\n manageUserResponse: TResponse;\n createUserResponse: TResponse;\n createGroupResponse: TResponse;\n}>;\n\nconst initialState = {\n userList: [],\n error: undefined,\n groupList: [],\n administrationList: [],\n manageUserResponse: { code: '', message: '' },\n createUserResponse: { code: '', message: '' },\n createGroupResponse: { code: '', message: '' },\n};\n\ntype Actions =\n | actions.searchUserGroupAction\n | createGroupActions.CreateGroupAction\n | getGroupActions.getGroupAction\n | createUserActions.CreateUserAction\n | createGroupActions.CreateGroupAction\n | manageUserActions.ManageUserAction\n | administrationClientSpace.AdminClientSpaceAction;\n\nconst userGroupReducer: Reducer<UserGroupState, Actions> = (\n state = initialState,\n action: Actions,\n) => {\n switch (action.type) {\n case getType(actions.searchUserGroupAsync.success): {\n return {\n ...state,\n userList: action.payload.userList || [],\n error: undefined,\n manageUserResponse: {\n code: action.payload.code as string,\n message: action.payload.message as string,\n },\n };\n }\n\n case getType(actions.searchUserGroupAsync.failure): {\n return {\n ...state,\n userList: [],\n error: action.payload.message,\n manageUserResponse: {\n code: action.payload.code as string,\n message: action.payload.message as string,\n },\n };\n }\n\n // CREATE USER\n case getType(createUserActions.createUserAsync.success): {\n return {\n ...state,\n createUserResponse: {\n code: action.payload.code,\n message: action.payload.message,\n },\n };\n }\n\n case getType(createUserActions.createUserAsync.failure): {\n return {\n ...state,\n createUserResponse: {\n code: action.payload.code as string,\n message: action.payload.message as string,\n },\n };\n }\n case getType(createUserActions.resetCreateUserResponse): {\n return {\n ...state,\n createUserResponse: {\n code: '',\n message: '',\n },\n };\n }\n // CREATE USER END\n\n // CREATE GROUP\n case getType(createGroupActions.createGroupAsync.success): {\n return {\n ...state,\n createGroupResponse: {\n code: action.payload.code,\n message: action.payload.message,\n },\n };\n }\n\n case getType(createGroupActions.createGroupAsync.failure): {\n return {\n ...state,\n createGroupResponse: {\n code: action.payload.code as string,\n message: action.payload.message as string,\n },\n };\n }\n\n case getType(createGroupActions.resetGroupResponse): {\n return {\n ...state,\n createGroupResponse: {\n code: '',\n message: '',\n },\n };\n }\n // CREATE GROUP END\n\n case getType(manageUserActions.manageUserAsync.success): {\n return {\n ...state,\n manageUserResponse: {\n code: action.payload.code,\n message: action.payload.message,\n },\n };\n }\n\n case getType(manageUserActions.manageUserAsync.failure): {\n return {\n ...state,\n manageUserResponse: {\n code: action.payload.code as string,\n message: action.payload.message as string,\n },\n };\n }\n\n case getType(manageUserActions.resetManageUserResponse): {\n return {\n ...state,\n manageUserResponse: {\n code: '',\n message: '',\n },\n };\n }\n\n case getType(getGroupActions.getGroupAsync.success): {\n return {\n ...state,\n groupList: action.payload.groupList,\n };\n }\n\n case getType(getGroupActions.getGroupAsync.failure): {\n return {\n ...state,\n groupList: [],\n };\n }\n case getType(getGroupActions.resetGroupListResponse): {\n return {\n ...state,\n groupList: [],\n };\n }\n // AdministrationClientSpace\n case getType(administrationClientSpace.adminClientSpaceAsync.success): {\n return {\n ...state,\n administrationList: action.payload.userList || [],\n error: 'no matches found',\n };\n }\n\n case getType(administrationClientSpace.adminClientSpaceAsync.failure): {\n if (action.payload) {\n return {\n ...state,\n administrationList: [],\n error: action.payload.message,\n };\n }\n return {\n ...state,\n administrationList: [],\n error: 'unexpected error',\n };\n }\n case getType(administrationClientSpace.resetAdminClientSpaceResponse): {\n return {\n ...state,\n administrationList: [],\n error: undefined,\n };\n }\n default:\n return { ...state };\n }\n};\n\nexport default userGroupReducer;\n","import { Reducer } from 'redux';\nimport { getType } from 'typesafe-actions';\nimport { TResponse, TUser } from 'Models';\nimport * as actions from '../_actions/caseResult.action';\n\nexport type RetryFirstPaymentState = Readonly<{\n error?: string;\n retryFirstPaymentResponse: TResponse;\n code?: string;\n message: string;\n}>;\n\nconst initialState = {\n error: undefined,\n code: '',\n message: '',\n retryFirstPaymentResponse: { code: '', message: '' },\n};\n\ntype Actions =\n | actions.RetryFirstPaymentAction\n\nconst retryFirstPaymentReducer: Reducer<RetryFirstPaymentState, Actions> = (\n state = initialState,\n action: Actions,\n) => {\n switch (action.type) {\n case getType(actions.caseResultRetryFirstPaymentAsync.success): {\n return {\n ...state,\n error: undefined,\n retryFirstPaymentResponse: {\n code: action.payload.status as string,\n message: action.payload.message as string,\n },\n };\n }\n\n case getType(actions.caseResultRetryFirstPaymentAsync.failure): {\n return {\n ...state,\n error: action.payload.message,\n retryFirstPaymentResponse: {\n code: action.payload.code as string,\n message: action.payload.message as string,\n },\n };\n }\n\n case getType(actions.retryFirstPayment): {\n return {\n ...state,\n error: undefined,\n retryFirstPaymentResponse: {\n code: '',\n message: '',\n },\n };\n }\n default:\n return { ...state };\n }\n};\n\nexport default retryFirstPaymentReducer;\n","import { Reducer } from 'redux';\nimport { getType } from 'typesafe-actions';\n\nimport * as actions from '../_actions/transferContract.actions';\n\nimport { TOrder } from 'Models';\nimport { log } from '../utils/helpers';\n\nexport type TransferContractState = Readonly<{\n error?: string;\n transferContract: TOrder[];\n transferContractResponse: any;\n}>;\n\nconst initialState = {\n transferContract: [],\n transferContractResponse: undefined,\n};\n\ntype Actions = actions.TransferContractAction;\n\nconst transferContractReducer: Reducer<TransferContractState, Actions> = (\n state = initialState,\n action: Actions,\n) => {\n switch (action.type) {\n case getType(actions.transferGetContractAsync.success): {\n log('payload => ', action.payload);\n return {\n ...state,\n transferContract: action.payload,\n error: undefined,\n };\n }\n case getType(actions.transferGetContractAsync.request):\n case getType(actions.transferContractAsync.request):\n return {\n ...state,\n error: '',\n transferContractResponse: '',\n };\n case getType(actions.transferContractAsync.success):\n return {\n ...state,\n error: '',\n transferContractResponse: 'SUCCESS',\n };\n\n case getType(actions.transferGetContractAsync.failure):\n return {\n ...state,\n transferContract: [],\n error: action.payload.code,\n };\n\n case getType(actions.transferContractAsync.failure): {\n return {\n ...state,\n error: action.payload.message,\n transferContractResponse: 'ERROR',\n };\n }\n\n case getType(actions.resetResponse):\n return {\n ...state,\n transferContract: [],\n error: '',\n };\n\n case getType(actions.resetResponseTransfer):\n return {\n ...state,\n error: '',\n transferContractResponse: '',\n transferContract: [],\n };\n default:\n return { ...state };\n }\n};\n\nexport default transferContractReducer;\n","import { TEPInvoice } from 'Models';\nimport { Reducer } from 'redux';\nimport { getType } from 'typesafe-actions';\nimport { parseSrcIframe } from '../utils/helpers';\n\nimport * as actions from '../_actions/paymentCB.actions';\n\nexport type PaymentState = Readonly<\n {\n error?: string;\n requestProps?: {\n dueDate: string;\n payment: TEPInvoice;\n };\n responsePayload?: {\n errors: Array<{ code: string; description: string }>;\n };\n } & Partial<actions.TPaymentCBResponse>\n>;\n\nexport const initialState: PaymentState = {\n iframe: undefined,\n stripe: undefined,\n adhocPaymentId: undefined,\n transactionId: undefined,\n error: undefined,\n responsePayload: { errors: [] },\n};\n\ntype Actions = actions.PaymentCBAction;\n\nconst paymentReducer: Reducer<PaymentState, Actions> = (\n state = initialState,\n action: Actions,\n) => {\n switch (action.type) {\n case getType(actions.createPaymentCBAsync.request): {\n return {\n ...initialState,\n requestProps: action.payload,\n };\n }\n\n case getType(actions.createPaymentCBAsync.success): {\n return {\n ...state,\n ...action.payload,\n iframe: parseSrcIframe(action.payload.iframe),\n error: undefined,\n };\n }\n\n case getType(actions.createPaymentCBAsync.failure): {\n return {\n ...initialState,\n requestProps: state.requestProps,\n responsePayload: action.payload,\n error: \"Une erreur s'est produite\",\n };\n }\n\n case getType(actions.resetModal): {\n return {\n ...initialState,\n };\n }\n default:\n return { ...state };\n }\n};\n\nexport default paymentReducer;\n","import { combineReducers } from 'redux';\n\nimport authReducer from '../_reducers/auth.reducer';\nimport profileReducer from '../_reducers/profile.reducer';\nimport contractReducer from '../_reducers/contract.reducer';\nimport eventReducer from '../_reducers/event.reducer';\nimport consumptionReducer from '../_reducers/consumption.reducer';\nimport fileReducer from '../_reducers/file.reducer';\nimport paymentReducer from '../_reducers/payment.reducer';\nimport packageReducer from '../_reducers/package.reducer';\nimport customersContractReducer from '../_reducers/customerContract.reducer';\nimport orderReducer from '../_reducers/order.reducer';\nimport userGroupReducer from '../_reducers/searchUserGroup.reducer';\nimport retryFirstPaymentReducer from '../_reducers/caseRetryPayment.reducer';\nimport transferContractReducer from '../_reducers/transferContract.reducer';\nimport paymentCBReducer from '../_reducers/paymentCB.reducer';\n\nconst rootReducer = combineReducers({\n authReducer,\n profileReducer,\n contractReducer,\n eventReducer,\n consumptionReducer,\n fileReducer,\n paymentReducer,\n packageReducer,\n customersContractReducer,\n orderReducer,\n userGroupReducer,\n transferContractReducer,\n paymentCBReducer,\n retryFirstPaymentReducer,\n});\n\nexport default rootReducer;\n","const version = process.env.APP_VERSION;\nconst STORAGE_KEY = `__SERIALIZED_STATE_TREE_v${version}__`;\n\nexport function saveState<T = object>(storeState: T): boolean {\n if (!localStorage) {\n return false;\n }\n\n try {\n const serializedState = JSON.stringify(storeState);\n localStorage.setItem(STORAGE_KEY, serializedState);\n return true;\n } catch (error) {\n throw new Error('store serialization failed');\n }\n}\n\nexport function loadState<T = object>(): T | undefined {\n if (!localStorage) {\n return;\n }\n\n try {\n const serializedState = localStorage.getItem(STORAGE_KEY);\n if (serializedState == null) {\n return;\n }\n return JSON.parse(serializedState);\n } catch (error) {\n throw new Error('store deserialization failed');\n }\n}\n","import { createStore, applyMiddleware, compose } from 'redux';\nimport { createEpicMiddleware } from 'redux-observable';\nimport { RootAction, RootState, Services } from 'Types';\nimport rootEpic from './root-epic';\nimport rootReducer from './root-reducer';\nimport services from '../services';\n\nimport { initialState } from '../_reducers/paymentCB.reducer';\n\nconst getUserId = () => {\n try {\n return sessionStorage.getItem('currentClient');\n } catch (err) {\n return null;\n }\n};\n\nconst prepareState = (state: RootState): RootState => ({\n ...state,\n paymentCBReducer: { ...initialState },\n});\n\nconst loadState = () => {\n try {\n const userId = getUserId();\n let serializedState;\n if (userId) {\n serializedState = sessionStorage.getItem(userId);\n } else {\n serializedState = localStorage.getItem('reduxState');\n }\n if (!serializedState) {\n return {};\n }\n\n return JSON.parse(serializedState);\n } catch (err) {\n console.log('Unable to find state');\n return {};\n }\n};\n\nconst saveState = (state: any) => {\n try {\n const userId = getUserId();\n const serializedState = JSON.stringify(state);\n if (userId) {\n sessionStorage.setItem(userId, serializedState);\n } else {\n localStorage.setItem('reduxState', serializedState);\n }\n } catch (err) {\n console.log('Unable to set state');\n }\n};\n\nconst epicMiddleware = createEpicMiddleware<\n RootAction,\n RootAction,\n RootState,\n Services\n>({\n dependencies: services,\n});\n\nconst composeEnhancers =\n (process.env.NODE_ENV !== 'production' &&\n (window as any).__REDUX_DEVTOOLS_EXTENSION_COMPOSE__) ||\n compose;\n\nconst persistedState = prepareState(loadState());\n\nconst middlewares = [epicMiddleware];\n\nconst reducer = (state: any, action: RootAction) => {\n if (action.type === 'REDUX_RESET_STATE') {\n delete state.authReducer;\n delete state.profileReducer;\n delete state.contractReducer;\n delete state.packageReducer;\n delete state.fileReducer;\n delete state.orderReducer;\n delete state.eventReducer;\n delete state.consumptionReducer;\n delete state.userGroupReducer;\n delete state.customersContractReducer;\n delete state.paymentReducer;\n delete state.transferContractReducer;\n }\n\n return rootReducer(state, action);\n};\n\nconst store = createStore(\n reducer,\n persistedState,\n // initialState,\n composeEnhancers(applyMiddleware(...middlewares)),\n);\n\nstore.subscribe(() => {\n saveState(store.getState());\n});\n\nepicMiddleware.run(rootEpic);\n\nexport default store;\n","import _, { isArray } from 'lodash';\nimport { throwError, Observable, from } from 'rxjs';\nimport { ajax } from 'rxjs/ajax';\nimport { map, catchError } from 'rxjs/operators';\nimport { log } from '../utils/helpers';\nimport { hasExpiredSession } from '../utils/storage';\nimport Config from '../utils/config';\nimport Lambda, { InvocationResponse } from 'aws-sdk/clients/lambda';\nimport { AWSError } from 'aws-sdk/lib/error';\nimport {\n RequestError,\n ParsingError,\n FunctionNameError,\n} from '../utils/network/errors';\n\nconst errRegexp: RegExp = new RegExp(/^[45][\\S]+/);\nconst codeMessageRegexp: RegExp = new RegExp(/code|message+/);\n\nconst invokeLambda = async (\n functionName: string,\n payload: object,\n): Promise<any | RequestError> => {\n if (!functionName) {\n return new FunctionNameError();\n }\n const lambdaInstance = new Lambda(Config.aws);\n log(`lambda ${functionName}: payload ====>`, payload);\n return new Promise(resolve => {\n lambdaInstance.invoke(\n {\n FunctionName: functionName,\n Payload: JSON.stringify(payload),\n InvocationType: 'RequestResponse',\n LogType: 'None',\n },\n (err: AWSError, res: InvocationResponse) => {\n if (err) {\n log(\n `Error from lambda ${functionName} ====> `,\n err.message,\n );\n resolve(new RequestError(err.message, err.code, null));\n } else {\n try {\n const response: any = JSON.parse(`${res.Payload}`);\n log(`lambda ${functionName}: response ====>`, response);\n const statusCode: string = `${_.get(\n response,\n 'statusCode',\n '',\n )}`;\n if (errRegexp.test(statusCode)) {\n if (\n response.body &&\n typeof response.body === 'string'\n ) {\n const decodedJson = JSON.parse(response.body);\n\n if (\n codeMessageRegexp.test(decodedJson.message)\n ) {\n resolve(\n new RequestError(\n _.get(\n JSON.parse(decodedJson.message),\n 'message',\n '',\n ),\n statusCode,\n null,\n ),\n );\n }\n\n resolve(\n new RequestError(\n _.get(decodedJson, 'message', ''),\n statusCode,\n null,\n ),\n );\n }\n resolve(\n new RequestError(\n _.get(response, 'body.message', ''),\n statusCode,\n null,\n ),\n );\n } else {\n resolve(response);\n }\n } catch (pErr) {\n console.error(pErr);\n resolve(new ParsingError());\n }\n }\n },\n );\n });\n};\n\nconst apiRequest = <T>({\n path,\n method,\n body,\n isSubscription,\n isPay,\n isPayEP,\n lambdaFunctionName,\n}: any): Observable<T> => {\n const expires = Number(localStorage.getItem('expires'));\n if (expires && new Date().getTime() > expires) {\n localStorage.removeItem('expires');\n return Observable.create((observer: any) => {\n observer.error({\n code: '401',\n message: 'Session expired',\n });\n });\n }\n\n const renderChannel = () => {\n if (!!body.channel) {\n return body.channel;\n }\n\n const storageGroup = localStorage.getItem('userGroup');\n\n let ctrChan;\n if (storageGroup === null && !!body.contractChannel) {\n ctrChan = body.contractChannel;\n delete body.contractChannel;\n }\n\n if (ctrChan) return ctrChan;\n\n return storageGroup !== null ? storageGroup : 'WEB';\n };\n\n const modifiedBody = {\n ...body,\n channel: renderChannel(),\n seller: 'WEKIWI',\n };\n\n if (lambdaFunctionName) {\n // return from(invokeLambda(lambdaFunctionName, modifiedBody));\n }\n\n const url = `${\n isSubscription ? Config.URL_SUBSCRIPTION : Config.URL\n }${path}`;\n // if (isPay && !isSubscription) {\n // url = `${Config.URL_PAY}${path}`;\n // } else {\n // if (isPayEP) {\n // url = `${Config.URL_ENERGYPAID}${path}`;\n // }\n // }\n\n const settings = {\n method,\n url,\n headers: { 'Content-Type': 'application/json' },\n responseType: 'json',\n body: modifiedBody,\n } as any;\n\n const token = localStorage.getItem('token');\n if (token && path !== '/login' && !isPayEP) {\n const Authorization = 'Authorization';\n settings.headers[Authorization] = `Bearer ${token}`;\n }\n\n if (isPayEP) {\n settings.method = 'post';\n settings.headers.Accept = '*/*';\n settings.headers['Access-Control-Allow-Origin'] = '*';\n settings.headers['Cache-Control'] = 'no-cache';\n const ContentType = 'Content-Type';\n settings.headers[ContentType] = 'application/json';\n }\n\n settings.headers['x-api-key'] = Config.ApiKey;\n\n return ajax(settings).pipe(\n catchError(({ message, status, response }) => {\n const error = {\n message,\n code: String(status),\n errors: [],\n };\n if (response) {\n if (isArray(response)) {\n error.errors = response as any;\n } else {\n error.code = response.code;\n error.message = response.message;\n }\n }\n log(`Error from API ${path}: `, error);\n return throwError(error);\n }),\n map(({ response }) => {\n if (!response) {\n return {\n code: '500',\n message: 'Internal Server Error',\n };\n }\n return response;\n }),\n );\n};\n\nconst fetchApiRequestBlob = async (\n bodyRequest: any,\n path: string,\n configPath?: string,\n): Promise<Blob | undefined> => {\n const settings = {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(bodyRequest),\n } as any;\n\n const token = localStorage.getItem('token');\n if (token) {\n const Authorization = 'Authorization';\n settings.headers[Authorization] = `Bearer ${token}`;\n }\n\n try {\n const response = await fetch(\n `${configPath ? configPath : Config.URL}${path}`,\n settings,\n );\n return response.blob();\n } catch (err) {\n log(`Error from ${path} (fetch) =>`, err);\n return undefined;\n }\n};\n\nexport { fetchApiRequestBlob, invokeLambda };\nexport default apiRequest;\n","import * as localStorage from './local-storage-service';\nimport apiRequest from './api-service';\n\nexport default {\n localStorage,\n apiRequest,\n};\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read http://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\ntype Config = {\n onSuccess?: (registration: ServiceWorkerRegistration) => void;\n onUpdate?: (registration: ServiceWorkerRegistration) => void;\n};\n\nexport function register(config?: Config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(\n (process as { env: { [key: string]: string } }).env.PUBLIC_URL,\n window.location.href\n );\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit http://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl: string, config?: Config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See http://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl: string, config?: Config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\n","class AuthService {\n public static authenticate() {}\n\n public static logout(): void {\n localStorage.removeItem('token');\n localStorage.removeItem('accessToken');\n localStorage.removeItem('userId');\n localStorage.removeItem('reduxState');\n localStorage.removeItem('expires');\n localStorage.removeItem('isValidated');\n localStorage.removeItem('isEmail');\n }\n\n public static isAuthenticated(): boolean {\n const token = localStorage.getItem('token');\n const accessToken = localStorage.getItem('accessToken');\n const userId = localStorage.getItem('userId');\n return (\n token !== undefined &&\n token !== null &&\n accessToken !== undefined &&\n accessToken !== null &&\n userId !== undefined &&\n userId !== null\n );\n }\n\n public static isVlaidated(): boolean {\n const isValidated = localStorage.getItem('isValidated');\n return (\n isValidated === null ||\n isValidated === undefined ||\n isValidated === 'true'\n );\n }\n}\n\nexport default AuthService;\n","import CustomButton from './CustomButton';\n\nexport default CustomButton;\n","import React from 'react';\n\ntype Props = {\n title?: string;\n color?: string;\n disabled?: boolean;\n onClick?: any;\n arrowLeft?: boolean;\n arrowRight?: boolean;\n isLoading?: boolean;\n heavy?: boolean;\n style?: any;\n};\n\nconst CustomButton: React.FC<Props> = ({\n title,\n color,\n disabled,\n onClick,\n arrowLeft,\n arrowRight,\n isLoading,\n heavy,\n style,\n}) => {\n const classNames: string[] = ['custom-button', `custom-button--${color}`];\n if (!!disabled) classNames.push('custom-button__disabled');\n if (isLoading) classNames.push('custom-button__loading');\n if (!!heavy) classNames.push('custom-button__heavy');\n return (\n <button\n className={classNames.join(' ')}\n type=\"button\"\n onClick={!!disabled ? undefined : onClick}\n style={style}\n >\n {arrowLeft && <i className=\"custom-button__arrowLeft\" />}\n {isLoading ? 'Chargement...' : title}\n {/* {title} */}\n {arrowRight && <i className=\"custom-button__arrowRight\" />}\n </button>\n );\n};\n\nexport default CustomButton;\n","import CustomInput from './CustomInput';\n\nexport default CustomInput;\n","import React, { CSSProperties } from 'react';\n\ntype InputSetting = {\n isLocked?: boolean;\n text?: string;\n value?: any;\n type?: string;\n error?: string;\n onInputChange?: (e: React.ChangeEvent<HTMLInputElement>) => any;\n onToggleModal?: any;\n minLength?: number;\n maxLength?: number;\n isInterrogationVisible?: boolean;\n defaultValue?: any;\n placeholder?: string;\n disabled?: boolean;\n onBlur?: any;\n onKeyPress?: any;\n deleteButton?: boolean;\n deleteButtonOnClick?: () => void;\n style?: CSSProperties;\n};\n\nconst CustomInput: React.FC<InputSetting> = setting => (\n <div style={setting.style} className=\"custom-input\">\n {setting.text && (\n <label htmlFor={`id${setting.text}`}>\n {setting.text}\n {setting.isInterrogationVisible && (\n <span\n className=\"custom-input__layer\"\n onClick={setting.onToggleModal}\n onKeyDown={setting.onToggleModal}\n role=\"button\"\n tabIndex={0}\n >\n ?\n </span>\n )}\n </label>\n )}\n\n {setting.deleteButton && setting.value !== '' && (\n <span\n className=\"custom-input__delete\"\n onClick={setting.deleteButtonOnClick}\n role=\"button\"\n tabIndex={0}\n >\n <span role=\"button\" tabIndex={0}>\n X\n </span>\n </span>\n )}\n\n <input\n className={`custom-input__input${\n setting.isLocked ? ' custom-input__input--locked' : ''\n }`}\n onChange={setting.onInputChange}\n type={setting.type}\n value={setting.value}\n minLength={setting.minLength}\n maxLength={setting.maxLength}\n defaultValue={setting.defaultValue}\n placeholder={setting.placeholder}\n disabled={setting.disabled}\n onBlur={setting.onBlur}\n onKeyPress={setting.onKeyPress}\n />\n {setting.error && setting.error !== '' && (\n <p className=\"custom-input__error\">{setting.error}</p>\n )}\n </div>\n);\nexport default CustomInput;\n","import React from 'react';\n\nimport DayPicker from 'react-day-picker';\nimport 'react-day-picker/lib/style.css';\nimport MomentLocaleUtils from 'react-day-picker/moment';\nimport 'moment/locale/fr';\n\nimport CustomInput from '../CustomInput';\n\nconst modifiersStyles = {\n highlighted: {\n color: 'white',\n backgroundColor: '#ffb40a',\n },\n\n outside: { color: '#8954ba', backgroundColor: 'white' },\n};\n\ntype Props = {\n dateHighlighted?: any;\n handleChangeDay?: any;\n selectedDays?: any[];\n disabledDays?: any[];\n};\n\nconst CustomDayPicker: React.FC<Props> = props => {\n const modifiers = {\n highlighted: props.dateHighlighted,\n weekend: { daysOfWeek: [0, 6] },\n };\n\n return (\n <div className=\"custom-daypicker\">\n <CustomInput\n placeholder=\"JJ-MM-AAAA\"\n disabled={true}\n value={\n props.dateHighlighted !== null &&\n props.dateHighlighted !== undefined\n ? props.dateHighlighted.toLocaleDateString()\n : ''\n }\n />\n <DayPicker\n locale=\"fr\"\n localeUtils={MomentLocaleUtils as any}\n selectedDays={props.selectedDays}\n modifiers={modifiers}\n modifiersStyles={modifiersStyles}\n onDayClick={props.handleChangeDay}\n disabledDays={props.disabledDays}\n />\n </div>\n );\n};\n\nexport default CustomDayPicker;\n","import CustomDayPicker from './CustomDayPicker';\n\nexport default CustomDayPicker;\n","import React from 'react';\n\nimport { CSVLink } from 'react-csv';\nimport ReactTable from 'react-table';\nimport 'react-table/react-table.css';\n\nimport CustomButton from '../CustomButton';\n\nexport const LoadingComponent: React.FC<{ loading: boolean }> = ({\n loading,\n}) => {\n if (loading) {\n return (\n <div className=\"custom-loading -loading -active\">\n <div className=\"custom-loading-inner -loading-inner\">\n Chargement en cours...\n </div>\n </div>\n );\n }\n return null;\n};\n\ntype Props = {\n columns: object[];\n data: any;\n title?: string;\n loading?: boolean;\n defaultPageSize?: number;\n pageSize?: number;\n noDataText?: string;\n sortable?: boolean;\n buttonTitle?: string;\n error?: string;\n SubComponent?: any;\n PaginationComponent?: any;\n showPagination?: boolean;\n showPaginationBottom?: boolean;\n downloadData?: any;\n downloadHeaders?: any;\n downloadFilename?: string;\n downloadButtonTitle?: string;\n className?: string;\n filterable?: boolean;\n handleButtonClick?(): void;\n};\n\nconst CustomTable: React.FC<Props> = ({\n columns,\n data,\n title,\n loading,\n defaultPageSize,\n noDataText,\n sortable,\n buttonTitle,\n handleButtonClick,\n error,\n SubComponent,\n PaginationComponent,\n showPagination,\n showPaginationBottom,\n className,\n downloadHeaders,\n downloadData,\n downloadFilename,\n downloadButtonTitle,\n pageSize,\n filterable,\n}) => (\n <div className=\"custom-table\">\n {title && <h3>{title}</h3>}\n\n <ReactTable\n className={`custom-table__table ${className ? className : ''}`}\n columns={columns}\n data={data}\n pageSize={\n pageSize && !showPagination\n ? pageSize\n : !data\n ? 2\n : defaultPageSize\n }\n filterable={filterable}\n defaultPageSize={defaultPageSize}\n showPaginationBottom={showPaginationBottom === true}\n loading={loading}\n LoadingComponent={LoadingComponent}\n PaginationComponent={PaginationComponent}\n noDataText={noDataText}\n sortable={sortable}\n SubComponent={SubComponent}\n showPagination={showPagination}\n getTrProps={(state: any, rowInfo: any, column: any) => {\n if (rowInfo === undefined) {\n return {};\n }\n return {\n 'data-qnt':\n rowInfo.original\n .SOME_VALUE_WITH_QUANTITY_OF_CHILDREN_ROWS,\n };\n }}\n />\n {!error && buttonTitle && (\n <CustomButton\n title={buttonTitle}\n color=\"orange\"\n onClick={handleButtonClick}\n />\n )}\n {downloadButtonTitle && downloadData && (\n <CSVLink\n className=\"custom-table__downloadLink\"\n data={downloadData}\n headers={downloadHeaders}\n filename={downloadFilename}\n >\n {downloadButtonTitle}\n </CSVLink>\n )}\n </div>\n);\n\nexport default CustomTable;\n","import CustomTable from './CustomTable';\n\nexport default CustomTable;\n","import CustomToggle from './CustomToggle';\n\nexport default CustomToggle;\n","import * as React from 'react';\n\ninterface IProps {\n disabled?: boolean;\n text?: string;\n value?: string;\n checked?: boolean;\n id?: any;\n handleCheck?: any;\n handleClick?: any;\n isLocked?: boolean;\n}\n\n// TODO Implement disabled props\nconst CustomToggle: React.SFC<IProps> = props => (\n <div className=\"custom-toggle\">\n <input\n type=\"checkbox\"\n id={props.id}\n value={props.value}\n checked={props.checked}\n onChange={props.handleCheck}\n />\n <div onClick={props.handleClick} className=\"custom-toggle__toggle\">\n <label htmlFor={props.id}>\n <i />\n </label>\n </div>\n <p className={` ${props.isLocked && 'isLocked'}`}>{props.text}</p>\n </div>\n);\n\nexport default CustomToggle;\n","import React from 'react';\nimport _ from 'lodash';\nimport Select from 'react-select';\nimport CreatableSelect from 'react-select/creatable';\n\nimport { SelectOption } from 'Types';\n\nexport interface IStateElements {\n isMenuOpen: boolean;\n}\n\nexport interface IProps {\n disabled?: boolean | undefined;\n id?: string;\n text?: string;\n value?: any;\n defaultValue?: any;\n options?: Array<SelectOption<any>>;\n placeholder?: string;\n isClearable?: boolean;\n handleChangeSelect: any;\n error?: string | undefined | SelectOption<any>;\n isMulti?: boolean;\n inputValue?: any;\n onInputChange?: (input: string) => void;\n}\n\nconst indicatorSeparatorStyle = {\n alignSelf: 'stretch',\n // backgroundColor: colourOptions[2].color,\n marginBottom: 8,\n marginTop: 8,\n width: 1,\n};\n\nconst IndicatorSeparator = ({ innerProps }: any) => {\n return <span style={indicatorSeparatorStyle} {...innerProps} />;\n};\n\nclass CustomSelect extends React.Component<IProps> {\n state: IStateElements = {\n isMenuOpen: false,\n };\n\n handleChange(val: boolean): void {\n this.setState({ isMenuOpen: val });\n }\n\n render() {\n const {\n id,\n text,\n value,\n defaultValue,\n handleChangeSelect,\n options,\n placeholder,\n error,\n onInputChange,\n isClearable,\n isMulti,\n inputValue,\n disabled,\n } = this.props;\n const current: SelectOption<any> | undefined =\n options && options.find(option => option.value === defaultValue);\n const { isMenuOpen } = this.state;\n\n const renderClearable = () => (\n <CreatableSelect\n className={`custom-select__content__select ${\n isMenuOpen ? 'custom-select__content__select--menuOpen' : ''\n }`}\n classNamePrefix=\"react-select\"\n isClearable\n onChange={handleChangeSelect}\n onInputChange={onInputChange}\n inputValue={inputValue}\n options={options}\n isDisabled={!!disabled}\n placeholder={_.get(current, 'label') || placeholder}\n formatCreateLabel={(value: string) =>\n `Créer : ${value.toUpperCase()}`\n }\n />\n );\n\n const renderDefault = () => (\n <Select\n className={`custom-select__content__select ${\n isMenuOpen ? 'custom-select__content__select--menuOpen' : ''\n }`}\n classNamePrefix=\"react-select\"\n value={value}\n placeholder={_.get(current, 'label') || placeholder}\n defaultValue={defaultValue}\n onChange={handleChangeSelect}\n onInputChange={onInputChange}\n options={options}\n onMenuOpen={() => this.handleChange(true)}\n onMenuClose={() => this.handleChange(false)}\n isDisabled={!!disabled}\n />\n );\n\n const renderMulti = () => (\n <Select\n className={`custom-select__content__select ${\n isMenuOpen ? 'custom-select__content__select--menuOpen' : ''\n }`}\n classNamePrefix=\"react-select\"\n value={value}\n placeholder={_.get(current, 'label') || placeholder}\n defaultValue={defaultValue}\n onChange={handleChangeSelect}\n options={options}\n isDisabled={!!disabled}\n isMulti\n closeMenuOnSelect={false}\n components={{ IndicatorSeparator }}\n />\n );\n\n const manageSelect = () => {\n if (isClearable) return renderClearable();\n if (isMulti) return renderMulti();\n\n return renderDefault();\n };\n\n return (\n <div className=\"custom-select\">\n <div className=\"custom-select__content\">\n <label htmlFor={id}>{text}</label>\n\n {manageSelect()}\n </div>\n\n {error && error !== '' && (\n <p className=\"custom-select__error\">{error}</p>\n )}\n </div>\n );\n }\n}\n\nexport default CustomSelect;\n","import CustomSelect from './CustomSelect';\nexport default CustomSelect;\n","import React from 'react';\n\nimport WordingConstant from '../../utils/wording.json';\n\nconst Wording = WordingConstant.Common;\n\ntype Props = {\n show?: boolean;\n showCloseButton?: boolean;\n handleClick?: any;\n className?: string;\n children: JSX.Element[] | JSX.Element;\n customStyle?: React.CSSProperties;\n};\n\nconst CustomModal: React.FC<Props> = ({\n show,\n showCloseButton,\n handleClick,\n className,\n children,\n customStyle,\n}) => (\n <div\n role=\"button\"\n tabIndex={0}\n className={`custom-modal ${show ? ' custom-modal--show-modal' : ''} `}\n >\n <div\n className={` custom-modal__content ${\n className !== '' ? className : ''\n }`}\n role=\"button\"\n tabIndex={0}\n style={customStyle}\n >\n {showCloseButton && (\n <span\n className=\"custom-modal__content__close-button\"\n onClick={handleClick}\n role=\"button\"\n tabIndex={0}\n >\n {Wording.popup.closeButton}\n </span>\n )}\n {children}\n </div>\n </div>\n);\n\nexport default CustomModal;\n","import CustomModal from './CustomModal';\n\nexport default CustomModal;\n","import CustomDate from './CustomDate';\n\nexport default CustomDate;\n","import React from 'react';\nimport { List } from 'react-content-loader';\nimport {\n TOffer,\n TProduct,\n TAdditionalRate,\n TAmountWithLabel,\n TUnitPriceWithLabel,\n} from 'Models';\n\nimport CustomToggle from '../CustomToggle';\nimport { transformPriceLabel } from '../../utils/helpers';\nimport { initialUnitPriceWithLabel } from '../../utils/initialState';\nimport WordingConstant from '../../utils/wording.json';\nimport { InputEvent } from 'Types';\nimport { EModeManageOffer } from '../../utils/enums';\n\nconst Wording = WordingConstant.PackagePage;\nconst CommonWording = WordingConstant.Common;\nconst PriceWording = Wording.price;\nconst DetailWording = Wording.detail;\n\ntype Props = {\n loading: boolean;\n prices: number[];\n offer: TOffer;\n products: TProduct[];\n additionalOptions: TAdditionalRate[];\n currentProductCodes: string[];\n currentAdditionalOptions: string[];\n loadingOption: boolean;\n handleToggle: any;\n contractProduct: any;\n};\n\nconst CommonUnit: { [key: string]: string } = CommonWording.unit;\n\nconst PlanElement: React.FC<Props> = ({\n loading,\n prices,\n offer,\n products,\n additionalOptions,\n currentProductCodes,\n currentAdditionalOptions,\n handleToggle,\n loadingOption,\n contractProduct,\n}) => {\n const renderDetail = () => {\n if (loading) {\n return (\n <p className=\"plan-element__noOffer\">\n {CommonWording.isLoading}\n </p>\n );\n }\n if (!offer) {\n return (\n <p className=\"plan-element__noOffer\">{CommonWording.noData}</p>\n );\n }\n\n const details: TAmountWithLabel[] = offer.details || [];\n const totalAmount = details.find(\n d => d.category === DetailWording.category.totalAmount,\n );\n const subscription =\n totalAmount && totalAmount.unitPrices\n ? totalAmount.unitPrices.find(\n p => p.label === PriceWording.subscription.label,\n )\n : { ...initialUnitPriceWithLabel };\n const additionalRates = details.filter(\n d => d.category === DetailWording.category.additionalRate,\n );\n const totalBudget = details.find(\n d => d.category === DetailWording.category.totalBudget,\n );\n const discountRates = details.find(\n d => d.category === DetailWording.category.discountRate,\n );\n\n const renderPrice = (\n { label, price, unit }: TUnitPriceWithLabel,\n index: number,\n fix_part?: boolean,\n ) => {\n const displayedUnit = CommonUnit[unit];\n const display = transformPriceLabel(label);\n if (display === '') return null;\n const formattedPrice = fix_part\n ? parseFloat(price).toFixed(2)\n : price;\n return (\n <p key={index}>\n {display} :{' '}\n <span>\n {formattedPrice} {displayedUnit}\n </span>\n </p>\n );\n };\n return (\n <>\n <div\n className={`plan-element__description ${\n prices.length === 0\n ? `plan-element__description--cyclicBill`\n : ''\n }`}\n >\n {offer && loadingOption ? (\n <List />\n ) : (\n <React.Fragment>\n <div className=\"plan-element__description__subscription\">\n <p className=\"plan-element__description__title\">\n {Wording.detail.title.fix}\n </p>\n {subscription &&\n renderPrice(subscription, 0, true)}\n <div className=\"plan-element__description__separator\" />\n </div>\n <p className=\"plan-element__description__title\">\n {Wording.detail.title.consumption}\n </p>\n <p className=\"plan-element__description__subtitle\">\n {Wording.detail.title.grossPrice}\n </p>\n {totalAmount &&\n totalAmount.unitPrices &&\n totalAmount.unitPrices\n .filter(\n p =>\n p.label !==\n PriceWording.subscription.label,\n )\n .map((e, index) => renderPrice(e, index))}\n <br className=\"plan-element__description__margin\" />\n {additionalRates.map(\n (rate, idx1) =>\n rate &&\n rate.unitPrices &&\n rate.unitPrices.map((e, idx2) =>\n renderPrice(e, idx1 + idx2),\n ),\n )}\n {totalBudget &&\n totalBudget.unitPrices &&\n totalBudget.unitPrices.map((e, index) =>\n renderPrice(e, index),\n )}\n <br className=\"plan-element__description__margin\" />\n <p className=\"plan-element__description__subtitle\">\n {Wording.detail.title.discountPrice}\n </p>\n {discountRates &&\n discountRates.unitPrices &&\n discountRates.unitPrices.map((e, index) =>\n renderPrice(e, index),\n )}\n {additionalOptions &&\n currentAdditionalOptions &&\n currentAdditionalOptions.length > 0 && (\n <React.Fragment>\n <div className=\"plan-element__description__separator\" />\n <p className=\"plan-element__description__title\">\n {Wording.detail.title.option}\n </p>\n {additionalOptions.map((e, index) => {\n if (\n currentAdditionalOptions &&\n currentAdditionalOptions.includes(\n e.label,\n ) &&\n e.detail\n ) {\n return renderPrice(\n e.detail,\n index,\n );\n }\n return null;\n })}\n </React.Fragment>\n )}\n <div className=\"plan-element__description__separator\" />\n {offer.product && offer.product.description && (\n <p>{offer.product.description}</p>\n )}\n </React.Fragment>\n )}\n </div>\n </>\n );\n };\n\n const containerClassName = `plan-element${\n prices.length === 0 ? ` plan-element--cyclicBill` : ''\n }`;\n\n const priceClassName = `plan-element__prices ${\n prices.length > 1 ? 'plan-element__prices--larger' : ''\n }${offer ? '' : ' plan-element__prices--noOffer'}`;\n\n return (\n <div className={containerClassName}>\n {prices.length !== 0 && (\n <div className={priceClassName}>\n {prices &&\n prices.map((p, index) => (\n <div\n key={index}\n className={`plan-element__prices__label ${\n index === 0 && prices.length > 1\n ? 'plan-element__prices__label--border'\n : ''\n }`}\n >\n {prices.length > 1 && (\n <span className=\"plan-element__prices__label__timeframe\">\n {CommonWording.timeframe[index]}\n </span>\n )}\n <label\n htmlFor=\"idPrice\"\n className=\"plan-element__prices__label__priceDescription\"\n >\n {p}\n <p>{WordingConstant.Common.priceUnit}</p>\n </label>\n <span className=\"plan-element__prices__label__month\">\n {WordingConstant.Common.priceCyclic}\n </span>\n </div>\n ))}\n </div>\n )}\n\n {renderDetail()}\n\n {/* <div\n className={`plan-element__toggle ${\n prices.length === 0\n ? `plan-element__toggle--cyclicBill`\n : ''\n }`}\n >\n {products && products.length > 1 && (\n <div className=\"plan-element__toggle__productOptions\">\n <p className=\"plan-element__toggle__productOptions__title\">\n {Wording.detail.title.fixPrice}\n </p>\n\n {products.map((product, index) => {\n if (product.default) {\n return false;\n }\n return (\n <CustomToggle\n key={index}\n id={`idFixPrice__${index}`}\n text={\n Wording.detail.title.fixPriceDescription\n }\n value={product.productCode}\n checked={currentProductCodes.includes(\n product.productCode,\n )}\n handleCheck={(e: InputEvent) => {\n // Send the product (FIX) if the toggle is checked\n // Otherwise use default product\n let pro: TProduct | undefined = product;\n if (e.currentTarget.checked) {\n pro = product;\n } else {\n pro = products.find(p => p.default);\n }\n\n handleToggle('product', {\n product: pro,\n mode: EModeManageOffer.PRODUCT,\n });\n }}\n />\n );\n })}\n </div>\n )}\n </div>*/}\n </div>\n );\n};\n\nexport default PlanElement;\n","import PlanElement from './PlanElement';\n\nexport default PlanElement;\n","import EnergyDetail from './EnergyDetail';\n\nexport default EnergyDetail;\n","import React from 'react';\n\nconst EnergyDetail: React.FC<{\n details: Array<{\n title: string;\n value: string;\n }>;\n}> = ({ details }) => (\n <div className=\"energy-detail\">\n {details &&\n details.map(({ title, value }, index) => (\n <span key={index}>\n <p>{title}: </p>\n <p>{value}</p>\n </span>\n ))}\n </div>\n);\n\nexport default EnergyDetail;\n","import React, { useEffect } from 'react';\nimport InputRange, { Range } from 'react-input-range';\nimport 'react-input-range/lib/css/index.css';\n\nimport WordingOption from '../../utils/wording.json';\n\nconst Wording = WordingOption.PackagePage;\n\nexport type Props = {\n initial: number;\n ranges: number[][];\n maxValue: number;\n onChange: (prices: number[]) => void;\n};\n\nconst EnergyGauge: React.FC<Props> = ({\n initial,\n ranges,\n maxValue,\n onChange,\n}) => {\n useEffect(() => {\n onChange(ranges[initial]);\n }, [ranges]);\n\n const renderProgressBar = (title: string, idx: any) => {\n const height = ranges[initial][idx];\n const style = {\n height: `${((maxValue - height) * 100) / maxValue}%`,\n };\n return (\n <div className=\"progress\">\n <div className=\"progress__bar\" style={style} />\n <div className=\"progress__label\">\n <span className=\"progress__label__value\">{title}</span>\n <span className=\"progress__label__value\">{height} €</span>\n </div>\n </div>\n );\n };\n\n const renderRangeSlider = () => {\n return (\n <InputRange\n formatLabel={() => ''}\n maxValue={ranges.length - 1}\n minValue={0}\n step={1}\n value={initial}\n onChange={(value: any) => {\n onChange(ranges[value]);\n }}\n />\n );\n };\n\n return (\n <div className=\"energy-gauge\">\n <div className=\"energy-gauge__progress\">\n {renderProgressBar(Wording.plan.gauge.summer, 0)}\n {renderProgressBar(Wording.plan.gauge.winter, 1)}\n </div>\n {renderRangeSlider()}\n </div>\n );\n};\n\nexport default EnergyGauge;\n","import EnergyGauge from './EnergyGauge';\n\nexport default EnergyGauge;\n","import React from 'react';\n\nimport WordingConstant from '../../utils/wording.json';\n\nconst Wording = WordingConstant.Common;\n\ntype Props = {\n title?: string;\n price?: string;\n description?: string;\n chosen?: boolean;\n recommended?: boolean;\n onClick?: any;\n};\n\nconst PackageElement: React.FC<Props> = ({\n title,\n price,\n description,\n chosen,\n recommended,\n onClick,\n}: Props) => {\n let className = 'package-element';\n if (recommended) {\n className += ' package-element--recommended';\n }\n if (chosen) {\n className += ' package-element--chosen';\n }\n return (\n <div className={className} onClick={onClick} role=\"button\" tabIndex={0}>\n {title && <p className=\"package-element__title\">{title}</p>}\n {recommended && (\n <p className=\"package-element__iconizing\">\n {WordingConstant.PackagePage.iconizing}\n </p>\n )}\n <label htmlFor=\"idPrice\" className=\"package-element__price\">\n {price}\n <p>{Wording.priceUnit}</p>\n </label>\n <span>{Wording.priceCyclic}</span>\n {description && (\n <div className=\"package-element__description\">\n {description}\n </div>\n )}\n {chosen && <i className=\"checkmark\" />}\n </div>\n );\n};\n\nexport default PackageElement;\n","import PackageElement from './PackageElement';\n\nexport default PackageElement;\n","import CustomCheckbox from './CustomCheckbox';\n\nexport default CustomCheckbox;\n","import React from 'react';\n\ntype Props = {\n text?: string;\n id?: string;\n checked?: boolean;\n handleCheck?: any;\n imageSrc?: string;\n description?: string;\n};\n\nconst CustomCheckbox: React.FC<Props> = props => (\n <div\n className={`custom-checkbox ${props.description &&\n props.description !== '' &&\n 'custom-check--withDescription'}`}\n >\n <input\n type=\"checkbox\"\n id={props.id}\n checked={props.checked}\n onChange={props.handleCheck}\n value={props.text || ''}\n />\n\n <label\n htmlFor={props.id}\n className={props.imageSrc ? 'custom-checkbox__label' : ''}\n onClick={props.handleCheck}\n >\n {props.imageSrc && <img src={props.imageSrc} className=\"\" alt=\"\" />}\n <div className=\"custom-checkbox__label__content\">\n <p className=\"custom-checkbox__label__content__text\">\n {props.text}\n </p>\n {props.description && props.description !== '' && (\n <p className=\"custom-checkbox__label__content__description\">\n {props.description}\n </p>\n )}\n </div>\n </label>\n </div>\n);\n\nexport default CustomCheckbox;\n","import CustomRadio from './CustomRadio';\r\n\r\nexport default CustomRadio;\r\n","import React from 'react';\r\n\r\ntype Props = {\r\n text: string;\r\n value: string;\r\n id?: string;\r\n checked: boolean;\r\n handleCheck: any;\r\n description?: string;\r\n};\r\n\r\nconst CustomRadio: React.FC<Props> = ({\r\n text,\r\n value,\r\n id,\r\n checked,\r\n handleCheck,\r\n description,\r\n}) => (\r\n <label htmlFor={id} className=\"custom-radio\">\r\n <input\r\n type=\"checkbox\"\r\n id={id}\r\n checked={checked}\r\n onChange={handleCheck}\r\n value={value}\r\n />\r\n <span className=\"custom-radio__checkmark\" />\r\n {text}\r\n {description && (\r\n <p className=\"custom-radio__description\">{description}</p>\r\n )}\r\n </label>\r\n);\r\n\r\nexport default CustomRadio;\r\n","import React from 'react';\nimport { withRouter, RouteComponentProps } from 'react-router-dom';\nimport resources from '../../utils/resources';\nimport WordingConstant from '../../utils/wording.json';\nimport AuthService from '../../services/auth-service';\n\nconst Wording = WordingConstant.MainPage.SideBar;\n\nexport type InjectedProps = {\n handleLogout(): void;\n};\n\ntype Props = InjectedProps & RouteComponentProps<any>;\n\nexport const LogoutButton: React.FC<Props> = ({ history, handleLogout }) => (\n <div\n className=\"side-bar__logout\"\n onClick={() => {\n AuthService.logout();\n handleLogout();\n history.push('/');\n }}\n >\n <img src={resources['ic-logout-sidebar']} alt=\"ic-logout-sidebar\" />\n <p>{Wording.logout}</p>\n </div>\n);\n\nexport default withRouter(LogoutButton);\n","import React from 'react';\nimport { Link } from 'react-router-dom';\nimport resources from '../../utils/resources';\nimport WordingConstant from '../../utils/wording.json';\nimport { RouteProps, SubRouteProps } from 'Types';\nimport LogoutButton from './LogoutButton';\n\nconst Wording = WordingConstant.MainPage.SideBar;\n\ntype Props = {\n routes: RouteProps[];\n firstName: string;\n lastName: string;\n customerNbr: string;\n isAdmin?: boolean;\n userId?: string;\n groupe?: string;\n handleLogout(): void;\n};\n\nconst SideBar: React.FC<Props> = ({\n routes,\n firstName,\n lastName,\n customerNbr,\n handleLogout,\n isAdmin,\n groupe,\n userId,\n}) => {\n const renderUser = () => {\n if (isAdmin) {\n return (\n <>\n <p className=\"title-adm\">\n {Wording.adm_user}\n <span>{userId}</span>\n </p>\n <p className=\"title-adm\">\n {Wording.adm_groupe}\n <span> {groupe}</span>\n </p>\n </>\n );\n }\n\n return (\n <>\n <p>\n {firstName} {lastName}\n </p>\n <p>\n {Wording.numClient}\n {customerNbr}\n </p>\n </>\n );\n };\n return (\n <div className=\"side-bar\">\n <img src={resources['ic-logo-sidebar']} />\n <div className=\"side-bar__data-private\">\n <img src={resources['ic-avatar']} alt=\"ic-avatar\" />\n\n <div className=\"side-bar__data-private__name-number\">\n {renderUser()}\n <LogoutButton handleLogout={handleLogout} />\n </div>\n </div>\n\n <div className=\"side-bar__navigation\">\n <ul className=\"side-bar__navigation__list\">\n {routes.map((route: RouteProps, index: number) => {\n if (!!route.hidden) return null;\n return (\n <React.Fragment key={index}>\n <h2\n className=\"side-bar__navigation__list__title\"\n key={index}\n >\n {route.title}\n </h2>\n <ul>\n {route.links.map(\n (\n subRoute: SubRouteProps,\n indexRoute: number,\n ) => (\n <li key={indexRoute}>\n {(subRoute.title ===\n Wording.routes.contact.links\n .FAQ.title && (\n <a\n href={subRoute.path}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {route.title}\n </a>\n )) || (\n <Link\n to={\n route.path +\n subRoute.path\n }\n >\n {subRoute.title}\n </Link>\n )}\n </li>\n ),\n )}\n </ul>\n </React.Fragment>\n );\n })}\n </ul>\n </div>\n </div>\n );\n};\n\nexport default SideBar;\n","import SideBar from './SideBar';\n\nexport default SideBar;\n","import React from 'react';\n\nimport { TContact, TAddress, TContract } from 'Models';\nimport { ECustomerType } from '../../utils/enums';\nimport resources from '../../utils/resources';\nimport { getLabelCivility } from '../../utils/helpers';\n\nexport const BannerElement: React.FC<{\n imgSrc: string;\n contact: TContact;\n customerType: ECustomerType;\n address?: TAddress;\n contractNumber: string;\n span: boolean;\n}> = ({ imgSrc, contact, customerType, address, contractNumber, span }) => {\n const customerFullName = contact.customerFullName;\n\n let name = `${customerFullName.firstName} ${customerFullName.lastName}`;\n if (customerFullName.lastName === '') {\n name = `${customerFullName.firstName}`;\n } else {\n if (customerFullName.civility) {\n name = `${getLabelCivility(customerFullName.civility)} ${name}`;\n }\n }\n if (customerType === ECustomerType.PROFESSIONAL) {\n name = contact.companyName;\n }\n\n return (\n <React.Fragment>\n <img src={imgSrc} alt=\"img-banner\" />\n <p className=\"banner__item__name\">{name}</p>\n {address && (\n <p className=\"banner__item__address\">\n {`${address.number || ''} ${address.street ||\n ''} ${address.postalCode || ''} ${address.townName ||\n ''}`}\n </p>\n )}\n <p className=\"banner__item__client-number\">N° {contractNumber}</p>\n {span && <span />}\n </React.Fragment>\n );\n};\n\nexport type Props = {\n currentContract: TContract;\n contracts: TContract[];\n contact: TContact;\n customerType: ECustomerType;\n handleChange: (contractNumber: string) => void;\n};\n\ntype State = {\n isMenuOpen: boolean;\n};\n\nclass Banner extends React.Component<Props, State> {\n state = {\n isMenuOpen: false,\n };\n\n dropDown = () => {\n const { isMenuOpen } = this.state;\n this.setState({ isMenuOpen: !isMenuOpen });\n };\n\n selectItem = (contractNumber: string) => {\n const { handleChange } = this.props;\n handleChange(contractNumber);\n this.setState({\n isMenuOpen: false,\n });\n };\n\n setImage(energy: string) {\n if (energy === 'EL') return resources['ic-elec-off'];\n return resources['ic-gas-on'];\n }\n\n renderDefaultItem() {\n const {\n contact,\n customerType,\n contracts,\n currentContract,\n } = this.props;\n const address = currentContract.deliveryPoint.address;\n return (\n <BannerElement\n imgSrc={this.setImage(currentContract.energy)}\n contact={contact}\n customerType={customerType}\n address={address}\n contractNumber={currentContract.contractNumber}\n span={contracts !== undefined && contracts.length > 1}\n />\n );\n }\n\n render() {\n const { isMenuOpen } = this.state;\n const {\n contracts,\n contact,\n customerType,\n currentContract,\n } = this.props;\n return (\n <div\n role=\"button\"\n className={`banner ${\n isMenuOpen && contracts.length > 1 ? 'banner--open' : ''\n }`}\n onClick={this.dropDown}\n tabIndex={0}\n >\n <div className=\"banner__item\">{this.renderDefaultItem()}</div>\n <div\n className=\"banner__items\"\n style={{\n display:\n isMenuOpen && contracts.length > 1\n ? 'block'\n : 'none',\n }}\n >\n {contracts &&\n contracts.map((contract: TContract, index: number) => {\n if (\n contract.contractNumber ===\n currentContract.contractNumber\n ) {\n return false;\n }\n\n const address = contract.deliveryPoint.address;\n const energy = contract.energy;\n const contractNumber = contract.contractNumber;\n return (\n <React.Fragment key={index}>\n <span className=\"banner__items__line\" />\n <div\n key={index}\n role=\"button\"\n onClick={() =>\n this.selectItem(contractNumber)\n }\n className=\"banner__items__item\"\n tabIndex={0}\n >\n <BannerElement\n imgSrc={this.setImage(energy)}\n contact={contact}\n customerType={customerType}\n address={address}\n contractNumber={contractNumber}\n span={true}\n />\n </div>\n </React.Fragment>\n );\n })}\n </div>\n </div>\n );\n }\n}\n\nexport default Banner;\n","import Banner from './Banner';\n\nexport default Banner;\n","import React, { CSSProperties } from 'react';\n\nimport CustomButton from '../CustomButton';\n\nimport resources from '../../utils/resources';\nimport WordingConstant from '../../utils/wording.json';\nimport { isHtml } from '../../utils/helpers';\n\nconst Wording = WordingConstant.Common;\n\ntype Props = {\n show?: boolean;\n showCloseButton?: boolean;\n title: string;\n description: string;\n state?: number;\n customDescription?: string;\n descriptionStyle?: CSSProperties;\n showLogo?: boolean;\n handleCancel?: () => void;\n handleValidate?: () => void;\n};\n\n// state = 0 : success\n// state = 1 : failure\n// state = 2 : request\nconst Modal: React.FC<Props> = ({\n show,\n state = 2,\n showCloseButton = true,\n title,\n description,\n handleCancel,\n handleValidate,\n children,\n customDescription,\n descriptionStyle,\n showLogo,\n}) => {\n // const show = true;\n // const state = 1;\n const showBottom = () => {\n switch (state) {\n case 2:\n return (\n <div className=\"modal__content__buttons\">\n <CustomButton\n title={Wording.popup.cancelButton}\n onClick={handleCancel}\n color={'gray'}\n arrowLeft\n />\n <CustomButton\n title={Wording.popup.validateButton}\n onClick={handleValidate}\n color={'orange'}\n />\n </div>\n );\n case 1:\n return (\n <div className=\"modal__content__description\">\n <p className=\"desc-text\">\n Merci de votre compréhension,\n </p>\n <p className=\"desc-text\">La team Wekiwi</p>\n </div>\n );\n\n case 0:\n\n default:\n return false;\n }\n };\n\n if (!show) {\n return null;\n }\n\n const prepareDescription = (str: string) =>\n str.split('\\n').map((item, i) => (\n <p style={descriptionStyle} key={i}>\n {item}\n </p>\n ));\n\n const renderCustomDescriptipn = () => {\n if (customDescription) {\n if (isHtml(customDescription)) {\n return (\n <p\n style={descriptionStyle}\n dangerouslySetInnerHTML={{ __html: customDescription }}\n ></p>\n );\n }\n return <p>{customDescription}</p>;\n }\n return prepareDescription(description);\n };\n\n return (\n <div\n role=\"button\"\n tabIndex={0}\n className={`modal ${show ? ' modal--show-modal' : ''}`}\n onClick={handleCancel}\n onKeyDown={handleCancel}\n >\n <div\n role=\"button\"\n tabIndex={0}\n className={`modal__content ${\n state === 1 ? 'modal__content--error' : ''\n }`}\n onClick={e => {\n e.stopPropagation();\n }}\n >\n {showCloseButton && (\n <span\n className=\"modal__content__close-button\"\n onClick={handleCancel}\n role=\"button\"\n tabIndex={0}\n >\n {Wording.popup.closeButton}\n </span>\n )}\n {(state === 1 || showLogo) && (\n <div className=\"modal__content__image\">\n <img\n src={resources['ic-wekiwi-popup-orange']}\n alt=\"logo-wekiwi\"\n />\n </div>\n )}\n\n {title && title !== '' && (\n <div className=\"modal__content__title\">\n {/* <div className=\"layer\">?</div> */}\n <h3>{title}</h3>\n </div>\n )}\n\n <div className=\"modal__content__description\">\n {renderCustomDescriptipn()}\n </div>\n\n {showBottom()}\n {children}\n </div>\n </div>\n );\n};\n\nexport default Modal;\n","import Modal from './Modal';\n\nexport default Modal;\n","import React from 'react';\n\nimport resources from '../../utils/resources';\nimport WordingConstant from '../../utils/wording.json';\n\nconst Wording = WordingConstant.Footer;\n\nconst Footer: React.FC<{}> = ({}) => {\n return (\n <div className=\"footer\">\n <div className=\"footer__articles\">\n {Wording.articles.map((e, index) => {\n const show = index < Wording.articles.length - 1;\n return (\n <React.Fragment key={index}>\n <a\n href={e.link}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {e.text}\n </a>\n {show && <p>|</p>}\n </React.Fragment>\n );\n })}\n </div>\n\n <div className=\"footer__social\">\n <a\n href={Wording.socialLink.linkedin}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <img src={resources['ic-linkedin']} alt=\"ic-linkedin\" />\n </a>\n <a\n href={Wording.socialLink.instagram}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <img src={resources['ic-instagram']} alt=\"ic-instagram\" />\n </a>\n <a\n href={Wording.socialLink.facebook}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <img src={resources['ic-facebook']} alt=\"ic-facebook\" />\n </a>\n <a\n href={Wording.socialLink.youtube}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <img src={resources['ic-youtube']} alt=\"ic-youtube\" />\n </a>\n <a\n href={Wording.socialLink.twitter}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <img src={resources['ic-twitter']} alt=\"ic-twitter\" />\n </a>\n </div>\n <p className=\"footer__bottom_text\"> {Wording.footerBottomText} </p>\n </div>\n );\n};\n\nexport default Footer;\n","import Footer from './Footer';\n\nexport default Footer;\n","import React from 'react';\n\nimport WordingConstant from '../../utils/wording.json';\n\nconst Wording = WordingConstant.PaymentPage.balance;\n\ntype Props = {\n contractBalance?: string;\n customerBalance?: string;\n invoiceBalance?: string;\n};\n\nconst Balance: React.FC<Props> = ({ contractBalance }) => {\n return (\n <div className=\"balance-container\">\n <div className=\"balance-container__block\">\n {contractBalance ? (\n <div className=\"balance-container__block__head\">\n <p>{Wording.title}</p>\n <h3>{`${contractBalance} €`}</h3>\n </div>\n ) : (\n <p className=\"balance-container__block__error\">\n {Wording.error}\n </p>\n )}\n </div>\n </div>\n );\n};\n\nexport default Balance;\n","import Balance from './Balance';\n\nexport default Balance;\n","import CustomTransfer from './CustomTransfer';\n\nexport default CustomTransfer;\n","import React from 'react';\n\nimport { InputEvent } from 'Types';\nimport CustomButton from '../CustomButton';\n\nexport type InputItem = {\n label: string;\n value: string;\n placeholder?: string;\n maxLength: number;\n error?: string;\n onChange(e: InputEvent): void;\n};\n\nexport type Props = {\n title: string;\n modalTitle: string;\n description: string;\n inputs: InputItem[];\n buttonTitle: string;\n error?: string;\n handleInputChange(e: InputEvent, index: number): void;\n handleButtonClick(): void;\n handleModal(): void;\n};\n\nconst CustomTransfer: React.FC<Props> = ({\n title,\n description,\n inputs,\n buttonTitle,\n handleInputChange,\n handleButtonClick,\n error,\n handleModal,\n modalTitle,\n}) => {\n const displayInput = (input: InputItem, index: number) => {\n const renderSubLink = () => (\n <div className=\"custom-transfer__inputs__content\">\n <p className={`${input.label === '' && 'undefined'}`}></p>\n <p className=\"modal-title\" onClick={handleModal}>\n {modalTitle}\n </p>\n </div>\n );\n return (\n <div className=\"custom-transfer__inputs\" key={index}>\n <div className=\"custom-transfer__inputs__content\">\n <p className={`${input.label === '' && 'undefined'}`}>\n {input.label}\n </p>\n\n <input\n onChange={(e: InputEvent) =>\n handleInputChange(e, index)\n }\n type=\"text\"\n value={input.value}\n minLength={input.maxLength}\n maxLength={input.maxLength}\n placeholder={input.placeholder}\n />\n </div>\n {input.error && (\n <p className=\"custom-transfer__inputs__error\">\n {input.error}\n </p>\n )}\n\n {inputs.length > 1 && index === 1 ? renderSubLink() : null}\n {inputs.length === 1 && renderSubLink()}\n </div>\n );\n };\n\n return (\n <div className=\"custom-transfer\">\n <h3>{title}</h3>\n {error ? (\n <p className=\"custom-transfer__error\">{error}</p>\n ) : (\n <>\n <p>{description}</p>\n {inputs.map((input: InputItem, index: number) => {\n return displayInput(input, index);\n })}\n <CustomButton\n title={buttonTitle}\n color=\"orange\"\n onClick={handleButtonClick}\n />\n </>\n )}\n </div>\n );\n};\n\nexport default CustomTransfer;\n","import React from 'react';\nimport ProgressBar from 'react-customizable-progressbar';\n\nimport WordingConstant from '../../utils/wording.json';\n\nconst Wording = WordingConstant.ConsumptionPage;\n\ntype Props = {\n progress: number;\n steps?: number;\n pathImg: string;\n};\n\nconst CustomProgressbar = (props: Props) => {\n return (\n <div className=\"custom-progressbar\">\n <h3>{Wording.progressBar.title}</h3>\n\n <div className=\"custom-progressbar__section\">\n <ProgressBar\n steps={props.steps ? props.steps : 100}\n radius={125}\n progress={props.progress}\n strokeWidth={5}\n strokeColor=\"#ffb40a\"\n trackStrokeWidth={4}\n pointerRadius={4}\n pointerStrokeWidth={8}\n pointerStrokeColor=\"#ffb40a\"\n >\n <div className=\"custom-progressbar__bar-content\">\n <div>\n <img src={props.pathImg} alt=\"path-img\" />\n <strong>\n {props.progress}\n <span>%</span>\n </strong>\n </div>\n </div>\n </ProgressBar>\n <div className=\"custom-progressbar__content\">\n <span className=\"custom-progressbar__content__rect1 rect\" />\n <p>{Wording.progressBar.offer}</p>\n <span className=\"custom-progressbar__content__rect2 rect\" />\n <p>{Wording.progressBar.consumption}</p>\n </div>\n </div>\n </div>\n );\n};\n\nexport default CustomProgressbar;\n","import CustomProgressbar from './CustomProgressbar';\n\nexport default CustomProgressbar;\n","import React from 'react';\n\nimport { InputEvent } from 'Types';\nimport { TAdditionalRate } from 'Models';\nimport CustomToggle from '../CustomToggle';\nimport { IPayloadUpdatePackage as PackagePayload } from '../../_actions/package.actions';\n\nimport resources from '../../utils/resources';\nimport WordingConstant from '../../utils/wording.json';\nimport { EModeManageOffer } from '../../utils/enums';\n\nconst Wording = WordingConstant.PackagePage;\n\ntype Props = {\n idToggle: string;\n options: TAdditionalRate[];\n currentOptions: string[];\n handleToggle(section: string, payload: PackagePayload): void;\n};\n\nconst OptionElement: React.FC<Props> = ({\n options,\n currentOptions,\n handleToggle,\n idToggle,\n}) => (\n <div className=\"option-element\">\n <h1> {Wording.option.title}</h1>\n <div className=\"option-element__content\">\n {options &&\n options.map((option, index) => (\n <div key={index} className=\"option-element__content__item\">\n <div className=\"option-element__content__item__toggle\">\n <CustomToggle\n id={`idOption__${idToggle}__${index}`}\n text={option.label}\n value={option.label}\n checked={currentOptions.includes(option.label)}\n handleCheck={(e: InputEvent) => {\n handleToggle('option', {\n option: {\n label: option.label,\n active: e.currentTarget.checked,\n },\n mode: EModeManageOffer.OPTIONS,\n });\n }}\n />\n <img\n src={resources['ic-elec-green']}\n alt=\"ic-elec\"\n />\n </div>\n {option.description && (\n <p className=\"option-element__content__item__description\">\n {option.description}\n </p>\n )}\n </div>\n ))}\n </div>\n </div>\n);\n\nexport default OptionElement;\n","import OptionElement from './OptionElement';\n\nexport default OptionElement;\n","import { Chart } from 'chart.js';\n\n/* tslint-disable */\n\n// draws a rectangle with a rounded top\nChart.helpers.drawRoundedTopRectangle = function(\n ctx: any,\n x: number,\n y: number,\n width: number,\n height: number,\n radius: number,\n) {\n if (height === 0) {\n return;\n }\n ctx.beginPath();\n\n if (height < 0) {\n // Negative values in a standard bar chart\n const x_tl = x;\n const x_tr = x + width;\n const y_tl = y + height;\n const y_tr = y + height;\n const x_bl = x;\n const x_br = x + width;\n const y_bl = y;\n const y_br = y;\n ctx.moveTo(x_bl + radius, y_bl);\n ctx.lineTo(x_br - radius, y_br);\n // bottom right\n ctx.quadraticCurveTo(x_br, y_br, x_br, y_br - radius);\n ctx.lineTo(x_tr, y_tr + radius);\n // top right\n ctx.lineTo(x_tr, y_tr, x_tr - radius, y_tr);\n ctx.lineTo(x_tl + radius, y_tl);\n // top left\n ctx.lineTo(x_tl, y_tl, x_tl, y_tl + radius);\n ctx.lineTo(x_bl, y_bl - radius);\n // bottom left\n ctx.quadraticCurveTo(x_bl, y_bl, x_bl + radius, y_bl);\n } else {\n ctx.moveTo(x + radius, y);\n // top right corner\n ctx.lineTo(x + width - radius, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + radius);\n // bottom right corner\n ctx.lineTo(x + width, y + height);\n // bottom left corner\n ctx.lineTo(x, y + height);\n // top left\n ctx.lineTo(x, y + radius);\n ctx.quadraticCurveTo(x, y, x + radius, y);\n }\n\n ctx.closePath();\n};\n\n(Chart as any).elements.RoundedTopRectangle = (Chart as any).elements.Rectangle.extend(\n {\n draw() {\n const ctx = this._chart.ctx;\n const vm = this._view;\n let left;\n let right;\n let top;\n let bottom;\n let signX;\n let signY;\n let borderSkipped;\n let borderWidth = vm.borderWidth;\n\n if (!vm.horizontal) {\n // bar\n left = vm.x - vm.width / 2;\n right = vm.x + vm.width / 2;\n top = vm.y;\n // If the y-axis stack is true, we should increase bottom value by xxx\n // vm.base + xxx ===> Help to lower the stacked bar to make they look nice\n bottom = vm.base;\n signX = 1;\n signY = bottom > top ? 1 : -1;\n borderSkipped = vm.borderSkipped || 'bottom';\n } else {\n // horizontal bar\n left = vm.base;\n right = vm.x;\n top = vm.y - vm.height / 2;\n bottom = vm.y + vm.height / 2;\n signX = right > left ? 1 : -1;\n signY = 1;\n borderSkipped = vm.borderSkipped || 'left';\n }\n\n // Canvas doesn't allow us to stroke inside the width so we can\n // adjust the sizes to fit if we're setting a stroke on the line\n if (borderWidth) {\n // borderWidth shold be less than bar width and bar height.\n const barSize = Math.min(\n Math.abs(left - right),\n Math.abs(top - bottom),\n );\n borderWidth = borderWidth > barSize ? barSize : borderWidth;\n const halfStroke = borderWidth / 2;\n // Adjust borderWidth when bar top position is near vm.base(zero).\n const borderLeft =\n left + (borderSkipped !== 'left' ? halfStroke * signX : 0);\n const borderRight =\n right +\n (borderSkipped !== 'right' ? -halfStroke * signX : 0);\n const borderTop =\n top + (borderSkipped !== 'top' ? halfStroke * signY : 0);\n const borderBottom =\n bottom +\n (borderSkipped !== 'bottom' ? -halfStroke * signY : 0);\n // not become a vertical line?\n if (borderLeft !== borderRight) {\n top = borderTop;\n bottom = borderBottom;\n }\n // not become a horizontal line?\n if (borderTop !== borderBottom) {\n left = borderLeft;\n right = borderRight;\n }\n }\n\n // calculate the bar width and roundess\n const barWidth = Math.abs(left - right);\n const roundness = 1;\n const radius =\n barWidth * roundness * (vm.borderSkipped === 'top' ? 0 : 0.5);\n\n // keep track of the original top of the bar\n const prevTop = top;\n\n // move the top down so there is room to draw the rounded top\n top = prevTop + radius;\n const barRadius = top - prevTop;\n\n ctx.beginPath();\n ctx.fillStyle = vm.backgroundColor;\n ctx.strokeStyle = vm.borderColor;\n ctx.lineWidth = borderWidth;\n\n // draw the rounded top rectangle\n Chart.helpers.drawRoundedTopRectangle(\n ctx,\n left,\n top - barRadius + 1,\n barWidth,\n bottom - prevTop,\n barRadius,\n );\n\n ctx.fill();\n if (borderWidth) {\n ctx.stroke();\n }\n\n // restore the original top value so tooltips and scales still work\n top = prevTop;\n },\n },\n);\n\nChart.defaults.roundedBar = Chart.helpers.clone(Chart.defaults.bar);\n\nChart.controllers.roundedBar = Chart.controllers.bar.extend({\n dataElementType: (Chart as any).elements.RoundedTopRectangle,\n});\n","import React, { useRef, useEffect, useState } from 'react';\nimport { Chart, ChartOptions, ChartDataSets } from 'chart.js';\nimport '../../utils/chart';\nimport CustomToggle from '../CustomToggle';\n\nimport WordingConstant from '../../utils/wording.json';\n\nconst Wording = WordingConstant.ConsumptionPage;\n\ninterface IKey {\n [key: string]: string;\n}\n\nconst plugin = {\n afterDraw: (\n chartInstance: Chart,\n easing: Chart.Easing,\n options?: any,\n ) => {},\n};\n\nconst color = {\n orange: '#ffb40a',\n gray: '#b1b1b1',\n black: '#000000',\n grayLight: '#dddddb',\n};\n\nconst options = (isDetailed: boolean): ChartOptions => ({\n responsive: true,\n\n legend: {\n display: false,\n },\n scales: {\n yAxes: [\n {\n stacked: isDetailed,\n\n gridLines: {\n lineWidth: 4,\n },\n ticks: {\n fontSize: 20,\n beginAtZero: true,\n },\n },\n ],\n xAxes: [\n {\n stacked: false,\n gridLines: {\n display: false,\n },\n ticks: {\n fontSize: 20,\n },\n },\n ],\n },\n tooltips: {\n backgroundColor: '#FFF',\n titleFontSize: 28,\n titleFontColor: '#0066ff',\n bodyFontColor: '#000',\n bodyFontSize: 22,\n xPadding: 10,\n mode: 'label',\n callbacks: {\n label: (tooltipItem, data) => {\n const label = data.datasets\n ? data.datasets[tooltipItem.datasetIndex as number].label ||\n ''\n : '';\n\n return `${label}: ${Math.round(\n (tooltipItem.yLabel as number) * 100,\n ) / 100} ${Wording.chart.legend.afterLabel}`;\n },\n\n title: (tooltipItem, data) => {\n const currentMonth = (data.labels as string[])[\n tooltipItem[0].index as number\n ];\n\n return (Wording.chart.monthsMapping as IKey)[currentMonth];\n },\n },\n },\n});\n\ntype Props = {\n packages: number[];\n consumptions: number[];\n highs: number[];\n lows: number[];\n totalhours: number[];\n labels: string[];\n};\n\nconst StackedBar = ({\n packages,\n consumptions,\n highs,\n lows,\n totalhours,\n labels,\n}: Props) => {\n const canvasRef = useRef(null);\n const [detailed, setDetailed] = useState<boolean>(false);\n const [chart, setChart] = useState<Chart | null>(null);\n\n const detailData: ChartDataSets[] = [\n {\n label: Wording.chart.legend.package,\n backgroundColor: color.gray,\n borderWidth: 1,\n barThickness: 18,\n data: packages,\n stack: '1',\n },\n {\n label: Wording.chart.legend.low,\n backgroundColor: color.black,\n barThickness: 18,\n borderWidth: 1,\n data: lows,\n stack: '2',\n borderSkipped: 'top',\n },\n {\n label: Wording.chart.legend.high,\n backgroundColor: color.orange,\n barThickness: 18,\n borderWidth: 1,\n data: highs,\n stack: '2',\n },\n {\n label: Wording.chart.legend.totalhour,\n backgroundColor: color.grayLight,\n barThickness: 18,\n borderWidth: 1,\n data: totalhours,\n stack: '1',\n },\n ];\n\n const normalData: ChartDataSets[] = [\n {\n label: Wording.chart.legend.package,\n backgroundColor: color.gray,\n borderWidth: 1,\n barThickness: 18,\n data: packages,\n },\n {\n label: Wording.chart.legend.consumption,\n backgroundColor: color.orange,\n borderWidth: 1,\n barThickness: 18,\n data: consumptions,\n },\n ];\n\n useEffect(() => {\n if (canvasRef && canvasRef.current) {\n if (chart) {\n if (chart.data.datasets) {\n chart.data.datasets = detailed ? detailData : normalData;\n chart.data.labels = labels;\n chart.options = options(detailed);\n\n chart.update();\n (document.getElementById(\n 'chartjsLegend',\n ) as any).innerHTML = chart.generateLegend();\n }\n } else {\n const ctx = (canvasRef.current as any).getContext('2d');\n const data = {\n labels,\n datasets: normalData,\n };\n\n const c = new Chart(ctx, {\n data,\n\n options: options(detailed),\n plugins: [plugin, plugin],\n type: 'roundedBar',\n });\n setChart(c);\n (document.getElementById(\n 'chartjsLegend',\n ) as any).innerHTML = c.generateLegend();\n }\n }\n }, [detailed, consumptions]);\n\n return (\n <div className=\"stacked-bar\">\n <h3>{Wording.chart.title}</h3>\n <div className=\"stacked-bar__container\">\n <div className=\"stacked-bar__legend\">\n <CustomToggle\n id=\"toggleChart\"\n text={Wording.chart.toggleButtonText}\n handleCheck={() => setDetailed(!detailed)}\n />\n <div id=\"chartjsLegend\" className=\"chartjsLegend\" />\n </div>\n <canvas ref={canvasRef} />\n </div>\n </div>\n );\n};\n\nexport default StackedBar;\n","import StackedBar from './StackedBar';\n\nexport default StackedBar;\n","import React, { useState } from 'react';\nimport WordingComont from '../../utils/wording.json';\n\nconst Wording = WordingComont.ConsumptionPage;\n\nconst filterPages = (visiblePages: number[], totalPages: number): number[] => {\n return visiblePages.filter(page => page <= totalPages);\n};\n\nconst getVisiblePages = (page: number, total: number): number[] => {\n if (total < 7) {\n return filterPages([1, 2, 3, 4, 5, 6], total);\n }\n if (page % 5 >= 0 && page > 4 && page + 2 < total) {\n return [1, page - 1, page, page + 1, total];\n }\n if (page % 5 >= 0 && page > 4 && page + 2 >= total) {\n return [1, total - 3, total - 2, total - 1, total];\n }\n return [1, 2, 3, 4, 5, total];\n};\n\nexport type Props = {\n pages: number;\n page: number;\n onPageChange: (p: number) => {};\n previousText: string;\n nextText: string;\n};\n\nconst Pagination = ({ pages, page, onPageChange }: Props) => {\n const [visiblePages, setVisiblePages] = useState(getVisiblePages(0, pages));\n\n const changePage = (p: number) => {\n if (p === page + 1) {\n return;\n }\n const vps = getVisiblePages(p, pages);\n setVisiblePages(filterPages(vps, pages));\n onPageChange(p - 1);\n };\n\n const activePage = page + 1;\n\n return (\n <div className=\"Table__pagination\">\n <div className=\"Table__prevPageWrapper\">\n <button\n className=\"Table__pageButton\"\n onClick={() => {\n if (activePage === 1) return;\n changePage(activePage - 1);\n }}\n disabled={activePage === 1}\n >\n {Wording.history.previousText}\n </button>\n </div>\n <div className=\"Table__visiblePagesWrapper\">\n {visiblePages.map((p, index, array) => {\n return (\n <button\n key={p}\n className={\n activePage === p\n ? 'Table__pageButton Table__pageButton--active'\n : 'Table__pageButton'\n }\n onClick={() => changePage(p)}\n >\n {array[index - 1] + 2 < p ? `...${p}` : p}\n </button>\n );\n })}\n </div>\n <div className=\"Table__nextPageWrapper\">\n <button\n className=\"Table__pageButton\"\n onClick={() => {\n if (activePage === pages) return;\n changePage(activePage + 1);\n }}\n disabled={activePage === pages}\n >\n {Wording.history.nextText}\n </button>\n </div>\n </div>\n );\n};\n\nexport default Pagination;\n","import Pagination from './Pagination';\n\nexport default Pagination;\n","import BackgroundElement from './BackgroundElement';\n\nexport default BackgroundElement;\n","import React from 'react';\n\nconst BackgroundElement: React.FC = ({ children }) => {\n return <div className=\"background-element\">{children}</div>;\n};\n\nexport default BackgroundElement;\n","import { Subject, of, from, throwError } from 'rxjs';\nimport {\n debounceTime,\n switchMap,\n distinctUntilChanged,\n mergeMap,\n catchError,\n} from 'rxjs/operators';\nimport { ajax } from 'rxjs/ajax';\nimport Config from './config';\nimport { filteredArr, log } from './helpers';\n\ninterface IResProps {\n netArea: string;\n postalCode: string;\n townName: string;\n}\n\nclass SearchService {\n private handleSearch$: any;\n private raw: boolean;\n\n constructor() {\n this.handleSearch$ = new Subject<string>().pipe(debounceTime(100));\n this.raw = false;\n }\n\n public setRaw(raw: boolean) {\n this.raw = raw;\n return this;\n }\n\n public unsubscribe = () => {\n this.handleSearch$.unsubscribe();\n };\n\n public search = (term: string) => {\n this.handleSearch$.next(term);\n };\n\n public doSearch = (term: string) => {\n const settings = {\n url: `${Config.URL_SUBSCRIPTION}/getTowns`,\n headers: {\n 'Content-Type': 'application/json',\n 'x-api-key': Config.ApiKey,\n },\n responseType: 'json',\n method: 'post',\n crossDomain: true,\n body: {\n postalCode: term,\n },\n };\n const promise = ajax(settings).pipe(\n catchError(({ message }) => throwError({ error: message })),\n mergeMap(response => {\n if (response.response) {\n response.response = filteredArr(\n response.response,\n 'townName',\n );\n response.response.sort((a: IResProps, b: IResProps) => {\n if (a.townName < b.townName) {\n return -1;\n }\n if (a.townName > b.townName) {\n return 1;\n }\n return 0;\n });\n if (this.raw) {\n return of(\n response.response.map((res: IResProps) => ({\n postalCode: res.postalCode,\n townName: res.townName,\n netArea: res.netArea,\n })),\n );\n }\n return of(\n response.response.map((res: IResProps) => ({\n code: res.postalCode,\n city: res.townName,\n netArea: res.netArea,\n })),\n );\n }\n return of([]);\n }),\n );\n return from(promise);\n };\n\n public getResults() {\n return this.handleSearch$.pipe(\n debounceTime(500),\n distinctUntilChanged(),\n switchMap((term: string) => (term ? this.doSearch(term) : of([]))),\n catchError(error => {\n log('Error ', error);\n return of([]);\n }),\n );\n }\n}\n\nexport default SearchService;\n","import React, { Component, Fragment } from 'react';\nimport _ from 'lodash';\nimport { CustomSelect } from '../../components';\nimport SearchService from '../../utils/search';\nimport WordingConstant from '../../utils/wording.json';\nimport { TAddress } from '../../utils/network/types';\nimport { SelectOption } from 'Types';\n\nconst Prompts = WordingConstant.Common.prompts;\n\ninterface IProps {\n isDisabled?: boolean;\n initialAddress?: TAddress;\n text?: string;\n onSelection: (address: TAddress) => void;\n}\n\ninterface IState {\n selection: SelectOption<TAddress> | null;\n options: Array<SelectOption<TAddress>>;\n}\n\nconst throttleDelay = 1000;\n\nfunction formatOption(\n address: TAddress,\n index: string,\n): SelectOption<TAddress> {\n const city = _.get(address, 'townName', '');\n const code = _.get(address, 'postalCode', '');\n return {\n id: index,\n label: `${code} -- ${city}`,\n value: address,\n };\n}\n\nclass PostalCodeSelect extends Component<IProps, IState> {\n constructor(props: IProps) {\n super(props);\n this.state = {\n options: [],\n selection: null,\n };\n (this as any).searchService = new SearchService().setRaw(true);\n this.handleInputChange = this.handleInputChange.bind(this);\n this.handleSelection = this.handleSelection.bind(this);\n this.handleInputChange = _.throttle(\n this.handleInputChange,\n throttleDelay,\n );\n }\n componentDidMount() {\n const { initialAddress } = this.props;\n if (!!initialAddress) {\n const initialSelection: SelectOption<TAddress> = formatOption(\n initialAddress,\n '-1',\n );\n const initialOptions: Array<SelectOption<TAddress>> = [\n initialSelection,\n ];\n this.setState({\n options: initialOptions,\n selection: initialSelection,\n });\n }\n }\n\n componentDidUpdate = (prevProps: any) => {\n if (!prevProps.isDisabled && this.props.isDisabled) {\n this.setState({ selection: null });\n }\n };\n componentWillUnmount = () => {\n (this as any).searchService.unsubscribe();\n };\n\n handleSelection(option: SelectOption<TAddress>) {\n const { onSelection } = this.props;\n onSelection(_.get(option, 'value') as TAddress);\n this.setState({ selection: option });\n }\n handleInputChange(value: string) {\n this.refreshPostalCodeOptions(value);\n }\n async refreshPostalCodeOptions(value: string) {\n const res = await (this as any).searchService\n .doSearch(value)\n .toPromise();\n const codes: Array<SelectOption<TAddress>> = _.map(res, (pc, i) =>\n formatOption(pc, i),\n );\n this.setState({ options: codes });\n }\n render() {\n const { text, isDisabled } = this.props;\n const { options, selection } = this.state;\n\n return (\n <Fragment>\n <CustomSelect\n handleChangeSelect={this.handleSelection}\n onInputChange={this.handleInputChange}\n options={options}\n placeholder={Prompts.selects.postalCode}\n text={text}\n value={selection}\n disabled={isDisabled}\n />\n </Fragment>\n );\n }\n}\n\nexport default PostalCodeSelect;\n","// ENUMS\n\nexport enum EAdditionalRateTypes {\n DISCOUNT = 'DISCOUNT',\n FEE = 'FEE',\n OPTION = 'OPTION',\n}\n\nexport enum EBillingModes {\n CYCLICAL_BILLING = 'CYCLICAL_BILLING',\n PAYMENT_SCHEDULE = 'PAYMENT_SCHEDULE',\n}\n\nexport enum EtypePayment {\n SDD = 'SDD',\n OTHER = 'OTHER',\n}\n\nexport enum ECategories {\n TOTAL_AMOUNT = 'TOTAL_AMOUNT',\n ADDITIONAL_RATE = 'ADDITIONAL_RATE',\n TOTAL_BUDGET = 'TOTAL_BUDGET',\n ECONOMY = 'ECONOMY',\n DISCOUNTED_UNIT_PRICE = 'DISCOUNTED_UNIT_PRICE',\n DISCOUNTED_UNIT_PRICE_TTC = 'DISCOUNTED_UNIT_PRICE_TTC',\n}\n\nexport enum ECivilities {\n MR = 'MR',\n MS = 'MS',\n MRS = 'MRS',\n}\n\nexport enum ECompanyTypes {\n EARL = 'EARL',\n EI = 'EI',\n EIRL = 'EIRL',\n EURL = 'EURL',\n GAEC = 'GAEC',\n GEIE = 'GEIE',\n GIE = 'GIE',\n SA = 'SA',\n SARL = 'SARL',\n SAS = 'SAS',\n SASU = 'SASU',\n SC = 'SC',\n SCA = 'SCA',\n SCI = 'SCI',\n SCIC = 'SCIC',\n SCM = 'SCM',\n SCOP = 'SCOP',\n SCP = 'SCP',\n SCS = 'SCS',\n SEL = 'SEL',\n SELAFA = 'SELAFA',\n SELARL = 'SELARL',\n SELAS = 'SELAS',\n SELCA = 'SELCA',\n SEM = 'SEM',\n SEML = 'SEML',\n SEP = 'SEP',\n SICA = 'SICA',\n SNC = 'SNC',\n OTHER = 'OTHER',\n}\n\nexport enum EContractStatuses {\n ABANDONED = 'ABANDONED',\n SIGNED = 'SIGNED',\n SIGNING_FAILURE = 'SIGNING_FAILURE',\n WAITING = 'WAITING',\n}\n\nexport enum EContractualCapacityUnits {\n KVA = 'kVA',\n}\n\nexport enum ECustomerStatuses {\n CUSTOMER = 'CUSTOMER',\n PROSPECT = 'PROSPECT',\n}\n\nexport enum ECustomerTypes {\n INDIVIDUAL = 'INDIVIDUAL',\n PROFESSIONAL = 'PROFESSIONAL',\n}\n\nexport enum EDeliveryPointCategories {\n C1 = 'C1',\n C2 = 'C2',\n C3 = 'C3',\n C4 = 'C4',\n C5 = 'C5',\n T1 = 'T1',\n T2 = 'T2',\n T3 = 'T3',\n}\n\nexport enum EDeliveryPointStates {\n IN_USE = 'IN_USE',\n NOT_IN_USE = 'NOT_IN_USE',\n UNDER_CONSTRUCTION = 'UNDER_CONSTRUCTION',\n}\n\nexport enum EDeliveryStatuses {\n ACTIVE = 'ACTIVE',\n INACTIVE = 'INACTIVE',\n}\n\nexport enum EEffectiveStartRanges {\n LATER = 'LATER',\n NOW = 'NOW',\n}\n\nexport enum EEnergyTypes {\n ELECTRICTY = 'EL',\n GAS = 'NG',\n}\n\nexport enum EFirstPaymentCBStatuses {\n CANCELED = 'CANCELED',\n FINALIZED = 'FINALIZED',\n IN_FAILURE = 'IN_FAILURE',\n IN_PROGRESS = 'IN_PROGRESS',\n PENDING = 'PENDING',\n}\n\nexport enum EHeatingTypes {\n COLLECTIVE = 'COLLECTIVE',\n ELECTRICITY = 'ELECTRICITY',\n GAS = 'GAZ',\n}\n\nexport type TRateOptions = 'HIGH_LOW' | 'TOTAL_HOUR' | 'UNKNOWN';\n\nexport enum EGridRates {\n T1 = 'T1',\n T2 = 'T2',\n T3 = 'T3',\n BTINFCUST = 'BTINFCUST',\n BTINFMUDT = 'BTINFMUDT',\n BTINFLU = 'BTINFLU',\n BTINFCU4 = 'BTINFCU4',\n BTINFMU4 = 'BTINFMU4',\n}\n\nexport enum EHousingTypes {\n APPARTMENT = 'APPARTMENT',\n HOUSE = 'HOUSE',\n}\n\nexport enum EInvoiceRoutingModes {\n EMAIL = 'EMAIL',\n MAIL = 'MAIL',\n BOTH = 'BOTH',\n}\n\nexport enum EInstallmentFrequencies {\n MONTHLY = 'MONTHLY',\n BIMONTHLY = 'BIMONTHLY',\n QUARTERLY = 'QUARTERLY',\n FOURMONTHLY = 'FOURMONTHLY',\n}\n\nexport enum EOrderStatuses {\n CANCELED = 'CANCELED',\n FINALIZED = 'FINALIZED',\n FINALIZED_WITHOUT_DOC = 'FINALIZED_WITHOUT_DOC',\n IN_FAILURE = 'IN_FAILURE',\n IN_PROGRESS = 'IN_PROGRESS',\n}\n\nexport enum EPaymentModes {\n BANK_TRANSFER = 'BANK_TRANSFER',\n CHECK = 'CHECK',\n DIRECT_DEBIT = 'DIRECT_DEBIT',\n}\n\nexport enum EProcessTypes {\n MOVE_IN = 'MOVE_IN',\n SWITCH = 'SWITCH',\n}\n\nexport enum EProductTypes {\n FIXED = 'FIXED',\n VARIABLE = 'VARIABLE',\n}\n\nexport enum EProfiles {\n RES1 = 'RES1',\n RES11 = 'RES11',\n RES2 = 'RES2',\n P011 = 'P011',\n P012 = 'P012',\n PRO1 = 'PRO1',\n PRO2 = 'PRO2',\n RES3 = 'RES3',\n RES4 = 'RES4',\n RES5 = 'RES5',\n PRO3 = 'PRO3',\n PRO4 = 'PRO4',\n PRO5 = 'PRO5',\n}\n\nexport enum ERateOptions {\n HIGH_LOW = 'HIGH_LOW',\n TOTAL_HOUR = 'TOTAL_HOUR',\n UNKNOWN = 'UNKNOWN',\n}\n\nexport enum EReadingFrequencies {\n MONTHLY = 'MONTHLY',\n BIMONTHLY = 'BIMONTHLY',\n BIANNUAL = 'BIANNUAL',\n UNKNOWN = 'UNKNOWN',\n}\n\nexport enum ERebateCodeTypes {\n CASHBACK = 'MY_WORLD',\n PROMOTION = 'PROMOTION',\n SPONSOR = 'SPONSOR',\n}\n\nexport enum EResidenceTypes {\n PRINCIPAL = 'PRINCIPAL',\n SECONDARY = 'SECONDARY',\n}\n\nexport enum EResultSponsor {\n OK = 'OK',\n KO = 'KO',\n}\n\nexport enum ERoles {\n COHOLDER = 'COHOLDER',\n MY_WORLD = 'MY_WORLD',\n PARTNER = 'PARTNER',\n PROMOTION = 'PROMOTION',\n SPONSOR = 'SPONSOR',\n}\n\nexport enum ESavingModes {\n SEND_EMAIL_LINK = 'SEND_EMAIL_LINK',\n STATUS_CANCELED = 'STATUS_CANCELED',\n STATUS_SIGNED = 'STATUS_SIGNED',\n}\n\nexport enum ESettlementFrequencies {\n BIANNUAL = 'BIANNUAL',\n BIMONTHLY = 'BIMONTHLY',\n FOURMONTHLY = 'FOURMONTHLY',\n QUARTERLY = 'QUARTERLY',\n}\n\nexport enum ESubscriptionTypes {\n ELECTRICITY = 'ELECTRICITY',\n ELECTRICITY_AND_GAS = 'ELECTRICITY_AND_GAS',\n GAS = 'GAS',\n}\n\nexport enum ETimeframes {\n HIGH = 'HIGH',\n LOW = 'LOW',\n SUMMER = 'SUMMER',\n SUMMER_HIGH = 'SUMMER_HIGH',\n SUMMER_LOW = 'SUMMER_LOW',\n TOTAL_HOUR = 'TOTAL_HOUR',\n UNKNOWN = 'UNKNOWN',\n WINTER = 'WINTER',\n WINTER_HIGH = 'WINTER_HIGH',\n WINTER_LOW = 'WINTER_LOW',\n}\n\nexport enum ETimeslots {\n AFTERNOON = 'AFTERNOON',\n DAY = 'DAY',\n MORNING = 'MORNING',\n NONE = 'NONE',\n}\n\nexport enum ETypes {\n FEE = 'FEE',\n OPTION = 'OPTION',\n DISCOUNT = 'DISCOUNT',\n}\n\nexport enum EUnitAmounts {\n EURO_KWH = '€/KWH',\n EURO_YEAR = '€/YEAR',\n EURO_MONTH = '€/MONTH',\n EURO = '€',\n PERCENT = 'PERCENT',\n}\n\n// TYPES\n\nexport type TAdditionalRate = {\n code?: string;\n label?: string;\n description?: string;\n type?: EAdditionalRateTypes;\n detail?: TUnitPriceWithLabel;\n active?: boolean;\n ecofriendly?: boolean;\n updated?: boolean;\n};\n\nexport type TAddress = {\n number: string;\n street: string;\n netArea?: number;\n postalCode?: number;\n townName?: string;\n};\n\nexport type TAmountWithLabel = {\n label?: string;\n amount?: string;\n unit?: EUnitAmounts;\n category?: ECategories;\n type?: ETypes;\n unitPrices?: TUnitPriceWithLabel[];\n};\n\nexport type TAppointmentDay = {\n available: boolean;\n date: string; // Date\n express: boolean;\n firstPaymentCB: boolean;\n};\n\nexport type TAuthorizedPackage = [TSeasonalPackage, TSeasonalPackage];\n\nexport type TContract = {\n billingModeCode?: EBillingModes;\n chosenPackages?: Array<TPackage | TSeasonalPackage>;\n chosenProduct?: TProduct;\n contractCategory?: string;\n contractNumber?: string;\n contractStatus?: EContractStatuses;\n deliveryPoint?: TDeliveryPoint;\n effectiveStartDate?: string;\n dueDate?: string;\n effectiveStartRange?: EEffectiveStartRanges;\n energy: EEnergyTypes;\n estimates?: TEstimate[];\n finance?: TFinance;\n firstPaymentCB: boolean;\n installmentFrequency?: EInstallmentFrequencies;\n rateOption?: ERateOptions;\n settlementFrequency?: ESettlementFrequencies;\n sponsorNumber?: string;\n subscriptionDate?: string;\n thirdParties?: Array<{}>;\n debitDay?: number;\n};\n\nexport type TCustomer = {\n customerStatus: ECustomerStatuses;\n customerNumber: string;\n type: ECustomerTypes;\n contact: TCustomerContact;\n typePayment: EtypePayment;\n finance: TFinance;\n};\n\nexport type TCustomerContact = {\n civility: ECivilities;\n firstName: string;\n lastName: string;\n birthdate: string;\n address: TAddress;\n birthTown: TBirthTown;\n email: string;\n phone: string;\n companyName?: string;\n companyType?: ECompanyTypes;\n identificationNumber?: string;\n activityCode?: string;\n};\n\nexport type TDeliveryPoint = {\n state?: EDeliveryPointStates;\n gridRate?: EGridRates;\n deliveryStatus?: EDeliveryStatuses;\n address?: TAddress;\n profile?: EProfiles;\n deliveryPointCategory?: EDeliveryPointCategories;\n readingFrequency?: EReadingFrequencies;\n contractualCapacity?: number;\n contractualCapacityUnit?: EContractualCapacityUnits;\n pointOfDelivery?: string;\n};\n\nexport type TEstimate = {\n quantity?: number;\n timeframe?: ETimeframes;\n energy?: EEnergyTypes;\n};\n\nexport type TFinance = {\n paymentMode: EPaymentModes;\n billingContact: TCustomerContact;\n ibanCode: string;\n bicCode: string;\n bankName: string;\n accountOwnerLastName: string;\n accountOwnerFirstName: string;\n rumCode: string;\n invoiceRoutingMode: EInvoiceRoutingModes;\n invoiceEmail: string;\n debitDay: string;\n termCode: string;\n};\n\nexport type TGetOrderResponse = {\n order: TOrder;\n};\n\nexport type TGetOrderStatusResponse = {\n firstPaymentCBStatus: EFirstPaymentCBStatuses;\n orderStatus: EOrderStatuses;\n};\n\nexport type TGetPackageResponse = {\n contracts: TContract[];\n packagesList: TPackage[];\n prepaymentFrequencies: TPrepaymentFrequencies[];\n};\n\nexport type TGetProductResponse = {\n productsList: TProduct[];\n};\n\nexport type TOffer = {\n product: TProduct;\n energy: EEnergyTypes;\n estimateYearly: TEstimate;\n details: TAmountWithLabel[];\n};\n\nexport type TOrder = {\n orderReference?: string;\n externalReference?: string;\n partnerReference?: string;\n orderStatus?: EOrderStatuses;\n firstPaymentCBStatus?: EFirstPaymentCBStatuses;\n customer: TCustomer;\n contracts: TContract[];\n createdBy: string;\n};\n\nexport type TOrderResponse = {\n order: TOrder;\n channel: string;\n};\n\nexport type TPackage = {\n energy: EEnergyTypes;\n amount: string;\n currency: string;\n quantityMonthly: number;\n packageQuantity: number;\n recommended?: boolean;\n id: string;\n timeframe: ETimeframes;\n authorizedPackages?: TAuthorizedPackage[];\n};\n\nexport type TPaymentCBResponse = {\n iframe: string;\n orderExternalReference: string;\n orderNumber: string;\n stripe: {\n amount: string;\n clientSecret: string;\n billName: string;\n };\n};\n\nexport type TProcess = {\n type: EProcessTypes;\n express: boolean;\n appointmentTimeslot: ETimeslots;\n};\n\nexport type TProduct = {\n additionalRates?: TAdditionalRate[];\n default?: string;\n description?: string;\n effectiveDate?: string;\n energy?: EEnergyTypes;\n label?: string;\n productCode?: string;\n productType?: EProductTypes;\n rateOption?: ERateOptions;\n};\n\nexport type TSaveOrderResponse = {\n orderExternalReference: string;\n orderNumber: string;\n};\n\nexport type TSeasonalPackage = {\n amount: number;\n currency: string;\n energy: EEnergyTypes;\n id: string;\n packageQuantity: number;\n quantityMonthly: number;\n timeframe: ETimeframes.SUMMER | ETimeframes.WINTER;\n};\n\nexport type TSignOrderResponse = {\n iframe: string;\n orderExternalReference: string;\n orderNumber: string;\n};\n\nexport type TCasesExtractResponse = {\n data: string;\n};\n\nexport type TSurvey = {\n energyList?: EEnergyTypes[];\n housingType: EHousingTypes;\n residenceType: EResidenceTypes;\n area: number;\n inhabitantsNumber: number;\n heatingType: EHeatingTypes;\n rateOption: ERateOptions;\n address: TAddress;\n};\n\nexport type TThirdParty = {\n code?: string;\n role: ERoles;\n civility?: ECivilities;\n firstName?: string;\n lastName?: string;\n effectiveDate?: string;\n};\n\nexport type TUnitPriceWithLabel = {\n label?: string;\n price?: string;\n unit?: EUnitAmounts;\n};\n\nexport type TOrderPayload = Partial<{\n fromDate: string | null;\n toDate: string | null;\n email: string | null;\n orderNumber: string | null;\n firstName: string | null;\n lastName: string | null;\n processType: string | null;\n phone: string | null;\n externalReference: string | null;\n channel: string | null | string[];\n createdBy: string | null;\n}>;\n\nexport type TPrepaymentFrequencies = {\n frequency: EInstallmentFrequencies;\n label: string;\n fee: string;\n currency: string;\n};\n\nexport type TBirthTown = {\n number: string;\n street: string;\n netArea: string | number;\n postalCode: string | number;\n townName: string;\n country: string;\n};\n","import PostalCodeSelect from './PostalCodeSelect';\nexport default PostalCodeSelect;\n","import { Component } from 'react';\n\nasync function setState<S, K extends keyof S>(\n context: Component<any, S>,\n nextState: Pick<S, K> | S | null,\n): Promise<void> {\n return new Promise((resolve: () => void) => {\n context.setState(nextState, () => {\n resolve();\n });\n });\n}\n\nexport { setState };\n","import _ from 'lodash';\nimport {\n TProduct,\n TSeasonalPackage,\n ETimeframes,\n TAddress,\n ESubscriptionTypes,\n EEnergyTypes,\n ERebateCodeTypes,\n TContract,\n EBillingModes,\n} from './types';\n\nfunction isCyclicalProduct(product: TProduct | null | undefined): boolean {\n if (!product || !product.productCode) return false;\n const isCyclical: boolean = (product.productCode as string).includes('CYC');\n return isCyclical;\n}\n\nfunction isEqualProduct(\n prod1: TProduct | undefined | null,\n prod2: TProduct | undefined | null,\n): boolean {\n if (!prod1 || !prod2) return false;\n const rateLess1 = _.omit(prod1, 'additionalRates');\n const rateLess2 = _.omit(prod2, 'additionalRates');\n const hasEqualProducts: boolean = _.isEqual(rateLess1, rateLess2);\n return hasEqualProducts;\n}\n\nfunction isEqualAuthorizedPackages(\n auth1: TSeasonalPackage[] = [],\n auth2: TSeasonalPackage[] = [],\n): boolean {\n if (auth1.length !== 2 || auth2.length !== 2) return false;\n const winter1: TSeasonalPackage | undefined = _.find(\n auth1,\n (pkg: TSeasonalPackage) => {\n return pkg.timeframe === ETimeframes.WINTER;\n },\n );\n const winter2: TSeasonalPackage | undefined = _.find(\n auth2,\n (pkg: TSeasonalPackage) => {\n return pkg.timeframe === ETimeframes.WINTER;\n },\n );\n const summer1: TSeasonalPackage | undefined = _.find(\n auth1,\n (pkg: TSeasonalPackage) => {\n return pkg.timeframe === ETimeframes.SUMMER;\n },\n );\n const summer2: TSeasonalPackage | undefined = _.find(\n auth2,\n (pkg: TSeasonalPackage) => {\n return pkg.timeframe === ETimeframes.SUMMER;\n },\n );\n return (\n !!summer1 &&\n !!summer2 &&\n !!winter1 &&\n !!winter2 &&\n _.isEqual(summer1, summer2) &&\n _.isEqual(winter1, winter2)\n );\n}\n\nfunction getAddressStreetLabel(address: TAddress | null | undefined): string {\n if (!address) return '';\n const num: string | undefined = _.get(address, 'number');\n const street: string = _.get(address, 'street', '');\n return [`${num || ''}`, street].join(' ').replace(/^\\s+/g, '');\n}\n\nfunction parseOrderRebateCode(\n contracts: TContract[],\n): {\n code: string;\n type: ERebateCodeTypes;\n} | null {\n let orderCode: { code: string; type: ERebateCodeTypes } | null = null;\n _.forEach(contracts, (contract: TContract) => {\n let shouldBreak = false;\n _.forEach(contract.thirdParties || [], (thirdParty: any) => {\n const code = _.get(thirdParty, 'code');\n const type = _.get(thirdParty, 'role');\n if (!!code && !!type && type !== 'PARTNER') {\n orderCode = { code, type };\n shouldBreak = true;\n return false;\n }\n });\n if (shouldBreak) return false;\n });\n return orderCode;\n}\n\nfunction toEnergies(\n subscription: ESubscriptionTypes | null | undefined,\n): EEnergyTypes[] {\n if (!subscription) return [];\n const energies: EEnergyTypes[] = [];\n if (subscription === ESubscriptionTypes.ELECTRICITY_AND_GAS) {\n energies.push(EEnergyTypes.ELECTRICTY, EEnergyTypes.GAS);\n } else if (subscription === ESubscriptionTypes.ELECTRICITY) {\n energies.push(EEnergyTypes.ELECTRICTY);\n } else if (subscription === ESubscriptionTypes.GAS) {\n energies.push(EEnergyTypes.GAS);\n }\n return energies;\n}\n\nfunction requiresPayment(contract: TContract | null | undefined): boolean {\n if (!contract) return false;\n const billingMode: EBillingModes | undefined = _.get(\n contract,\n 'chosenProduct.billingModeCode',\n );\n return (\n !!contract.firstPaymentCB &&\n billingMode !== EBillingModes.CYCLICAL_BILLING\n );\n}\n\nexport {\n getAddressStreetLabel,\n isCyclicalProduct,\n isEqualAuthorizedPackages,\n isEqualProduct,\n parseOrderRebateCode,\n toEnergies,\n requiresPayment,\n};\n","import React, { ChangeEvent, Component, Fragment } from 'react';\nimport _ from 'lodash';\nimport WordingConstant from '../../../../../utils/wording.json';\nimport {\n buildClassName as bcn,\n getFormattedDateToBackEnd,\n parseQueryParams,\n addDays,\n prepareEffectiveStartDate,\n addMonth,\n checkIsDisableSwitchSelect,\n} from '../../../../../utils/helpers';\nimport { setState } from '../../../../../utils/reactHelpers';\nimport {\n AddressSelect,\n CustomDatePicker,\n CustomInput,\n CustomRadio,\n CustomSelect,\n CoordsInputs,\n} from '../../../../../components';\nimport {\n ECivilities,\n EEffectiveStartRanges,\n EEnergyTypes,\n EProcessTypes,\n ESubscriptionTypes,\n EPaymentModes,\n ETimeslots,\n TAddress,\n TAppointmentDay,\n TProduct,\n} from '../../../../../utils/network/types';\nimport {\n getAddressStreetLabel,\n toEnergies,\n} from '../../../../../utils/network/helpers';\nimport { RequestError } from '../../../../../utils/network/errors';\nimport { Modifier } from 'react-day-picker';\nimport config from '../../../../../utils/config';\nimport { SelectOption } from 'Types';\nimport Data from './Data';\nimport replace from 'lodash/replace';\n\ntype DateContract = {\n date: number;\n firstPaymentCB: boolean;\n isCyclicalProduct: boolean;\n month: number;\n timeslot: ETimeslots | null;\n timeslots: ETimeslots[] | null;\n year: number;\n};\n\ntype Coords = {\n civility: ECivilities | null;\n firstName: string;\n lastName: string;\n};\n\ninterface IProps {\n productCode: TProduct[];\n cyclicalProducts: EEnergyTypes[];\n handleDebitDay: (value: number) => void;\n channel: string;\n getCalendarAppointment: (\n energyType: EEnergyTypes,\n isIndividual: boolean,\n onInit?: boolean,\n ) => Promise<TAppointmentDay[] | RequestError>;\n initialParams?: Data;\n isIndividual: boolean;\n onValidationStatusChange: (\n validated: boolean,\n situation: {\n effectiveStartRange?: EEffectiveStartRanges;\n electricityEffectiveStartDate?: Date;\n gasEffectiveStartDate?: Date;\n electricityDueDate?: Date;\n gasDueDate?: Date;\n electricityExpress?: boolean;\n gasExpress?: boolean;\n electricityTimeslot?: ETimeslots;\n gasTimeslot?: ETimeslots;\n electricityFirstPaymentCB?: boolean;\n gasFirstPaymentCB?: boolean;\n billingAddress?: TAddress;\n coords?: Coords;\n iban?: string;\n processType?: EProcessTypes;\n thirdParty?: {\n civility: ECivilities;\n firstName: string;\n lastName: string;\n };\n },\n ) => void;\n searchAppointmentTimeslot: (\n date: Date,\n energy: EEnergyTypes,\n ) => Promise<ETimeslots[] | RequestError>;\n siteOptionSelection: ESubscriptionTypes | null;\n}\n\ninterface IState {\n addressValue: string;\n debitDay?: string;\n addressCoords?: Coords;\n changingSupplierStartTime: SelectOption<EEffectiveStartRanges> | null;\n civilitySelection: ECivilities | null;\n currentProcessTypeSelection: EProcessTypes;\n electricityAppointments: TAppointmentDay[];\n electricityExpress: boolean;\n electricityFirstPaymentCB: boolean;\n electricityTimeslots: ETimeslots[] | null;\n electricityTimeslotSelection: ETimeslots | null;\n firstNameValue: string;\n gasAppointments: TAppointmentDay[];\n gasExpress: boolean;\n gasFirstPaymentCB: boolean;\n gasTimeslots: ETimeslots[] | null;\n gasTimeslotSelection: ETimeslots | null;\n IBANValue: string;\n identicalAddressToggleState: boolean;\n isJointContract: boolean;\n movingInElectricityDatePick: Date | null;\n movingInGasDatePick: Date | null;\n paymentModeSelection: SelectOption<EPaymentModes> | null;\n postalCodeSelection: TAddress | null;\n lastNameValue: string;\n}\n\nfunction filterAppointments(\n appointments: TAppointmentDay[] = [],\n type: 'express' | 'available',\n condition: boolean,\n): Modifier[] {\n if (appointments.length <= 0) return [];\n const modifiers = [];\n appointments\n .filter(element => {\n return type === 'express'\n ? element[type] === condition && element.available\n : element[type] === condition;\n })\n .forEach(val => {\n return modifiers.push(new Date(val.date));\n });\n if (type === 'available' && !condition) {\n const lastDay =\n appointments && new Date(appointments.slice(-1)[0].date);\n const today = new Date();\n const tomorrow = new Date();\n tomorrow.setDate(today.getDate() + 1);\n modifiers.push({\n before: tomorrow,\n after: lastDay,\n });\n }\n return modifiers;\n}\n\nfunction matchDate(\n apps: TAppointmentDay[],\n date: Date,\n): TAppointmentDay | null {\n let match: TAppointmentDay | null = null;\n _.forEach(apps, app => {\n try {\n const appDate = new Date(app.date);\n const isSameDay =\n appDate.getFullYear() === date.getFullYear() &&\n appDate.getMonth() === date.getMonth() &&\n appDate.getDate() === date.getDate();\n if (isSameDay) {\n match = app;\n return false;\n }\n } catch (err) {\n console.error(err);\n }\n });\n return match;\n}\n\ntype MovingInParams = Pick<\n IState,\n | 'electricityAppointments'\n | 'electricityExpress'\n | 'electricityFirstPaymentCB'\n | 'electricityTimeslots'\n | 'electricityTimeslotSelection'\n | 'gasAppointments'\n | 'gasExpress'\n | 'gasFirstPaymentCB'\n | 'gasTimeslots'\n | 'gasTimeslotSelection'\n | 'movingInElectricityDatePick'\n | 'movingInGasDatePick'\n>;\n\ntype SwitchParams = Pick<\n IState,\n 'movingInElectricityDatePick' | 'movingInGasDatePick'\n>;\n\nfunction toDateContract(\n EL: {\n date: Date | null;\n firstPaymentCB: boolean;\n isCyclicalProduct: boolean;\n startTime: EEffectiveStartRanges | null;\n timeslots: ETimeslots[] | null;\n timeslotSelection: ETimeslots | null;\n },\n NG: {\n date: Date | null;\n firstPaymentCB: boolean;\n isCyclicalProduct: boolean;\n startTime: EEffectiveStartRanges | null;\n timeslots: ETimeslots[] | null;\n timeslotSelection: ETimeslots | null;\n },\n): any {\n const bundle: any = {};\n if (!!EL.date) {\n bundle.EL = {\n date: EL.date.getDate(),\n firstPaymentCB: EL.firstPaymentCB,\n isCyclicalProduct: EL.isCyclicalProduct,\n month: EL.date.getMonth(),\n switch: EL.startTime,\n timeslots: EL.timeslots,\n timeslot: EL.timeslotSelection,\n year: EL.date.getFullYear(),\n } as DateContract;\n }\n if (!!NG.date) {\n bundle.NG = {\n date: NG.date.getDate(),\n firstPaymentCB: NG.firstPaymentCB,\n isCyclicalProduct: NG.isCyclicalProduct,\n month: NG.date.getMonth(),\n switch: NG.startTime,\n timeslots: NG.timeslots,\n timeslot: NG.timeslotSelection,\n year: NG.date.getFullYear(),\n } as DateContract;\n }\n return bundle;\n}\n\nconst Wording = WordingConstant.AdminSubscriptionContainer.Situation;\nconst WordingDebitDay = WordingConstant.ProfilePage;\nconst baseClassName = 'situation-section';\nconst radioToggleClassName = 'radio-buttons';\nconst detailsClassName = 'details';\nconst billingInformationsClassName = 'billing';\nconst paymentModeOptions: Array<SelectOption<EPaymentModes>> = [\n {\n id: '0',\n label: Wording.paymentModes.directDebit,\n value: EPaymentModes.DIRECT_DEBIT,\n },\n\n {\n id: '1',\n label: Wording.paymentModes.paymentCB,\n value: EPaymentModes.BANK_TRANSFER,\n },\n];\n\nconst preparePaymentModOptions = ({\n firstPaymentCB,\n isCyclicalProduct,\n cyclicalProducts,\n energyTypes,\n}: {\n firstPaymentCB: {\n elec: boolean;\n gas: boolean;\n };\n isCyclicalProduct: {\n elec: boolean;\n gas: boolean;\n };\n cyclicalProducts: EEnergyTypes[];\n energyTypes: EEnergyTypes[];\n}) => {\n if (energyTypes.length > 1) {\n return [\n {\n ...paymentModeOptions[\n (firstPaymentCB.elec || firstPaymentCB.gas) &&\n cyclicalProducts.length !== 2\n ? 1\n : 0\n ],\n },\n ];\n }\n\n return [\n {\n ...paymentModeOptions[\n (firstPaymentCB.elec || firstPaymentCB.gas) &&\n !isCyclicalProduct.elec &&\n !isCyclicalProduct.gas\n ? 1\n : 0\n ],\n },\n ];\n};\n\nexport const switchingSupplierOptions: Array<SelectOption<\n EEffectiveStartRanges\n>> = [\n {\n id: EEffectiveStartRanges.NOW,\n value: EEffectiveStartRanges.NOW,\n label: Wording.now,\n },\n {\n id: EEffectiveStartRanges.LATER,\n value: EEffectiveStartRanges.LATER,\n label: Wording.later,\n },\n];\n\nconst initialDateValues = {\n changingSupplierStartTime: null,\n electricityExpress: false,\n electricityFirstPaymentCB: false,\n electricityTimeslots: null,\n electricityTimeslotSelection: null,\n gasExpress: false,\n gasFirstPaymentCB: false,\n gasTimeslots: null,\n gasTimeslotSelection: null,\n movingInElectricityDatePick: null,\n movingInGasDatePick: null,\n};\nconst initialState: IState = {\n ...initialDateValues,\n addressValue: '',\n debitDay: '',\n addressCoords: undefined,\n civilitySelection: null,\n currentProcessTypeSelection: EProcessTypes.MOVE_IN,\n electricityAppointments: [],\n firstNameValue: '',\n gasAppointments: [],\n IBANValue: '',\n identicalAddressToggleState: true,\n isJointContract: false,\n paymentModeSelection: null,\n postalCodeSelection: null,\n lastNameValue: '',\n};\n\nclass SituationSection extends Component<IProps, IState> {\n constructor(props: IProps) {\n super(props);\n this.state = {\n ...initialState,\n debitDay: WordingDebitDay.paymentMethod.debitDaysEnum[0],\n };\n this.handleAddressInput = this.handleAddressInput.bind(this);\n this.handleCoordsInput = this.handleCoordsInput.bind(this);\n this.handleIBANInput = this.handleIBANInput.bind(this);\n this.handleIdenticalAddressToggle = this.handleIdenticalAddressToggle.bind(\n this,\n );\n this.handleJointContractToggle = this.handleJointContractToggle.bind(\n this,\n );\n this.handleMovingInDateCalenderOptions = this.handleMovingInDateCalenderOptions.bind(\n this,\n );\n this.handleMovingInDatePickerPick = this.handleMovingInDatePickerPick.bind(\n this,\n );\n this.handlePaymentModeSelection = this.handlePaymentModeSelection.bind(\n this,\n );\n this.handlePostalCodeSelection = this.handlePostalCodeSelection.bind(\n this,\n );\n this.handleSituationToggle = this.handleSituationToggle.bind(this);\n this.handleSwitchingSupplierContractStartTimeSelection = this.handleSwitchingSupplierContractStartTimeSelection.bind(\n this,\n );\n this.handleTimeslotSelection = this.handleTimeslotSelection.bind(this);\n this.validate = _.throttle(this.validate, 1000);\n this.handleDebitDay = this.handleDebitDay.bind(this);\n }\n\n componentDidMount() {\n this.init();\n\n const { cyclicalProducts, siteOptionSelection } = this.props;\n\n const { electricityFirstPaymentCB, gasFirstPaymentCB } = this.state;\n\n const isCyclicalProductElec = _.includes<EEnergyTypes>(\n cyclicalProducts,\n EEnergyTypes.ELECTRICTY,\n );\n const isCyclicalProductGas = _.includes<EEnergyTypes>(\n cyclicalProducts,\n EEnergyTypes.GAS,\n );\n\n const energyTypes: EEnergyTypes[] = toEnergies(siteOptionSelection);\n const paymentModeSelection = preparePaymentModOptions({\n cyclicalProducts,\n energyTypes,\n firstPaymentCB: {\n elec: electricityFirstPaymentCB,\n gas: gasFirstPaymentCB,\n },\n isCyclicalProduct: {\n elec: isCyclicalProductElec,\n gas: isCyclicalProductGas,\n },\n })[0];\n\n this.setState({\n paymentModeSelection,\n });\n }\n\n async init() {\n const {\n initialParams,\n cyclicalProducts,\n siteOptionSelection,\n } = this.props;\n\n if (!!initialParams) {\n let movingInParams: MovingInParams | {} = {};\n let switchParams: SwitchParams | {} = {};\n let changingSupplierStartTime: SelectOption<\n EEffectiveStartRanges\n > | null = null;\n const currentProcessTypeSelection: EProcessTypes =\n _.get(initialParams, 'startDate.processType') ||\n EProcessTypes.MOVE_IN;\n const identicalAddressToggleState: boolean = !initialParams.billingAddress;\n const addressValue: string = getAddressStreetLabel(\n initialParams.billingAddress,\n );\n const addressCoords = initialParams.coords || {\n civility: ECivilities.MR,\n firstName: '',\n lastName: '',\n };\n const postalCodeSelection: TAddress | null =\n initialParams.billingAddress || null;\n let civilitySelection: ECivilities | null = ECivilities.MR;\n let lastNameValue: string = '';\n let firstNameValue: string = '';\n const isJointContract: boolean = !!initialParams.thirdParty;\n if (isJointContract) {\n civilitySelection = _.get(\n initialParams,\n 'thirdParty.civility',\n null,\n );\n lastNameValue = _.get(initialParams, 'thirdParty.lastName', '');\n firstNameValue = _.get(\n initialParams,\n 'thirdParty.firstName',\n '',\n );\n }\n\n let paymentModeSelection: SelectOption<EPaymentModes> | null = null;\n const IBANValue: string = initialParams.payment.data.iban || '';\n if (initialParams.startDate.processType === EProcessTypes.MOVE_IN) {\n movingInParams = await this.parsePreviousMovingInParams(\n initialParams,\n );\n\n const energyTypes: EEnergyTypes[] = toEnergies(\n siteOptionSelection,\n );\n\n const isCyclicalProductElec = _.includes<EEnergyTypes>(\n cyclicalProducts,\n EEnergyTypes.ELECTRICTY,\n );\n const isCyclicalProductGas = _.includes<EEnergyTypes>(\n cyclicalProducts,\n EEnergyTypes.GAS,\n );\n\n paymentModeSelection =\n preparePaymentModOptions({\n cyclicalProducts,\n energyTypes,\n firstPaymentCB: {\n elec: (movingInParams as any)\n .electricityFirstPaymentCB,\n gas: (movingInParams as any).gasFirstPaymentCB,\n },\n isCyclicalProduct: {\n elec: isCyclicalProductElec,\n gas: isCyclicalProductGas,\n },\n })[0] || null;\n } else if (\n initialParams.startDate.processType === EProcessTypes.SWITCH\n ) {\n switchParams = this.parsePreviousSwitchParams(initialParams);\n\n const initialRange: EEffectiveStartRanges | null = _.get(\n initialParams,\n 'startDate.switchData.startRange',\n null,\n );\n changingSupplierStartTime =\n _.find(\n switchingSupplierOptions,\n (range: SelectOption<EEffectiveStartRanges>) => {\n return range.value === initialRange;\n },\n ) || null;\n\n paymentModeSelection =\n _.find(\n paymentModeOptions,\n (mode: SelectOption<EPaymentModes>) => {\n return initialParams.payment.mode === mode.value;\n },\n ) || null;\n }\n\n const nextState: IState = {\n addressValue,\n addressCoords,\n changingSupplierStartTime,\n civilitySelection,\n currentProcessTypeSelection,\n firstNameValue,\n IBANValue,\n identicalAddressToggleState,\n isJointContract,\n lastNameValue,\n paymentModeSelection,\n postalCodeSelection,\n ...(movingInParams as MovingInParams),\n ...switchParams,\n };\n\n await setState(this, { ...nextState });\n this.validate();\n }\n\n const params = parseQueryParams(\n document.location,\n window.location.host,\n window.location.protocol,\n );\n\n const coholderCivility = params.get('coholderCivility');\n const coholderFirstName = params.get('coholderFirstName');\n const coholderLastName = params.get('coholderLastName');\n\n const isJointContract =\n !!coholderCivility && !!coholderFirstName && !!coholderLastName;\n\n if (isJointContract) {\n await setState(this, {\n civilitySelection: coholderCivility as ECivilities,\n lastNameValue: coholderLastName as string,\n firstNameValue: coholderFirstName as string,\n isJointContract,\n });\n }\n\n await this.fetchAppointments();\n }\n\n componentDidUpdate(prevProps: IProps, prevState: IState) {\n const {\n isIndividual: prevIsIndividual,\n siteOptionSelection: prevSiteOptionSelection,\n } = prevProps;\n const {\n movingInElectricityDatePick: prevMovingInElectricityDatePick,\n movingInGasDatePick: prevMovingInGasDatePick,\n currentProcessTypeSelection,\n } = prevState;\n const { isIndividual, siteOptionSelection } = this.props;\n const { movingInElectricityDatePick, movingInGasDatePick } = this.state;\n\n const isSwitch = currentProcessTypeSelection === EProcessTypes.SWITCH;\n const shouldUpdateelectricityTimeslots =\n !!movingInElectricityDatePick &&\n movingInElectricityDatePick !== prevMovingInElectricityDatePick;\n const shouldUpdategasTimeslots =\n !!movingInGasDatePick &&\n movingInGasDatePick !== prevMovingInGasDatePick;\n if (\n !isSwitch &&\n (prevIsIndividual !== isIndividual ||\n prevSiteOptionSelection !== siteOptionSelection)\n ) {\n this.fetchAppointments();\n }\n if (\n !isSwitch &&\n (shouldUpdateelectricityTimeslots || shouldUpdategasTimeslots)\n ) {\n this.fetchTimeSlots(\n shouldUpdateelectricityTimeslots,\n shouldUpdategasTimeslots,\n );\n }\n if (!_.isEqual(prevState, this.state)) {\n this.validate();\n }\n }\n\n async fetchAppointments() {\n const {\n getCalendarAppointment,\n isIndividual,\n siteOptionSelection,\n } = this.props;\n const nextState: any = {};\n const shouldFetchElectricityAppointements =\n siteOptionSelection === ESubscriptionTypes.ELECTRICITY ||\n siteOptionSelection === ESubscriptionTypes.ELECTRICITY_AND_GAS;\n const shouldFetchGasAppointments =\n siteOptionSelection === ESubscriptionTypes.GAS ||\n siteOptionSelection === ESubscriptionTypes.ELECTRICITY_AND_GAS;\n if (shouldFetchElectricityAppointements) {\n const appointments:\n | TAppointmentDay[]\n | RequestError = await getCalendarAppointment(\n EEnergyTypes.ELECTRICTY,\n isIndividual,\n );\n if (!(appointments instanceof RequestError)) {\n nextState.electricityAppointments = appointments;\n }\n }\n if (shouldFetchGasAppointments) {\n const appointments = await getCalendarAppointment(\n EEnergyTypes.GAS,\n isIndividual,\n );\n if (!(appointments instanceof RequestError)) {\n nextState.gasAppointments = appointments;\n }\n }\n this.setState({ ...nextState });\n }\n\n async fetchTimeSlots(electricity: boolean, gas: boolean) {\n const { searchAppointmentTimeslot } = this.props;\n const { movingInElectricityDatePick, movingInGasDatePick } = this.state;\n const nextState: any = {};\n try {\n if (!!movingInElectricityDatePick && electricity) {\n const electricityTimeslots = await searchAppointmentTimeslot(\n movingInElectricityDatePick,\n EEnergyTypes.ELECTRICTY,\n );\n if (!(electricityTimeslots instanceof RequestError)) {\n nextState.electricityTimeslots = electricityTimeslots as ETimeslots[];\n }\n }\n if (!!movingInGasDatePick && gas) {\n const gasTimeslots = await searchAppointmentTimeslot(\n movingInGasDatePick,\n EEnergyTypes.GAS,\n );\n if (!(gasTimeslots instanceof RequestError)) {\n nextState.gasTimeslots = gasTimeslots as ETimeslots[];\n }\n }\n this.setState({ ...nextState });\n } catch (err) {\n console.error(err);\n }\n }\n\n handleAddressInput(address: string) {\n this.setState({ addressValue: address });\n }\n\n handleCoordsInput(coords: {\n civility: ECivilities | null;\n firstName: string;\n lastName: string;\n }) {\n this.setState({\n civilitySelection: coords.civility,\n firstNameValue: coords.firstName,\n lastNameValue: coords.lastName,\n });\n }\n\n handleIBANInput(e: ChangeEvent<HTMLInputElement>) {\n const nextValue = _.get(e, 'target.value', '');\n this.setState({ IBANValue: nextValue });\n }\n\n handleIdenticalAddressToggle(identical: boolean) {\n this.setState({ identicalAddressToggleState: identical });\n }\n\n handleJointContractToggle(toggled: boolean) {\n this.setState({\n civilitySelection: !!toggled ? ECivilities.MR : null,\n isJointContract: toggled,\n });\n }\n\n handleMovingInDateCalenderOptions(\n energy: 'EL' | 'NG',\n status: 'disabled' | 'selected',\n ): Modifier[] {\n const {\n electricityAppointments,\n gasAppointments,\n currentProcessTypeSelection,\n changingSupplierStartTime,\n } = this.state;\n const { channel, isIndividual } = this.props;\n const isSwitch = currentProcessTypeSelection === EProcessTypes.SWITCH;\n let appointments: TAppointmentDay[] = [];\n if (energy === 'EL') {\n appointments = electricityAppointments;\n } else {\n appointments = gasAppointments;\n }\n let modifiers: Modifier[] = [];\n\n if (isSwitch && changingSupplierStartTime) {\n if (status === 'disabled') {\n const wekiwiPro = this.props.productCode\n .filter(product => product && product.productCode)\n .some(product => product.productCode!.includes('WEKIPRO'));\n\n const switchDropdownValues = (() => {\n let day =\n config.DefaultSwitchDueDate[\n changingSupplierStartTime.value\n ][energy];\n day = config.ChannelsDoorToDoor.includes(\n channel.toUpperCase(),\n )\n ? day + 7\n : day;\n day =\n !config.ChannelsDoorToDoor.includes(\n channel.toUpperCase(),\n ) && changingSupplierStartTime.value === 'LATER'\n ? day + 3\n : day + 1;\n const actualDate = new Date();\n if (!isIndividual) {\n return addMonth(new Date(), 1);\n }\n\n return addDays(actualDate, day);\n })();\n\n return [\n {\n before: switchDropdownValues,\n after: addMonth(\n new Date(),\n !isIndividual || wekiwiPro ? 4 : 1,\n ),\n },\n {\n daysOfWeek: [0, 6],\n },\n ];\n }\n\n return [];\n }\n\n if (status === 'disabled' && appointments.length === 0) {\n const today: Date = new Date(Date.now());\n modifiers = [\n {\n after: today,\n before: today,\n },\n today,\n ];\n } else if (status === 'selected') {\n modifiers = filterAppointments(appointments, 'express', true);\n } else {\n modifiers = filterAppointments(appointments, 'available', false);\n }\n return modifiers;\n }\n\n handleMovingInDatePickerPick(d: Date, energy: 'EL' | 'NG') {\n const {\n electricityAppointments,\n gasAppointments,\n currentProcessTypeSelection,\n } = this.state;\n const { cyclicalProducts } = this.props;\n\n const isSwitch = currentProcessTypeSelection === EProcessTypes.SWITCH;\n\n const nextState: any = {};\n let appointments: TAppointmentDay[] = [];\n const isCyclicalProductElec = _.includes<EEnergyTypes>(\n cyclicalProducts,\n EEnergyTypes.ELECTRICTY,\n );\n const isCyclicalProductGas = _.includes<EEnergyTypes>(\n cyclicalProducts,\n EEnergyTypes.GAS,\n );\n if (energy === EEnergyTypes.ELECTRICTY) {\n nextState.movingInElectricityDatePick = d;\n appointments = electricityAppointments;\n } else if (energy === EEnergyTypes.GAS) {\n nextState.movingInGasDatePick = d;\n appointments = gasAppointments;\n }\n\n if (!isSwitch) {\n const match = matchDate(appointments, d);\n const nextFirstPaymentCB = !!match && !!match.firstPaymentCB;\n if (energy === EEnergyTypes.ELECTRICTY) {\n nextState.electricityExpress = !!match && !!match.express;\n nextState.electricityFirstPaymentCB =\n nextFirstPaymentCB && !isCyclicalProductElec;\n } else if (energy === EEnergyTypes.GAS) {\n nextState.gasExpress = !!match && !!match.express;\n nextState.gasFirstPaymentCB =\n nextFirstPaymentCB && !isCyclicalProductGas;\n }\n }\n\n this.setState({ ...nextState });\n }\n\n handlePaymentModeSelection(e: SelectOption<EPaymentModes>) {\n this.setState({ paymentModeSelection: e });\n }\n\n handlePostalCodeSelection(address: TAddress) {\n this.setState({ postalCodeSelection: address });\n }\n\n handleSituationToggle(situation: EProcessTypes) {\n const { cyclicalProducts, siteOptionSelection, channel } = this.props;\n\n const { electricityFirstPaymentCB, gasFirstPaymentCB } = this.state;\n\n const isCyclicalProductElec = _.includes<EEnergyTypes>(\n cyclicalProducts,\n EEnergyTypes.ELECTRICTY,\n );\n const isCyclicalProductGas = _.includes<EEnergyTypes>(\n cyclicalProducts,\n EEnergyTypes.GAS,\n );\n\n const energyTypes: EEnergyTypes[] = toEnergies(siteOptionSelection);\n const paymentModeSelection = preparePaymentModOptions({\n cyclicalProducts,\n energyTypes,\n firstPaymentCB: {\n elec: electricityFirstPaymentCB,\n gas: gasFirstPaymentCB,\n },\n isCyclicalProduct: {\n elec: isCyclicalProductElec,\n gas: isCyclicalProductGas,\n },\n })[0];\n\n const prepareDateValue = checkIsDisableSwitchSelect({ channel })\n ? {}\n : initialDateValues;\n\n this.setState({\n ...prepareDateValue,\n currentProcessTypeSelection: situation,\n paymentModeSelection,\n });\n }\n\n handleSwitchingSupplierContractStartTimeSelection(\n startTime: SelectOption<EEffectiveStartRanges>,\n ) {\n const { siteOptionSelection } = this.props;\n if (!!_.find(switchingSupplierOptions, startTime)) {\n const { DefaultSwitchDueDate } = config;\n\n const getDateByEnergy = (energy: 'EL' | 'NG') =>\n addDays(\n new Date(),\n DefaultSwitchDueDate[startTime.value][energy],\n );\n\n const nextDateProps: any = {};\n\n if (siteOptionSelection === ESubscriptionTypes.ELECTRICITY) {\n nextDateProps.movingInElectricityDatePick = getDateByEnergy(\n 'EL',\n );\n }\n\n if (siteOptionSelection === ESubscriptionTypes.GAS) {\n nextDateProps.movingInGasDatePick = getDateByEnergy('NG');\n }\n\n if (\n siteOptionSelection === ESubscriptionTypes.ELECTRICITY_AND_GAS\n ) {\n nextDateProps.movingInGasDatePick = getDateByEnergy('NG');\n nextDateProps.movingInElectricityDatePick = getDateByEnergy(\n 'EL',\n );\n }\n\n this.setState({\n changingSupplierStartTime: startTime,\n ...nextDateProps,\n });\n } else {\n console.error('Unexpected start time value');\n }\n }\n\n handleTimeslotSelection(\n opt: SelectOption<ETimeslots>,\n energy: 'EL' | 'NG',\n ) {\n const nextState: any = {};\n const timeslot: ETimeslots = _.get(opt, 'value', null) as ETimeslots;\n if (energy === 'EL') {\n nextState.electricityTimeslotSelection = timeslot;\n } else if (energy === 'NG') {\n nextState.gasTimeslotSelection = timeslot;\n }\n this.setState({ ...nextState });\n }\n\n async parsePreviousMovingInParams(\n initialParams: Data,\n ): Promise<MovingInParams> {\n const hasElectricity: boolean = _.includes(\n initialParams.energies,\n EEnergyTypes.ELECTRICTY,\n );\n const hasGas: boolean = _.includes(\n initialParams.energies,\n EEnergyTypes.GAS,\n );\n let electricityAppointments: TAppointmentDay[] = [];\n let electricityExpress: boolean = false;\n let electricityFirstPaymentCB: boolean = false;\n let electricityTimeslots: ETimeslots[] | null = null;\n let electricityTimeslotSelection: ETimeslots | null = null;\n let gasAppointments: TAppointmentDay[] = [];\n let gasExpress: boolean = false;\n let gasFirstPaymentCB: boolean = false;\n let gasTimeslots: ETimeslots[] | null = null;\n let gasTimeslotSelection: ETimeslots | null = null;\n let movingInElectricityDatePick: Date | null = null;\n let movingInGasDatePick: Date | null = null;\n if (hasElectricity) {\n const electricityParams = await this.parsePreviousEnergyMovingInParams(\n initialParams,\n EEnergyTypes.ELECTRICTY,\n );\n electricityAppointments = electricityParams.appointments;\n electricityExpress = electricityParams.express;\n electricityFirstPaymentCB = electricityParams.firstPaymentCB;\n electricityTimeslots = electricityParams.timeslots;\n electricityTimeslotSelection = electricityParams.timeslotSelection;\n movingInElectricityDatePick = electricityParams.datePick;\n }\n if (hasGas) {\n const gasParams = await this.parsePreviousEnergyMovingInParams(\n initialParams,\n EEnergyTypes.GAS,\n );\n gasAppointments = gasParams.appointments;\n gasExpress = gasParams.express;\n gasFirstPaymentCB = gasParams.firstPaymentCB;\n gasTimeslots = gasParams.timeslots;\n gasTimeslotSelection = gasParams.timeslotSelection;\n movingInGasDatePick = gasParams.datePick;\n }\n return {\n electricityAppointments,\n electricityExpress,\n electricityFirstPaymentCB,\n electricityTimeslots,\n electricityTimeslotSelection,\n gasAppointments,\n gasExpress,\n gasFirstPaymentCB,\n gasTimeslots,\n gasTimeslotSelection,\n movingInElectricityDatePick,\n movingInGasDatePick,\n };\n }\n\n async parsePreviousEnergyMovingInParams(\n initialParams: Data,\n energy: EEnergyTypes,\n ): Promise<{\n appointments: TAppointmentDay[];\n datePick: Date | null;\n express: boolean;\n firstPaymentCB: boolean;\n timeslots: ETimeslots[] | null;\n timeslotSelection: ETimeslots | null;\n }> {\n const {\n isIndividual,\n getCalendarAppointment,\n searchAppointmentTimeslot,\n } = this.props;\n\n let appointments: TAppointmentDay[] = [];\n let datePick: Date | null = null;\n let express: boolean = false;\n let firstPaymentCB: boolean = false;\n let timeslots: ETimeslots[] | null = null;\n let timeslotSelection: ETimeslots | null = null;\n const appointmentsRes = await getCalendarAppointment(\n energy,\n isIndividual,\n true,\n );\n appointments = !(appointmentsRes instanceof RequestError)\n ? appointmentsRes\n : [];\n const previousDatePick: Date | null = _.get(\n initialParams,\n `startDate.movingInData.${energy}.date`,\n null,\n );\n const previousTimeslot: ETimeslots | null = _.get(\n initialParams,\n `startDate.movingInData.${energy}.timeslot`,\n null,\n );\n let appointmentDay: TAppointmentDay | null = null;\n if (!!previousDatePick) {\n const previousAppDate: Date | number = new Date(previousDatePick);\n const previousAppDateStr: string = getFormattedDateToBackEnd(\n previousAppDate,\n );\n appointmentDay =\n _.find(appointments, (app: TAppointmentDay) => {\n const appDate: Date | number = new Date(app.date);\n if (!previousAppDate || !appDate) return false;\n const appDateStr: string = getFormattedDateToBackEnd(\n appDate,\n );\n return previousAppDateStr === appDateStr;\n }) || null;\n }\n if (!!appointmentDay) {\n datePick = new Date(appointmentDay.date);\n express = !!appointmentDay.express;\n firstPaymentCB = !!appointmentDay.firstPaymentCB;\n const timeslotsRes:\n | ETimeslots[]\n | RequestError = await searchAppointmentTimeslot(\n datePick,\n energy,\n );\n if (!(timeslotsRes instanceof RequestError)) {\n timeslots = timeslotsRes;\n const previousTimeslot: ETimeslots | null = _.get(\n initialParams,\n `startDate.movingInData.${energy}.timeslot`,\n null,\n );\n timeslotSelection =\n _.find(timeslots, (timeslot: ETimeslots) => {\n return previousTimeslot === timeslot;\n }) || null;\n }\n }\n // if !datePick Breach: Missing express and firstPaymetnCB values ! ! !\n if (!datePick) {\n datePick = previousDatePick;\n timeslotSelection = previousTimeslot;\n }\n\n return {\n appointments,\n datePick,\n express,\n firstPaymentCB,\n timeslots,\n timeslotSelection,\n };\n }\n\n parsePreviousSwitchParams(initialParams: Data): SwitchParams {\n const switchData: any = {};\n\n const hasElectricity: boolean = _.includes(\n initialParams.energies,\n EEnergyTypes.ELECTRICTY,\n );\n const hasGas: boolean = _.includes(\n initialParams.energies,\n EEnergyTypes.GAS,\n );\n\n if (hasElectricity) {\n const nextDate = _.get(\n initialParams,\n `startDate.switchData.EL.dueDate`,\n null,\n );\n\n if (!!nextDate) {\n switchData.movingInElectricityDatePick = nextDate;\n }\n }\n\n if (hasGas) {\n const nextDate = _.get(\n initialParams,\n `startDate.switchData.NG.dueDate`,\n null,\n );\n\n if (!!nextDate) {\n switchData.movingInGasDatePick = nextDate;\n }\n }\n\n return Object.keys(switchData).length !== 0 ? switchData : {};\n }\n\n validate() {\n const {\n onValidationStatusChange,\n siteOptionSelection,\n cyclicalProducts,\n } = this.props;\n const {\n addressCoords,\n addressValue,\n changingSupplierStartTime,\n civilitySelection,\n currentProcessTypeSelection,\n electricityExpress,\n electricityFirstPaymentCB,\n electricityTimeslotSelection,\n firstNameValue,\n gasExpress,\n gasFirstPaymentCB,\n gasTimeslotSelection,\n IBANValue,\n identicalAddressToggleState,\n isJointContract,\n lastNameValue,\n movingInElectricityDatePick,\n movingInGasDatePick,\n paymentModeSelection,\n postalCodeSelection,\n } = this.state;\n\n const isCyclicalProductElec = _.includes<EEnergyTypes>(\n cyclicalProducts,\n EEnergyTypes.ELECTRICTY,\n );\n const isCyclicalProductGas = _.includes<EEnergyTypes>(\n cyclicalProducts,\n EEnergyTypes.GAS,\n );\n\n let hasValidInput =\n paymentModeSelection !==\n null /* && TODO Uncomment when possible IBANValue.length > 0*/;\n if (!identicalAddressToggleState) {\n hasValidInput =\n hasValidInput &&\n addressValue.length > 0 &&\n postalCodeSelection !== null;\n }\n if (isJointContract) {\n hasValidInput =\n hasValidInput &&\n civilitySelection !== null &&\n firstNameValue.length > 0 &&\n lastNameValue.length > 0;\n }\n if (currentProcessTypeSelection === EProcessTypes.MOVE_IN) {\n if (\n siteOptionSelection === ESubscriptionTypes.ELECTRICITY_AND_GAS\n ) {\n hasValidInput =\n hasValidInput &&\n movingInElectricityDatePick !== null &&\n electricityTimeslotSelection !== null &&\n movingInGasDatePick !== null &&\n gasTimeslotSelection !== null;\n } else if (siteOptionSelection === ESubscriptionTypes.ELECTRICITY) {\n hasValidInput =\n hasValidInput &&\n movingInElectricityDatePick !== null &&\n electricityTimeslotSelection !== null;\n } else if (siteOptionSelection === ESubscriptionTypes.GAS) {\n hasValidInput =\n hasValidInput &&\n movingInGasDatePick !== null &&\n gasTimeslotSelection !== null;\n }\n } else if (currentProcessTypeSelection === EProcessTypes.SWITCH) {\n hasValidInput = hasValidInput && changingSupplierStartTime !== null;\n\n if (\n siteOptionSelection === ESubscriptionTypes.ELECTRICITY_AND_GAS\n ) {\n hasValidInput =\n hasValidInput &&\n movingInElectricityDatePick !== null &&\n movingInGasDatePick !== null;\n } else if (siteOptionSelection === ESubscriptionTypes.ELECTRICITY) {\n hasValidInput =\n hasValidInput && movingInElectricityDatePick !== null;\n } else if (siteOptionSelection === ESubscriptionTypes.GAS) {\n hasValidInput = hasValidInput && movingInGasDatePick !== null;\n }\n }\n let effectiveStartRange: EEffectiveStartRanges | undefined;\n let electricityEffectiveStartDate: Date | undefined;\n let gasEffectiveStartDate: Date | undefined;\n let electricityTimeslot: ETimeslots | undefined;\n let gasTimeslot: ETimeslots | undefined;\n let billingAddress: TAddress | undefined;\n let iban: string | undefined;\n let processType: EProcessTypes | undefined;\n let electricityDueDate: Date | undefined;\n let gasDueDate: Date | undefined;\n let thirdParty:\n | {\n civility: ECivilities;\n firstName: string;\n lastName: string;\n }\n | undefined;\n if (hasValidInput) {\n billingAddress = !!postalCodeSelection\n ? { ...postalCodeSelection, street: addressValue }\n : undefined;\n iban = IBANValue;\n processType = currentProcessTypeSelection;\n if (!!civilitySelection) {\n thirdParty = {\n civility: civilitySelection,\n lastName: lastNameValue,\n firstName: firstNameValue,\n };\n }\n if (currentProcessTypeSelection === EProcessTypes.MOVE_IN) {\n electricityEffectiveStartDate =\n movingInElectricityDatePick || undefined;\n gasEffectiveStartDate = movingInGasDatePick || undefined;\n electricityTimeslot = electricityTimeslotSelection || undefined;\n gasTimeslot = gasTimeslotSelection || undefined;\n } else if (\n currentProcessTypeSelection === EProcessTypes.SWITCH &&\n changingSupplierStartTime !== null\n ) {\n effectiveStartRange = changingSupplierStartTime.value;\n if (\n changingSupplierStartTime.value ===\n EEffectiveStartRanges.LATER\n ) {\n (electricityEffectiveStartDate = isCyclicalProductElec\n ? new Date()\n : (movingInElectricityDatePick as Date)),\n 'EL',\n 'LATER',\n (gasEffectiveStartDate = isCyclicalProductGas\n ? new Date()\n : (movingInGasDatePick as Date)),\n 'NG',\n 'LATER',\n (gasDueDate = movingInGasDatePick as Date);\n electricityDueDate = movingInElectricityDatePick as Date;\n if (\n electricityDueDate &&\n electricityDueDate.setHours(0, 0, 0, 0) ===\n new Date().setHours(0, 0, 0, 0)\n ) {\n electricityEffectiveStartDate = undefined;\n gasEffectiveStartDate = undefined;\n } else if (\n gasDueDate &&\n gasDueDate.setHours(0, 0, 0, 0) ===\n new Date().setHours(0, 0, 0, 0)\n ) {\n electricityEffectiveStartDate = undefined;\n gasEffectiveStartDate = undefined;\n } else {\n if (!isCyclicalProductGas) {\n gasEffectiveStartDate = addDays(\n gasEffectiveStartDate,\n 14,\n );\n } else {\n gasEffectiveStartDate = gasDueDate;\n }\n if (!isCyclicalProductElec) {\n electricityEffectiveStartDate = addDays(\n electricityEffectiveStartDate,\n 14,\n );\n } else {\n electricityEffectiveStartDate = electricityDueDate;\n }\n }\n } else if (\n changingSupplierStartTime.value ===\n EEffectiveStartRanges.NOW\n ) {\n (electricityEffectiveStartDate = movingInElectricityDatePick as Date),\n 'EL',\n 'NOW',\n (gasEffectiveStartDate = movingInGasDatePick as Date),\n 'NG',\n 'NOW',\n (electricityDueDate = movingInElectricityDatePick as Date);\n gasDueDate = movingInGasDatePick as Date;\n if (\n electricityDueDate &&\n electricityDueDate.setHours(0, 0, 0, 0) ===\n new Date().setHours(0, 0, 0, 0)\n ) {\n electricityEffectiveStartDate = undefined;\n gasEffectiveStartDate = undefined;\n } else if (\n gasDueDate &&\n gasDueDate.setHours(0, 0, 0, 0) ===\n new Date().setHours(0, 0, 0, 0)\n ) {\n electricityEffectiveStartDate = undefined;\n gasEffectiveStartDate = undefined;\n } else {\n gasEffectiveStartDate = gasDueDate;\n electricityEffectiveStartDate = electricityDueDate;\n }\n }\n }\n }\n\n onValidationStatusChange(hasValidInput, {\n coords: addressCoords,\n effectiveStartRange,\n electricityEffectiveStartDate,\n gasEffectiveStartDate,\n electricityExpress,\n gasExpress,\n electricityTimeslot,\n gasTimeslot,\n electricityFirstPaymentCB,\n gasFirstPaymentCB,\n billingAddress,\n iban,\n processType,\n thirdParty,\n electricityDueDate,\n gasDueDate,\n });\n }\n\n /* handleDebitDay(value: string) {\n this.setState({\n debitDay: value,\n })\n }*/\n\n handleDebitDay(selectedDay: any) {\n this.setState({ debitDay: selectedDay });\n }\n\n render() {\n const {\n cyclicalProducts,\n initialParams,\n siteOptionSelection,\n channel,\n } = this.props;\n const {\n addressCoords,\n changingSupplierStartTime,\n civilitySelection,\n currentProcessTypeSelection,\n electricityFirstPaymentCB,\n electricityTimeslots,\n electricityTimeslotSelection,\n firstNameValue,\n gasFirstPaymentCB,\n gasTimeslots,\n gasTimeslotSelection,\n IBANValue,\n isJointContract,\n movingInElectricityDatePick,\n movingInGasDatePick,\n lastNameValue,\n paymentModeSelection,\n debitDay,\n } = this.state;\n const energyTypes: EEnergyTypes[] = toEnergies(siteOptionSelection);\n const isCyclicalProductElec = _.includes<EEnergyTypes>(\n cyclicalProducts,\n EEnergyTypes.ELECTRICTY,\n );\n const isCyclicalProductGas = _.includes<EEnergyTypes>(\n cyclicalProducts,\n EEnergyTypes.GAS,\n );\n const isLaterSDD =\n changingSupplierStartTime !== null &&\n changingSupplierStartTime.value === 'LATER';\n const dateContract: any = toDateContract(\n {\n // date: (isLaterSDD && config.ChannelsDoorToDoor.includes(channel.toUpperCase()) ? addDays(movingInElectricityDatePick as Date, 7) : movingInElectricityDatePick),\n date: movingInElectricityDatePick,\n firstPaymentCB: electricityFirstPaymentCB,\n isCyclicalProduct: isCyclicalProductElec,\n startTime: _.get(changingSupplierStartTime, 'value', null),\n timeslots: electricityTimeslots,\n timeslotSelection: electricityTimeslotSelection,\n },\n {\n // date: (isLaterSDD && config.ChannelsDoorToDoor.includes(channel.toUpperCase()) ? addDays(movingInGasDatePick as Date, 7) : movingInGasDatePick),\n date: movingInGasDatePick,\n firstPaymentCB: gasFirstPaymentCB,\n isCyclicalProduct: isCyclicalProductGas,\n startTime: _.get(changingSupplierStartTime, 'value', null),\n timeslots: gasTimeslots,\n timeslotSelection: gasTimeslotSelection,\n },\n );\n const initialAddress: TAddress | undefined =\n _.get(initialParams, 'billingAddress') || undefined;\n const initialCoords: Coords | undefined =\n _.get(initialParams, 'coords') || undefined;\n\n const paymentModeOptions = preparePaymentModOptions({\n cyclicalProducts,\n energyTypes,\n firstPaymentCB: {\n elec: electricityFirstPaymentCB,\n gas: gasFirstPaymentCB,\n },\n isCyclicalProduct: {\n elec: isCyclicalProductElec,\n gas: isCyclicalProductGas,\n },\n });\n\n return (\n <section className={baseClassName}>\n <h2>{Wording.title}</h2>\n <div className={bcn([baseClassName, radioToggleClassName])}>\n <CustomRadio\n text={Wording.movingIn}\n value={EProcessTypes.MOVE_IN}\n checked={\n currentProcessTypeSelection ===\n EProcessTypes.MOVE_IN\n }\n handleCheck={() => {\n this.handleSituationToggle(EProcessTypes.MOVE_IN);\n }}\n />\n <CustomRadio\n text={Wording.switchingSupplier}\n value={EProcessTypes.SWITCH}\n checked={\n currentProcessTypeSelection === EProcessTypes.SWITCH\n }\n handleCheck={() => {\n this.handleSituationToggle(EProcessTypes.SWITCH);\n if (isCyclicalProductElec || isCyclicalProductGas) {\n this.handleSwitchingSupplierContractStartTimeSelection(\n switchingSupplierOptions[1],\n );\n }\n }}\n />\n </div>\n\n <div className={bcn([baseClassName, detailsClassName])}>\n <CustomDatePicker\n channel={channel}\n isCyclicalProductElec={isCyclicalProductElec}\n isCyclicalProductGas={isCyclicalProductGas}\n dateContract={dateContract}\n dropdownContractOptions={switchingSupplierOptions}\n dropdownContractOptionSelection={\n changingSupplierStartTime\n }\n energyTypes={energyTypes}\n handleChangeTimeslotSelect={\n this.handleTimeslotSelection\n }\n handleDateCalendarOption={\n this.handleMovingInDateCalenderOptions\n }\n handleDatePicker={this.handleMovingInDatePickerPick}\n handleDropdownContract={\n this\n .handleSwitchingSupplierContractStartTimeSelection\n }\n situation={\n currentProcessTypeSelection ===\n EProcessTypes.MOVE_IN\n ? 'MOVE_IN'\n : 'SWITCH'\n }\n />\n </div>\n <div style={{ marginTop: '30px' }}>\n <label\n className=\"custom-radio\"\n style={{ paddingLeft: '0px' }}\n >\n Jour de prélèvement souhaité\n </label>\n <div\n className=\"profile-container__update-payment-method__debit-day__container\"\n style={{ justifyContent: 'flex-start' }}\n >\n {WordingDebitDay.paymentMethod.debitDaysEnum.map(dd => (\n <CustomRadio\n key={dd}\n checked={dd === this.state.debitDay}\n text={replace(\n WordingDebitDay.paymentMethod.debitDayLabel,\n '{{ddValue}}',\n dd,\n )}\n value={dd}\n handleCheck={() => {\n this.props.handleDebitDay(\n (dd as unknown) as number,\n );\n this.handleDebitDay(dd);\n }}\n />\n ))}\n </div>\n </div>\n\n {currentProcessTypeSelection === EProcessTypes.SWITCH &&\n _.get(changingSupplierStartTime, 'value') !==\n EEffectiveStartRanges.LATER && <p>{Wording.terms}</p>}\n <div\n className={bcn([\n baseClassName,\n billingInformationsClassName,\n ])}\n >\n {!isCyclicalProductElec && !isCyclicalProductGas && (\n <div\n className={bcn([\n baseClassName,\n billingInformationsClassName,\n 'disclaimer',\n ])}\n >\n <p>\n <span>{Wording.disclaimerHead} </span>\n <span>{Wording.disclaimerBody}</span>\n </p>\n </div>\n )}\n <div\n className={bcn([\n baseClassName,\n billingInformationsClassName,\n 'inputs',\n ])}\n >\n {/* <div\n className={bcn([\n baseClassName,\n billingInformationsClassName,\n 'inputs',\n 'payment-mode',\n ])}\n >\n <div\n className={bcn([\n baseClassName,\n billingInformationsClassName,\n 'inputs',\n 'payment-mode',\n 'iban',\n ])}\n >\n <CustomInput\n onInputChange={this.handleIBANInput}\n text={Wording.iban}\n value={IBANValue}\n />\n <span>{Wording.otherFormat}</span>\n </div>\n <CustomSelect\n handleChangeSelect={\n this.handlePaymentModeSelection\n }\n options={paymentModeOptions}\n text={Wording.paymentMode}\n value={\n paymentModeOptions[0] ||\n paymentModeSelection\n }\n />\n </div> */}\n <AddressSelect\n initialCoords={initialCoords}\n initialAddress={initialAddress}\n onAddressInputChange={this.handleAddressInput}\n onCoordsChange={(addressCoords: Coords) => {\n this.setState({ addressCoords });\n }}\n onIdenticalAddressToggle={\n this.handleIdenticalAddressToggle\n }\n onPostalCodeSelection={\n this.handlePostalCodeSelection\n }\n text={Wording.identicalAddress}\n />\n <div\n className={bcn([\n baseClassName,\n billingInformationsClassName,\n 'inputs',\n 'custom-radio-bundle',\n ])}\n >\n <label>{Wording.jointAccount}</label>\n <CustomRadio\n text={Wording.yes}\n value={'true'}\n checked={isJointContract}\n handleCheck={() => {\n this.handleJointContractToggle(true);\n }}\n />\n <CustomRadio\n text={Wording.no}\n value={'false'}\n checked={!isJointContract}\n handleCheck={() => {\n this.handleJointContractToggle(false);\n }}\n />\n </div>\n {isJointContract && (\n <CoordsInputs\n onInputChange={this.handleCoordsInput}\n values={{\n civility: civilitySelection,\n firstName: firstNameValue,\n lastName: lastNameValue,\n }}\n />\n )}\n </div>\n </div>\n </section>\n );\n }\n}\n\nexport default SituationSection;\n","import React, { Fragment } from 'react';\nimport _ from 'lodash';\nimport 'react-day-picker/lib/style.css';\nimport { addDays } from 'date-fns';\nimport DayPickerInput from 'react-day-picker/DayPickerInput';\nimport { formatDate, parseDate } from 'react-day-picker/moment';\nimport { CustomSelect } from '../..';\nimport WordingConstant from '../../../utils/wording.json';\nimport {\n checkIsDisableSwitchSelect,\n getFormattedDate,\n prepareEffectiveStartDate,\n} from '../../../utils/helpers';\nimport config from '../../../utils/config';\nimport { switchingSupplierOptions } from '../../../containers/admin/AdminSubscriptionContainer/sections/SituationSection/SituationSection';\n\nconst Wording = WordingConstant.Components.DateContainer;\n\nconst modifiersStyles = {\n highlighted: {\n color: 'white',\n backgroundColor: '#ffb40a',\n },\n\n outside: { color: '#8954ba', backgroundColor: 'white' },\n};\n\nclass DateContainer extends React.Component {\n constructor(props) {\n super(props);\n const { dateContract } = props;\n this.state = {\n setting: {\n EL: {\n hideDiv: false,\n showSelect:\n dateContract.EL && dateContract.EL.timeslot !== '',\n },\n NG: {\n hideDiv: false,\n showSelect:\n dateContract.NG && dateContract.NG.timeslot !== '',\n },\n },\n isLockedSituationSelect: false,\n selectedDates: {\n EL: null,\n NG: null,\n },\n };\n }\n\n componentDidMount() {\n const { channel, handleDropdownContract } = this.props;\n\n if (checkIsDisableSwitchSelect({ channel })) {\n handleDropdownContract(switchingSupplierOptions[1]);\n this.setState({ isLockedSituationSelect: true });\n }\n }\n\n componentDidUpdate(prevProps) {\n const { dateContract } = this.props;\n const { setting } = this.state;\n const nextSetting = setting;\n if (prevProps !== this.props) {\n nextSetting.EL.showSelect =\n dateContract.EL && dateContract.EL.timeslot !== '';\n nextSetting.NG.showSelect =\n dateContract.NG && dateContract.NG.timeslot !== '';\n this.setState({ setting: nextSetting });\n }\n }\n renderInfosDiv = energy => {\n const { isSwitch } = this.props;\n return (\n <div\n className={`date-container__date__calendars__${energy}-calendar__infos`}\n >\n <div\n className={`date-container__date__info date-container__date__calendars__${energy}-calendar__infos__options`}\n >\n <div\n className={`date-container__date__info date-container__date__calendars__${energy}-calendar__infos__circle_1`}\n />\n <p>{Wording.contractDate.selectedDate}</p>\n </div>\n\n {!isSwitch && (\n <div\n className={`date-container__date__info date-container__date__calendars__${energy}-calendar__infos__options`}\n >\n <div\n className={`date-container__date__info date-container__date__calendars__${energy}-calendar__infos__circle_2`}\n />\n <p> {Wording.contractDate.dateExtraCoat} </p>\n </div>\n )}\n </div>\n );\n };\n\n handleChangeBool = (energy, type) => {\n const { setting } = this.state;\n const updatedSetting = {\n ...setting,\n [energy]: {\n ...setting[energy],\n hideDiv: type === 'open',\n },\n };\n this.setState({ setting: updatedSetting });\n };\n\n handleChangeBoolSelect = energy => {\n const { setting } = this.state;\n const updatedSetting = {\n ...setting,\n [energy]: {\n ...setting[energy],\n showSelect: true,\n },\n };\n this.setState({ setting: updatedSetting });\n };\n\n renderTextWithCalendar = energy => {\n const { dateContract, isSwitch } = this.props;\n const shouldDisplayCBWarning =\n !isSwitch &&\n !!_.get(dateContract, `${energy}.firstPaymentCB`, false) &&\n !_.get(dateContract, `${energy}.isCyclicalProduct`, true);\n return (\n <div className={'warnings'}>\n {shouldDisplayCBWarning && (\n <span className={'attention'}>\n <span className=\"attention__title\">Attention!</span>\n {Wording.contractDate.attention}\n </span>\n )}\n </div>\n );\n };\n\n renderTextSwitchByCalendar = (energy, classN) => {\n const { setting } = this.state;\n const { dropdownContractOptionSelection } = this.props;\n\n return (\n setting[energy].hideDiv && (\n <React.Fragment>\n <p className={`${classN} attention-switch`}>\n {dropdownContractOptionSelection !== null &&\n dropdownContractOptionSelection.value === 'LATER' &&\n `${\n Wording.contractDate.renderDescription\n } ${this.renderTheoreticalDate(energy)}`}\n </p>\n </React.Fragment>\n )\n );\n };\n\n renderTheoreticalDate = energy => {\n const {\n switchType,\n isCyclicalProductGas,\n isCyclicalProductElec,\n } = this.props;\n const { selectedDates } = this.state;\n\n const currentDate = selectedDates[energy] || new Date();\n\n const nextDate = prepareEffectiveStartDate(\n currentDate,\n energy,\n switchType,\n isCyclicalProductGas || isCyclicalProductElec,\n );\n\n return getFormattedDate(nextDate);\n };\n\n renderTheoreticalDate21Days = energy => {\n const { selectedDates } = this.state;\n\n const currentDate = selectedDates[energy] || new Date();\n\n const nextDate = addDays(currentDate, 14);\n return getFormattedDate(nextDate);\n };\n\n handleDatePicker = (selectedDate, energy) => {\n //const { dateContract } = this.props;\n\n const updatedSelectedDates = {\n ...this.state.selectedDates,\n [energy]: selectedDate,\n };\n\n /* const updatedDateContract = {\n ...dateContract,\n [energy]: {\n ...dateContract[energy],\n date: selectedDate,\n },\n };*/\n\n this.setState({\n selectedDates: updatedSelectedDates,\n });\n\n //this.updateDateContract(updatedDateContract);\n };\n\n renderCalendar = () => {\n const {\n energyTypes,\n handleDatePicker,\n handleDateCalendarOption,\n isSwitch,\n isCyclicalProductElec,\n isCyclicalProductGas,\n dropdownContractOptionSelection,\n channel,\n } = this.props;\n const { setting } = this.state;\n return (\n <div className=\"date-container__date\">\n {energyTypes &&\n energyTypes.map((energy, index) => {\n // let currentDate = !!_.get(\n // dateContract,\n // `${energy}.date`,\n // )\n // ? new Date(\n // dateContract[energy].year,\n // dateContract[energy].month,\n // dateContract[energy].date,\n // )\n // : undefined;\n if (\n config.ChannelsDoorToDoor.includes(channel) &&\n isSwitch\n ) {\n //currentDate = addDays(currentDate, 7)\n }\n const renderTitle =\n isCyclicalProductElec || isCyclicalProductGas\n ? Wording.contractDate.title\n : Wording.contractDate[\n dropdownContractOptionSelection !==\n null &&\n dropdownContractOptionSelection.value ===\n 'LATER'\n ? 'titleSwitch'\n : 'title'\n ];\n\n /*const isCyclicalBilling =\n energy === 'EL'\n ? isCyclicalProductElec\n : isCyclicalProductGas;*/\n\n return (\n <>\n <div\n key={index}\n className=\"date-container__date__calendars\"\n >\n <div\n className={`date-container__date__calendars__${energy}-calendar`}\n >\n <div\n className={`date-container__date__calendars__${energy}-calendar__title`}\n >\n <span>{renderTitle}</span>\n <span>\n {Wording.contractDate[energy]}\n </span>\n </div>\n\n {/* {isCyclicalBilling && isSwitch && (\n <div className=\"cyclical-billing\">\n <p>\n {\n Wording.contractDate\n .cyclicalBillingText\n }\n </p>\n </div>\n )}*/}\n\n {(isSwitch /*!isCyclicalBilling*/ ||\n !isSwitch) && (\n <React.Fragment>\n <div className=\"date_container_div\">\n {isSwitch &&\n energyTypes.length ===\n 2 &&\n energy === 'NG' &&\n this.renderTextSwitchByCalendar(\n energy,\n 'right',\n )}\n <DayPickerInput\n placeholder=\"JJ/MM/AAAA\"\n format=\"DD/MM/YYYY\"\n formatDate={formatDate}\n parseDate={parseDate}\n dayPickerProps={{\n className:\n 'selectable',\n selectedDays: handleDateCalendarOption(\n energy,\n 'selected',\n ),\n disabledDays: handleDateCalendarOption(\n energy,\n 'disabled',\n ),\n locale:\n Wording\n .contractDate\n .LOCAL,\n months:\n Wording\n .contractDate\n .MONTH[\n Wording\n .contractDate\n .LOCAL\n ],\n weekdaysShort:\n Wording\n .contractDate\n .WEEKDAYS_SHORT[\n Wording\n .contractDate\n .LOCAL\n ],\n weekdaysLong:\n Wording\n .contractDate\n .WEEKDAYS_LONG[\n Wording\n .contractDate\n .LOCAL\n ],\n firstDayOfWeek:\n Wording\n .contractDate\n .FIRST_DAY_OF_WEEK[\n Wording\n .contractDate\n .LOCAL\n ],\n modifiers: {\n highlighted:\n isSwitch &&\n config.ChannelsDoorToDoor.includes(\n channel,\n )\n ? addDays(\n -7,\n )\n : 0,\n weekend: {\n daysOfWeek: [\n 0,\n 6,\n ],\n },\n },\n modifiersStyles,\n month: new Date(\n new Date().getFullYear(),\n new Date().getMonth(),\n ),\n }}\n keepFocus\n inputProps={{\n readOnly: true,\n onFocus: () => {\n this.handleChangeBool(\n energy,\n 'open',\n );\n this.handleChangeBoolSelect(\n energy,\n );\n },\n }}\n onDayChange={d => {\n handleDatePicker(\n d,\n energy,\n );\n this.handleDatePicker(\n d,\n energy,\n );\n }}\n hideOnDayClick={false}\n onDayPickerShow={() => {\n this.handleChangeBool(\n energy,\n 'open',\n );\n }}\n onDayPickerHide={() =>\n this.handleChangeBool(\n energy,\n 'close',\n )\n }\n //value={currentDate}\n />\n\n {isSwitch &&\n this.renderTextSwitchByCalendar(\n energy,\n energyTypes.length ===\n 2 &&\n energy === 'NG'\n ? 'right-hidden'\n : 'right',\n )}\n\n {this.renderTextWithCalendar(\n energy,\n )}\n </div>\n {setting[energy].hideDiv &&\n this.renderInfosDiv(energy)}\n {setting[energy].showSelect &&\n !isSwitch &&\n this.renderSelectTimeslot(\n energy,\n )}\n </React.Fragment>\n )}\n </div>\n </div>\n {/* <div>\n {dropdownContractOptionSelection && dropdownContractOptionSelection.value === \"LATER\" &&\n (\n <div>\n <span>{Wording.contractDate.renderDescription}</span>\n <span>{this.renderTheoreticalDate21Days(energy)}</span>\n </div>\n )\n }\n </div>*/}\n </>\n );\n })}\n </div>\n );\n };\n\n renderSelectTimeslot = energy => {\n const { handleChangeTimeslotSelect, dateContract } = this.props;\n const ts = _.get(dateContract, `${energy}.timeslots`);\n if (!ts) {\n return null;\n } else if (ts.length === 0) {\n return (\n <p\n className={`date-container__date__calendars__${energy}-calendar__paragraph`}\n >\n {Wording.contractDate.noTimeslotLabel}\n </p>\n );\n }\n _.remove(ts, 'NONE');\n const timeslotOptions = Wording.contractDate.timeslots.values.filter(\n element => ts.find(val => val === element.value) !== undefined,\n );\n const value =\n Wording.contractDate.timeslots.values.find(\n e => e.value === dateContract[energy].timeslot,\n ) || null;\n const containerClassName = `date-container__date__calendars__${energy}-calendar__container___paragraph`;\n const paragraphClassName = `date-container__date__calendars__${energy}-calendar__paragraph`;\n let energyStr = '';\n if (energy === 'EL')\n energyStr = Wording.contractDate.timeslotSelectorElectricity;\n else if (energy === 'NG')\n energyStr = Wording.contractDate.timeslotSelectorGas;\n return (\n <div className={containerClassName}>\n <div className={paragraphClassName}>\n <span>{Wording.contractDate.timeslotSelectorTitle}</span>\n <div>\n <span>{`${Wording.contractDate.timeslotSelectorPrompt} :`}</span>\n <span>{energyStr}</span>\n </div>\n </div>\n <CustomSelect\n id=\"idCreceau\"\n options={timeslotOptions}\n value={value}\n placeholder={Wording.contractDate.placeholderSelector}\n handleChangeSelect={e => {\n handleChangeTimeslotSelect(e, energy);\n }}\n />\n </div>\n );\n };\n\n render() {\n const {\n dropdownContractOptions,\n dropdownContractOptionSelection,\n handleDropdownContract,\n situation,\n isCyclicalProductElec,\n isCyclicalProductGas,\n } = this.props;\n const { isLockedSituationSelect } = this.state;\n\n const Calender = (\n <Fragment>\n {this.renderCalendar()}\n {/* <div>\n {dropdownContractOptionSelection && dropdownContractOptionSelection.value === \"LATER\" &&\n (\n <div>\n <span>{Wording.contractDate.renderDescription}</span>\n <span>{this.renderTheoreticalDate(energy)}</span>\n </div>\n )\n }\n </div> */}\n <div className={'date-disclaimer'}>\n <span>{Wording.contractDate.displayText}</span>\n </div>\n </Fragment>\n );\n return (\n <div className=\"date-container\">\n {situation === Wording.situation.values.moved.value && Calender}\n {situation ===\n Wording.situation.values.changeSupplier.value && (\n <React.Fragment>\n <CustomSelect\n id=\"idChangeSupplierCustomSelect\"\n options={dropdownContractOptions}\n handleChangeSelect={handleDropdownContract}\n value={\n isCyclicalProductElec || isCyclicalProductGas\n ? undefined\n : dropdownContractOptionSelection\n }\n placeholder={\n isCyclicalProductElec || isCyclicalProductGas\n ? \"L'offre cyclique ne vous permet pas de choisir un mode de paiement\"\n : Wording.contractDate.placeholderSelector\n }\n disabled={\n isCyclicalProductGas ||\n isCyclicalProductElec ||\n isLockedSituationSelect\n }\n />\n\n {dropdownContractOptionSelection && Calender}\n </React.Fragment>\n )}\n </div>\n );\n }\n}\n\nexport default DateContainer;\n","import DateConatiner from './DateContainer';\n\nexport default DateConatiner;\n","import CustomDatePicker from './CustomDatePicker';\nexport default CustomDatePicker;\n","import React from 'react';\nimport DateContainer from './DateContainer';\nimport { Modifier } from 'react-day-picker';\nimport { EEffectiveStartRanges, ETimeslots } from '../../utils/network/types';\nimport { SelectOption } from 'Types';\n\ntype DateContractEnergy = {\n date: number;\n month: number;\n year: number;\n timeslot: ETimeslots[] | null;\n};\n\ntype DateContract = {\n EL?: DateContractEnergy | Date;\n NG?: DateContractEnergy | Date;\n};\n\ntype Energy = 'EL' | 'NG';\n\ntype Status = 'disabled' | 'selected';\n\n/* OVERVIEW\n dateContract:\n Selected dates + timeslots\n energyTypes:\n ['EL' and /or 'NG']\n Selected energy types\n handleChangeTimeslotSelect:\n Timeslot selection handler\n handleDateCalendarOption: (energy: Energy, status: Status) => Modifier;\n Callback used to determine which days should be enabled/disabled in the calendar\n handleDatePicker:\n Date selection callback for selected energy types\n handleDropdownContract: any;\n Selection handler (in case situtation === 'MOVE_IN')\n situation:\n 'MOVE_IN' or 'SWITCH'\n Used to switch between layout (select / calendar)\n*/\n\ninterface IProps {\n channel: string;\n dateContract: DateContract;\n dropdownContractOptions: Array<SelectOption<EEffectiveStartRanges>>;\n dropdownContractOptionSelection: SelectOption<EEffectiveStartRanges> | null;\n energyTypes: Energy[];\n handleChangeTimeslotSelect: (\n opt: SelectOption<any>,\n energy: Energy,\n ) => void;\n handleDateCalendarOption: (energy: Energy, status: Status) => Modifier[];\n handleDatePicker: (d: Date, energy: Energy) => void;\n handleDropdownContract: (\n startTime: SelectOption<EEffectiveStartRanges>,\n ) => void;\n situation: string;\n isCyclicalProductElec: boolean;\n isCyclicalProductGas: boolean;\n}\n\nconst CustomDatePicker: React.FC<IProps> = (props: IProps) => {\n const isSwitch = props.situation === 'SWITCH';\n const switchType = props.dropdownContractOptionSelection\n ? props.dropdownContractOptionSelection.value\n : undefined;\n\n const nextProps = { ...props, isSwitch, switchType };\n\n return <DateContainer {...nextProps} />;\n};\n\nexport default CustomDatePicker;\n","import React, { FC, useState } from 'react';\nimport { buildClassName as bcn } from '../../utils/helpers';\n\ninterface IProps {\n active: boolean;\n highlighted?: boolean;\n onToggle?: (nextToggleState: boolean) => void;\n text?: string;\n title?: string;\n titleHint?: string;\n wrapped?: boolean;\n}\n\nconst tileClassName = 'tile';\nconst activeTileClassName = `${tileClassName}-active`;\nconst highlightedTileClassName = `${tileClassName}-highlighted`;\nconst titleRowClassName = 'title-row';\nconst bodyClassName = 'body';\nconst textClassName = 'text';\nconst wrappedTextClassName = bcn([bodyClassName, `${textClassName}-wrapped`]);\nconst unwrappedTextClassName = bcn([\n bodyClassName,\n `${textClassName}-unwrapped`,\n]);\nconst wrapToggleClassName = bcn([bodyClassName, 'toggle']);\n\nconst Tile: FC<IProps> = (props: IProps) => {\n const { active, highlighted, onToggle, text, title, titleHint } = props;\n const [wrapped, setWrapped] = useState(true);\n let mainClassName = tileClassName;\n if (active) mainClassName = activeTileClassName;\n else if (!!highlighted) mainClassName = highlightedTileClassName;\n let textStatusClassName = wrappedTextClassName;\n if (!wrapped) textStatusClassName = unwrappedTextClassName;\n const wrapToggleStr = !!text ? (!!wrapped ? '+' : '-') : '';\n const cn = (...names: string[]) => {\n return bcn([mainClassName, ...names]);\n };\n const onClick = () => {\n if (!!onToggle) onToggle(!active);\n };\n const onWrap = (event: React.MouseEvent<HTMLDivElement, MouseEvent>) => {\n setWrapped(!wrapped);\n event.stopPropagation();\n };\n return (\n <div className={mainClassName} onClick={onClick}>\n <div className={cn(titleRowClassName)}>\n <span>{title || ''}</span>\n {!!titleHint && <span>{titleHint}</span>}\n </div>\n <div className={cn(bodyClassName)}>\n {!!text && (\n <div className={cn(textStatusClassName)}>\n <span>{text}</span>\n </div>\n )}\n <div className={cn(wrapToggleClassName)} onClick={onWrap}>\n {wrapToggleStr}\n </div>\n </div>\n </div>\n );\n};\n\nexport default Tile;\n","import Tile from './Tile';\nexport default Tile;\n","import CheckboxTile from './CheckboxTile';\nexport default CheckboxTile;\n","import React, { FC, ChangeEvent } from 'react';\nimport _ from 'lodash';\nimport { CustomCheckbox, Tile } from '..';\nimport { buildClassName as bcn } from '../../utils/helpers';\n\ninterface IProps {\n checked: boolean;\n distinctCheckbox?: boolean;\n onToggle: (checked: boolean) => void;\n text?: string;\n title?: string;\n titleHint?: string;\n}\n\nconst baseClassName = 'checkbox-tile';\n\nconst CheckboxTile: FC<IProps> = (props: IProps) => {\n const {\n checked,\n distinctCheckbox,\n onToggle,\n text,\n title,\n titleHint,\n } = props;\n const onCheck = (e: ChangeEvent<HTMLInputElement>) => {\n const toggled = !!_.get(e, 'target.value');\n onToggle(toggled);\n };\n return (\n <div className={baseClassName}>\n {!!distinctCheckbox && (\n <CustomCheckbox checked={checked} handleCheck={onCheck} />\n )}\n <Tile\n active={checked}\n onToggle={onToggle}\n text={text}\n title={title}\n titleHint={titleHint}\n />\n </div>\n );\n};\n\nexport default CheckboxTile;\n","function toIsc(str: string = '') {\n return str.replace(' ', String.fromCharCode(0x00a0));\n}\n\nfunction toColonHeading(str: string = '') {\n return toIsc(`${str} :`);\n}\n\nfunction removeSpaces(str: string = '') {\n return str.replace(/[ ]/g, '');\n}\n\nfunction removeWhitespaces(str: string = '') {\n return str.replace(/[\\s]/g, '');\n}\n\nexport { removeSpaces, removeWhitespaces, toColonHeading, toIsc };\n","import React, { ChangeEvent, FC, useEffect, useState } from 'react';\nimport _ from 'lodash';\nimport { CoordsInputs, CustomInput, CustomRadio, PostalCodeSelect } from '..';\nimport WordingConstant from '../../utils/wording.json';\nimport { TAddress, ECivilities } from '../../utils/network/types';\nimport { getAddressStreetLabel } from '../../utils/network/helpers';\nimport {\n buildClassName as bcn,\n formatAddressString,\n} from '../../utils/helpers';\nimport { toIsc } from '../../utils/text';\n\ntype Coords = {\n civility: ECivilities | null;\n firstName: string;\n lastName: string;\n};\n\ntype CoordsErrors = Partial<{\n civility: string;\n firstName: string;\n lastName: string;\n}>;\n\ninterface IProps {\n addressError?: string;\n initialAddress?: TAddress;\n initialCoords?: Coords;\n onAddressInputChange?: (address: string) => void;\n onCoordsChange?: (coords: Coords) => void;\n onIdenticalAddressToggle?: (isIdentical: boolean) => void;\n onPostalCodeSelection: (address: TAddress) => void;\n text: string;\n}\n\nconst Wording = WordingConstant.Components.AddressSelect;\nconst baseClassName = 'address-select';\nconst checkboxesClassName = bcn([baseClassName, 'checkboxes']);\nconst inputsClassName = bcn([baseClassName, 'inputs']);\nconst addressClassName = bcn([inputsClassName, 'address']);\n\nconst AddressSelect: FC<IProps> = (props: IProps) => {\n const {\n addressError,\n initialCoords,\n onAddressInputChange,\n onCoordsChange,\n onIdenticalAddressToggle,\n onPostalCodeSelection,\n text,\n } = props;\n const [initialAddress, setInitialAddress] = useState<TAddress | null>(null);\n const [address, setAddress] = useState<string>('');\n const [city, setCity] = useState<string | null>(null);\n const [isIdentical, setIdentical] = useState<boolean>(true);\n\n const [coords, setCoords] = useState<Coords | null>(null);\n\n const [coordsErrors, setCoordsErrors] = useState<CoordsErrors | null>(null);\n\n useEffect(() => {\n if (props.initialAddress) {\n setInitialAddress(props.initialAddress);\n setAddress(getAddressStreetLabel(props.initialAddress));\n\n if (props.initialAddress.townName) {\n setCity(props.initialAddress.townName);\n }\n }\n\n setIdentical(\n !(\n props.initialAddress !== undefined &&\n props.initialAddress !== null\n ),\n );\n\n if (!!onCoordsChange) {\n setCoords(\n initialCoords || {\n civility: ECivilities.MR,\n firstName: '',\n lastName: '',\n },\n );\n\n setCoordsErrors({});\n }\n }, []);\n\n const onAddressInput = (e: ChangeEvent<HTMLInputElement>) => {\n const nextInput = _.get(e, 'target.value', '');\n setAddress(formatAddressString(nextInput));\n if (!!onAddressInputChange) onAddressInputChange(nextInput);\n };\n const onToggle = (toggled: boolean) => {\n setIdentical(toggled);\n if (!toggled) setInitialAddress(null);\n if (!!onIdenticalAddressToggle) onIdenticalAddressToggle(toggled);\n setAddress('');\n setCity(null);\n };\n const onCoordsInput = (input: Coords) => {\n const nextErrors: CoordsErrors = {};\n const firstNameChanged: boolean =\n !coords || !_.isEqual(coords.firstName, input.firstName);\n const lastNameChanged: boolean =\n !coords || !_.isEqual(coords.lastName, input.lastName);\n if (firstNameChanged && input.firstName.length <= 1) {\n nextErrors.firstName =\n WordingConstant.AdminSubscriptionContainer.ClientData.errors.firstNameValidity;\n }\n if (lastNameChanged && input.lastName.length <= 1) {\n nextErrors.lastName =\n WordingConstant.AdminSubscriptionContainer.ClientData.errors.lastNameValidity;\n }\n setCoords(input);\n setCoordsErrors(nextErrors);\n if (!!onCoordsChange) onCoordsChange(input);\n };\n return (\n <div className={baseClassName}>\n <span>{toIsc(text)}</span>\n <div className={checkboxesClassName}>\n <CustomRadio\n checked={isIdentical}\n handleCheck={() => {\n onToggle(true);\n }}\n text={Wording.yes}\n value={Wording.yes}\n />\n <CustomRadio\n checked={!isIdentical}\n handleCheck={() => {\n onToggle(false);\n }}\n text={Wording.no}\n value={Wording.no}\n />\n </div>\n {!isIdentical && (\n <div className={inputsClassName}>\n {!!coords && (\n <CoordsInputs\n errors={coordsErrors || undefined}\n onInputChange={onCoordsInput}\n values={coords}\n />\n )}\n <div className={addressClassName}>\n <CustomInput\n error={addressError}\n onInputChange={onAddressInput}\n text={Wording.address}\n value={address}\n />\n <PostalCodeSelect\n initialAddress={\n !!initialAddress ? initialAddress : undefined\n }\n onSelection={(address: TAddress) => {\n setCity(address.townName || null);\n onPostalCodeSelection(address);\n }}\n text={Wording.postalCode}\n />\n <CustomInput\n disabled={true}\n text={Wording.city}\n value={city || ''}\n />\n </div>\n </div>\n )}\n </div>\n );\n};\n\nexport default AddressSelect;\n","import AddressSelect from './AddressSelect';\nexport default AddressSelect;\n","import React, { FC } from 'react';\nimport { buildClassName as bcn } from '../../utils/helpers';\n\ninterface IProps {\n text: string;\n title: string;\n}\n\nconst baseClassName: string = 'custom-error';\nconst titleClassName: string = bcn([baseClassName, 'title']);\nconst textClassName: string = bcn([baseClassName, 'text']);\n\nconst CustomError: FC<IProps> = (props: IProps) => {\n const { text, title } = props;\n return (\n <div className={baseClassName}>\n <span className={titleClassName}>{title}</span>\n <p className={textClassName}>{text}</p>\n </div>\n );\n};\n\nexport default CustomError;\n","import CustomError from './CustomError';\nexport default CustomError;\n","import React, { FC, Fragment, useEffect, CSSProperties } from 'react';\nimport { buildClassName as bcn } from '../../utils/helpers';\nimport WordingConstant from '../../utils/wording.json';\n\ninterface IProps {\n background?: boolean;\n centered?: boolean;\n children: JSX.Element[] | JSX.Element;\n handleClose?: () => void;\n id?: string;\n show?: boolean;\n showCloseButton?: boolean;\n}\n\nconst Wording = WordingConstant.Common;\nconst baseClassName = 'custom-overlay';\nconst hiddenClassName = bcn([baseClassName, 'hidden'], '--');\nconst centeredClassName = bcn([baseClassName, 'centered'], '--');\nconst windowClassName = bcn([baseClassName, 'window']);\nconst contentClassName = bcn([windowClassName, 'content']);\nconst backgroundClassName = bcn([baseClassName, 'background']);\nconst closeButtonClassName = bcn([contentClassName, 'close-button']);\n\nconst CustomOverlay: FC<IProps> = (props: IProps) => {\n const {\n centered,\n children,\n handleClose,\n id,\n show,\n showCloseButton,\n } = props;\n let { background } = props;\n if (background === undefined) background = true;\n useEffect(() => {\n if (!!show && !!id && !centered) {\n const el: HTMLElement | null = document.getElementById(id);\n if (!!el) {\n const elHeight: number = el.getBoundingClientRect().height;\n const winHeight: number = window.innerHeight;\n el.scrollIntoView({\n behavior: 'smooth',\n block: winHeight < elHeight ? 'start' : 'center',\n });\n }\n }\n }, [show]);\n let mainClassName = baseClassName;\n if (!show) mainClassName = hiddenClassName;\n else if (!!centered) mainClassName = centeredClassName;\n return (\n <div className={mainClassName}>\n {show && (\n <Fragment>\n {background && <div className={backgroundClassName} />}\n <div className={windowClassName}>\n <div className={contentClassName} id={id}>\n {showCloseButton && (\n <span\n className={closeButtonClassName}\n onClick={handleClose}\n role=\"button\"\n tabIndex={0}\n >\n {Wording.popup.closeButton}\n </span>\n )}\n {children}\n </div>\n </div>\n </Fragment>\n )}\n </div>\n );\n};\n\nexport default CustomOverlay;\n","import CustomOverlay from './CustomOverlay';\nexport default CustomOverlay;\n","import Separator from './Separator';\nexport default Separator;\n","import React from 'react';\n\nconst baseClassName = 'section-separator';\n\nconst Separator = () => (\n <div className={baseClassName}>\n <div />\n </div>\n);\n\nexport default Separator;\n","import CloseButton from './CloseButton';\nexport default CloseButton;\n","import React, { FC } from 'react';\n\ntype Props = {\n onClick: () => void;\n};\n\nconst baseClassName = 'close-button';\nconst greyZone = 'grey-area';\nconst closeText = 'X';\n\nconst CloseButton: FC<Props> = (props: Props) => {\n const { onClick } = props;\n return (\n <span className={baseClassName}>\n <div\n className={greyZone}\n onClick={() => {\n onClick();\n }}\n >\n {closeText}\n </div>\n </span>\n );\n};\n\nexport default CloseButton;\n","import React, { FC } from 'react';\nimport { buildClassName as bcn } from '../../utils/helpers';\n\ntype Props = {\n text?: string;\n textAlignment?: 'left' | 'right';\n toggled: boolean;\n};\n\nconst baseClassName: string = 'toggle-indicator';\nconst leftClassName: string = bcn([baseClassName, 'left'], '--');\nconst rightClassName: string = bcn([baseClassName, 'right'], '--');\nconst centeredClassName: string = bcn([baseClassName, 'centered', '--']);\n\nconst ToggleIndicator: FC<Props> = (props: Props) => {\n const { text, textAlignment, toggled } = props;\n const classNames: string[] = [baseClassName];\n const isLeft: boolean = !!textAlignment && textAlignment === 'left';\n if (!!text && !isLeft) classNames.push(rightClassName);\n else if (!!text && isLeft) classNames.push(leftClassName);\n else classNames.push(centeredClassName);\n return (\n <div className={classNames.join(' ')}>\n {!!text && isLeft && <span>{text}</span>}\n <div className={!!toggled ? 'on' : 'off'} />\n {!!text && !isLeft && <span>{text}</span>}\n </div>\n );\n};\n\nexport default ToggleIndicator;\n","import ToggleIndicator from './ToggleIndicator';\nexport default ToggleIndicator;\n","import React, { ChangeEvent, FC } from 'react';\nimport _ from 'lodash';\nimport { SelectOption } from 'Types';\nimport { CustomInput, CustomSelect } from '../../components';\nimport { ECivilities } from '../../utils/network/types';\nimport WordingConstant from '../../utils/wording.json';\n\ntype Errors = Partial<{\n civility: string;\n firstName: string;\n lastName: string;\n}>;\n\ntype Values = {\n civility: ECivilities | null;\n firstName: string;\n lastName: string;\n};\n\ntype Props = {\n errors?: Errors;\n onInputChange: (input: Values) => void;\n values: Values;\n};\n\nconst Wording = WordingConstant.AdminSubscriptionContainer.ClientData;\nconst baseClassName: string = 'coords-inputs';\nconst firstNameText: string = `${Wording.inputs.firstName}`;\nconst lastNameText: string = `${Wording.inputs.lastName}`;\nconst civilStatuses: Array<SelectOption<ECivilities>> = [\n {\n id: Wording.civilStatuses.mr,\n label: Wording.civilStatuses.mr,\n value: ECivilities.MR,\n },\n {\n id: Wording.civilStatuses.mme,\n label: Wording.civilStatuses.mme,\n value: ECivilities.MRS,\n },\n {\n id: Wording.civilStatuses.ms,\n label: Wording.civilStatuses.ms,\n value: ECivilities.MS,\n },\n];\n\nconst CoordsInputs: FC<Props> = (props: Props) => {\n const { errors, onInputChange, values } = props;\n const handleInputChange = (updates: Partial<Values>) => {\n const input: Values = _.merge({}, values, { ...updates });\n onInputChange(input);\n };\n const handleCivilitySelection = (civility: SelectOption<ECivilities>) => {\n handleInputChange({ civility: civility.value });\n };\n const handleFirstNameInput = (event: ChangeEvent<HTMLInputElement>) => {\n handleInputChange({ firstName: event.target.value });\n };\n const handleLastNameInput = (event: ChangeEvent<HTMLInputElement>) => {\n handleInputChange({ lastName: event.target.value });\n };\n const civilityValue =\n _.find(\n civilStatuses,\n (status: SelectOption<ECivilities>) =>\n status.value === values.civility,\n ) || civilStatuses[0];\n return (\n <div className={baseClassName}>\n <CustomSelect\n error={(!!errors && errors.civility) || undefined}\n handleChangeSelect={handleCivilitySelection}\n options={civilStatuses}\n text={Wording.civilStatus}\n value={civilityValue}\n />\n <CustomInput\n error={(!!errors && errors.firstName) || undefined}\n onInputChange={handleFirstNameInput}\n text={firstNameText}\n value={values.firstName}\n />\n <CustomInput\n error={(!!errors && errors.lastName) || undefined}\n onInputChange={handleLastNameInput}\n text={lastNameText}\n value={values.lastName}\n />\n </div>\n );\n};\n\nexport default CoordsInputs;\n","import CoordsInputs from './CoordsInputs';\nexport default CoordsInputs;\n","import React from 'react';\nimport resources from '../../utils/resources';\nimport { ECustomerType } from '../../utils/enums';\n\nimport WordingConstant from '../../utils/wording.json';\nconst Wording = WordingConstant.Components.TimelineStatus;\n\nexport type DisplayColor =\n | 'yellow'\n | 'green'\n | 'red'\n | 'orange'\n | 'grey'\n | 'red-pending';\n\nexport type SegmentsColors = Array<{\n [key: string]: DisplayColor | undefined;\n}>;\n\nexport type SegmentsLabels = {\n [key: string]: string[];\n};\n\nconst getColor = (status: string, isPro: boolean, segmentIndx: number) => {\n const defaultColor = 'grey';\n\n const typeProp = !isPro ? 'part' : 'pro';\n\n const colors = Wording[typeProp].colors as SegmentsColors;\n return !!colors[segmentIndx] && !!colors[segmentIndx][status]\n ? colors[segmentIndx][status]\n : defaultColor;\n};\n\nconst getLabels = (status: string, isPro: boolean) => {\n const typeProp = !isPro ? 'part' : 'pro';\n\n const labels = Wording[typeProp].labels as SegmentsLabels;\n return labels[status];\n};\n\nexport const getDataSegment = (status: string, isPro: boolean): any[] => {\n const prepare: any[] = [];\n const loopArr = !isPro ? [0, 1, 2] : [0, 1];\n\n const lastColor = getColor(status, isPro, loopArr[loopArr.length - 1]);\n\n if (lastColor === 'green' || lastColor === 'orange') {\n loopArr.forEach(idx => {\n if (idx === loopArr.length - 1) prepare[idx] = lastColor;\n else prepare[idx] = 'green';\n });\n } else {\n loopArr.forEach(idx => {\n prepare[idx] =\n getColor(status, isPro, idx + 1) === 'green'\n ? 'green'\n : (getColor(status, isPro, idx) as DisplayColor);\n });\n }\n\n prepare.push(getLabels(status, isPro));\n return prepare;\n};\n\nconst getImageByColor = (color: DisplayColor) => {\n switch (color) {\n case 'green':\n return resources['ic-timeline-status-ok'];\n\n case 'orange':\n return resources['ic-timeline-status-error'];\n\n case 'red':\n return resources['ic-timeline-status-abandonned'];\n\n case 'yellow':\n return resources['ic-timeline-status-waiting'];\n\n default:\n return null;\n }\n};\n\nconst SegmentIcon: React.FC<{ color: DisplayColor }> = ({ color }) => {\n const cur = getImageByColor(color);\n\n return cur ? <img src={cur} alt={color} /> : null;\n};\n\nexport const Segment: React.FC<{\n color: string | DisplayColor;\n borderRadius?: boolean;\n img?: string;\n radius?: 'start' | 'end';\n}> = ({ color, radius, borderRadius }) => (\n <div className={`segment ${radius ? `segment-radius-${radius}` : ''}`}>\n <div className=\"icon\">\n <SegmentIcon color={color as DisplayColor} />\n </div>\n <div\n className={`color color-${color} ${\n borderRadius ? 'color-border' : ''\n }`}\n >\n {radius && <div className={`radius-${radius} color-${color}`} />}\n </div>\n\n {color === 'green' && radius === 'end' && (\n <div className=\"success-icon\">\n <span />\n <img src={resources['ic-timeline-status-logo']} alt=\"logo\" />\n <p>{Wording.welcome}</p>\n </div>\n )}\n </div>\n);\n\nexport const Step: React.FC<{\n label: string;\n date?: string;\n isLast?: boolean;\n}> = ({ label, date, isLast }) => (\n <div className=\"step\">\n {date && (\n <p className={`step__date ${isLast ? 'step__date-last' : ''}`}>\n {date}\n </p>\n )}\n <p className=\"step__label\">{label}</p>\n <span />\n </div>\n);\n","import { TAdhoc, TContract, TEPInvoice } from 'Models';\nimport React, { useState } from 'react';\nimport {\n EBillingMode,\n ECustomerType,\n ETransactionStatus,\n} from '../../utils/enums';\nimport { getFormattedDate } from '../../utils/helpers';\n\nimport WordingConstant from '../../utils/wording.json';\nconst Wording = WordingConstant.Components.TimelineStatus;\n\nimport { Segment, Step, getDataSegment } from './Segment';\n\ninterface IProps {\n piece?: TEPInvoice;\n customerType: ECustomerType;\n contract: TContract;\n}\n\nconst TimelineStatus: React.FC<IProps> = ({\n contract,\n piece,\n customerType,\n}) => {\n const [openDetails, setOpen] = useState<'up' | 'down'>('down');\n\n const { billingMode, contractStatus } = contract;\n const { effectiveStartDate, subscriptionDate } = contract;\n\n const isPro = Boolean(\n customerType === ECustomerType.PROFESSIONAL &&\n billingMode &&\n billingMode === EBillingMode.CYCLICAL_BILLING,\n );\n\n const handleOpen = () => setOpen(openDetails === 'up' ? 'down' : 'up');\n\n const buildDates = (): Array<string | undefined> => {\n const activContract = (() => {\n /*const proce =\n piece &&\n piece.processusList &&\n piece.processusList.find(\n pr =>\n pr.nature === 'contractActivation' &&\n pr.status === 'terminated',\n );\n\n const tr =\n proce &&\n proce.transactions.find(\n tr => tr.status === ETransactionStatus.SUCCESS,\n );\n */\n // return tr && tr.dueDate;\n return piece && piece.invoicing_period_end_date;\n })();\n const prepapre = isPro\n ? [subscriptionDate, activContract, effectiveStartDate]\n : [subscriptionDate, activContract, undefined, effectiveStartDate];\n\n const prepare = prepapre.map(dt => (!!dt ? getFormattedDate(dt) : dt));\n\n if (!prepare[2]) {\n prepare[2] = 'Activation en cours';\n }\n return prepare;\n };\n\n const dates = buildDates();\n\n const renderIndividual = () => {\n const [first, second, third, labels] = getDataSegment(\n contractStatus,\n false,\n );\n\n const isNextFull = {\n check: second === 'grey' || second === 'red-pending',\n color: second,\n };\n\n const secondLabel =\n first === 'orange' ? 'Erreur 1er paiement' : '1er paiement reçu';\n\n return {\n component: (\n <>\n <Step label=\"Souscription\" date={dates[0]} />\n <Segment radius=\"start\" color={first} />\n <Step label={secondLabel} date={dates[1]} />\n\n {isNextFull.check ? (\n <>\n <Segment color={isNextFull.color} />\n <Segment borderRadius color={isNextFull.color} />\n </>\n ) : (\n <>\n <Segment color={second} />\n <Step label=\"Activation du contrat\" date={''} />\n <Segment radius=\"end\" color={third} />\n <Step\n isLast\n date={dates[3]}\n label=\"Contrat activé\"\n />\n </>\n )}\n </>\n ),\n labels,\n };\n };\n\n const renderProfessional = () => {\n const [first, second, labels] = getDataSegment(contractStatus, true);\n\n const isNextFull = {\n check: second === 'grey' || second === 'red-pending',\n color: second,\n };\n return {\n component: (\n <>\n <Step label=\"Souscription\" date={dates[0]} />\n <Segment radius=\"start\" color={first} />\n <Step label=\"Activation du contrat\" date={dates[1]} />\n {isNextFull.check ? (\n <Segment\n borderRadius={isNextFull.check}\n color={isNextFull.color}\n />\n ) : (\n <>\n <Segment radius=\"end\" color={second} />\n <Step\n isLast\n date={dates[2]}\n label=\"Contrat activé\"\n />\n </>\n )}\n </>\n ),\n labels,\n };\n };\n\n const renderByType = () =>\n !isPro ? renderIndividual() : renderProfessional();\n\n const { component, labels } = renderByType();\n\n return (\n <section className=\"timeline-status\">\n <div className={`timeline ${isPro ? 'timeline-small' : ''}`}>\n {component}\n </div>\n <div className=\"timeline-status__details\">\n <h4 onClick={handleOpen}>\n {Wording.details.title}{' '}\n <i className={`arrow ${openDetails}`}></i>\n </h4>\n\n {openDetails === 'up' && (\n <div>\n <ul className=\"ul-dates\">\n {labels.map((lb: string, idx: number) => {\n const index = labels.length - 1 - idx;\n const item = dates[index];\n\n return (\n <li\n className={`${\n idx === 0 ? 'first' : ''\n }`}\n key={idx}\n >\n {item ? item : '-'}\n </li>\n );\n })}\n </ul>\n <ul className=\"ul-labels\">\n {labels.map((lb: string, idx: number) => (\n <li\n key={idx}\n className={`${idx === 0 ? 'first' : ''}`}\n >\n {lb}\n </li>\n ))}\n </ul>\n </div>\n )}\n </div>\n </section>\n );\n};\n\nexport default TimelineStatus;\n","import TimelineStatus from './TimelineStatus';\n\nexport default TimelineStatus;\n","import React, { FormEvent, useState } from 'react';\n\nimport {\n CardCvcElement,\n CardExpiryElement,\n CardNumberElement,\n useElements,\n useStripe,\n} from '@stripe/react-stripe-js';\n\nimport resources from '../../utils/resources';\nimport WordingConstant from '../../utils/wording.json';\nimport config from '../../utils/config';\nimport { log } from '../../utils/helpers';\nimport { CopyToClipboard } from 'react-copy-to-clipboard';\nimport { LoadingSpinner } from '../../libraries/withLoader';\n\nconst wording = WordingConstant.PaymentCBModal;\n\ntype StripeFormProps = {\n clientSecret: string;\n amount: string;\n clientName: string;\n onFormValidate: (sucess: boolean, errMsg?: string) => void;\n handleClose: () => void;\n};\n\nconst StripeForm = ({\n clientSecret,\n amount,\n onFormValidate,\n clientName,\n handleClose,\n}: StripeFormProps) => {\n const [isLoading, setIsLoading] = useState(false);\n const elements = useElements();\n const stripe = useStripe();\n\n const onValidateForm = async (e: FormEvent) => {\n e.preventDefault();\n\n if (!stripe || !elements) {\n if (onFormValidate) {\n onFormValidate(false, wording.stripeElementError);\n }\n return;\n }\n const element = elements.getElement(CardNumberElement);\n if (!element) {\n if (onFormValidate) {\n onFormValidate(false, wording.elementError);\n }\n return;\n }\n\n setIsLoading(true);\n const result = await stripe.confirmCardPayment(clientSecret, {\n payment_method: {\n card: element,\n billing_details: {\n name: clientName,\n },\n },\n });\n setIsLoading(false);\n log('STRIPE ANSWER ===>', result);\n\n if (result.error) {\n if (onFormValidate) onFormValidate(false, result.error.message);\n } else if (onFormValidate) onFormValidate(true);\n };\n\n const renderFakeCard = (cardNumber: string, title: string) => {\n const [isClicked, setisClicked] = useState(false);\n\n const handleClickCard = () => {\n setisClicked(true);\n setTimeout(() => setisClicked(false), 1600);\n };\n\n return (\n <div>\n {title}:\n <CopyToClipboard text={cardNumber} onCopy={handleClickCard}>\n <button type=\"button\">\n {cardNumber}\n <div className=\"clicked-fake-card-label\">\n {isClicked && <span>Copié</span>}\n <img\n alt=\"clipboard\"\n src={resources['ic-copy-clipboard']}\n />\n </div>\n </button>\n </CopyToClipboard>\n </div>\n );\n };\n\n const isDebugMode = config.ENV === 'PREPRODUCTION';\n\n return (\n <div className=\"stripe-form-container\">\n <form className=\"form-content\" onSubmit={onValidateForm}>\n <div className=\"logo-container\">\n <img\n src={resources['ic-logo-login']}\n alt=\"ic-logo-wekiwi\"\n width={250}\n />\n </div>\n\n <div className=\"stripe-card-container\">\n <div>\n <span> {wording.label_card_number} </span>\n <CardNumberElement className=\"stripe-card-number-field\" />\n </div>\n\n <div>\n <span> {wording.label_card_expiry} </span>\n <CardExpiryElement className=\"stripe-card-expiry-field\" />\n </div>\n\n <div>\n <span> {wording.label_card_cvc} </span>\n <CardCvcElement className=\"stripe-card-cvc-field\" />\n </div>\n </div>\n\n {isDebugMode && (\n <div className=\"stripe-card-debug\">\n <span>{wording.debugLabel}</span>\n {renderFakeCard(\n '4242424242424242',\n 'Paiement direct avec réussite',\n )}\n {renderFakeCard(\n '4000000000003220',\n 'Paiement 3DSecure avec réussite',\n )}\n {renderFakeCard(\n '4000008400001280',\n 'Paiement 3DSecure avec erreur ',\n )}\n </div>\n )}\n\n <div className=\"button-container\">\n <button\n onClick={handleClose}\n type=\"button\"\n className=\"button-cancel\"\n >\n {wording.button_cancel}\n </button>\n <button type=\"submit\" className=\"button-validate\">\n {wording.button_validate}: {amount}€\n </button>\n </div>\n\n {isLoading && (\n <div className=\"loader\">\n <LoadingSpinner />\n </div>\n )}\n </form>\n </div>\n );\n};\n\nexport default StripeForm;\n","import StripeForm from './StripeForm';\n\nexport default StripeForm;\n","import Group from './Group';\n\nexport default Group;\n","import React from 'react';\nimport filter from 'lodash/filter';\n\nimport CustomSelect from '../../CustomSelect';\nimport { IProps } from '../../CustomSelect/CustomSelect';\nimport { TSchemaProps, SelectOption } from 'Types';\n\nimport {\n isFullAuthorization,\n isLimitedAuthorization,\n isMixedAuthorization,\n getInitialGroup,\n addSelectAllToSelect,\n} from '../../../utils/helpers';\nimport { isArray } from 'lodash';\n\nexport interface IGroupProps extends IProps {\n withSelectAll?: boolean;\n schemaProps: TSchemaProps;\n}\n\nexport type GroupOptions = Array<SelectOption<string>>;\n\nconst Group: React.FC<IGroupProps> = ({ options, schemaProps, ...props }) => {\n let newOption: GroupOptions = [];\n const propsSelect = { ...props, placeholder: ' ' };\n\n if (isFullAuthorization(schemaProps)) {\n newOption = options as GroupOptions;\n }\n\n if (isLimitedAuthorization(schemaProps)) {\n propsSelect.disabled = true;\n propsSelect.isMulti = false;\n }\n\n if (isMixedAuthorization(schemaProps)) {\n newOption = filter(\n options,\n ({ value }: SelectOption<string>) =>\n getInitialGroup(value) ===\n getInitialGroup(schemaProps.currentGroup),\n ) as GroupOptions;\n }\n\n if (propsSelect.withSelectAll) {\n newOption = addSelectAllToSelect(newOption);\n }\n\n return (\n <CustomSelect\n options={newOption}\n {...propsSelect}\n handleChangeSelect={(values: any) => {\n if (\n isArray(values) &&\n values[0] &&\n values[0].value === 'select-all'\n ) {\n propsSelect.handleChangeSelect(newOption);\n return;\n }\n propsSelect.handleChangeSelect(values);\n }}\n value={\n propsSelect.value &&\n propsSelect.value.length === newOption.length\n ? newOption[0]\n : propsSelect.value\n }\n />\n );\n};\n\nexport default Group;\n","import React from 'react';\nimport { EActionMode, EGroups } from '../../../utils/enums';\nimport { CustomRadio, CustomCheckbox, CustomToggle } from '../..';\n\nimport WordingConstant from '../../../utils/wording.json';\nimport { IAccessItem, IItem, ISubMenuItem } from './AuthorizationSchemaGroup';\n\nconst Wording = WordingConstant.AuthorizationSchemaGroup;\n\nexport interface IAuthSchemaItemProps {\n item: IItem;\n handleSetSubMenu: any;\n handleSetActionMod: any;\n handleSetCheckbox: any;\n handleSetAccess: (props: IAccessItem) => void;\n itemValues: {\n isChecked: boolean;\n mode: string;\n subMenus: any;\n accessItem: any;\n };\n}\n\nconst AuthSchemaItem: React.FC<IAuthSchemaItemProps> = ({\n item,\n handleSetCheckbox,\n handleSetActionMod,\n handleSetSubMenu,\n handleSetAccess,\n itemValues: { isChecked, mode, subMenus, accessItem },\n}) => {\n const renderReadOnlyType = () => (\n <div className=\"authorization-schema-item__read-only\">\n {Wording.accessItems.map(({ value, label }) => {\n const readOnlyItems = (Wording.subMenuItems as {\n [key: string]: ISubMenuItem[];\n })[item.uId].filter((elm: any) => elm.readeOnly);\n\n const current = readOnlyItems[0];\n\n const isChecked =\n accessItem[current.uId][value] === EGroups.FULL;\n\n return (\n <CustomCheckbox\n key={value}\n text={label}\n handleCheck={() => {\n handleSetAccess({\n uIdItem: item.uId,\n uIdMenu: current.uId,\n type: value,\n value: isChecked\n ? EGroups.LIMITED\n : EGroups.FULL,\n });\n }}\n checked={isChecked}\n />\n );\n })}\n </div>\n );\n\n const renderByUIdOfItem = () => {\n return (\n <div className=\"authorization-schema-item__sub-menu-items\">\n {(Wording.subMenuItems as { [key: string]: ISubMenuItem[] })[\n item.uId\n ].map((subMenuItem, idx) => (\n <div\n key={idx}\n className=\"authorization-schema-item__sub-menu-items__item-menu\"\n >\n <CustomToggle\n checked={\n subMenus[subMenuItem.uId]\n ? subMenus[subMenuItem.uId] !== undefined\n : false\n }\n text={subMenuItem.label}\n handleClick={() => {\n handleSetSubMenu({\n uIdItem: item.uId,\n subMenuItem,\n });\n }}\n handleCheck={() => {}}\n value={subMenuItem.uId}\n />\n\n <div>\n {Wording.accessItems.map(\n ({ value, label, access }) => {\n const isChecked =\n accessItem[subMenuItem.uId][value] ===\n EGroups.FULL;\n\n const condition = access\n ? access.includes(subMenuItem.uId)\n : true;\n\n if (condition) {\n return (\n <CustomCheckbox\n key={value}\n text={label}\n handleCheck={() => {\n handleSetAccess({\n uIdItem: item.uId,\n uIdMenu:\n subMenuItem.uId,\n type: value,\n value: isChecked\n ? EGroups.LIMITED\n : EGroups.FULL,\n });\n }}\n checked={isChecked}\n />\n );\n }\n\n return null;\n },\n )}\n </div>\n </div>\n ))}\n </div>\n );\n };\n\n const renderByActionType = () => {\n switch (mode) {\n case EActionMode.FULL:\n return renderByUIdOfItem();\n\n case EActionMode.READ_ONLY:\n return renderReadOnlyType();\n\n default:\n break;\n }\n };\n\n return (\n <div className=\"authorization-schema-item\">\n <CustomCheckbox\n text={item.label}\n handleCheck={() => handleSetCheckbox(item)}\n checked={isChecked}\n />\n\n {isChecked && (\n <div className=\"authorization-schema-item__modes\">\n {Wording.actionModes.map((aMod, idx) => (\n <CustomRadio\n key={idx}\n text={aMod.label}\n handleCheck={() =>\n handleSetActionMod({\n uId: item.uId,\n value: aMod.value,\n })\n }\n checked={mode === aMod.value}\n value={aMod.value || EActionMode.FULL}\n />\n ))}\n </div>\n )}\n\n {isChecked && renderByActionType()}\n </div>\n );\n};\n\nexport default AuthSchemaItem;\n","import React, { useState, useEffect } from 'react';\nimport keys from 'lodash/keys';\nimport WordingConstant from '../../../utils/wording.json';\nimport CustomCheckbox from '../../CustomCheckbox';\n\nimport { EActionMode, EGroups } from '../../../utils/enums';\nimport AuthSchemaItem from './AuthSchemaItem';\nimport { TAuthorizationSchemaSubMenu } from '../../../_actions/createGroup.actions';\n\nconst Wording = WordingConstant.AuthorizationSchemaGroup;\n\nconst sortingAlg = (a: any, b: any) => (a.rang > b.rang ? 1 : -1);\n\ninterface IAuthSchemaMenuObject {\n id: string;\n label: string;\n root: string;\n groupMode: string;\n subGroupMode: string;\n actionMode: string;\n userLimited?: string;\n rang?: number;\n}\n\nexport interface IAuthSchemaObject {\n rang?: number;\n id: string;\n label: string;\n subMenu: IAuthSchemaMenuObject[];\n}\n\nexport interface IItem {\n label: string;\n uId: string;\n rang: number;\n}\n\ninterface IActionModesChange {\n uId: string;\n value: string;\n}\n\ninterface ISubMenusChange {\n uIdItem: string;\n subMenuItem: ISubMenuItem;\n}\n\nexport interface IAccessItem {\n uIdItem: string;\n uIdMenu: string;\n type: string;\n value: string;\n}\n\nexport interface ISubMenuItem extends IItem {\n root: string;\n}\n\nexport interface IAuthorizationSchemaGroupProps {\n getAuthorizationSchema: React.Dispatch<any>;\n}\n\ninterface IItemStateObject {\n rang: number;\n label: string;\n}\n\ninterface IItemState {\n [key: string]: IItemStateObject[];\n}\n\ninterface IActionModeState {\n [key: string]: string;\n}\n\ninterface ISubMenuState {\n [key: string]: { [key: string]: ISubMenuItem };\n}\n\ninterface IAccessStateObject {\n groupMode: string;\n subGroupMode: string;\n userLimited?: string;\n}\n\ninterface IAccessState {\n [key: string]: { [key: string]: IAccessStateObject };\n}\n\nconst AuthorizationSchemaGroup: React.FC<IAuthorizationSchemaGroupProps> = ({\n getAuthorizationSchema,\n}) => {\n const [isSelectedAll, setSelectAll] = useState<boolean>(false);\n\n const [itemsState, setItemValue] = useState<IItemState>({});\n const [actionsModesState, setModesValue] = useState<IActionModeState>({});\n const [subMenuState, setSubMenuValue] = useState<ISubMenuState>({});\n const [accessState, setAccessState] = useState<IAccessState>({});\n\n useEffect(() => {\n const actModes: IActionModeState = {};\n const subMn: ISubMenuState = {};\n const access: IAccessState = {};\n\n Wording.renderItems.forEach(({ uId }) => {\n actModes[uId] = EActionMode.FULL;\n subMn[uId] = {};\n access[uId] = {};\n\n (Wording.subMenuItems as { [key: string]: ISubMenuItem[] })[\n uId\n ].forEach(elm => {\n const prepareAccess: any = {};\n\n Wording.accessItems.forEach(ai => {\n if (ai.access) {\n if (ai.access.includes(elm.uId)) {\n prepareAccess[ai.value] = EGroups.LIMITED;\n }\n } else {\n prepareAccess[ai.value] = EGroups.LIMITED;\n }\n });\n\n access[uId][elm.uId] = prepareAccess;\n });\n });\n\n setModesValue(actModes);\n setSubMenuValue(subMn);\n setAccessState(access);\n }, []);\n\n useEffect(() => {\n if (keys(itemsState).length !== 0) {\n const build = buildAuthorizationSchema();\n getAuthorizationSchema(build);\n }\n }, [itemsState, subMenuState, accessState, actionsModesState]);\n\n const buildAuthorizationSchema = () => {\n const prepareArr: any = [];\n keys(itemsState).forEach(itemKey => {\n const ItemElm: any = itemsState[itemKey];\n const prepareObject: IAuthSchemaObject = {\n rang: ItemElm.rang,\n id: '',\n label: ItemElm.label,\n subMenu: [],\n };\n\n keys(subMenuState[itemKey]).forEach(menuKey => {\n const MenuItem = subMenuState[itemKey][menuKey];\n const AccessItem = accessState[itemKey][menuKey];\n const ActionItem = actionsModesState[itemKey];\n\n const prepareMenuObject: IAuthSchemaMenuObject = {\n rang: MenuItem.rang,\n id: '',\n label: MenuItem.label,\n root: MenuItem.root,\n groupMode: AccessItem.groupMode,\n subGroupMode: AccessItem.subGroupMode,\n actionMode: ActionItem,\n };\n\n if (AccessItem.userLimited) {\n prepareMenuObject.userLimited = AccessItem.userLimited;\n }\n\n prepareObject.subMenu.push(prepareMenuObject);\n });\n\n prepareArr.push({\n ...prepareObject,\n subMenu: prepareObject.subMenu\n .sort(sortingAlg)\n .map((elm, idx) => {\n const prepare: TAuthorizationSchemaSubMenu = {\n id: (idx + 1).toString(),\n label: elm.label,\n root: elm.root,\n groupMode: elm.groupMode,\n subGroupMode: elm.subGroupMode,\n actionMode: elm.actionMode,\n };\n\n if (elm.userLimited) {\n prepare.userLimited = elm.userLimited;\n }\n\n return prepare;\n }),\n });\n });\n\n return prepareArr.sort(sortingAlg).map((elm: any, idx: number) => ({\n id: idx + 1,\n label: elm.label,\n subMenu: elm.subMenu,\n }));\n };\n\n const handleSetItemValue = ({ uId, label, rang }: IItem) => {\n if (itemsState[uId]) {\n const newValues: any = {};\n keys(itemsState).forEach((key: string) => {\n if (key !== uId) {\n newValues[key] = {\n ...itemsState[key],\n };\n }\n });\n setItemValue(newValues);\n } else {\n setItemValue({\n ...itemsState,\n\n [uId]: {\n rang,\n label,\n },\n } as IItemState);\n }\n };\n\n const handleSetActionMod = ({ uId, value }: IActionModesChange) => {\n setModesValue({\n ...actionsModesState,\n [uId]: value,\n });\n\n if (value === EActionMode.READ_ONLY) {\n const newMenus: any = {};\n\n const readOnlyItems = (Wording.subMenuItems as {\n [key: string]: ISubMenuItem[];\n })[uId].filter((elm: any) => elm.readeOnly);\n\n if (readOnlyItems) {\n readOnlyItems.forEach(elm => {\n newMenus[elm.uId] = {\n root: elm.root,\n label: elm.label,\n rang: elm.rang,\n };\n });\n }\n\n setSubMenuValue({\n ...subMenuState,\n [uId]: newMenus,\n });\n }\n\n if (\n value === EActionMode.FULL &&\n keys(subMenuState[uId]).length !== 0\n ) {\n setSubMenuValue({\n ...subMenuState,\n [uId]: {},\n });\n }\n };\n\n const handleSetSubMenu = ({ subMenuItem, uIdItem }: ISubMenusChange) => {\n const { label, root, uId, rang } = subMenuItem;\n\n const currentMenusByItem = subMenuState[uIdItem];\n\n if (currentMenusByItem[uId]) {\n const newMenuValues: any = {};\n\n keys(currentMenusByItem).forEach((key: string) => {\n if (key !== uId) {\n newMenuValues[key] = {\n ...currentMenusByItem[key],\n };\n }\n });\n\n setSubMenuValue({\n ...subMenuState,\n [uIdItem]: newMenuValues,\n });\n } else {\n setSubMenuValue({\n ...subMenuState,\n [uIdItem]: {\n ...currentMenusByItem,\n [uId]: {\n label,\n root,\n rang,\n uId,\n },\n },\n });\n }\n };\n\n const handleSetAccess = ({\n uIdItem,\n value,\n type,\n uIdMenu,\n }: IAccessItem) => {\n const objBuild = {\n ...accessState[uIdItem][uIdMenu],\n [type]: value,\n };\n\n if (type === 'groupMode' && value === 'FULL') {\n objBuild.subGroupMode = 'FULL';\n }\n\n if (\n !(\n type === 'subGroupMode' &&\n accessState[uIdItem][uIdMenu].groupMode === 'FULL'\n )\n ) {\n setAccessState({\n ...accessState,\n [uIdItem]: {\n ...accessState[uIdItem],\n [uIdMenu]: {\n ...objBuild,\n },\n },\n });\n }\n };\n\n const selectAllItems = () => {\n setSelectAll(!isSelectedAll);\n\n if (!isSelectedAll) {\n const actModes: any = {};\n const subMn: any = {};\n const access: any = {};\n const mods: any = {};\n\n Wording.renderItems.forEach(({ uId, label, rang }) => {\n actModes[uId] = EActionMode.FULL;\n subMn[uId] = {};\n access[uId] = {};\n\n mods[uId] = {\n rang,\n label,\n };\n\n (Wording.subMenuItems as { [key: string]: ISubMenuItem[] })[\n uId\n ].forEach(elm => {\n const prepareAccess: any = {};\n\n Wording.accessItems.forEach(ai => {\n if (ai.access) {\n if (ai.access.includes(elm.uId)) {\n prepareAccess[ai.value] = EGroups.FULL;\n }\n } else {\n prepareAccess[ai.value] = EGroups.FULL;\n }\n });\n\n access[uId][elm.uId] = prepareAccess;\n subMn[uId][elm.uId] = {\n label: elm.label,\n root: elm.root,\n rang: elm.rang,\n };\n });\n });\n\n setItemValue(mods);\n setModesValue(actModes);\n setSubMenuValue(subMn);\n setAccessState(access);\n }\n };\n\n return (\n <div className=\"authorization-schema-group\">\n <div className=\"authorization-schema-group__select-all\">\n <CustomCheckbox\n checked={isSelectedAll}\n handleCheck={selectAllItems}\n text={Wording.selectAll}\n />\n </div>\n\n <div className=\"authorization-schema-group__items-auth\">\n {Wording.renderItems.map((obj: IItem) => {\n const { uId } = obj;\n return (\n <AuthSchemaItem\n key={uId}\n item={obj}\n handleSetCheckbox={handleSetItemValue}\n handleSetAccess={handleSetAccess}\n handleSetActionMod={handleSetActionMod}\n handleSetSubMenu={handleSetSubMenu}\n itemValues={{\n isChecked: itemsState[uId] !== undefined,\n mode: actionsModesState[uId],\n subMenus: subMenuState[uId],\n accessItem: accessState[uId],\n }}\n />\n );\n })}\n </div>\n </div>\n );\n};\n\nexport default AuthorizationSchemaGroup;\n","import AuthorizationSchemaGroup from './AuthorizationSchemaGroup';\n\nexport default AuthorizationSchemaGroup;\n","import React from 'react';\nimport Lottie from 'react-lottie';\n\nimport { CustomModal, Modal } from '../components';\nimport animationData from '../assets/loader.json';\nimport WordingConstant from '../utils/wording.json';\n\nconst CommonWording = WordingConstant.Common;\n\nexport const LoadingSpinner: React.FC<{}> = ({}) => {\n const defaultOptions = {\n loop: true,\n autoplay: true,\n animationData,\n };\n return (\n <div className=\"loader\">\n <Lottie\n options={defaultOptions}\n height={180}\n width={180}\n isStopped={false}\n />\n </div>\n );\n};\n\nexport const LoaderModal: React.FC<{}> = ({}) => {\n return (\n <div className=\"loader-modal\">\n <CustomModal show>\n <LoadingSpinner />\n </CustomModal>\n </div>\n );\n};\n\nexport type ExternalProps = {\n loading: boolean;\n unauthorized: boolean;\n handleCloseModal(): void;\n};\n\ntype Options = {\n debug?: boolean;\n};\n\nconst withLoader = ({ debug = false }: Options = {}) => <OwnProps extends {}>(\n WrappedComponent: React.ComponentType<OwnProps>,\n) => {\n type HocProps = OwnProps & ExternalProps;\n\n const component: React.FC<HocProps> = ({\n loading,\n unauthorized,\n handleCloseModal,\n ...props\n }) => {\n return (\n <div className=\"loader-page\">\n {loading && <LoaderModal />}\n\n <Modal\n show={unauthorized}\n title={CommonWording.expiredSession.title}\n description={CommonWording.expiredSession.description}\n state={1}\n handleCancel={handleCloseModal}\n />\n\n <WrappedComponent {...props as OwnProps} />\n </div>\n );\n };\n return component;\n};\n\nexport default withLoader;\n","import React from 'react';\n\ntype InputSetting = {\n isLocked?: boolean;\n text?: string;\n value?: any;\n type?: string;\n error?: string;\n genericError?: string;\n onInputChange?: (e: React.ChangeEvent<HTMLInputElement>) => any;\n onToggleModal?: any;\n minLength?: number;\n maxLength?: number;\n isInterrogationVisible?: boolean;\n defaultValue?: any;\n placeholder?: string;\n disabled?: boolean;\n onBlur?: any;\n onKeyPress?: any;\n deleteButton?: boolean;\n isPassword?: boolean;\n deleteButtonOnClick?: () => void;\n};\n\nconst CustomInputNewGen: React.FC<InputSetting> = setting => (\n <div className=\"custom-input-new-gen\">\n {setting.text && (\n <label htmlFor={`id${setting.text}`}>\n {setting.text}\n {setting.isInterrogationVisible && (\n <span\n className=\"custom-input-new-gen__layer\"\n onClick={setting.onToggleModal}\n onKeyDown={setting.onToggleModal}\n role=\"button\"\n tabIndex={0}\n >\n ?\n </span>\n )}\n </label>\n )}\n\n {setting.deleteButton && setting.value !== '' && (\n <span\n className=\"custom-input-new-gen__delete\"\n onClick={setting.deleteButtonOnClick}\n role=\"button\"\n tabIndex={0}\n >\n <span role=\"button\" tabIndex={0}>\n X\n </span>\n </span>\n )}\n <input\n className={`custom-input-new-gen__input${\n setting.isLocked ? ' custom-input-new-gen__input--locked' : ''\n }${\n setting.genericError || setting.error\n ? ' custom-input-new-gen__input--error'\n : ''\n }`}\n onChange={setting.onInputChange}\n type={setting.type}\n value={setting.value}\n minLength={setting.minLength}\n maxLength={setting.maxLength}\n defaultValue={setting.defaultValue}\n placeholder={setting.placeholder}\n disabled={setting.disabled}\n onBlur={setting.onBlur}\n onKeyPress={setting.onKeyPress}\n />\n {setting.error && setting.error !== '' && (\n <p className=\"custom-input-new-gen__error\">{setting.error}</p>\n )}\n </div>\n);\nexport default CustomInputNewGen;\n","import React from 'react';\n\ntype Props = {\n title?: string;\n color?: string;\n disabled?: boolean;\n onClick?: any;\n arrowLeft?: boolean;\n arrowRight?: boolean;\n isLoading?: boolean;\n heavy?: boolean;\n};\n\nconst CustomButtonNewGen: React.FC<Props> = ({\n title,\n color,\n disabled,\n onClick,\n arrowLeft,\n arrowRight,\n isLoading,\n heavy,\n}) => {\n const classNames: string[] = [\n 'custom-button-new-gen',\n `custom-button-new-gen--${color}`,\n ];\n if (!!disabled) classNames.push('custom-button-new-gen__disabled');\n if (isLoading) classNames.push('custom-button-new-gen__loading');\n if (!!heavy) classNames.push('custom-button-new-gen__heavy');\n return (\n <button\n className={classNames.join(' ')}\n type=\"button\"\n onClick={!!disabled ? undefined : onClick}\n >\n {arrowLeft && <i className=\"custom-button-new-gen__arrowLeft\" />}\n {isLoading ? 'Chargement...' : title}\n {/* {title} */}\n {arrowRight && <i className=\"custom-button-new-gen__arrowRight\" />}\n </button>\n );\n};\n\nexport default CustomButtonNewGen;\n","import React from 'react';\nimport resources from '../../utils/resources';\nimport WordingConstant from '../../utils/wording.json';\n\nconst Wording = WordingConstant.Footer;\nexport default function footer() {\n return (\n <div className=\"footerAuth\">\n <div className=\"footerAuth__articles\">\n {Wording.footerAuth.articles.map((e, index) => {\n return (\n <React.Fragment key={index}>\n <a\n href={e.link}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {e.text}\n </a>\n </React.Fragment>\n );\n })}\n </div>\n\n <div className=\"footerAuth__social\">\n <a\n href={Wording.socialLink.facebook}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <img src={resources['ic-facebook']} alt=\"ic-facebook\" />\n </a>\n <a\n href={Wording.socialLink.instagram}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <img src={resources['ic-instagram']} alt=\"ic-instagram\" />\n </a>\n <a\n href={Wording.socialLink.youtube}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <img src={resources['ic-youtube']} alt=\"ic-youtube\" />\n </a>\n <a\n href={Wording.socialLink.linkedin}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <img src={resources['ic-linkedin']} alt=\"ic-linkedin\" />\n </a>\n </div>\n </div>\n );\n}\n","import resources from '../../utils/resources';\nimport React from 'react';\nimport WordingConstant from '../../utils/wording.json';\nimport CustomButtonNewGen from '../CustomButton/CustomButtonNewGen';\nimport Config from '../../utils/config';\n\ninterface ISlidingMenuProps {\n isOpen: boolean;\n setIsOpen: (isOpen: boolean) => void;\n}\n\nconst wording = WordingConstant.SlidingMenu;\n\nenum WordingTitle {\n why = 'Pourquoi',\n individual = 'Particuliers',\n pro = 'Professionnels',\n green = 'Électricité verte',\n solar = 'Solar',\n blog = 'Blog',\n}\n\nconst SlidingMenu = (props: ISlidingMenuProps) => {\n const { isOpen, setIsOpen } = props;\n const [isOpenIndividual, setIsOpenIndividual] = React.useState(false);\n\n return (\n <div className={`sliding-menu${isOpen ? ' visible' : ' hidden'}`}>\n <img\n src={resources['ic-arrow-open-menu']}\n onClick={() => {\n setIsOpen(!isOpen);\n setIsOpenIndividual(false);\n }}\n className={`sliding-menu__img${isOpen ? ' open-img' : ''}`}\n alt={'image open menu'}\n />\n <img\n className={'sliding-menu__logo'}\n src={resources['ic-wekiwi-new']}\n alt=\"logo-login\"\n onClick={() => {\n window.location.href = Config.HOME_PAGE_LINK as string;\n }}\n />\n {wording.data.map((item, index) => {\n if (\n item.title.toLowerCase() ===\n WordingTitle.individual.toLowerCase()\n ) {\n return (\n <>\n <div\n className={`${\n isOpenIndividual ? 'individualOpen' : ''\n } sliding-menu__individual`}\n onClick={() =>\n setIsOpenIndividual(!isOpenIndividual)\n }\n key={index}\n tabIndex={0}\n role={'button'}\n >\n {item.title}\n <img\n className={isOpenIndividual ? 'open' : ''}\n src={resources['ic-arrow-down']}\n alt={'flèche vers le bas'}\n />\n </div>\n <div\n className={`sliding-menu__submenu${\n isOpenIndividual ? ' full' : ''\n }`}\n key={index}\n >\n {item.subMenu!.map((subItem, subIndex) => (\n <a\n key={subIndex}\n href={subItem.link}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {subItem.title}\n </a>\n ))}\n </div>\n </>\n );\n }\n return (\n <div className={'sliding-menu__content'} key={index}>\n <a href={item.link} target={'_blank'}>\n {item.title}\n </a>\n </div>\n );\n })}\n <CustomButtonNewGen\n title={wording.button}\n color={'purple'}\n onClick={() => {\n window.location.href = Config.SUBSCRIPTION_LINK as string;\n }}\n arrowRight={true}\n />\n <div className={'sliding-menu__footer'}>\n <p className={'sliding-menu__footer__title'}>\n {wording.footer.title}\n </p>\n <p className={'sliding-menu__footer__subtitle'}>\n {wording.footer.countries.map((item, index) => {\n return (\n <a\n key={index}\n href={item.link}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {index !== wording.footer.countries.length - 1\n ? `${item.title} - `\n : item.title}\n </a>\n );\n })}\n </p>\n </div>\n </div>\n );\n};\n\nexport default SlidingMenu;\n","import SlidingMenu from './SlidingMenu';\n\nexport default SlidingMenu;\n","import React from 'react';\n\nimport { InputEvent, KeyboardHandler } from 'Types';\nimport { CustomInput, CustomButton } from '../../components';\nimport resources from '../../utils/resources';\nimport { isValidEmail } from '../../utils/helpers';\n\nimport WordingConstant from '../../utils/wording.json';\nimport CustomInputNewGen from '../../components/CustomInput/CustomInputNewGen';\nimport CustomButtonNewGen from '../../components/CustomButton/CustomButtonNewGen';\nimport Footer from '../../components/FooterAuth/FooterAuth';\nimport SlidingMenu from '../../components/SlidingMenu';\n\nconst Wording = WordingConstant.AuthPage;\n\ntype Props = {\n fields: IFields;\n responseMessage?: {\n msg?: string;\n errorMsg?: string;\n };\n toggle: {\n passForgot: boolean;\n };\n handleToggle: any;\n isSlidingMenuOpen: boolean;\n handleInputChange(e: InputEvent, type: string): void;\n handleInputError(): boolean;\n handleButtonLogin(): void;\n handleButtonPassForgot(): void;\n handleSlidingMenu(): void;\n};\n\nexport interface IFields {\n login: string;\n password: string;\n email: string;\n errorLogin?: string;\n errorPassword?: string;\n errorEmail?: string;\n\n [key: string]: string | undefined;\n}\n\nconst AuthContainer: React.FC<Props> = ({\n fields,\n toggle,\n responseMessage,\n handleInputChange,\n handleButtonLogin,\n handleButtonPassForgot,\n handleInputError,\n handleToggle,\n isSlidingMenuOpen,\n handleSlidingMenu,\n}) => {\n const isEmail = isValidEmail(fields.email);\n\n const renderForgotPassword = () => (\n <div className=\"auth-page__inner__password-forgot\">\n <img\n src={resources['ic-wekiwi-new']}\n className=\"auth-page__inner__password-forgot__logo\"\n alt=\"logo-login\"\n />\n <h1>\n {Wording.passForgot.title}{' '}\n <span>{Wording.passForgot.title2}</span>\n </h1>\n <h3 className={'bold'}>{Wording.passForgot.subTitle}</h3>\n <h3>{Wording.passForgot.subTitle2}</h3>\n <CustomInputNewGen\n value={fields.email}\n placeholder={Wording.passForgot.email}\n genericError={responseMessage && responseMessage.errorMsg}\n onInputChange={(e: InputEvent) => handleInputChange(e, 'email')}\n />\n\n {responseMessage && responseMessage.errorMsg && (\n <p className=\"auth-page__inner__password-forgot__error\">\n {responseMessage.errorMsg}\n </p>\n )}\n\n {responseMessage && responseMessage.msg && (\n <p className=\"auth-page__inner__password-forgot__success\">\n {responseMessage.msg}\n </p>\n )}\n <div className=\"auth-page__inner__password-forgot__buttons\">\n <CustomButtonNewGen\n title={Wording.cancelButton}\n color=\"inherit\"\n onClick={() => handleToggle()}\n />\n <CustomButtonNewGen\n title={Wording.passForgot.validButton}\n disabled={!isEmail}\n color={!isEmail ? 'gray' : 'purple'}\n onClick={() => {\n if (handleInputError()) {\n handleButtonPassForgot();\n }\n }}\n />\n </div>\n </div>\n );\n\n const handleEnterPressed = (event: KeyboardHandler) => {\n const code = event.keyCode || event.which;\n if (code === 13 && handleInputError()) {\n // 13 is the enter keycode\n handleButtonLogin();\n }\n };\n\n const renderConnexion = () => {\n const errorLoginPassword =\n fields.login.length < 6 || fields.password.length < 6;\n\n return (\n <div className=\"auth-page__inner__connection\">\n <img\n src={resources['ic-wekiwi-new']}\n className=\"auth-page__inner__connection__logo\"\n alt=\"logo-login\"\n />\n <div className={'auth-page__inner__connection__title'}>\n <span>{Wording.title}</span>\n <span className={'bold'}>{Wording.title2}</span>\n </div>\n <CustomInputNewGen\n value={fields.login}\n error={fields.errorLogin}\n genericError={responseMessage && responseMessage.errorMsg}\n placeholder={Wording.login}\n onInputChange={(e: InputEvent) =>\n handleInputChange(e, 'login')\n }\n onKeyPress={handleEnterPressed}\n />\n <CustomInputNewGen\n value={fields.password}\n error={fields.errorPassword}\n placeholder={Wording.pass}\n genericError={responseMessage && responseMessage.errorMsg}\n type=\"password\"\n onInputChange={(e: InputEvent) =>\n handleInputChange(e, 'password')\n }\n onKeyPress={handleEnterPressed}\n />\n\n {responseMessage && responseMessage.errorMsg && (\n <p>{responseMessage.errorMsg}</p>\n )}\n\n <CustomButtonNewGen\n title={Wording.button}\n color={errorLoginPassword ? 'purple' : 'purple'}\n onClick={() => {\n if (handleInputError()) {\n handleButtonLogin();\n }\n }}\n />\n\n <a onClick={() => handleToggle()} href=\"#\">\n {Wording.passForgotLoginPage}\n </a>\n </div>\n );\n };\n\n return (\n <div className=\"auth-page\">\n <SlidingMenu\n isOpen={isSlidingMenuOpen}\n setIsOpen={handleSlidingMenu}\n />\n <img\n src={resources['ic-new-logo-accueil-background']}\n className=\"auth-page__logo\"\n alt=\"logo-login\"\n />\n <div className=\"auth-page__inner\">\n {!toggle.passForgot\n ? renderConnexion()\n : renderForgotPassword()}\n </div>\n <Footer />\n </div>\n );\n};\n\nexport default AuthContainer;\n","import React from 'react';\nimport { Redirect } from 'react-router-dom';\nimport { connect } from 'react-redux';\nimport { Location } from 'history';\nimport { InputEvent, RootState } from 'Types';\n\nimport withLoader from '../../libraries/withLoader';\nimport AuthContainer, {\n IFields,\n} from '../../containers/AuthContainer/AuthContainer';\n\nimport {\n fetchLoginAsync,\n resetAuthErrors,\n resetPasswordAsync,\n} from '../../_actions/auth.actions';\n\nimport { isValidEmail } from '../../utils/helpers';\nimport WordingConstant from '../../utils/wording.json';\nimport AuthService from '../../services/auth-service';\nconst Wording = WordingConstant.AuthPage;\n\nconst mapStateToProps = (state: RootState) => ({\n authState: state.authReducer,\n});\n\nconst dispatchProps = {\n authDispatch: fetchLoginAsync.request,\n resetPasswordDispatch: resetPasswordAsync.request,\n resetAuthErrorsDispatch: () => resetAuthErrors(),\n};\n\ntype InjectedProps = {\n location: Location;\n};\n\ntype Props = ReturnType<typeof mapStateToProps> &\n typeof dispatchProps &\n InjectedProps;\n\ntype State = {\n fields: IFields;\n toggle: {\n passForgot: boolean;\n };\n slidingMenu: {\n isOpen: boolean;\n };\n};\n\nexport const WrappedAuth = withLoader()(AuthContainer);\n\nexport class AuthPage extends React.Component<Props, State> {\n constructor(props: Props) {\n super(props);\n this.state = {\n fields: {\n login: '',\n password: '',\n email: '',\n errorLogin: undefined,\n errorPassword: undefined,\n errorEmail: undefined,\n },\n toggle: {\n passForgot: false,\n },\n slidingMenu: {\n isOpen: false,\n },\n };\n }\n\n componentDidMount(): void {\n const { resetAuthErrorsDispatch } = this.props;\n if (resetAuthErrorsDispatch) resetAuthErrorsDispatch();\n }\n\n handleChange = (e: InputEvent, type: string): void => {\n const { value } = e.currentTarget;\n const { fields } = this.state;\n fields[type] = value;\n this.setState({ fields });\n };\n\n handleToggle = () => {\n const { toggle } = this.state;\n toggle.passForgot = !toggle.passForgot;\n this.setState({ toggle });\n const { resetAuthErrorsDispatch } = this.props;\n if (resetAuthErrorsDispatch) resetAuthErrorsDispatch();\n };\n\n handleButtonPassForgot = () => {\n const {\n fields: { email },\n } = this.state;\n const { resetPasswordDispatch } = this.props;\n resetPasswordDispatch({\n email,\n });\n };\n\n handleButtonLogin = () => {\n const { fields } = this.state;\n const { authDispatch } = this.props;\n\n localStorage.clear();\n\n authDispatch({\n user: fields.login.trim(),\n password: fields.password.trim(),\n });\n };\n\n handleInputError = (): boolean => {\n const {\n fields,\n toggle: { passForgot },\n } = this.state;\n\n if (passForgot) {\n const isEmail = isValidEmail(fields.email);\n fields.errorEmail = isEmail ? Wording.error.notEmail : undefined;\n this.setState({ fields });\n return isEmail;\n }\n fields.errorLogin =\n fields.login.length <= 2 ? Wording.error.notLogin : undefined;\n fields.errorPassword =\n fields.password.length < 6 ? Wording.error.notPassword : undefined;\n this.setState({ fields });\n return fields.login.length >= 2 && fields.password.length >= 6;\n };\n\n handleSlidingMenuOpen = () => {\n const { slidingMenu } = this.state;\n slidingMenu.isOpen = !slidingMenu.isOpen;\n this.setState({ slidingMenu });\n };\n\n sendError = (error: any) => {\n if (\n (error && error.ajaxError !== undefined) ||\n error === 'Unexpected token a in JSON at position 0'\n ) {\n return WordingConstant.Common.errorTitle;\n }\n if (error && error.search('message') !== -1) {\n return JSON.parse(error).message;\n }\n\n return error;\n };\n render() {\n const { fields, toggle, slidingMenu } = this.state;\n const {\n authState: { loading, error, message },\n }: Props = this.props;\n\n const isSignIn = AuthService.isAuthenticated();\n const isValidated = AuthService.isVlaidated();\n // Always redirect to dashboard if login succeess\n\n // Always redirect to createPassword if isValidated false\n if (!isValidated) return <Redirect to=\"/createPassword\" />;\n else if (isSignIn) return <Redirect to=\"/\" />;\n\n return (\n <WrappedAuth\n loading={loading}\n unauthorized={false}\n handleCloseModal={() => {}}\n responseMessage={{\n errorMsg: this.sendError(error),\n msg: message,\n }}\n toggle={toggle}\n fields={fields}\n handleInputChange={this.handleChange}\n handleToggle={this.handleToggle}\n handleButtonLogin={this.handleButtonLogin}\n handleButtonPassForgot={this.handleButtonPassForgot}\n handleInputError={this.handleInputError}\n handleSlidingMenu={this.handleSlidingMenuOpen}\n isSlidingMenuOpen={slidingMenu.isOpen}\n />\n );\n }\n}\n\nexport default connect(mapStateToProps, dispatchProps)(AuthPage);\n","import AuthPage from './AuthPage';\n\nexport default AuthPage;\n","import Footer from './FooterAuth';\n\nexport default Footer;\n","import React from 'react';\nimport { withRouter, RouteComponentProps } from 'react-router-dom';\n\nimport { InputEvent, KeyboardHandler } from 'Types';\nimport { CustomInput, CustomButton } from '../../components';\nimport resources from '../../utils/resources';\n\nimport WordingConstant from '../../utils/wording.json';\nimport AuthService from '../../services/auth-service';\nimport SlidingMenu from '../../components/SlidingMenu';\nimport FooterAuth from '../../components/FooterAuth';\nimport CustomInputNewGen from '../../components/CustomInput/CustomInputNewGen';\nimport CustomButtonNewGen from '../../components/CustomButton/CustomButtonNewGen';\nconst Wording = WordingConstant.ResetPasswordPage;\n\ntype IProps = {\n fields: IFields;\n responseMessages?: {\n errorMsg?: string;\n msg?: string;\n };\n toggle: {\n passForgot: boolean;\n };\n handleToggle: any;\n isSlidingMenuOpen: boolean;\n handleInputChange(e: InputEvent, type: string): void;\n handleInputError(): boolean;\n handleButtonLogin(): any;\n handleSlidingMenu(): void;\n};\ntype Props = IProps & RouteComponentProps<any>;\n\nexport interface IFields {\n login: string;\n password: string;\n newPassword: string;\n confirmPassword: string;\n email: string;\n errorLogin?: string;\n errorPassword?: string | undefined;\n errorEmail?: string;\n [key: string]: string | undefined;\n}\n\nconst PasswordContainer: React.FC<Props> = ({\n fields,\n toggle,\n responseMessages,\n handleInputChange,\n handleButtonLogin,\n handleInputError,\n handleToggle,\n history,\n isSlidingMenuOpen,\n handleSlidingMenu,\n}) => {\n const renderForgotPassword = () => (\n <div className=\"auth-page__inner_password__password-forgot\">\n <h1>{Wording.passForgot.title}</h1>\n <h2>{Wording.passForgot.subTitle}</h2>\n\n <p>{Wording.passForgot.email}</p>\n <CustomInput\n value={fields.email}\n onInputChange={(e: InputEvent) => handleInputChange(e, 'email')}\n />\n </div>\n );\n\n const handleEnterPressed = (event: KeyboardHandler) => {\n const code = event.keyCode || event.which;\n if (code === 13 && handleInputError()) {\n // 13 is the enter keycode\n if (\n (fields.newPassword !== '' || fields.confirmPassword !== '') &&\n fields.newPassword !== fields.confirmPassword\n ) {\n return;\n }\n handleButtonLogin();\n }\n };\n\n const handleGoBack = (e: MouseEvent) => {\n e.preventDefault();\n AuthService.logout();\n history.push('/');\n };\n\n const handleValidate = () => {\n if (handleInputError()) handleButtonLogin();\n };\n\n const formatErrorMessage = () => {\n const regex = new RegExp(\n /^(?=.*[A-Z])(?=.*\\d)(?=.*[@$!%*#?&])[A-Za-z\\d@$!%*#?&]{8,}$/g,\n );\n if (!fields.newPassword) {\n return '';\n }\n if (fields.newPassword.length < 8) {\n return 'Le mot de passe doit être de 8 caractères minimum.';\n }\n if (!regex.test(fields.newPassword)) {\n return 'Le mot de passe doit contenir une majuscule, une minuscule et un caractère spécial (@$!%*#?&)';\n }\n if (fields.newPassword !== fields.confirmPassword) {\n return 'Le mot de passe de confirmation doit être le même que celui ci.';\n }\n return undefined;\n };\n\n const renderConnexion = () => {\n const errorForm = formatErrorMessage();\n return (\n <div className=\"auth-page__inner_password__reset-password\">\n <img\n src={resources['ic-wekiwi-new']}\n className=\"auth-page__inner_password__reset-password__logo\"\n alt=\"logo-login\"\n />\n <div\n className={\n 'auth-page__inner_password__reset-password__title'\n }\n >\n <span>{Wording.title}</span>\n <span className={'bold'}>{'Mot de passe'}</span>\n </div>\n <h6>{Wording.login}</h6>\n <CustomInputNewGen\n value={fields.login}\n error={fields.errorLogin}\n onInputChange={(e: InputEvent) =>\n handleInputChange(e, 'login')\n }\n placeholder={Wording.login}\n onKeyPress={handleEnterPressed}\n />\n <h6 className=\"pass\">{Wording.pass}</h6>\n <CustomInputNewGen\n value={fields.password}\n error={fields.errorPassword}\n type=\"password\"\n placeholder={Wording.pass}\n onInputChange={(e: InputEvent) =>\n handleInputChange(e, 'password')\n }\n onKeyPress={handleEnterPressed}\n />\n <h6 className=\"pass\">{Wording.NewPass}</h6>\n <CustomInputNewGen\n value={fields.newPassword}\n error={errorForm}\n placeholder={Wording.NewPass}\n type=\"password\"\n onInputChange={(e: InputEvent) =>\n handleInputChange(e, 'newPassword')\n }\n onKeyPress={handleEnterPressed}\n />\n <h6 className=\"pass\">{Wording.passValidate}</h6>\n <CustomInputNewGen\n value={fields.confirmPassword}\n type=\"password\"\n placeholder={Wording.passValidate}\n onInputChange={(e: InputEvent) =>\n handleInputChange(e, 'confirmPassword')\n }\n onKeyPress={handleEnterPressed}\n />\n {responseMessages && responseMessages.errorMsg && (\n <p className=\"error-message\">{responseMessages.errorMsg}</p>\n )}\n {responseMessages && responseMessages.msg && (\n <p className=\"success-message\">{responseMessages.msg}</p>\n )}\n\n <div className=\"buttonContainers\">\n <CustomButtonNewGen\n title={Wording.backButton}\n color={'inherit'}\n onClick={handleGoBack}\n />\n\n <CustomButtonNewGen\n title={Wording.button}\n disabled={\n !!(responseMessages && responseMessages.msg) ||\n !!errorForm\n }\n color={\n Boolean(errorForm || !fields.newPassword)\n ? 'gray'\n : 'purple'\n }\n onClick={() => handleValidate()}\n />\n </div>\n </div>\n );\n };\n\n return (\n <div className=\"auth-page\">\n <SlidingMenu\n isOpen={isSlidingMenuOpen}\n setIsOpen={handleSlidingMenu}\n />\n <img\n src={resources['ic-new-logo-accueil-background']}\n className=\"auth-page__logo\"\n alt=\"logo-login\"\n />\n <div className=\"auth-page__inner_password\">\n {!toggle.passForgot\n ? renderConnexion()\n : renderForgotPassword()}\n </div>\n <FooterAuth />\n </div>\n );\n};\n\nexport default withRouter(PasswordContainer);\n","import React from 'react';\nimport { Redirect } from 'react-router-dom';\nimport { connect } from 'react-redux';\nimport { Location } from 'history';\nimport { InputEvent, RootState } from 'Types';\n\nimport withLoader from '../../libraries/withLoader';\nimport ResetPasswordContainer, {\n IFields,\n} from '../../containers/ResetPasswordContainer/ResetPasswordContainer';\n\nimport { createPasswordAsync } from '../../_actions/createPassword.actions';\n\nimport { isValidEmail } from '../../utils/helpers';\nimport WordingConstant from '../../utils/wording.json';\nimport AuthService from '../../services/auth-service';\nimport { CreatePasswordMode } from '../../utils/enums';\nimport { resetAuthErrors } from '../../_actions/auth.actions';\nconst Wording = WordingConstant.ResetPasswordPage;\n\nconst mapStateToProps = (state: RootState) => ({\n authState: state.authReducer,\n});\n\nconst dispatchProps = {\n authDispatch: createPasswordAsync.request,\n resetAuthError: resetAuthErrors,\n};\n\ntype InjectedProps = {\n location: Location;\n};\n\ntype Props = ReturnType<typeof mapStateToProps> &\n typeof dispatchProps &\n InjectedProps;\n\ntype State = {\n fields: IFields;\n toggle: {\n passForgot: boolean;\n };\n slidingMenu: {\n isOpen: boolean;\n };\n};\n\nexport const WrappedPassword = withLoader()(ResetPasswordContainer);\n\nexport class ResetPasswordPage extends React.Component<Props, State> {\n constructor(props: Props) {\n super(props);\n this.state = {\n fields: {\n login: '',\n password: '',\n newPassword: '',\n confirmPassword: '',\n email: '',\n errorLogin: undefined,\n errorPassword: undefined,\n errorEmail: undefined,\n },\n toggle: {\n passForgot: false,\n },\n slidingMenu: {\n isOpen: false,\n },\n };\n }\n\n componentDidMount(): void {\n this.props.resetAuthError();\n }\n\n handleChange = (e: InputEvent, type: string): void => {\n const { value } = e.currentTarget;\n const { fields } = this.state;\n fields[type] = value;\n\n if (type === 'newPassword' || type === 'confirmPassword') {\n fields.errorPassword = undefined;\n }\n this.setState({ fields });\n };\n\n handleToggle = () => {\n const { toggle } = this.state;\n toggle.passForgot = !toggle.passForgot;\n this.setState({ toggle });\n };\n\n handleButtonLogin = () => {\n const { fields } = this.state;\n const { authDispatch } = this.props;\n\n if (fields.newPassword !== fields.confirmPassword) {\n return;\n }\n\n localStorage.clear();\n\n const result = authDispatch({\n customerNbr: fields.login.trim(),\n temporaryPassword: fields.password.trim(),\n newPassword: fields.newPassword.trim(),\n mode: CreatePasswordMode.VALIDATION,\n });\n\n fields.errorPassword = undefined;\n return result;\n };\n\n handleInputError = (): boolean => {\n const {\n fields,\n toggle: { passForgot },\n } = this.state;\n\n if (passForgot) {\n const isEmail = isValidEmail(fields.email);\n fields.errorEmail = isEmail ? Wording.error.notEmail : undefined;\n this.setState({ fields });\n return isEmail;\n }\n\n fields.errorLogin =\n fields.login.length <= 2 ? Wording.error.notLogin : undefined;\n let errorPassword: string | undefined;\n\n if (\n fields.password.length < 6 ||\n fields.newPassword.length < 6 ||\n fields.newPassword !== fields.confirmPassword\n ) {\n errorPassword = 'Passwords do not match';\n } else {\n errorPassword = undefined;\n }\n\n fields.errorPassword =\n fields.newPassword !== '' && fields.confirmPassword !== ''\n ? errorPassword\n : undefined;\n this.setState({ fields });\n return fields.login.length >= 2 && fields.password.length >= 6;\n };\n\n handleSlidingMenuOpen = () => {\n const { slidingMenu } = this.state;\n slidingMenu.isOpen = !slidingMenu.isOpen;\n this.setState({ slidingMenu });\n };\n\n sendError = (error: any) => {\n if (\n (error && error.ajaxError !== undefined) ||\n error === 'Unexpected token a in JSON at position 0'\n ) {\n return WordingConstant.Common.errorTitle;\n }\n if (error && error.search('message') !== -1) {\n return JSON.parse(error).message;\n }\n\n return error;\n };\n render() {\n const { fields, toggle, slidingMenu } = this.state;\n const {\n authState: { loading, error, message },\n }: Props = this.props;\n\n const isSignIn = AuthService.isAuthenticated();\n // Always redirect to dashboard if login succeess\n if (isSignIn) return <Redirect to=\"/\" />;\n\n return (\n <WrappedPassword\n loading={loading}\n unauthorized={false}\n handleCloseModal={() => {}}\n responseMessages={{\n errorMsg: this.sendError(error),\n msg: message,\n }}\n toggle={toggle}\n fields={fields}\n handleInputChange={this.handleChange}\n handleToggle={this.handleToggle}\n handleButtonLogin={this.handleButtonLogin}\n handleInputError={this.handleInputError}\n handleSlidingMenu={this.handleSlidingMenuOpen}\n isSlidingMenuOpen={slidingMenu.isOpen}\n />\n );\n }\n}\n\nexport default connect(mapStateToProps, dispatchProps)(ResetPasswordPage);\n","import ResetPasswordPage from './ResetPasswordPage';\n\nexport default ResetPasswordPage;\n","import AdminHomePage from './AdminHomePage';\nexport default AdminHomePage;\n","import React from 'react';\n\nconst AdminHomePage = () => {\n return (\n <div>\n <h6>Home</h6>\n\n <br />\n </div>\n );\n};\n\nexport default AdminHomePage;\n","import _ from 'lodash';\nimport { getFormattedDateToBackEnd } from '../../helpers';\nimport { EBillingModes, TContract } from '../types';\nimport { Energy } from '../builders';\nimport { isCyclicalProduct } from '../helpers';\n\nfunction buildFinalContracts(\n electricity?: Energy | Partial<Energy> | null,\n gas?: Energy | Partial<Energy> | null,\n): TContract[] {\n const finalContracts: TContract[] = [];\n if (!!electricity && electricity.contract) {\n const elecPrepare: any = {\n ...electricity.contract,\n };\n\n if (\n electricity.contract.deliveryPoint !== undefined &&\n electricity.contract.deliveryPoint.pointOfDelivery === undefined &&\n electricity.pointOfDelivery !== undefined\n ) {\n elecPrepare.deliveryPoint.pointOfDelivery = electricity.pointOfDelivery.replace(\n / /g,\n '',\n );\n }\n\n if (isCyclicalProduct(electricity.chosenProduct)) {\n elecPrepare.chosenProduct = electricity.chosenProduct;\n } else {\n elecPrepare.chosenPackages = [...electricity.chosenPackages];\n elecPrepare.chosenProduct = electricity.chosenProduct;\n elecPrepare.installmentFrequency = electricity.selectedFrequency;\n }\n\n finalContracts.push(elecPrepare);\n }\n if (!!gas && !!gas.contract) {\n const gasPrepare: any = {\n ...gas.contract,\n };\n\n if (\n gas.contract.deliveryPoint !== undefined &&\n gas.contract.deliveryPoint.pointOfDelivery === undefined &&\n gas.pointOfDelivery !== undefined\n ) {\n gasPrepare.deliveryPoint.pointOfDelivery = gas.pointOfDelivery.replace(\n / /g,\n '',\n );\n }\n\n if (isCyclicalProduct(gas.chosenProduct)) {\n gasPrepare.chosenProduct = gas.chosenProduct;\n } else {\n gasPrepare.chosenPackages = [...gas.chosenPackages];\n gasPrepare.chosenProduct = gas.chosenProduct;\n gasPrepare.installmentFrequency = gas.selectedFrequency;\n }\n\n finalContracts.push(gasPrepare);\n }\n return finalContracts.map(\n (contract: TContract): TContract => {\n const isCyclical = isCyclicalProduct(\n contract.chosenProduct || null,\n );\n const fmtDate = getFormattedDateToBackEnd(new Date(Date.now()));\n return {\n ...contract,\n billingModeCode: isCyclical\n ? EBillingModes.CYCLICAL_BILLING\n : EBillingModes.PAYMENT_SCHEDULE,\n effectiveStartDate: fmtDate,\n subscriptionDate: fmtDate,\n };\n },\n );\n}\n\nexport { buildFinalContracts };\n","import _ from 'lodash';\nimport moment from 'moment';\nimport apiRequest, { invokeLambda } from '../../services/api-service';\nimport Config from '../config';\nimport { getDateFormatted as getFormattedDate, log as hLog } from '../helpers';\nimport Wording from '../wording.json';\nimport * as RequestErrors from './errors';\nimport {\n EBillingModes,\n ECustomerTypes,\n EEnergyTypes,\n EResultSponsor,\n ESavingModes,\n ETimeslots,\n TAppointmentDay,\n TCasesExtractResponse,\n TContract,\n TEstimate,\n TGetOrderStatusResponse,\n TGetPackageResponse,\n TGetProductResponse,\n TOffer,\n TOrder,\n TOrderResponse,\n TPaymentCBResponse,\n TProduct,\n TSaveOrderResponse,\n TSignOrderResponse,\n TSurvey,\n} from './types';\n\nfunction log(message: string, data: any) {\n hLog(`API Request: ${message}`, data);\n}\n\nconst handleRequest = async <T>(\n fn: () => Promise<T | RequestErrors.RequestError>,\n method?: string,\n path?: string,\n args?: any,\n defaultError?: string,\n): Promise<any | RequestErrors.RequestError> => {\n const pathStr = !!path ? `/${path} ` : '';\n try {\n const res = await fn();\n const errCode: string | null = _.get(res, 'code', null);\n const errMessage: string | null = _.get(res, 'message', null);\n if (!!errCode && !!errMessage) {\n throw new RequestErrors.ExternalError(errMessage);\n }\n return res;\n } catch (err) {\n log(`Error from API ${pathStr}====> `, err.message);\n if (!(err instanceof RequestErrors.RequestError)) {\n let message;\n if (err instanceof Error || typeof err === 'object') {\n message = _.get(err, 'message');\n } else if (typeof err === 'string') {\n message = err;\n }\n return new RequestErrors.RequestError(message);\n }\n return err;\n }\n};\n\nconst checkSponsor = async (\n code: string,\n): Promise<boolean | RequestErrors.RequestError> => {\n const fn = async () => {\n const res = await apiRequest({\n path: '/sponsoring',\n method: 'POST',\n body: {\n sponsorNumber: code,\n },\n isSubscription: true,\n }).toPromise();\n const resultSponsor: string = _.get(res, 'resultSponsor');\n if (!!resultSponsor) {\n if (resultSponsor === EResultSponsor.OK) {\n return true;\n }\n if (resultSponsor === EResultSponsor.KO) {\n return false;\n }\n }\n return new RequestErrors.RequestError();\n };\n return await handleRequest(fn, 'POST', 'sponsoring', {\n code,\n });\n};\n\nconst searchSiret = async (\n value: string,\n): Promise<any | RequestErrors.RequestError> => {\n const fn = async () => {\n const res: any = await fetch(`${Config.URL_GET_SIRET}/${value}`, {\n method: 'GET',\n headers: {\n Accept: 'application/json',\n 'X-INSEE-Api-Key-Integration':\n '4ee560a3-3522-4f69-a560-a335221f698a',\n },\n });\n\n if (res.status && res.status === 200) {\n const response = await res.json();\n\n return {\n ...response,\n status: res.status,\n };\n }\n throw new RequestErrors.RequestError(\n res.message || 'Service indisponible',\n );\n };\n return await handleRequest(fn, 'GET', 'getSiret', { value });\n};\n\nconst getCalendarAppointment = async (\n channel: string = 'WEB',\n energyType: EEnergyTypes,\n isIndividual: boolean = true,\n order?: TOrder,\n productCode?: string | null,\n): Promise<TAppointmentDay[] | RequestErrors.RequestError> => {\n const fn = async () => {\n let fromDate = getFormattedDate(new Date(Date.now()));\n if (!!order) {\n const effectiveStartDate: Date = new Date(\n _.get(order, 'contracts.0.effectiveStartDate'),\n );\n if (!isNaN(effectiveStartDate.getTime())) {\n effectiveStartDate.setDate(effectiveStartDate.getDate() - 1);\n fromDate = getFormattedDate(effectiveStartDate);\n }\n }\n let body: any = {\n channel,\n seller: 'WEKIWI',\n customerType: isIndividual ? 'INDIVIDUAL' : 'PROFESSIONAL',\n energyType,\n fromDate,\n processType: 'MOVE_IN',\n productCode,\n };\n const previousContract: TContract | undefined = _.find(\n _.get(order, 'contracts', []),\n (contract: TContract) => {\n return energyType === contract.energy;\n },\n );\n const billingModeCode: EBillingModes | undefined = _.get(\n previousContract,\n 'billingModeCode',\n );\n const isPaymentSchedule: boolean =\n billingModeCode === EBillingModes.PAYMENT_SCHEDULE;\n if (!!order && isPaymentSchedule) {\n body = {\n ...body,\n customerType: _.get(order, 'customer.type', ''),\n deliveryState: _.get(\n previousContract,\n 'deliveryPoint.state',\n '',\n ),\n deliveryStatus: _.get(\n previousContract,\n 'deliveryPoint.deliveryStatus',\n '',\n ),\n meterType: _.get(\n previousContract,\n 'deliveryPoint.meterType',\n '',\n ),\n smartMeterStatus: _.get(\n previousContract,\n 'deliveryPoint.smartMeterStatus',\n '',\n ),\n };\n }\n const res: any = await apiRequest({\n path: '/getCalendarAppointment',\n method: 'POST',\n body,\n isSubscription: true,\n }).toPromise();\n const daysList = _.get(res, '0.daysList');\n if (!!daysList) {\n return daysList as TAppointmentDay[];\n }\n throw new RequestErrors.NoDaysListError();\n };\n return await handleRequest(fn, 'POST', '/getCalendarAppointment', {\n energyType,\n isIndividual,\n });\n};\n\nconst getDeliveryPointPackages = async (\n channel: string = 'WEB',\n electricity?: string | null,\n gas?: string | null,\n isIndividual: boolean = true,\n email: string = '',\n firstName: string = '',\n lastName: string = '',\n): Promise<TGetPackageResponse | RequestErrors.RequestError> => {\n if (electricity === null && gas === null) {\n throw new RequestErrors.NoEnergySelectionError();\n }\n const pointOfDeliveryList = [];\n if (electricity) {\n pointOfDeliveryList.push({ energy: 'EL', reference: electricity });\n }\n if (gas) pointOfDeliveryList.push({ energy: 'NG', reference: gas });\n const payload = {\n channel,\n customerType: isIndividual ? 'INDIVIDUAL' : 'PROFESSIONAL',\n mode: 'POINT_OF_DELIVERY',\n pointOfDeliveryList,\n seller: 'WEKIWI',\n email,\n firstName,\n lastName,\n };\n\n let res:\n | TGetPackageResponse\n | RequestErrors.RequestError = (await apiRequest({\n path: '/getPackages',\n method: 'POST',\n body: payload,\n isSubscription: true,\n }).toPromise()) as TGetPackageResponse | RequestErrors.RequestError;\n const energies: EEnergyTypes[] = [];\n if (!!electricity) energies.push(EEnergyTypes.ELECTRICTY);\n if (!!gas) energies.push(EEnergyTypes.GAS);\n res = filterGetPackagesError(res, energies);\n return res;\n};\n\nconst getPackDynamic = async (\n channel: string = 'WEB',\n contracts: TContract[],\n isIndividual: boolean,\n): Promise<any | RequestErrors.RequestError> => {\n const payload = {\n channel,\n customerType: isIndividual ? 'INDIVIDUAL' : 'PROFESSIONAL',\n seller: 'WEKIWI',\n contracts,\n };\n const res = await apiRequest({\n path: '/getPack',\n method: 'POST',\n body: payload,\n isSubscription: true,\n }).toPromise();\n return res;\n};\n\nconst getRawDeliveryPointPackages = async (\n channel: string = 'WEB',\n electricity?: string | null,\n gas?: string | null,\n isIndividual: boolean = true,\n email: string = '',\n firstName: string = '',\n lastName: string = '',\n): Promise<TGetPackageResponse | RequestErrors.RequestError> => {\n if (electricity === null && gas === null) {\n throw new RequestErrors.NoEnergySelectionError();\n }\n const pointOfDeliveryList = [];\n if (electricity) {\n pointOfDeliveryList.push({ energy: 'EL', reference: electricity });\n }\n if (gas) pointOfDeliveryList.push({ energy: 'NG', reference: gas });\n const payload = {\n channel,\n customerType: isIndividual ? 'INDIVIDUAL' : 'PROFESSIONAL',\n mode: 'POINT_OF_DELIVERY',\n pointOfDeliveryList,\n seller: 'WEKIWI',\n email,\n firstName,\n lastName,\n };\n\n const res = (await apiRequest({\n path: '/getPackages',\n method: 'POST',\n body: payload,\n isSubscription: true,\n }).toPromise()) as TGetPackageResponse | RequestErrors.RequestError;\n return res;\n};\n\nconst getEstimatesPackages = async (\n channel: string = 'WEB',\n estimates: TEstimate[],\n isIndividual: boolean = true,\n energies: EEnergyTypes[],\n): Promise<TGetPackageResponse | RequestErrors.RequestError> => {\n const payload = {\n channel,\n customerType: isIndividual ? 'INDIVIDUAL' : 'PROFESSIONAL',\n mode: 'ESTIMATE',\n estimates,\n seller: 'WEKIWI',\n };\n\n let res:\n | TGetPackageResponse\n | RequestErrors.RequestError = (await apiRequest({\n path: '/getPackages',\n method: 'POST',\n body: payload,\n isSubscription: true,\n }).toPromise()) as TGetPackageResponse | RequestErrors.RequestError;\n res = filterGetPackagesError(res, energies);\n return res;\n};\n\nconst getOffers = async (\n channel: string = 'WEB',\n contracts: TContract[],\n isIndividual: boolean,\n): Promise<TOffer[] | RequestErrors.RequestError> => {\n const payload = {\n channel,\n customerType: isIndividual ? 'INDIVIDUAL' : 'PROFESSIONAL',\n seller: 'WEKIWI',\n contracts,\n };\n const res = await apiRequest({\n path: '/getOffers',\n method: 'POST',\n body: payload,\n isSubscription: true,\n }).toPromise();\n if (!(res instanceof RequestErrors.RequestError)) {\n return _.get(res, 'offers', []) as TOffer[];\n }\n return res;\n};\n\nconst getOrder = async (\n channel: string = 'WEB',\n orderNumber: string,\n): Promise<TOrderResponse | RequestErrors.RequestError> => {\n const fn = async () => {\n const res = await apiRequest({\n path: '/getOrder',\n method: 'POST',\n body: {\n channel,\n seller: 'WEKIWI',\n orderNumber,\n },\n isSubscription: true,\n }).toPromise();\n if (!(res instanceof RequestErrors.RequestError)) {\n return res as TOrderResponse;\n }\n };\n return await handleRequest(fn, 'POST', 'getOrder', {\n orderNumber,\n });\n};\n\nconst getOrderStatus = async (\n channel: string = 'WEB',\n orderNumber: string,\n): Promise<TGetOrderStatusResponse | RequestErrors.RequestError> => {\n const fn = async () => {\n const res = (await apiRequest({\n path: '/getOrderStatus',\n method: 'POST',\n body: {\n channel,\n seller: 'WEKIWI',\n orderNumber,\n },\n isSubscription: true,\n }).toPromise()) as TGetOrderStatusResponse | RequestErrors.RequestError;\n return res;\n };\n return await handleRequest(fn, 'POST', 'getOrderStatus', {\n orderNumber,\n });\n};\n\nconst getSurveyPackages = async (\n channel: string = 'WEB',\n survey: TSurvey,\n isIndividual = true,\n): Promise<TGetPackageResponse | RequestErrors.RequestError> => {\n const payload = {\n channel,\n customerType: isIndividual ? 'INDIVIDUAL' : 'PROFESSIONAL',\n mode: 'SURVEY',\n seller: 'WEKIWI',\n survey,\n };\n\n let res:\n | TGetPackageResponse\n | RequestErrors.RequestError = (await apiRequest({\n path: '/getPackages',\n method: 'POST',\n body: payload,\n isSubscription: true,\n }).toPromise()) as TGetPackageResponse | RequestErrors.RequestError;\n res = filterGetPackagesError(res, survey.energyList || []);\n if (!(res instanceof RequestErrors.RequestError)) {\n const packages = _.get(res, 'packagesList', []);\n if (packages.length <= 0) {\n throw new RequestErrors.NoMatchingPackagesError(\n 'Could not fetch survey packages',\n );\n }\n }\n return res;\n};\n\nconst getProducts = async (\n channel: string = 'WEB',\n contracts: TContract[],\n customerType: ECustomerTypes,\n): Promise<TGetProductResponse | RequestErrors.RequestError> => {\n const fn = async () => {\n const res: TProduct[] = (await apiRequest({\n path: '/getProducts',\n method: 'POST',\n body: {\n channel,\n seller: 'WEKIWI',\n contracts: contracts.map(ctr => {\n const nextCtr = { ...ctr };\n delete nextCtr.installmentFrequency;\n return nextCtr;\n }),\n customerType,\n contextOfUse: 'MARKET',\n },\n isSubscription: true,\n }).toPromise()) as TProduct[];\n return res;\n };\n return await handleRequest(fn, 'POST', 'getProducts', {\n contracts,\n customerType,\n });\n};\n\nconst filterGetPackagesError = (\n res: TGetPackageResponse | RequestErrors.RequestError,\n energies: EEnergyTypes[],\n): TGetPackageResponse | RequestErrors.RequestError => {\n const hasElectricity: boolean = _.includes(\n energies,\n EEnergyTypes.ELECTRICTY,\n );\n const hasGas: boolean = _.includes(energies, EEnergyTypes.GAS);\n const packages = _.get(res, 'packagesList', []);\n const hasElectricityMatch =\n _.filter(packages, pkg => pkg.energy === 'EL').length > 0;\n const hasGasMatch =\n _.filter(packages, pkg => pkg.energy === 'NG').length > 0;\n const errMessage = _.get(res, 'message');\n if (!!errMessage) {\n return new RequestErrors.ExternalError(errMessage);\n } else if (\n Object.keys(res).length === 0 ||\n (!_.get(res, 'packagesList') && !_.get(res, 'contracts'))\n ) {\n return new RequestErrors.CompletePackagesError(\n 'Une erreur est survenue avec le serveur partenaire, veuillez remplir le questionnaire',\n );\n } else if (!_.get(res, 'packagesList')) {\n return new RequestErrors.NoPackageListError();\n } else if (!compareAllJsonFieldsInArray(_.get(res, 'contracts', []))) {\n return new RequestErrors.ExternalError(\n 'Les adresses des points de livraison (PDL) ne sont pas identiques. Veuillez vérifier que les adresses saisies correspondent exactement.',\n );\n } else if (packages.length <= 0) {\n return new RequestErrors.NoMatchingPackagesError();\n } else {\n const err: string[] = [];\n if (hasElectricity && !hasElectricityMatch) {\n err.push(Wording.Errors.noMatchingElectricityPackages);\n }\n if (hasGas && !hasGasMatch) {\n err.push(Wording.Errors.noMatchingGasPackages);\n }\n if (err.length > 0) {\n return new RequestErrors.NoMatchingPackagesError(err.join(' + '));\n }\n }\n return res;\n};\n\nfunction compareAllJsonFieldsInArray(arr: any) {\n if (Config.ENV === 'PREPRODUCTION') {\n return true;\n }\n if (arr.length < 2) return true;\n const reference = JSON.stringify(arr[0].deliveryPoint.address.postalCode);\n\n for (let i = 1; i < arr.length; i += 1) {\n console.log(`Adresse de l'élément ${i}:`, arr[i].deliveryPoint.address);\n if (\n JSON.stringify(arr[i].deliveryPoint.address.postalCode) !==\n reference\n ) {\n return false;\n }\n }\n\n return true;\n}\n\nconst paymentCB = async (\n channel: string = 'WEB',\n order: TOrder,\n): Promise<TPaymentCBResponse | RequestErrors.RequestError> => {\n const fn = async () => {\n const res = (await apiRequest({\n path: '/paymentCB',\n method: 'POST',\n body: {\n channel,\n seller: 'WEKIWI',\n order,\n },\n isSubscription: true,\n }).toPromise()) as TPaymentCBResponse | RequestErrors.RequestError;\n return res;\n };\n return await handleRequest(fn, 'POST', 'paymentCB', {\n order,\n });\n};\n\nconst saveOrder = async (\n channel: string = 'WEB',\n order: TOrder,\n): Promise<TSaveOrderResponse | RequestErrors.RequestError> => {\n const fn = async () => {\n const res: TSaveOrderResponse = (await apiRequest({\n path: '/saveOrder',\n method: 'POST',\n body: {\n channel,\n seller: 'WEKIWI',\n order,\n savingMode: ESavingModes.SEND_EMAIL_LINK,\n },\n isSubscription: true,\n }).toPromise()) as TSaveOrderResponse;\n return res;\n };\n return await handleRequest(fn, 'POST', 'saveOrder', {\n order,\n });\n};\n\nconst searchAppointmentTimeslot = async (\n date: Date,\n energy: EEnergyTypes,\n): Promise<ETimeslots[] | RequestErrors.RequestError> => {\n const fn = async () => {\n const day: number = date.getDate();\n const dayStr = `${day < 10 ? `0${day}` : day}`;\n const month: number = date.getMonth();\n const monthStr = `${month + 1 < 10 ? `0${month + 1}` : month + 1}`;\n const dateStr: string = `${date.getFullYear()}-${monthStr}-${dayStr}`;\n const res = await apiRequest({\n path: '/getAppointmentTimeslot',\n method: 'POST',\n body: {\n date: dateStr,\n energy,\n },\n isSubscription: true,\n }).toPromise();\n let timeslots: ETimeslots[] = _.get(res, 'timeslots');\n if (!!timeslots) {\n if (_.includes<ETimeslots>(timeslots, ETimeslots.NONE)) {\n timeslots = _.without<ETimeslots>(timeslots, ETimeslots.NONE);\n }\n return timeslots;\n }\n throw new RequestErrors.RequestError(\n _.get(res, 'message') || 'Service indisponible',\n );\n };\n return await handleRequest(fn, 'POST', 'getAppointmentTimeslot', {\n date,\n energy,\n });\n};\n\nconst signOrder = async (\n channel: string = 'WEB',\n order: TOrder,\n userId?: string,\n): Promise<TSignOrderResponse | RequestErrors.RequestError> => {\n const fn = async () => {\n const payload: any = {\n channel,\n seller: 'WEKIWI',\n order,\n };\n if (!!userId) payload.order.createdBy = userId;\n const res = await apiRequest<\n TSignOrderResponse | RequestErrors.RequestError\n >({\n path: '/signOrder',\n method: 'POST',\n body: { ...payload },\n isSubscription: true,\n }).toPromise();\n return res;\n };\n return await handleRequest(fn, 'POST', 'signOrder', {\n channel,\n order,\n userId,\n });\n};\n\nconst getCasesHistory = async (): Promise<\n TCasesExtractResponse | RequestErrors.RequestError\n> => {\n const date = moment()\n .subtract(1, 'M')\n .toISOString()\n .slice(0, 10);\n\n const res = await apiRequest<\n TCasesExtractResponse | RequestErrors.RequestError\n >({\n lambdaFunctionName: Config.FunctionNames.casesExtract,\n path: '/casesExtract',\n method: 'POST',\n body: {\n fromDate: date,\n offset: 0,\n limit: 10000,\n },\n isSubscription: true,\n }).toPromise();\n return res;\n};\n\nconst getNewAdditionalRates = async (payload: any) => {\n const payloadWithoutInstallmentFrequency = delete payload.contract\n .installmentFrequency;\n const res = await apiRequest<any | RequestErrors.RequestError>({\n lambdaFunctionName: Config.FunctionNames.getOffers,\n path: '/getOffers',\n method: 'POST',\n body: payloadWithoutInstallmentFrequency,\n isSubscription: true,\n }).toPromise();\n log('res: ', res);\n return res;\n};\n\nexport {\n checkSponsor,\n getCalendarAppointment,\n getCasesHistory,\n getDeliveryPointPackages,\n getPackDynamic,\n getEstimatesPackages,\n getNewAdditionalRates,\n getOffers,\n getOrder,\n getOrderStatus,\n getProducts,\n getRawDeliveryPointPackages,\n getSurveyPackages,\n paymentCB,\n saveOrder,\n searchAppointmentTimeslot,\n searchSiret,\n signOrder,\n};\n","import React, { Component, FC, useState } from 'react';\nimport _ from 'lodash';\nimport { Omit } from 'Types';\nimport { buildClassName as bcn, sleep } from '../../../../../utils/helpers';\nimport { CloseButton } from '../../../../../components';\nimport {\n EOrderStatuses,\n TOrder,\n TGetOrderStatusResponse,\n TPaymentCBResponse,\n TSignOrderResponse,\n EFirstPaymentCBStatuses,\n} from '../../../../../utils/network/types';\nimport { RequestError } from '../../../../../utils/network/errors';\nimport Success from './Success';\nimport Retry from './Retry';\nimport { LoadingSpinner } from '../../../../../libraries/withLoader';\nimport WordingConstant from '../../../../../utils/wording.json';\nimport StripeContainer from '../../../../StripeFormContainer/StripeFormContainer';\n\nconst Wording = WordingConstant.AdminSubscriptionContainer.PaymentIframeModal;\n\nenum Steps {\n BILLING = 0,\n PAYMENT = 1,\n RETRY_PAYMENT = 2,\n SUCCESS = 3,\n}\n\ntype PendingOrder = {\n data: TOrder;\n number: string;\n validation: TSignOrderResponse | null;\n};\ntype PendingPayment = TPaymentCBResponse;\n\ninterface IProps {\n orderReference: string | null;\n checkOrderStatus: (\n orderNumber: string,\n ) => Promise<TGetOrderStatusResponse | RequestError>;\n onClose: (\n validated: EFirstPaymentCBStatuses,\n error?: { title: string; text: string },\n ) => void;\n order: PendingOrder | null;\n previousOrder: TOrder | null;\n pay: (order: TOrder) => Promise<TPaymentCBResponse | RequestError>;\n setLoading: (loading: boolean) => void;\n}\n\ninterface IState {\n billingIframeSrc: string | null;\n firstBillingLock: boolean;\n firstPaymentLock: boolean;\n order: PendingOrder | null;\n payment: PendingPayment | null;\n paymentIframeSrc: string | null;\n steps: [Steps, Steps];\n stripe: Pick<TPaymentCBResponse, 'stripe'> | undefined;\n stripeErrorMessage: string;\n}\n\nconst initialState: IState = {\n billingIframeSrc: null,\n firstBillingLock: true,\n firstPaymentLock: true,\n order: null,\n payment: null,\n paymentIframeSrc: null,\n steps: [Steps.BILLING, Steps.BILLING],\n stripe: undefined,\n stripeErrorMessage: '',\n};\n\nconst baseClassName = 'payment-iframe-modal';\nconst iframeClassName = bcn([baseClassName, 'iframe']);\nconst iframeRegex: RegExp = /<iframe.*?src=\"(.*?)\"/;\n\nfunction parseIframeSrc(srcStr: string = ''): string {\n const src: RegExpExecArray | null = iframeRegex.exec(srcStr || '');\n return src ? src[1] : '';\n}\n\nclass PaymentIframeModal extends Component<IProps, IState> {\n constructor(props: IProps) {\n super(props);\n this.handleBillingOnLoad = this.handleBillingOnLoad.bind(this);\n this.handleCancel = this.handleCancel.bind(this);\n this.handleFinalize = this.handleFinalize.bind(this);\n this.handlePaymentOnLoad = this.handlePaymentOnLoad.bind(this);\n this.attemptPayment = this.attemptPayment.bind(this);\n this.handleSuccess = this.handleSuccess.bind(this);\n this.closeModalButton = this.closeModalButton.bind(this);\n this.state = { ...initialState };\n }\n componentDidMount() {\n const { order, previousOrder } = this.props;\n const { steps } = this.state;\n let target: PendingOrder | null = order;\n if (!target && !!previousOrder) {\n target = {\n data: previousOrder,\n number: _.get(previousOrder, 'orderReference', ''),\n validation: null,\n };\n if (!target.number) {\n console.error('Could not retrieve previous order number');\n return;\n }\n }\n if (!target) return;\n const requiresPayment =\n target.data.firstPaymentCBStatus ===\n EFirstPaymentCBStatuses.PENDING ||\n target.data.firstPaymentCBStatus ===\n EFirstPaymentCBStatuses.IN_FAILURE ||\n target.data.firstPaymentCBStatus ===\n EFirstPaymentCBStatuses.CANCELED;\n const hasCompletedOrder =\n target.data.orderStatus === EOrderStatuses.FINALIZED ||\n target.data.orderStatus === EOrderStatuses.FINALIZED_WITHOUT_DOC;\n const hasCompletedPayment =\n target.data.firstPaymentCBStatus ===\n EFirstPaymentCBStatuses.FINALIZED;\n const payOnly =\n hasCompletedOrder && requiresPayment && !hasCompletedPayment;\n if (hasCompletedPayment) {\n this.setState({ steps: [steps[1], Steps.SUCCESS] });\n } else if (payOnly) {\n this.setState(\n {\n order: target,\n steps: [Steps.PAYMENT, Steps.RETRY_PAYMENT],\n },\n () => {\n this.attemptPayment();\n },\n );\n } else {\n this.setState({\n billingIframeSrc: !!target\n ? parseIframeSrc(_.get(target, 'validation.iframe', ''))\n : null,\n order: target,\n });\n }\n }\n componentDidUpdate(prevProps: IProps) {\n const { order: prevOrder } = prevProps;\n const { order } = this.props;\n if (!_.isEqual(prevOrder, order)) {\n this.setState({\n billingIframeSrc: !!order\n ? parseIframeSrc(_.get(order, 'validation.iframe', ''))\n : null,\n order,\n });\n }\n }\n async attemptPayment() {\n this.setState({ payment: null, paymentIframeSrc: null });\n const { pay } = this.props;\n const { order, steps } = this.state;\n if (!order) {\n console.error('Cannot load payment: missing order data');\n this.setState({ steps: [steps[1], Steps.RETRY_PAYMENT] });\n return;\n }\n const res: TPaymentCBResponse | RequestError = await this.load(\n async () => {\n return await pay({\n ...order.data,\n externalReference: _.get(\n order,\n 'validation.orderExternalReference',\n '',\n ),\n orderReference: order.number,\n });\n },\n );\n if (res instanceof RequestError) {\n console.error('Could not load payment');\n this.setState({ steps: [steps[1], Steps.RETRY_PAYMENT] });\n return;\n }\n this.setState({\n payment: res,\n paymentIframeSrc: parseIframeSrc(res.iframe),\n steps: [steps[1], Steps.PAYMENT],\n });\n }\n async handleBillingOnLoad() {\n const { checkOrderStatus } = this.props;\n const { firstBillingLock, order } = this.state;\n if (!order) {\n this.handleCancel(EFirstPaymentCBStatuses.IN_FAILURE, {\n title: Wording.Errors.signatureTitle,\n text: Wording.Errors.missingOrderNumber,\n });\n return;\n } else if (firstBillingLock) {\n this.setState({ firstBillingLock: false });\n return;\n }\n const res: TGetOrderStatusResponse | RequestError = await this.load(\n async () => {\n return await checkOrderStatus(order.number);\n },\n );\n if (res instanceof RequestError) {\n this.handleCancel(EFirstPaymentCBStatuses.IN_FAILURE, {\n title: Wording.Errors.signatureTitle,\n text: Wording.Errors.orderStatusFetch,\n });\n return;\n }\n const isSuccess =\n res.orderStatus === EOrderStatuses.FINALIZED ||\n res.orderStatus === EOrderStatuses.FINALIZED_WITHOUT_DOC;\n const isIdle = res.orderStatus === EOrderStatuses.IN_PROGRESS;\n const isFailure =\n res.orderStatus === EOrderStatuses.CANCELED ||\n res.orderStatus === EOrderStatuses.IN_FAILURE;\n const requiresPayment =\n res.firstPaymentCBStatus === EFirstPaymentCBStatuses.PENDING;\n if (isSuccess && requiresPayment) {\n this.attemptPayment();\n } else if (isSuccess && !requiresPayment) {\n this.handleSuccess();\n } else if (!isIdle || isFailure) {\n this.handleCancel(res.firstPaymentCBStatus, {\n title: Wording.Errors.signatureTitle,\n text: Wording.Errors.signatureError,\n });\n } else if (!isIdle) {\n console.error('Signature: Unexpected status');\n this.handleCancel(res.firstPaymentCBStatus, {\n title: Wording.Errors.signatureTitle,\n text: Wording.Errors.unexpected,\n });\n }\n }\n handleCancel(\n paymentStatus: EFirstPaymentCBStatuses,\n error?: { title: string; text: string },\n ) {\n const { onClose } = this.props;\n onClose(paymentStatus, error);\n }\n handleFinalize() {\n const { onClose } = this.props;\n onClose(EFirstPaymentCBStatuses.PENDING);\n }\n async handlePaymentOnLoad(recursionCount: number = 0) {\n const { checkOrderStatus } = this.props;\n const { firstPaymentLock, order, steps } = this.state;\n if (!order) {\n this.handleCancel(EFirstPaymentCBStatuses.IN_FAILURE, {\n title: Wording.Errors.paymentTitle,\n text: Wording.Errors.missingOrderNumber,\n });\n return;\n } else if (firstPaymentLock) {\n this.setState({ firstPaymentLock: false });\n return;\n } else if (\n steps[1] === Steps.PAYMENT &&\n steps[0] === Steps.RETRY_PAYMENT\n ) {\n this.setState({ steps: [Steps.PAYMENT, Steps.PAYMENT] });\n return;\n }\n const res: TGetOrderStatusResponse | RequestError = await this.load(\n async () => {\n return await checkOrderStatus(order.number);\n },\n );\n if (res instanceof RequestError) {\n console.error('Could not get order status');\n return;\n }\n const status: EFirstPaymentCBStatuses | undefined = _.get(\n res,\n 'firstPaymentCBStatus',\n );\n if (status === EFirstPaymentCBStatuses.FINALIZED) {\n this.handleSuccess();\n } else if (status === EFirstPaymentCBStatuses.PENDING) {\n console.log('Order payment pending');\n } else if (status === EFirstPaymentCBStatuses.IN_FAILURE) {\n if (recursionCount < 2) {\n console.log('Order payment in progress');\n await sleep(1000);\n await this.handlePaymentOnLoad(recursionCount + 1);\n } else {\n this.handleCancel(status, {\n title: Wording.Errors.paymentTitle,\n text: Wording.Errors.paymentStatusRefresh,\n });\n }\n } else if (status) {\n this.setState({ steps: [steps[1], Steps.RETRY_PAYMENT] });\n } else {\n console.error('Payment: Unexpected status');\n this.handleCancel(status, {\n title: Wording.Errors.paymentTitle,\n text: Wording.Errors.unexpected,\n });\n }\n }\n async handleSuccess() {\n const { onClose } = this.props;\n const { steps } = this.state;\n this.setState({\n steps: [steps[1], Steps.SUCCESS],\n stripeErrorMessage: '',\n });\n await sleep(5000);\n onClose(EFirstPaymentCBStatuses.FINALIZED);\n }\n async load<T>(fn: () => Promise<T>): Promise<T> {\n const { setLoading } = this.props;\n setLoading(true);\n const res = await fn();\n setLoading(false);\n return res;\n }\n closeModalButton() {\n const { onClose } = this.props;\n if (this.state.steps[1] === Steps.SUCCESS) {\n onClose(EFirstPaymentCBStatuses.FINALIZED);\n } else {\n onClose(EFirstPaymentCBStatuses.PENDING);\n }\n }\n render() {\n const {\n billingIframeSrc,\n steps,\n payment,\n stripeErrorMessage,\n } = this.state;\n const currentStep = steps[1];\n const { orderReference } = this.props;\n return (\n <div className={baseClassName}>\n <CloseButton onClick={this.closeModalButton} />\n {currentStep === Steps.BILLING && (\n <iframe\n className={iframeClassName}\n title=\"payment-modal\"\n src={billingIframeSrc || ''}\n id=\"payment-modal\"\n onLoad={() => {\n this.handleBillingOnLoad();\n }}\n />\n )}\n {currentStep === Steps.PAYMENT && payment && payment.stripe && (\n <StripeContainer\n stripeInformations={payment.stripe}\n handleClose={() =>\n this.handleCancel(EFirstPaymentCBStatuses.PENDING)\n }\n onFormValidate={(isSuccess, errMsg) => {\n if (isSuccess) this.handleSuccess();\n else {\n this.setState({\n steps: [steps[1], Steps.RETRY_PAYMENT],\n stripeErrorMessage: errMsg || '',\n });\n }\n }}\n />\n )}\n {currentStep === Steps.RETRY_PAYMENT && (\n <Retry\n onFinalize={this.handleFinalize}\n onRetry={this.attemptPayment}\n ErrorMessage={stripeErrorMessage}\n />\n )}\n {currentStep === Steps.SUCCESS && (\n <Success orderReference={orderReference} />\n )}\n </div>\n );\n }\n}\n\ntype ILoaderProps = Omit<IProps, 'setLoading'>;\n\nconst PaymentWithLoader: FC<ILoaderProps> = (props: ILoaderProps) => {\n const [loading, setLoading] = useState(false);\n const toggleLoading = (toggled: boolean) => setLoading(toggled);\n return (\n <div className=\"payment-iframe\">\n {loading && (\n <div className=\"payment-loader\">\n <LoadingSpinner />\n </div>\n )}\n <PaymentIframeModal {...props} setLoading={toggleLoading} />\n </div>\n );\n};\n\nexport default PaymentWithLoader;\n","import React, { ChangeEvent, Component, Fragment } from 'react';\nimport _ from 'lodash';\nimport { SelectOption } from 'Types';\nimport {\n CustomButton,\n CustomInput,\n CustomRadio,\n CustomSelect,\n PostalCodeSelect,\n} from '../../../../../components';\nimport WordingConstant from '../../../../../utils/wording.json';\nimport { buildClassName as bcn } from '../../../../../utils/helpers';\nimport { toIsc as isc } from '../../../../../utils/text';\nimport {\n EHeatingTypes,\n EHousingTypes,\n ERateOptions,\n EResidenceTypes,\n TAddress,\n} from '../../../../../utils/network/types';\n\nconst Wording = WordingConstant.AdminSubscriptionContainer.CustomerFormModal;\nconst baseClassName = 'customer-survey-modal';\nconst buttonsClassName = 'buttons';\nconst modeToggleClassName = 'mode-toggle';\nconst rateRadiosClassName = 'rate-radios';\n\ninterface IProps {\n onCancel: () => void;\n recoverySurvey?: boolean;\n onValidation: (\n accomodationType: EResidenceTypes,\n area: number,\n address: TAddress,\n consumption: number,\n heatingType: EHeatingTypes,\n inhabitants: number,\n livingIn: EHousingTypes,\n rateOption: ERateOptions,\n ) => void;\n}\n\ninterface IState {\n accomodationType: SelectOption<EResidenceTypes> | null;\n area: SelectOption<number> | null;\n address: TAddress | null;\n consumption: string;\n heatingType: SelectOption<EHeatingTypes> | null;\n inhabitants: SelectOption<number> | null;\n livingIn: SelectOption<EHousingTypes> | null;\n rateOption: ERateOptions;\n}\n\nconst initialState: IState = {\n accomodationType: null,\n area: null,\n address: null,\n consumption: '',\n heatingType: null,\n inhabitants: null,\n livingIn: null,\n\n rateOption: ERateOptions.UNKNOWN,\n};\n\nconst accomodationOptions: Array<SelectOption<EResidenceTypes>> = [\n [Wording.accomodationTypes.primary, EResidenceTypes.PRINCIPAL],\n [Wording.accomodationTypes.secondary, EResidenceTypes.SECONDARY],\n].map((accomodation, i) => ({\n id: i,\n label: accomodation[0],\n value: accomodation[1] as EResidenceTypes,\n}));\nconst areaOptions: Array<SelectOption<number>> = [\n [0, 20],\n ..._.range(20, 200, 10).map(gap => [gap + 1, gap + 10]),\n].map((opt, i) => ({\n id: i,\n label: `${opt[0]} ${Wording.to} ${opt[1]}`,\n value: opt[1],\n}));\nconst heatingTypeOptions: Array<SelectOption<EHeatingTypes>> = [\n [Wording.heatingTypes.electricity, EHeatingTypes.ELECTRICITY],\n [Wording.heatingTypes.gas, EHeatingTypes.GAS],\n [Wording.heatingTypes.common, EHeatingTypes.COLLECTIVE],\n].map((opt, i) => ({\n id: i,\n label: opt[0],\n value: opt[1] as EHeatingTypes,\n}));\nconst inhabitantsOptions: Array<SelectOption<number>> = _.range(1, 11).map(\n (opt, i) => ({\n id: i,\n label: `${opt}`,\n value: opt,\n }),\n);\nconst livingInOptions: Array<SelectOption<EHousingTypes>> = [\n [Wording.livingInTypes.apartment, EHousingTypes.APPARTMENT],\n [Wording.livingInTypes.house, EHousingTypes.HOUSE],\n].map((opt, i) => ({\n id: i,\n label: opt[0],\n value: opt[1] as EHousingTypes,\n}));\n\nclass CustomerSurveyModal extends Component<IProps, IState> {\n constructor(props: IProps) {\n super(props);\n this.state = { ...initialState };\n this.handleCancel = this.handleCancel.bind(this);\n this.handleValidationClick = this.handleValidationClick.bind(this);\n this.handleConsumptionInput = this.handleConsumptionInput.bind(this);\n this.handleAccomodationTypeSelection = this.handleAccomodationTypeSelection.bind(\n this,\n );\n this.handleAreaSelection = this.handleAreaSelection.bind(this);\n this.handleHeatingTypeSelection = this.handleHeatingTypeSelection.bind(\n this,\n );\n this.handleInhabitantsSelection = this.handleInhabitantsSelection.bind(\n this,\n );\n this.handleLivingInSelection = this.handleLivingInSelection.bind(this);\n this.handlePostalCodeSelection = this.handlePostalCodeSelection.bind(\n this,\n );\n this.handleRateOptionSelection = this.handleRateOptionSelection.bind(\n this,\n );\n }\n handleCancel() {\n const { onCancel } = this.props;\n this.setState({ ...initialState });\n onCancel();\n }\n handleRateOptionSelection(rateOption: ERateOptions) {\n this.setState({ rateOption });\n }\n handleValidationClick() {\n const { onValidation } = this.props;\n if (this.hasValidInput()) {\n const state = this.state;\n try {\n onValidation(\n _.get(state, 'accomodationType.value', ''),\n parseInt(_.get(state, 'area.value', '0'), 10),\n _.get(state, 'address') as TAddress,\n parseInt(_.get(state, 'consumption', '0'), 10),\n _.get(state, 'heatingType.value', ''),\n parseInt(_.get(state, 'inhabitants.value', '0'), 10),\n _.get(state, 'livingIn.value', ''),\n _.get(state, 'rateOption') as ERateOptions,\n );\n } catch (err) {\n console.error(err);\n }\n }\n }\n handleConsumptionInput(e: ChangeEvent<HTMLInputElement>) {\n const consumption = _.get(e, 'target.value', '');\n this.setState({ consumption });\n }\n handleAccomodationTypeSelection(opt: SelectOption<EResidenceTypes>) {\n this.setState({ accomodationType: opt });\n }\n handleAreaSelection(opt: SelectOption<number>) {\n this.setState({ area: opt });\n }\n handleHeatingTypeSelection(opt: SelectOption<EHeatingTypes>) {\n this.setState({ heatingType: opt });\n }\n handleInhabitantsSelection(opt: SelectOption<number>) {\n this.setState({ inhabitants: opt });\n }\n handleLivingInSelection(opt: SelectOption<EHousingTypes>) {\n this.setState({ livingIn: opt });\n }\n handlePostalCodeSelection(address: TAddress) {\n const newAddress: TAddress = { ...this.state.address, ...address };\n this.setState({ address: newAddress });\n }\n\n hasValidInput() {\n const { recoverySurvey } = this.props;\n const {\n accomodationType,\n area,\n address,\n heatingType,\n inhabitants,\n livingIn,\n } = this.state;\n const inputs = [\n accomodationType,\n area,\n address,\n heatingType,\n inhabitants,\n livingIn,\n ];\n const validCount = _.filter(inputs, input => !_.isEmpty(input)).length;\n if (recoverySurvey) {\n const numberPath = _.get(address, 'number');\n const streetPath = _.get(address, 'street');\n return validCount && !!numberPath && !!streetPath;\n }\n return [...inputs].length === validCount;\n }\n render() {\n const { address, rateOption } = this.state;\n const { recoverySurvey } = this.props;\n const city = _.get(address, 'townName', '');\n const street = _.get(address, 'street', '');\n const numberStreet = _.get(address, 'number', '');\n const hasValidInput = this.hasValidInput();\n return (\n <div className={baseClassName}>\n <h3>{Wording.title}</h3>\n {recoverySurvey && (\n <>\n <CustomInput\n text={'Numéro'}\n type={'number'}\n minLength={1}\n value={numberStreet}\n onInputChange={event => {\n const newAddress = {\n ...(address as TAddress),\n number: event.target.value,\n };\n this.setState({ address: newAddress });\n }}\n />\n <CustomInput\n text={'Adresse'}\n value={street}\n onInputChange={event => {\n const newAddress = {\n ...(address as TAddress),\n street: event.target.value,\n };\n this.setState({ address: newAddress });\n }}\n />\n </>\n )}\n <PostalCodeSelect\n onSelection={this.handlePostalCodeSelection}\n text={Wording.postalCode}\n />\n <CustomInput\n disabled={true}\n isLocked={true}\n text={Wording.city}\n value={city}\n />\n <CustomSelect\n handleChangeSelect={this.handleLivingInSelection}\n options={livingInOptions}\n text={Wording.livingIn}\n />\n <CustomSelect\n handleChangeSelect={this.handleAccomodationTypeSelection}\n options={accomodationOptions}\n text={Wording.accomodationType}\n />\n <CustomSelect\n handleChangeSelect={this.handleAreaSelection}\n options={areaOptions}\n text={Wording.area}\n />\n <CustomSelect\n handleChangeSelect={this.handleInhabitantsSelection}\n options={inhabitantsOptions}\n text={Wording.inhabitants}\n />\n <CustomSelect\n handleChangeSelect={this.handleHeatingTypeSelection}\n options={heatingTypeOptions}\n text={Wording.heatingType}\n />\n <div className={bcn([baseClassName, rateRadiosClassName])}>\n <label>{isc(Wording.rateOptions.prompt)}</label>\n <CustomRadio\n checked={rateOption === ERateOptions.HIGH_LOW}\n handleCheck={() => {\n this.handleRateOptionSelection(\n ERateOptions.HIGH_LOW,\n );\n }}\n text={Wording.rateOptions.highLow}\n value={ERateOptions.HIGH_LOW}\n />\n <CustomRadio\n checked={rateOption === ERateOptions.TOTAL_HOUR}\n handleCheck={() => {\n this.handleRateOptionSelection(\n ERateOptions.TOTAL_HOUR,\n );\n }}\n text={Wording.rateOptions.totalHours}\n value={ERateOptions.TOTAL_HOUR}\n />\n <CustomRadio\n checked={rateOption === ERateOptions.UNKNOWN}\n handleCheck={() => {\n this.handleRateOptionSelection(\n ERateOptions.UNKNOWN,\n );\n }}\n text={Wording.rateOptions.unknown}\n value={ERateOptions.UNKNOWN}\n />\n </div>\n <div className={bcn([baseClassName, buttonsClassName])}>\n <CustomButton\n color={'gray'}\n onClick={this.handleCancel}\n title={Wording.cancel}\n />\n <CustomButton\n color={hasValidInput ? 'orange' : 'gray'}\n onClick={\n hasValidInput\n ? this.handleValidationClick\n : () => {}\n }\n title={Wording.validate}\n />\n </div>\n </div>\n );\n }\n}\n\nexport default CustomerSurveyModal;\n","import CustomerSurveyModal from './CustomerSurveyModal';\nexport default CustomerSurveyModal;\n","import React, { FC } from 'react';\nimport WordingConstant from '../../../../../utils/wording.json';\nimport Icon from '../../../../../assets/icons/ic-logo-wekiwi.svg';\n\nconst Wording =\n WordingConstant.AdminSubscriptionContainer.PaymentIframeModal.Success;\nconst baseClassName: string = 'success';\n\ninterface IProps {\n orderReference: string | null;\n}\n\nconst Success: FC<IProps> = ({ orderReference }) => {\n return (\n <div className={baseClassName}>\n <img src={Icon} />\n <span>{Wording.congratulations}</span>\n <span>{Wording.contract}</span>\n {orderReference !== null && (\n <div className=\"orderNumberDisplay\">\n {' '}\n Votre numéro de souscription a bien été créé :{' '}\n <strong>{orderReference}</strong>\n </div>\n )}\n </div>\n );\n};\n\nexport default Success;\n","import React, { FC } from 'react';\nimport { buildClassName as bcn } from '../../../../../utils/helpers';\nimport { CustomButton } from '../../../../../components';\nimport WordingConstant from '../../../../../utils/wording.json';\nimport { toColonHeading as tch } from '../../../../../utils/text';\nimport Icon from '../../../../../assets/icons/ic-logo-wekiwi.svg';\n\ninterface IProps {\n onFinalize: () => void;\n onRetry: () => void;\n ErrorMessage?: string;\n}\n\nconst Wording =\n WordingConstant.AdminSubscriptionContainer.PaymentIframeModal.Retry;\nconst baseClassName: string = 'retry';\nconst logoClassName: string = bcn([baseClassName, 'logo']);\nconst buttonsClassName: string = bcn([baseClassName, 'buttons']);\nconst finalizeClassName: string = bcn([buttonsClassName, 'finalize']);\n\nconst Retry: FC<IProps> = (props: IProps) => {\n const { onFinalize, onRetry, ErrorMessage } = props;\n return (\n <div className={baseClassName}>\n <div className={logoClassName}>\n <img src={Icon} />\n <span>{Wording.title}</span>\n </div>\n <span>{ErrorMessage || Wording.refused}</span>\n <p>{Wording.contract}</p>\n <p>{tch(Wording.options)}</p>\n <div className={buttonsClassName}>\n <div className={finalizeClassName}>\n <CustomButton\n color={'gray'}\n onClick={onFinalize}\n title={Wording.finalize}\n />\n <p>{Wording.callback}</p>\n </div>\n <CustomButton\n color={'orange'}\n onClick={onRetry}\n title={Wording.retry}\n />\n </div>\n </div>\n );\n};\n\nexport default Retry;\n","import React from 'react';\n\nimport { loadStripe } from '@stripe/stripe-js';\nimport { Elements } from '@stripe/react-stripe-js';\n\nimport { StripeForm } from '../../components';\nimport config from '../../utils/config';\n\nconst stripeProm = loadStripe(config.Stripe.publicKey || '');\n\ntype StripeContainerProps = {\n stripeInformations: {\n clientSecret: string;\n billName: string;\n amount: string;\n };\n onFormValidate: (sucess: boolean, errMsg?: string) => void;\n handleClose: () => void;\n};\n\nconst StripeContainer = ({\n stripeInformations,\n onFormValidate,\n handleClose,\n}: StripeContainerProps) => {\n if (!stripeInformations || !stripeInformations.clientSecret) {\n return <div>Stripe loaded with invalid argument</div>;\n }\n const { clientSecret, billName, amount } = stripeInformations;\n\n return (\n <Elements stripe={stripeProm} options={{ clientSecret }}>\n <StripeForm\n handleClose={handleClose}\n onFormValidate={onFormValidate}\n clientSecret={clientSecret}\n clientName={billName}\n amount={amount}\n />\n </Elements>\n );\n};\n\nexport default StripeContainer;\n","import PaymentIframeModal from './PaymentIframeModal';\nexport default PaymentIframeModal;\n","import React, { FC } from 'react';\nimport { CustomButton } from '../../../../../components';\nimport WordingConstant from '../../../../../utils/wording.json';\nimport { buildClassName as bcn } from '../../../../../utils/helpers';\n\ninterface IProps {\n onBack: () => void;\n onConfirm: () => void;\n}\n\nconst Wording = WordingConstant.AdminSubscriptionContainer.ResetModal;\nconst baseClassName = 'reset-modal';\nconst buttonsClassName = bcn([baseClassName, 'buttons']);\n\nconst ResetModal: FC<IProps> = (props: IProps) => {\n const { onBack, onConfirm } = props;\n return (\n <div className={baseClassName}>\n <span>{Wording.prompt}</span>\n <div className={buttonsClassName}>\n <CustomButton\n color={'gray'}\n onClick={onBack}\n title={Wording.back}\n />\n <CustomButton\n color={'orange'}\n onClick={() => {\n onConfirm();\n (document as any).location = window.location.href.split(\n '?',\n )[0];\n }}\n title={Wording.confirm}\n />\n </div>\n </div>\n );\n};\n\nexport default ResetModal;\n","import ResetModal from './ResetModal';\nexport default ResetModal;\n","import React, { ChangeEvent, Component } from 'react';\nimport _ from 'lodash';\nimport {\n AddressSelect,\n CoordsInputs,\n CustomDate,\n CustomInput,\n CustomRadio,\n CustomSelect,\n Group,\n PostalCodeSelect,\n} from '../../../../../components';\nimport WordingConstant from '../../../../../utils/wording.json';\nimport {\n buildClassName as bcn,\n formatFirstNameString,\n formatLastNameString,\n formatSIRETString,\n formatPhoneNumberString,\n getFormattedDateToBackEnd,\n isValidName,\n isValidEmail,\n isValidPhone,\n isValidString,\n isValidBirthDate,\n isValidBirthDatePro,\n isLimitedAuthorization,\n isEmptySelectOption,\n parseQueryParams,\n getAPEFromObject,\n} from '../../../../../utils/helpers';\nimport LegalStatuses from '../../../../../assets/legal_statuses.json';\nimport {\n ECivilities,\n ECompanyTypes,\n TAddress,\n TCustomerContact,\n} from '../../../../../utils/network/types';\nimport SearchService from '../../../../../utils/search';\nimport { RequestError } from '../../../../../utils/network/errors';\nimport { SelectOption, TSchemaProps } from 'Types';\nimport Data from './Data';\nimport { setState } from '../../../../../utils/reactHelpers';\n\nimport countries from '../../../../../utils/countries.json';\n\nimport accents from 'remove-accents';\n\ninterface IProps {\n initialParams?: Data;\n isIndividual: boolean;\n onIsIndividualToggle: (is: boolean) => void;\n onValidationStatusChange: (\n validated: boolean,\n customer: TCustomerContact,\n ) => void;\n searchSiret: (value: string) => Promise<any | null>;\n groupList: string[];\n schemaProps: TSchemaProps;\n handleGroupSelection: (group: SelectOption<string>) => void;\n}\n\ninterface IState {\n firstNameValue: string;\n lastNameValue: string;\n birthDatePick: Date | undefined;\n birthDatePickPro: Date | undefined;\n businessNameValue: string;\n SIRETValue: string;\n mailAddressValue: string;\n phoneNumberValue: string;\n identicalAddressToggleState: boolean;\n addressAddressValue: string;\n address: TAddress | null;\n firstNameError: string;\n lastNameError: string;\n birthDateError: string;\n birthDateErrorPro: string;\n businessNameError: string;\n SIRETError: string;\n mailAddressError: string;\n phoneNumberError: string;\n addressAddressError: string;\n addressError: string;\n civilStatusSelection: ECivilities | null;\n legalStatusSelection: SelectOption<ECompanyTypes>;\n groupSelection: string | SelectOption<any>;\n APE: string;\n defaultGroup: string;\n groupSelected: string;\n groupError: string;\n birthTownPostalCode: string;\n birthTownTownName: string;\n birthTownCountry: string;\n}\n\nconst Wording = WordingConstant.AdminSubscriptionContainer.ClientData;\nconst baseClassName = 'client-data-section';\nconst mainClassName = 'main';\nconst legalStatuses: Array<SelectOption<ECompanyTypes>> = _.map(\n LegalStatuses as Array<{ code: ECompanyTypes; nom: string }>,\n (status, i) => {\n return {\n id: `${i}`,\n label: `${status.code} - ${status.nom}`,\n value: status.code,\n };\n },\n);\nconst inputRefreshDelay = 500;\nconst validationDelay = 1000;\nconst birthDateText: string = `${Wording.inputs.birthDate}`;\nconst businessNameText: string = `${Wording.inputs.businessName}`;\nconst legalStatusText: string = `${Wording.inputs.legalStatus}`;\nconst SIRETText: string = `${Wording.inputs.SIRET}`;\nconst mailAddressText: string = `${Wording.inputs.mailAddress}`;\nconst phoneNumberText: string = `${Wording.inputs.phoneNumber}`;\n\nfunction parseAdressNumber(addressStr: string): string {\n const reg = /^[0-9]+ /;\n const match: string = _.get(reg.exec(addressStr), '0', '');\n return match;\n}\n\nfunction hasError(err: string): boolean {\n return err.replace(/[\\s]/g, '').length === 0;\n}\n\nconst defaultBirthTown = {\n country: '',\n netArea: '',\n number: '',\n postalCode: '',\n street: '',\n townName: '',\n};\n\nclass ClientDataSection extends Component<IProps, IState> {\n private pendingValidation = null;\n constructor(props: IProps) {\n super(props);\n\n (this as any).searchService = new SearchService().setRaw(true);\n\n const { schemaProps } = this.props;\n this.state = {\n firstNameValue: '',\n lastNameValue: '',\n birthDatePick: undefined,\n birthDatePickPro: undefined,\n businessNameValue: '',\n SIRETValue: '',\n mailAddressValue: '',\n phoneNumberValue: '',\n identicalAddressToggleState: true,\n addressAddressValue: '',\n address: null,\n firstNameError: '',\n lastNameError: '',\n birthDateError: '',\n birthDateErrorPro: '',\n businessNameError: '',\n groupError: '',\n SIRETError: '',\n mailAddressError: '',\n phoneNumberError: '',\n addressAddressError: '',\n addressError: '',\n civilStatusSelection: ECivilities.MR,\n legalStatusSelection: legalStatuses[0],\n APE: '',\n defaultGroup: '',\n groupSelected: '',\n birthTownCountry: '',\n birthTownPostalCode: '',\n birthTownTownName: '',\n\n groupSelection: isLimitedAuthorization(schemaProps)\n ? {\n id: 0,\n label: schemaProps.currentGroup,\n value: schemaProps.currentGroup,\n }\n : '',\n };\n\n this.handleBirthTownSelection = this.handleBirthTownSelection.bind(\n this,\n );\n this.handleCoordsInput = this.handleCoordsInput.bind(this);\n this.handleLegalStatusSelection = this.handleLegalStatusSelection.bind(\n this,\n );\n this.handleGroupSelection = this.handleGroupSelection.bind(this);\n this.handlePostalCodeSelection = this.handlePostalCodeSelection.bind(\n this,\n );\n this.handleBirthDatePick = this.handleBirthDatePick.bind(this);\n this.handleBirthDatePickPro = this.handleBirthDatePickPro.bind(this);\n this.handleIdenticalAddressToggle = this.handleIdenticalAddressToggle.bind(\n this,\n );\n this.handleBusinessNameInput = this.handleBusinessNameInput.bind(this);\n this.handleSIRETInput = this.handleSIRETInput.bind(this);\n this.handleMailAddressInput = this.handleMailAddressInput.bind(this);\n this.handlePhoneNumberInput = this.handlePhoneNumberInput.bind(this);\n this.handleAddressInput = this.handleAddressInput.bind(this);\n this.handleBusinessNameChange = this.handleBusinessNameChange.bind(\n this,\n );\n this.handleSIRETChange = this.handleSIRETChange.bind(this);\n this.handleMailAddressChange = this.handleMailAddressChange.bind(this);\n this.handlePhoneNumberChange = this.handlePhoneNumberChange.bind(this);\n this.handleAddressChange = this.handleAddressChange.bind(this);\n this.hasValidInput = this.hasValidInput.bind(this);\n this.handleFirstNameError = _.debounce(\n this.handleFirstNameError.bind(this),\n inputRefreshDelay,\n );\n this.handleLastNameError = _.debounce(\n this.handleLastNameError.bind(this),\n inputRefreshDelay,\n );\n /*this.handleGroupError = _.debounce(\n this.handleGroupError.bind(this),\n inputRefreshDelay\n )*/\n this.handleBusinessNameError = _.debounce(\n this.handleBusinessNameError.bind(this),\n inputRefreshDelay,\n );\n this.handleSIRETError = _.debounce(\n this.handleSIRETError.bind(this),\n inputRefreshDelay,\n ) as any;\n this.handleMailAddressError = _.debounce(\n this.handleMailAddressError.bind(this),\n inputRefreshDelay,\n );\n this.handlePhoneNumberError = _.debounce(\n this.handlePhoneNumberError.bind(this),\n inputRefreshDelay,\n );\n this.handleAddressError = _.debounce(\n this.handleAddressError.bind(this),\n inputRefreshDelay,\n );\n this.validate = _.throttle(this.validate, validationDelay) as any;\n }\n componentDidMount() {\n this.init();\n\n this.initWithUrl();\n }\n\n componentWillUnmount = () => {\n (this as any).searchService.unsubscribe();\n };\n\n componentDidUpdate(prevProps: IProps, prevState: IState) {\n const { initialParams } = this.props;\n\n if (!_.isEqual(JSON.stringify(prevState), JSON.stringify(this.state))) {\n this.validate();\n }\n }\n\n async initWithUrl() {\n const { handleGroupSelection, groupList, searchSiret } = this.props;\n const { defaultGroup, groupSelection } = this.state;\n const params = parseQueryParams(\n document.location,\n window.location.host,\n window.location.protocol,\n );\n\n const checkData = (dt: number | string | undefined) =>\n !!dt ? dt.toString() : '';\n\n const channel = params.get('channel');\n\n const civility = params.get('civility');\n const firstName = params.get('firstName');\n const lastName = params.get('lastName');\n const email = params.get('email');\n const phone = params.get('phone');\n const birthdate = params.get('birthdate');\n\n const identificationNumber = params.get('identificationNumber');\n const activityCode = params.get('activityCode');\n const companyName = params.get('companyName');\n const companyType = params.get('companyType');\n\n const birthCountry = params.get('birthCountry');\n const birthPostalCode = params.get('birthPostalCode');\n const birthTown = params.get('birthTown');\n\n const prepareControlledObject: {\n defaultGroup: string;\n groupSelection: string | SelectOption<any>;\n APE: string;\n birthTownTownName: string;\n } = {\n birthTownTownName: checkData(birthTown),\n APE: checkData(activityCode),\n defaultGroup,\n groupSelection,\n };\n\n if (channel && groupList.includes('channel')) {\n prepareControlledObject.defaultGroup = channel.toString();\n\n prepareControlledObject.groupSelection = {\n id: 0,\n label: channel as string,\n value: channel as string,\n };\n }\n\n // call search siret if activity code is empty\n if (!!identificationNumber && !activityCode) {\n const value = formatSIRETString(identificationNumber.toString());\n let res: any;\n if (value.length === 14) {\n res = await searchSiret(value);\n this.handleSIRETError(res);\n }\n\n prepareControlledObject.APE = getAPEFromObject(res);\n }\n\n // call getTown if birthTown is undefined\n if (\n !!birthCountry &&\n birthCountry.toString().toUpperCase() === 'FRANCE' &&\n !!birthPostalCode &&\n !birthTown\n ) {\n const res = await (this as any).searchService\n .doSearch(birthPostalCode.toString())\n .toPromise();\n\n if (res) {\n const obj = res.find(\n ({ postalCode }: any) =>\n postalCode === birthPostalCode.toString(),\n );\n prepareControlledObject.birthTownTownName = obj\n ? obj.townName\n : '';\n }\n }\n\n if (!!channel || !!firstName || !!lastName || !!email) {\n await setState(this, {\n SIRETValue: checkData(identificationNumber),\n firstNameValue: checkData(firstName),\n civilStatusSelection: civility as ECivilities,\n lastNameValue: checkData(lastName),\n mailAddressValue: checkData(email),\n phoneNumberValue:\n String(phone)[0] !== '0' && phone !== ''\n ? `0${phone}`\n : String(phone) || '',\n\n birthDatePick: birthdate ? new Date(birthdate) : undefined,\n birthDatePickPro: birthdate ? new Date(birthdate) : undefined,\n businessNameValue: checkData(companyName),\n legalStatusSelection:\n _.find(\n legalStatuses,\n (status: SelectOption<ECompanyTypes>) => {\n return companyType === status.value;\n },\n ) || legalStatuses[0],\n birthTownCountry: checkData(birthCountry).toUpperCase(),\n birthTownPostalCode: checkData(birthPostalCode),\n\n ...prepareControlledObject,\n });\n\n if (!!channel) {\n handleGroupSelection({\n id: 0,\n label: channel as string,\n value: channel as string,\n });\n }\n }\n }\n\n async init() {\n const { initialParams, handleGroupSelection, schemaProps } = this.props;\n if (!!initialParams) {\n await setState(this, {\n identicalAddressToggleState: !initialParams.address,\n });\n await setState(this, {\n firstNameValue: initialParams.firstNameValue,\n lastNameValue: initialParams.lastNameValue,\n birthDatePick: initialParams.birthDatePick,\n birthDatePickPro: initialParams.birthDatePickPro,\n businessNameValue: initialParams.businessNameValue || '',\n SIRETValue: initialParams.SIRETValue || '',\n mailAddressValue: initialParams.mailAddressValue,\n phoneNumberValue: initialParams.phoneNumberValue,\n identicalAddressToggleState:\n initialParams.identicalAddressToggleState,\n addressAddressValue: initialParams.addressAddressValue,\n address: initialParams.address,\n civilStatusSelection: initialParams.civilStatus,\n legalStatusSelection:\n _.find(\n legalStatuses,\n (status: SelectOption<ECompanyTypes>) => {\n return initialParams.legalStatus === status.value;\n },\n ) || legalStatuses[0],\n APE: initialParams.APE || '',\n defaultGroup: initialParams.defaultGroup || '',\n groupSelected: this.state.groupSelected || '',\n birthTownCountry:\n (initialParams.birthTown &&\n initialParams.birthTown.country) ||\n '',\n birthTownTownName:\n (initialParams.birthTown &&\n initialParams.birthTown.townName) ||\n '',\n birthTownPostalCode:\n initialParams.birthTown &&\n initialParams.birthTown.postalCode\n ? initialParams.birthTown.postalCode.toString()\n : '',\n groupSelection: initialParams.defaultGroup\n ? ({\n id: 0,\n label: initialParams.defaultGroup,\n value: initialParams.defaultGroup,\n } as SelectOption<string>)\n : '',\n });\n\n if (initialParams.defaultGroup !== '') {\n handleGroupSelection({\n id: 0,\n label: initialParams.defaultGroup,\n value: initialParams.defaultGroup,\n });\n }\n }\n\n if (isLimitedAuthorization(schemaProps)) {\n handleGroupSelection({\n id: 0,\n label: schemaProps.currentGroup,\n value: schemaProps.currentGroup,\n });\n }\n }\n getFirstNameError(value: string): string {\n let error = '';\n if (!isValidString(value)) error = Wording.errors.emptyField;\n else if (!isValidName(value, true)) {\n error = Wording.errors.firstNameValidity;\n }\n return error;\n }\n getLastNameError(value: string): string {\n let error = '';\n if (!isValidString(value)) error = Wording.errors.emptyField;\n else if (!isValidName(value, true)) {\n error = Wording.errors.lastNameValidity;\n }\n return error;\n }\n getBirthDateError(date: Date | undefined): string {\n let error = '';\n if (!isValidBirthDate(date)) error = Wording.errors.birthDateValidity;\n if (!isValidBirthDate(date)) {\n error = Wording.errors.birthConditionValidity;\n }\n return error;\n }\n getBirthDateErrorPro(date: Date | undefined): string {\n let error = '';\n if (!isValidBirthDatePro(date)) error = Wording.errors.birthDateValidity;\n if (!isValidBirthDatePro(date)) {\n error = Wording.errors.birthConditionValidity;\n }\n return error;\n }\n getBusinessNameError(value: string): string {\n let error = '';\n if (!isValidString(value)) error = Wording.errors.emptyField;\n return error;\n }\n\n async getSIRETError(res: any, value: string): Promise<string> {\n let error = '';\n if (!isValidString(value)) {\n error = Wording.errors.emptyField;\n }\n if (res instanceof RequestError) {\n error = Wording.errors.SIRETValidity;\n }\n return error;\n }\n getMailAddressError(value: string): string {\n let error = '';\n if (!isValidString(value)) {\n error = Wording.errors.emptyField;\n }\n\n else if (!isValidEmail(value)) {\n error = Wording.errors.mailAddressValidity;\n }\n return error;\n }\n\n getGroupError(value: string | SelectOption<any>): string {\n let error = '';\n if (!isEmptySelectOption(value)) {\n error = Wording.errors.groupValidity;\n }\n return error;\n }\n\n getPhoneNumberError(value: string): string {\n let error = '';\n if (!isValidString(value)) error = Wording.errors.emptyField;\n else if (!isValidPhone(value)) {\n error = Wording.errors.phoneNumberValidity;\n }\n return error;\n }\n getAddressError(value: string): string {\n let error = '';\n if (value.length <= 0) error = Wording.errors.addressValidity;\n return error;\n }\n handleLegalStatusSelection(status: SelectOption<ECompanyTypes>) {\n this.setState({\n legalStatusSelection: status,\n });\n }\n handleGroupSelection(group: SelectOption<any>) {\n this.setState({\n groupSelection: group,\n groupError: this.getGroupError(group),\n });\n }\n handlePostalCodeSelection(address: TAddress) {\n this.setState({ address });\n }\n\n handleBirthTownSelection(address: TAddress) {\n this.setState({\n birthTownTownName: address.townName || '',\n birthTownPostalCode: address.postalCode\n ? address.postalCode.toString()\n : '',\n birthTownCountry: 'FRANCE',\n });\n }\n handleBirthDatePick(date: Date | any) {\n if (date instanceof Date) {\n this.setState({\n birthDatePick: date,\n birthDateError: this.getBirthDateError(date),\n });\n }\n }\n handleBirthDatePickPro(date: Date | any) {\n if (date instanceof Date) {\n this.setState({\n birthDatePick: date,\n birthDateError: this.getBirthDateErrorPro(date),\n });\n }\n }\n handleIdenticalAddressToggle(toggled: boolean) {\n this.setState({\n identicalAddressToggleState: !!toggled,\n });\n }\n handleBusinessNameInput(e: ChangeEvent<HTMLInputElement>) {\n const value = e.target.value;\n this.handleBusinessNameChange(value);\n this.handleBusinessNameError(value);\n }\n async handleSIRETInput(e: ChangeEvent<HTMLInputElement>) {\n const { searchSiret } = this.props;\n const { SIRETValue } = this.state;\n const value = formatSIRETString(e.target.value);\n this.handleSIRETError(value);\n let res: any;\n if (value.length === 14 && value !== SIRETValue) {\n res = await searchSiret(value);\n this.handleSIRETError(res);\n }\n\n this.handleSIRETChange(value, getAPEFromObject(res));\n }\n handleMailAddressInput(e: ChangeEvent<HTMLInputElement>) {\n const value = accents.remove(e.target.value);\n this.handleMailAddressChange(value);\n this.handleMailAddressError(value);\n }\n handlePhoneNumberInput(e: ChangeEvent<HTMLInputElement>) {\n const value = formatPhoneNumberString(e.target.value);\n this.handlePhoneNumberChange(value);\n this.handlePhoneNumberError(value);\n }\n handleAddressInput(value: string) {\n this.handleAddressChange(value);\n this.handleAddressError(value);\n }\n handleCoordsInput(values: {\n civility: ECivilities | null;\n firstName: string;\n lastName: string;\n }) {\n const firstName: string = formatFirstNameString(values.firstName);\n const lastName: string = formatLastNameString(values.lastName);\n this.handleFirstNameError(firstName);\n this.handleLastNameError(lastName);\n this.setState({\n civilStatusSelection: values.civility,\n firstNameValue: firstName,\n lastNameValue: lastName,\n });\n }\n handleBusinessNameChange(value: string) {\n this.setState({ businessNameValue: value });\n }\n handleSIRETChange(value: string, ape: string) {\n this.setState({ SIRETValue: value, APE: ape });\n }\n handleMailAddressChange(value: string) {\n this.setState({ mailAddressValue: value });\n }\n handlePhoneNumberChange(value: string) {\n this.setState({ phoneNumberValue: value });\n }\n handleAddressChange(value: string) {\n this.setState({ addressAddressValue: value });\n }\n handleFirstNameError(value: string) {\n this.setState({ firstNameError: this.getFirstNameError(value) });\n }\n\n handleLastNameError(value: string) {\n this.setState({ lastNameError: this.getLastNameError(value) });\n }\n\n handleBusinessNameError(value: string) {\n this.setState({ businessNameError: this.getBusinessNameError(value) });\n }\n async handleSIRETError(value: string, force?: boolean) {\n const SIRETError = await this.getSIRETError(value, value);\n this.setState({ SIRETError });\n }\n handleMailAddressError(value: string) {\n this.setState({ mailAddressError: this.getMailAddressError(value) });\n }\n handlePhoneNumberError(value: string) {\n this.setState({ phoneNumberError: this.getPhoneNumberError(value) });\n }\n handleAddressError(value: string) {\n this.setState({ addressAddressError: this.getAddressError(value) });\n }\n\n handleSetForeignData = (country: string) => {\n this.setState({\n birthTownCountry: country,\n });\n };\n\n handleBirthTownName = (e: React.ChangeEvent<HTMLInputElement>) => {\n const {\n currentTarget: { value },\n } = e;\n\n this.setState({\n birthTownTownName: value,\n });\n };\n\n handleChangeCountryBirth = (obj: any) => {\n const { birthTownPostalCode, birthTownTownName } = this.state;\n const newCountry = obj.value.toUpperCase();\n let newPostalCOde = birthTownPostalCode;\n let newTownName = birthTownTownName;\n\n if (obj.value !== 'FRANCE') {\n newPostalCOde = '';\n newTownName = '';\n }\n\n this.setState({\n birthTownCountry: newCountry,\n birthTownTownName: newTownName,\n birthTownPostalCode: newPostalCOde,\n });\n };\n async hasValidInput(): Promise<boolean> {\n const { isIndividual } = this.props;\n const {\n firstNameValue,\n lastNameValue,\n birthDatePick,\n birthDatePickPro,\n businessNameValue,\n mailAddressValue,\n phoneNumberValue,\n addressAddressValue,\n address,\n identicalAddressToggleState: hasIdenticalAddress,\n SIRETError,\n groupSelection,\n birthTownCountry,\n birthTownPostalCode,\n birthTownTownName,\n SIRETValue,\n } = this.state;\n\n const birthTownCheck =\n birthTownCountry !== '' && birthTownTownName !== '';\n\n let isValidForm =\n hasError(this.getFirstNameError(firstNameValue)) &&\n hasError(this.getLastNameError(lastNameValue)) &&\n hasError(this.getBirthDateError(birthDatePick)) &&\n hasError(this.getBirthDateErrorPro(birthDatePick)) &&\n hasError(this.getMailAddressError(mailAddressValue)) &&\n hasError(this.getPhoneNumberError(phoneNumberValue)) &&\n hasError(this.getGroupError(groupSelection)) &&\n birthTownCheck;\n\n if (!isIndividual) {\n isValidForm =\n isValidForm &&\n hasError(this.getBusinessNameError(businessNameValue)) &&\n //hasError(this.getSIRETError(SIRETValue)) &&\n !SIRETError;\n }\n if (!hasIdenticalAddress) {\n isValidForm =\n isValidForm &&\n hasError(this.getAddressError(addressAddressValue)); // &&\n this.validatePostalCode(address);\n }\n return isValidForm;\n }\n async validate() {\n const { isIndividual, onValidationStatusChange } = this.props;\n const {\n firstNameValue,\n lastNameValue,\n birthDatePick,\n businessNameValue,\n SIRETValue,\n mailAddressValue,\n phoneNumberValue,\n identicalAddressToggleState,\n addressAddressValue,\n address,\n civilStatusSelection,\n legalStatusSelection,\n APE,\n groupSelected,\n birthTownTownName,\n birthTownPostalCode,\n birthTownCountry,\n } = this.state;\n const isValid = await this.hasValidInput();\n let customer: any = {\n civility: civilStatusSelection,\n companyName: businessNameValue,\n email: mailAddressValue,\n firstName: firstNameValue,\n lastName: lastNameValue,\n phone: phoneNumberValue,\n birthTown: {\n ...defaultBirthTown,\n townName: birthTownTownName,\n country: birthTownCountry,\n postalCode: birthTownPostalCode,\n },\n };\n if (birthDatePick instanceof Date) {\n customer.birthdate = getFormattedDateToBackEnd(birthDatePick);\n }\n\n if (!isIndividual) {\n if (!!SIRETValue && !!APE) {\n customer = {\n ...customer,\n companyName: businessNameValue,\n companyType: legalStatusSelection.value,\n identificationNumber: SIRETValue,\n activityCode: APE,\n };\n }\n }\n\n onValidationStatusChange(isValid, customer as TCustomerContact);\n }\n validatePostalCode(address: TAddress | null): boolean {\n return address !== null;\n }\n render() {\n const {\n initialParams,\n isIndividual,\n onIsIndividualToggle,\n groupList,\n handleGroupSelection,\n } = this.props;\n const {\n firstNameValue,\n lastNameValue,\n businessNameValue,\n SIRETValue,\n mailAddressValue,\n phoneNumberValue,\n identicalAddressToggleState,\n addressAddressValue,\n address,\n firstNameError,\n lastNameError,\n businessNameError,\n SIRETError,\n mailAddressError,\n phoneNumberError,\n addressAddressError,\n addressError,\n birthDatePick,\n birthDatePickPro,\n birthDateError,\n birthDateErrorPro,\n civilStatusSelection,\n legalStatusSelection,\n APE,\n groupSelected,\n groupError,\n birthTownCountry,\n birthTownPostalCode,\n birthTownTownName,\n } = this.state;\n const coordsInputsErrors = {\n firstName: firstNameError,\n lastName: lastNameError,\n };\n const coordsInputsValues = {\n civility: civilStatusSelection,\n firstName: firstNameValue,\n lastName: lastNameValue,\n };\n\n const countryIsFrance = birthTownCountry === 'FRANCE';\n\n return (\n <section className={bcn([baseClassName])}>\n <div className={bcn([baseClassName, 'select-group'])}>\n <Group\n value={this.state.groupSelection}\n schemaProps={this.props.schemaProps}\n options={_.map(\n groupList,\n (group: string, id: number) => ({\n id,\n label: group,\n value: group,\n }),\n )}\n handleChangeSelect={(group: SelectOption<string>) => {\n this.handleGroupSelection(group);\n handleGroupSelection(group);\n }}\n text={Wording.group}\n defaultValue={this.state.defaultGroup}\n error={groupError}\n />\n </div>\n\n <div className={bcn([baseClassName, 'radio-buttons'])}>\n <CustomRadio\n text={Wording.business}\n value={'pro'}\n id={'pro'}\n checked={!isIndividual}\n handleCheck={() => {\n onIsIndividualToggle(false);\n }}\n />\n <CustomRadio\n text={Wording.individual}\n value={'ind'}\n id={'ind'}\n checked={isIndividual}\n handleCheck={() => {\n onIsIndividualToggle(true);\n }}\n />\n </div>\n <h2>{Wording.title}</h2>\n <div className={bcn([baseClassName, mainClassName])}>\n <div\n className={bcn([\n baseClassName,\n mainClassName,\n `input-grid-${isIndividual ? 'ind' : 'pro'}`,\n ])}\n >\n <CoordsInputs\n errors={coordsInputsErrors}\n onInputChange={this.handleCoordsInput}\n values={coordsInputsValues}\n />\n <div\n className={bcn([\n baseClassName,\n mainClassName,\n `input-grid-${isIndividual ? 'ind' : 'pro'}`,\n 'date-picker',\n ])}\n >\n <label>{birthDateText}</label>\n {isIndividual ? (\n <CustomDate\n error={birthDateError}\n onDateChange={this.handleBirthDatePick}\n value={birthDatePick}\n />\n ) : (\n <CustomDate\n error={birthDateError}\n onDateChange={this.handleBirthDatePickPro}\n value={birthDatePickPro}\n />\n )}\n </div>\n\n <div\n className={bcn([\n baseClassName,\n mainClassName,\n `input-grid-${isIndividual ? 'ind' : 'pro'}`,\n 'address-foreign',\n ])}\n >\n <CustomSelect\n options={countries.map(vl => ({\n id: vl.code,\n label: `${vl.name}`,\n value: vl.name,\n }))}\n handleChangeSelect={\n this.handleChangeCountryBirth\n }\n text={Wording.inputs.countryBirth}\n placeholder=\" \"\n value={{\n value: birthTownCountry,\n label: birthTownCountry,\n }}\n />\n </div>\n\n {countryIsFrance && (\n <div\n className={bcn([\n baseClassName,\n mainClassName,\n `input-grid-${\n isIndividual ? 'ind' : 'pro'\n }`,\n 'postal-code',\n ])}\n >\n <PostalCodeSelect\n onSelection={(birthTown: TAddress) => {\n this.handleBirthTownSelection(\n birthTown,\n );\n }}\n initialAddress={\n birthTownPostalCode !== ''\n ? {\n postalCode: Number(\n birthTownPostalCode,\n ),\n number: '',\n street: '',\n townName: birthTownTownName,\n }\n : undefined\n }\n text=\"Code postal\"\n />\n </div>\n )}\n\n <CustomInput\n text={Wording.inputs.birthPlace}\n isLocked={countryIsFrance}\n onInputChange={this.handleBirthTownName}\n value={birthTownTownName}\n />\n\n {!isIndividual && (\n <CustomInput\n error={businessNameError}\n onInputChange={this.handleBusinessNameInput}\n text={businessNameText}\n value={businessNameValue}\n isLocked={false}\n />\n )}\n {!isIndividual && (\n <CustomSelect\n id=\"legal_status\"\n defaultValue={legalStatusSelection.label}\n options={legalStatuses}\n handleChangeSelect={(\n status: SelectOption<ECompanyTypes>,\n ) => {\n this.handleLegalStatusSelection(status);\n }}\n value={legalStatusSelection}\n text={Wording.inputs.legalStatus}\n />\n )}\n {!isIndividual && (\n <CustomInput\n error={SIRETError}\n onInputChange={this.handleSIRETInput}\n text={SIRETText}\n value={SIRETValue}\n />\n )}\n {!isIndividual && (\n <CustomInput\n isLocked={true}\n text={Wording.ape}\n value={APE}\n />\n )}\n <CustomInput\n error={phoneNumberError}\n onInputChange={this.handlePhoneNumberInput}\n text={phoneNumberText}\n value={phoneNumberValue}\n />\n <CustomInput\n error={mailAddressError}\n onInputChange={this.handleMailAddressInput}\n text={mailAddressText}\n value={mailAddressValue}\n />\n </div>\n </div>\n <AddressSelect\n addressError={addressAddressError}\n initialAddress={\n !!initialParams\n ? initialParams.address || undefined\n : undefined\n }\n onAddressInputChange={this.handleAddressInput}\n onIdenticalAddressToggle={this.handleIdenticalAddressToggle}\n onPostalCodeSelection={this.handlePostalCodeSelection}\n text={Wording.identicalAddress.label}\n />\n </section>\n );\n }\n}\n\nexport default ClientDataSection;\n","import ClientDataSection from './ClientDataSection';\nexport default ClientDataSection;\n","import React, { FC, useState, useEffect } from 'react';\nimport {\n CustomButton,\n} from '../../../../../components';\nimport WordingConstant from '../../../../../utils/wording.json';\nimport { toIsc } from '../../../../../utils/text';\n\ninterface IProps {\n onValidate: (PCE?: string, PDL?: string) => void;\n requiresPCE: boolean;\n requiresPDL: boolean;\n isPackageValid: boolean;\n PDLRef: React.MutableRefObject<string | null>;\n PCERef: React.MutableRefObject<string | null>;\n}\n\nconst Wording = WordingConstant.AdminSubscriptionContainer.MissingInformations;\nconst baseClassName = 'missing-informations-section';\n\nconst MissingInformationSection: FC<IProps> = (props: IProps) => {\n const {\n requiresPCE,\n requiresPDL,\n } = props;\n const [showScrollButton, setShowScrollButton] = useState(false);\n\n const promptText = toIsc(\n requiresPCE && requiresPDL ? Wording.prompts : Wording.prompt,\n );\n\n const handleScrollToTop = () => {\n window.scrollTo({ top: 715, behavior: 'smooth' });\n };\n\n useEffect(() => {\n const handleScroll = () => {\n setShowScrollButton(window.scrollY > 200);\n };\n\n window.addEventListener('scroll', handleScroll);\n return () => window.removeEventListener('scroll', handleScroll);\n }, []);\n\n return (\n <section className={baseClassName} style={{ marginBottom: \"0px\"}}>\n <h2>{promptText}</h2>\n {showScrollButton && (\n <CustomButton\n style={{\n position: 'relative',\n bottom: '50px'\n }}\n color={'orange'}\n onClick={handleScrollToTop}\n title={Wording.BackUp}\n />\n )}\n </section>\n );\n};\n\nexport default MissingInformationSection;\n\n","import MissingInformationSection from './MissingInformationSection';\nexport default MissingInformationSection;\n","import React, { FC, useState } from 'react';\nimport _ from 'lodash';\nimport { buildClassName as bcn } from '../../../../../utils/helpers';\nimport { TAuthorizedPackage } from '../../../../../utils/network/types';\nimport WordingConstant from '../../../../../utils/wording.json';\nimport {\n CloseButton,\n CustomButton,\n CustomRadio,\n EnergyGauge,\n} from '../../../../../components';\n\ninterface IProps {\n authorizedElectricityPackages: TAuthorizedPackage[];\n authorizedGasPackages: TAuthorizedPackage[];\n dismiss: () => void;\n electricityEnabled: boolean;\n gasEnabled: boolean;\n initialElectricitySelection: TAuthorizedPackage | null;\n initialGasSelection: TAuthorizedPackage | null;\n onValidate: (\n electricity: TAuthorizedPackage | null,\n gas: TAuthorizedPackage | null,\n ) => void;\n\n handleSetGaugeProps: (gaugeProps: {\n electricityGaugeProps: GaugeProps | null;\n gasGaugeProps: GaugeProps | null;\n }) => void;\n}\n\ntype GaugeProps = {\n initial: number;\n ranges: number[][];\n maxValue: number;\n};\n\nconst Wording = WordingConstant.AdminSubscriptionContainer.SeasonalOffersModal;\nconst baseClassName = 'seasonal-offers';\nconst gaugeClassName = bcn([baseClassName, 'gauge']);\nconst headerClassName = bcn([gaugeClassName, 'header']);\nconst bodyClassName = bcn([gaugeClassName, 'body']);\n\nfunction getDefaultIndex(arr: any[]): number | null {\n return arr.length > 0 ? Math.floor(arr.length / 2) : null;\n}\n\nexport function parseGaugeProps(\n authorizedPackages: TAuthorizedPackage[],\n selection: TAuthorizedPackage | null = null,\n): GaugeProps {\n const ranges: number[][] = _.map(\n authorizedPackages,\n (pckg: TAuthorizedPackage) => {\n return [pckg[0].amount, pckg[1].amount];\n },\n );\n let initialProgress = _.findIndex(\n authorizedPackages,\n (pkg: TAuthorizedPackage) => {\n const a = pkg[0].id === _.get(selection, '0.id', '');\n const b = pkg[1].id === _.get(selection, '1.id', '');\n return a && b;\n },\n );\n if (initialProgress === -1) {\n initialProgress = getDefaultIndex(authorizedPackages) || 0;\n }\n const reducer = (result: number, value: TAuthorizedPackage) => {\n const sum = Number(value[0].amount);\n const win = Number(value[1].amount);\n const max = sum > win ? sum : win;\n return result > max ? result : max;\n };\n const gaugeMaxValue = _.reduce(authorizedPackages, reducer, 0);\n return {\n initial: initialProgress,\n maxValue: gaugeMaxValue,\n ranges,\n };\n}\n\nfunction parseGaugeSelectedItem(\n authorizedPackages: TAuthorizedPackage[],\n value: any,\n): TAuthorizedPackage | null {\n let pkg: TAuthorizedPackage | undefined;\n if (value instanceof Array && value.length === 2) {\n pkg = _.find(authorizedPackages, (p: TAuthorizedPackage): boolean => {\n const sum = Number(p[0].amount);\n const win = Number(p[1].amount);\n const valueSum = Number(value[0]);\n const valueWin = Number(value[1]);\n return sum === valueSum && win === valueWin;\n });\n }\n return pkg || null;\n}\n\nconst SeasonalOffersModal: FC<IProps> = (props: IProps) => {\n const {\n authorizedElectricityPackages,\n authorizedGasPackages,\n dismiss,\n electricityEnabled,\n gasEnabled,\n initialElectricitySelection,\n initialGasSelection,\n onValidate,\n handleSetGaugeProps,\n } = props;\n const [\n electricitySelection,\n setElectricitySelection,\n ] = useState<TAuthorizedPackage | null>(initialElectricitySelection);\n const [gasSelection, setGasSelection] = useState<TAuthorizedPackage | null>(\n initialGasSelection,\n );\n const [electricityActivated, setElectricityActivated] = useState<boolean>(\n true,\n );\n const [gasActivated, setGasActivated] = useState<boolean>(true);\n const electricityGaugeProps: GaugeProps = parseGaugeProps(\n authorizedElectricityPackages,\n electricitySelection,\n );\n\n const gasGaugeProps: GaugeProps = parseGaugeProps(\n authorizedGasPackages,\n gasSelection,\n );\n\n const electricityDefault: TAuthorizedPackage | null =\n authorizedElectricityPackages[electricityGaugeProps.initial] || null;\n const gasDefault: TAuthorizedPackage | null =\n authorizedGasPackages[gasGaugeProps.initial] || null;\n const handleElectricityGaugeChange = (prices: number[]) => {\n const pkg: TAuthorizedPackage | null = parseGaugeSelectedItem(\n authorizedElectricityPackages,\n prices,\n );\n setElectricitySelection(pkg);\n };\n const handleGasGaugeChange = (prices: number[]) => {\n const pkg: TAuthorizedPackage | null = parseGaugeSelectedItem(\n authorizedGasPackages,\n prices,\n );\n setGasSelection(pkg);\n };\n const handleElectricityToggle = () => {\n setElectricityActivated(!electricityActivated);\n };\n const handleGasToggle = () => {\n setGasActivated(!gasActivated);\n };\n const validate = () => {\n const electricity = !electricityActivated\n ? null\n : !!electricitySelection\n ? electricitySelection\n : electricityDefault;\n const gas = !gasActivated\n ? null\n : !!gasSelection\n ? gasSelection\n : gasDefault;\n\n onValidate(electricity, gas);\n };\n return (\n <div className={baseClassName}>\n <CloseButton onClick={dismiss} />\n {electricityEnabled && authorizedElectricityPackages.length > 0 && (\n <div className={gaugeClassName}>\n <CustomRadio\n checked={electricityActivated}\n handleCheck={handleElectricityToggle}\n text={Wording.electricityTitle}\n value={Wording.electricityTitle}\n />\n {electricityActivated && (\n <div className={bodyClassName}>\n <EnergyGauge\n {...electricityGaugeProps}\n onChange={handleElectricityGaugeChange}\n />\n </div>\n )}\n </div>\n )}\n {gasEnabled && authorizedGasPackages.length > 0 && (\n <div className={gaugeClassName}>\n <CustomRadio\n checked={gasActivated}\n handleCheck={handleGasToggle}\n text={Wording.gasTitle}\n value={Wording.gasTitle}\n />\n {gasActivated && (\n <div className={bodyClassName}>\n <EnergyGauge\n {...gasGaugeProps}\n onChange={handleGasGaugeChange}\n />\n </div>\n )}\n </div>\n )}\n <CustomButton\n color={'orange'}\n onClick={() => {\n validate();\n\n handleSetGaugeProps({\n electricityGaugeProps,\n gasGaugeProps,\n });\n }}\n title={Wording.validate}\n />\n </div>\n );\n};\n\nexport default SeasonalOffersModal;\n","import SeasonalOffersModal from './SeasonalOffersModal';\nexport default SeasonalOffersModal;\n","import React, { Component, Fragment } from 'react';\nimport _ from 'lodash';\nimport { CheckboxTile } from '../../../../../components';\nimport { buildClassName as bcn } from '../../../../../utils/helpers';\nimport WordingConstant from '../../../../../utils/wording.json';\nimport { TAdditionalRate } from '../../../../../utils/network/types';\n\ninterface IProps {\n electricityOptions: TAdditionalRate[];\n electricityOptionSelection: boolean[];\n gasOptions: TAdditionalRate[];\n gasOptionSelection: boolean[];\n onSelection: (\n electricitySelection: boolean[],\n gasSelection: boolean[],\n ) => void;\n}\n\nconst baseClassName = 'additional';\nconst optionsClassName = bcn([baseClassName, 'options']);\nconst groupClassName = 'option-group';\nconst Wording = WordingConstant.AdminSubscriptionContainer.Recap;\n\nclass Options extends Component<IProps> {\n constructor(props: IProps) {\n super(props);\n this.state = {\n electricityOptions: [],\n gasOptions: [],\n };\n this.toggleOption = this.toggleOption.bind(this);\n }\n toggleOption(type: 'EL' | 'NG', index: number, value: boolean) {\n const { onSelection } = this.props;\n const { electricityOptionSelection, gasOptionSelection } = this.props;\n if (type === 'EL') electricityOptionSelection[index] = value;\n else if (type === 'NG') gasOptionSelection[index] = value;\n onSelection(electricityOptionSelection, gasOptionSelection);\n }\n render() {\n const {\n electricityOptions,\n electricityOptionSelection,\n gasOptions,\n gasOptionSelection,\n } = this.props;\n return (\n <div className={baseClassName}>\n <div className={optionsClassName}>\n {electricityOptions.length > 0 && (\n <Fragment>\n <h5>{Wording.options.electricity.title}</h5>\n <div className={groupClassName}>\n {electricityOptions.map(\n (opt: TAdditionalRate, i: number) => {\n const checked =\n electricityOptionSelection.length >=\n i &&\n electricityOptionSelection[i];\n return (\n <CheckboxTile\n key={i}\n checked={checked}\n onToggle={() => {\n this.toggleOption(\n 'EL',\n i,\n !checked,\n );\n }}\n text={opt.description}\n title={opt.label}\n titleHint={[\n _.get(\n opt,\n 'detail.price',\n '',\n ),\n _.get(\n opt,\n 'detail.unit',\n '',\n ),\n ].join(' ')}\n />\n );\n },\n )}\n </div>\n </Fragment>\n )}\n {gasOptions.length > 0 && (\n <Fragment>\n <h5>{Wording.options.gas.title}</h5>\n <div className={groupClassName}>\n {gasOptions.map(\n (opt: TAdditionalRate, i: number) => {\n const checked =\n gasOptionSelection.length >= i &&\n gasOptionSelection[i];\n return (\n <CheckboxTile\n key={i}\n checked={checked}\n onToggle={() => {\n this.toggleOption(\n 'NG',\n i,\n !checked,\n );\n }}\n text={opt.description}\n title={opt.label}\n titleHint={\n !!opt.detail &&\n !!opt.detail.price &&\n !!opt.detail.unit\n ? `${opt.detail.price} ${opt.detail.unit}`\n : ''\n }\n />\n );\n },\n )}\n </div>\n </Fragment>\n )}\n </div>\n </div>\n );\n }\n}\n\nexport default Options;\n","import React, { Fragment, useEffect, useState } from 'react';\nimport {\n CustomButton,\n CustomInput,\n CustomModal,\n CustomSelect,\n} from '../../../../../components';\nimport {\n TContract,\n TEstimate,\n EEnergyTypes,\n ERateOptions,\n ETimeframes,\n} from '../../../../../utils/network/types';\nimport WordingConstant from '../../../../../utils/wording.json';\nconst Wording =\n WordingConstant.AdminSubscriptionContainer.Offer.clientConsumption;\n\ninterface IProps {\n open: boolean;\n contracts: TContract[] | null;\n electricityEnabled: boolean;\n gasEnabled: boolean;\n handleModalClick: () => void;\n handleEstimatesPackagesByClient: (\n estimates: TEstimate[],\n energies: EEnergyTypes[],\n ) => void;\n}\n\ntype Rate = {\n id: number;\n value: ERateOptions;\n label: string;\n};\n\ninterface IState {\n HIGH_LOW?: {\n EL: {\n HIGH: string;\n LOW: string;\n };\n NG: {\n HIGH: string;\n LOW: string;\n };\n };\n TOTAL_HOUR?: {\n EL: string;\n NG: string;\n };\n UNKNOWN?: {\n EL: string;\n NG: string;\n };\n\n [key: string]: any;\n}\n\ninterface IBuildResponse {\n estimates: TEstimate[];\n energies: EEnergyTypes[];\n}\n\nconst initState = {\n HIGH_LOW: { EL: { HIGH: '', LOW: '' }, NG: { LOW: '', HIGH: '' } },\n TOTAL_HOUR: { EL: '', NG: '' },\n UNKNOWN: { EL: '', NG: '' },\n};\n\nconst ClientConsumption: React.FC<IProps> = ({\n open,\n handleModalClick,\n contracts,\n handleEstimatesPackagesByClient,\n electricityEnabled,\n gasEnabled,\n}) => {\n const [state, setState] = useState<IState>(initState);\n const [isValide, setValide] = useState(false);\n const [showError, setShowError] = useState(false);\n const [showEstimateErr, setEstimetesErr] = useState(false);\n\n const initStateValues = (contracts: TContract[]) => {\n const nextState = initState;\n\n const buildByEnergy = (energy: 'EL' | 'NG') => {\n const currContract = contracts.find(ctr => ctr.energy === energy);\n if (currContract) {\n const rate = buildRateOption(currContract);\n\n if (rate === ERateOptions.HIGH_LOW) {\n const st = (currContract.estimates as TEstimate[]).reduce(\n (acc, curr) => {\n return {\n ...acc,\n [energy]: {\n // @ts-ignore\n ...acc[energy],\n [curr.timeframe as any]: curr.quantity,\n },\n };\n },\n {},\n );\n\n nextState.HIGH_LOW = {\n ...nextState.HIGH_LOW,\n ...st,\n };\n }\n\n if (\n rate === ERateOptions.TOTAL_HOUR ||\n rate === ERateOptions.UNKNOWN\n ) {\n if (currContract.estimates) {\n const currEstimate = (currContract.estimates as TEstimate[])[0];\n nextState[rate] = {\n ...nextState[rate],\n [energy]: currEstimate.quantity\n ? currEstimate.quantity.toString()\n : '',\n };\n }\n }\n }\n };\n\n if (electricityEnabled) {\n buildByEnergy('EL');\n }\n\n if (gasEnabled) {\n buildByEnergy('NG');\n }\n\n setState(nextState);\n };\n\n useEffect(() => {\n if (contracts) {\n initStateValues(contracts);\n }\n }, [contracts]);\n\n useEffect(() => {\n const checkByEnergy = (en: { HIGH: string; LOW: string }) =>\n en.HIGH !== '' && en.LOW !== '';\n\n const checkGas = (val: string) => (gasEnabled ? val !== '' : true);\n const checkElec = (val: string) =>\n electricityEnabled ? val !== '' : true;\n\n let valide = false;\n\n if (contracts) {\n contracts.forEach(ctr => {\n const rate = buildRateOption(ctr);\n\n switch (rate) {\n case ERateOptions.TOTAL_HOUR:\n valide = Boolean(\n ctr.energy === 'EL'\n ? state.TOTAL_HOUR &&\n checkElec(state.TOTAL_HOUR.EL)\n : state.TOTAL_HOUR &&\n checkGas(state.TOTAL_HOUR.NG),\n );\n\n break;\n\n case ERateOptions.UNKNOWN:\n valide = Boolean(\n ctr.energy === 'EL'\n ? state.UNKNOWN && checkElec(state.UNKNOWN.EL)\n : state.UNKNOWN && checkGas(state.UNKNOWN.NG),\n );\n break;\n\n case ERateOptions.HIGH_LOW:\n let hightLowCheck = true;\n\n if (gasEnabled && ctr.energy === 'NG') {\n hightLowCheck = Boolean(\n hightLowCheck &&\n state.HIGH_LOW &&\n checkByEnergy(state.HIGH_LOW.NG),\n );\n }\n if (electricityEnabled && ctr.energy === 'EL') {\n hightLowCheck = Boolean(\n hightLowCheck &&\n state.HIGH_LOW &&\n checkByEnergy(state.HIGH_LOW.EL),\n );\n }\n\n valide = hightLowCheck;\n break;\n\n default:\n break;\n }\n });\n }\n setValide(valide);\n }, [state]);\n\n if (!contracts) {\n return null;\n }\n\n const handleSetTotalHourAndUnknown = (\n rate: ERateOptions,\n energy: 'EL' | 'NG',\n value: string | number,\n ) => {\n setState({\n ...state,\n [rate]: {\n ...state[rate],\n [energy]: value,\n },\n });\n };\n\n const getInitHighLowState = (st?: {\n EL: {\n HIGH: string;\n LOW: string;\n };\n NG: {\n LOW: string;\n HIGH: string;\n };\n }) => (st ? st : initState.HIGH_LOW);\n\n const handleSetHighLow = (\n energy: 'EL' | 'NG',\n type: 'HIGH' | 'LOW',\n value: string | number,\n ) => {\n setState({\n ...state,\n HIGH_LOW: {\n ...initState.HIGH_LOW,\n ...state.HIGH_LOW,\n [energy]: {\n ...getInitHighLowState(state.HIGH_LOW)[energy],\n [type]: value,\n },\n },\n });\n };\n\n const buildResponse = (): IBuildResponse =>\n contracts.reduce(\n (acc, curr) => {\n const rate = buildRateOption(curr);\n if (rate && rate !== '') {\n const nextEstimate: TEstimate[] = (() => {\n if (rate === ERateOptions.HIGH_LOW) {\n const nextState = state.HIGH_LOW as {\n EL: {\n HIGH: string;\n LOW: string;\n };\n NG: {\n HIGH: string;\n LOW: string;\n };\n };\n\n return [ETimeframes.HIGH, ETimeframes.LOW].map(\n t => {\n const typeKey = t as 'HIGH' | 'LOW';\n return {\n energy: curr.energy,\n timeframe: t,\n quantity: parseInt(\n nextState[curr.energy][typeKey],\n 10,\n ),\n };\n },\n );\n }\n\n const nextTimeframe =\n rate === ERateOptions.TOTAL_HOUR\n ? ETimeframes.TOTAL_HOUR\n : ETimeframes.UNKNOWN;\n return [\n {\n energy: curr.energy,\n timeframe: nextTimeframe,\n quantity: parseInt(\n (state[rate] as {\n EL: string;\n NG: string;\n })[curr.energy],\n 10,\n ),\n },\n ];\n })();\n return {\n energies: [...acc.energies, curr.energy],\n estimates: [...acc.estimates, ...nextEstimate],\n };\n }\n\n return {\n energies: [...acc.energies, curr.energy],\n estimates: [...acc.estimates],\n };\n },\n { energies: [], estimates: [] } as IBuildResponse,\n );\n\n const handleCheckEstimates = () => {\n return contracts.reduce((acc, curr) => {\n const currRate = buildRateOption(curr);\n\n if (curr.estimates && currRate) {\n if (currRate === ERateOptions.HIGH_LOW) {\n return curr.estimates.reduce(\n (esAcc, esCurr) =>\n Boolean(\n state.HIGH_LOW &&\n checkQuantity(\n state.HIGH_LOW[curr.energy][\n esCurr.timeframe as 'HIGH' | 'LOW'\n ],\n esCurr.quantity as number,\n ),\n ) && esAcc,\n true,\n );\n }\n\n const findCurrEstim = curr.estimates.find(\n ({ timeframe }) => (timeframe as any) === currRate,\n );\n const rateState = state[currRate];\n\n return rateState && findCurrEstim && findCurrEstim.quantity\n ? checkQuantity(\n rateState[curr.energy] as string,\n findCurrEstim.quantity,\n ) && acc\n : acc;\n }\n return acc;\n }, true);\n };\n\n const init = () => {\n setShowError(false);\n setEstimetesErr(false);\n setValide(false);\n\n overrideModalClick();\n };\n\n const handleValidate = () => {\n if (!isValide) {\n setShowError(true);\n return;\n }\n\n if (!handleCheckEstimates()) {\n setEstimetesErr(true);\n return;\n }\n if (showEstimateErr) {\n setEstimetesErr(false);\n }\n\n const { estimates, energies } = buildResponse();\n handleEstimatesPackagesByClient(estimates, energies);\n\n init();\n };\n\n const checkQuantity = (coming: string, estQuantity: number) =>\n parseInt(coming, 10) > 0.75 * estQuantity;\n\n const renderByRateOption = (\n rateProp: ERateOptions,\n energy: 'EL' | 'NG',\n estimates: TEstimate[],\n ) => {\n switch (rateProp) {\n case ERateOptions.TOTAL_HOUR:\n case ERateOptions.UNKNOWN:\n let currentEstimate = null;\n const value = state[rateProp]\n ? (state[rateProp] as any)[energy]\n : '';\n if (estimates) {\n currentEstimate = estimates.find(\n est => (est.timeframe as any) === rateProp,\n );\n }\n\n const checkEstimate = Boolean(\n currentEstimate &&\n currentEstimate.quantity &&\n checkQuantity(value, currentEstimate.quantity),\n );\n\n const error = (() => {\n if (showError && value === '') {\n return Wording.errMessage;\n }\n\n return showEstimateErr && !checkEstimate\n ? `${Wording.estimateErr} ${\n currentEstimate && currentEstimate.quantity\n ? `${0.75 * currentEstimate.quantity} kWh`\n : ''\n }`\n : undefined;\n })();\n\n return (\n <>\n <CustomInput\n type=\"number\"\n text={\n Wording[\n energy === 'EL' ? 'elecInput' : 'gasInput'\n ]\n }\n value={value}\n onInputChange={e =>\n handleSetTotalHourAndUnknown(\n rateProp,\n energy,\n e.target.value,\n )\n }\n error={error}\n />\n\n <p>\n {Wording.initialConsumption}{' '}\n {currentEstimate && currentEstimate.quantity\n ? currentEstimate.quantity\n : ''}{' '}\n kWh\n </p>\n </>\n );\n\n case ERateOptions.HIGH_LOW:\n return (\n <div className=\"client-consumption-content__high-low\">\n <h4>\n {\n Wording[\n energy === 'EL' ? 'elecInput' : 'gasInput'\n ]\n }\n </h4>\n\n <div>\n {['HIGH', 'LOW'].map(t => {\n const typeKey = t as 'HIGH' | 'LOW';\n const value = state.HIGH_LOW\n ? state.HIGH_LOW[energy][typeKey]\n : '';\n\n const currentEstimate = estimates.find(\n est =>\n (est.timeframe as any) ===\n (rateProp === ERateOptions.HIGH_LOW\n ? typeKey\n : rateProp),\n );\n\n const checkEstimate = Boolean(\n currentEstimate &&\n currentEstimate.quantity &&\n checkQuantity(\n value,\n currentEstimate.quantity,\n ),\n );\n\n const error = (() => {\n if (showError && value === '') {\n return Wording.errMessage;\n }\n\n return showEstimateErr && !checkEstimate\n ? `${Wording.estimateErr} ${\n currentEstimate &&\n currentEstimate.quantity\n ? `${0.75 *\n currentEstimate.quantity} kWh`\n : ''\n }`\n : undefined;\n })();\n\n return (\n <div\n key={t}\n className=\"client-consumption-content__high-low__inputs\"\n >\n <CustomInput\n key={t}\n type=\"number\"\n text={Wording[typeKey]}\n value={value}\n onInputChange={e =>\n handleSetHighLow(\n energy,\n typeKey,\n e.target.value,\n )\n }\n error={error}\n />\n\n <p>\n {Wording.initialConsumption}{' '}\n {currentEstimate &&\n currentEstimate.quantity\n ? currentEstimate.quantity\n : ''}{' '}\n kWh\n </p>\n </div>\n );\n })}\n </div>\n </div>\n );\n\n default:\n return null;\n }\n };\n\n const overrideModalClick = () => {\n handleModalClick();\n\n if (contracts) {\n initStateValues(contracts);\n }\n };\n\n const buildRateOption = (ctr: TContract) => {\n if (ctr.rateOption) {\n return ctr.rateOption;\n }\n let rt = '';\n\n if (ctr.estimates) {\n if (ctr.estimates.length === 2) {\n rt = ERateOptions.HIGH_LOW;\n } else {\n rt = ctr.estimates[0].timeframe || '';\n }\n }\n\n return rt;\n };\n\n return (\n <CustomModal\n show={open}\n showCloseButton\n handleClick={overrideModalClick}\n customStyle={{ height: 'fit-content', border: 'solid 4px black' }}\n >\n <div className=\"client-consumption-content\">\n <h3>{Wording.title}</h3>\n\n {contracts.map((ctr, key) => {\n if (\n (electricityEnabled && ctr.energy === 'EL') ||\n (gasEnabled && ctr.energy === 'NG')\n ) {\n const currRate = buildRateOption(ctr);\n return (\n <Fragment key={key}>\n {renderByRateOption(\n currRate as ERateOptions,\n ctr.energy,\n ctr.estimates as TEstimate[],\n )}\n </Fragment>\n );\n }\n })}\n\n {showEstimateErr && (\n <div className=\"client-consumption-content__estimates-error\">\n <p>{Wording.mainEstimateErr}</p>\n </div>\n )}\n\n <div className=\"client-consumption-content__buttons\">\n <CustomButton\n title={Wording.btnBack}\n color={'gray'}\n onClick={overrideModalClick}\n />\n <CustomButton\n title={Wording.btnValidate}\n color={'orange'}\n onClick={handleValidate}\n />\n </div>\n </div>\n </CustomModal>\n );\n};\n\nexport default ClientConsumption;\n","import React, { Component } from 'react';\nimport _, { isEmpty } from 'lodash';\nimport { SelectOption } from 'Types';\nimport WordingConstant from '../../../../../utils/wording.json';\nimport classnames from 'classnames';\nimport {\n buildClassName as bcn,\n prepareFrequenciesToDisplay,\n} from '../../../../../utils/helpers';\nimport { toColonHeading as tch } from '../../../../../utils/text';\nimport {\n CustomButton,\n CustomModal,\n CustomOverlay,\n CustomSelect,\n ToggleIndicator,\n} from '../../../../../components';\nimport SeasonalOffersModal from '../../modals/SeasonalOffersModal';\nimport {\n EAdditionalRateTypes,\n EEnergyTypes,\n EInstallmentFrequencies,\n TContract,\n TPackage,\n TProduct,\n TAdditionalRate,\n TAuthorizedPackage,\n ETimeframes,\n TPrepaymentFrequencies,\n TEstimate,\n} from '../../../../../utils/network/types';\nimport { isCyclicalProduct } from '../../../../../utils/network/helpers';\nimport Options from './Options';\nimport Data from './Data';\nimport ClientConsumption from './ClientConsumption';\n\ntype GaugeProps = {\n initial: number;\n ranges: number[][];\n maxValue: number;\n};\n\nfunction filterOptions(\n opts: TAdditionalRate[] = [],\n optionFilter: string | EAdditionalRateTypes = 'OPTION',\n): TAdditionalRate[] {\n const filteredOpts = opts.filter((opt: TAdditionalRate): boolean => {\n return opt.type === `${optionFilter}`;\n });\n return filteredOpts;\n}\n\ninterface IProps {\n errorOffer: boolean[];\n contracts: TContract[] | null;\n frequencies: TPrepaymentFrequencies[] | null;\n electricityEnabled: boolean;\n gasEnabled: boolean;\n initialParams?: Data;\n onProductSelection: (\n energy: EEnergyTypes,\n product: TProduct | null,\n ) => void;\n dynamicValidation: (selection: {\n product?: TProduct;\n energyType?: EEnergyTypes;\n }) => void;\n onValidate: (selection: {\n electricityFrequency?: EInstallmentFrequencies;\n electricityPackage?: TPackage;\n electricitySeasonalPackage?: TAuthorizedPackage | null;\n electricityProduct?: TProduct;\n gasFrequency?: EInstallmentFrequencies;\n gasPackage?: TPackage;\n gasProduct?: TProduct;\n gasSeasonalPackage?: TAuthorizedPackage | null;\n }) => void;\n packages: TPackage[] | null;\n products: TProduct[] | null;\n isPackageValid: boolean;\n deliveryPointPackages: any;\n\n handleSetGaugeProps: (gaugeProps: {\n electricityGaugeProps: GaugeProps | null;\n gasGaugeProps: GaugeProps | null;\n }) => void;\n\n handleEstimatesPackagesByClient: (\n estimates: TEstimate[],\n energies: EEnergyTypes[],\n ) => void;\n}\n\ninterface IState {\n authorizedElectricityPackages: TAuthorizedPackage[];\n authorizedElectricityPackageSelection: TAuthorizedPackage | null;\n authorizedGasPackages: TAuthorizedPackage[];\n authorizedGasPackageSelection: TAuthorizedPackage | null;\n electricityFrequencies: Array<SelectOption<EInstallmentFrequencies>>;\n electricityFrequencySelection: SelectOption<EInstallmentFrequencies> | null;\n electricityOptions: TAdditionalRate[];\n electricityOptionSelection: boolean[];\n electricityPlans: Array<SelectOption<TPackage>>;\n electricityPlanSelection: SelectOption<TPackage> | null;\n electricityProducts: Array<SelectOption<TProduct>>;\n electricityProductSelection: SelectOption<TProduct> | null;\n gasFrequencies: Array<SelectOption<EInstallmentFrequencies>>;\n gasFrequencySelection: SelectOption<EInstallmentFrequencies> | null;\n gasOptions: TAdditionalRate[];\n gasOptionSelection: boolean[];\n gasPlans: Array<SelectOption<TPackage>>;\n gasPlanSelection: SelectOption<TPackage> | null;\n gasProducts: Array<SelectOption<TProduct>>;\n gasProductSelection: SelectOption<TProduct> | null;\n initialElectricityOptionSelection: TAdditionalRate[] | null;\n initialGasOptionSelection: TAdditionalRate[] | null;\n shouldShowGauge: boolean;\n showConsumptionModal: boolean;\n initialElectricityRateOptions: TAdditionalRate[];\n initialGasRateOptions: TAdditionalRate[];\n}\n\nconst Wording = WordingConstant.AdminSubscriptionContainer.Offer;\nconst baseClassName = 'offer-section';\nconst selectGridClassName = 'select-grid';\n\nconst mapPackagePrepaymentFrequencies = (\n frequencies: TPrepaymentFrequencies[] | null,\n): Array<SelectOption<EInstallmentFrequencies>> => {\n if (frequencies === null) {\n return [];\n }\n\n return _.map(\n frequencies,\n ({ frequency, currency, fee }: TPrepaymentFrequencies, i) => {\n let label = '';\n const displayFee = fee.includes(' +') ? `${fee}${' '}` : fee;\n\n switch (frequency) {\n case EInstallmentFrequencies.MONTHLY:\n label = `${Wording.frequencies.monthly}: ${displayFee}${currency}`;\n break;\n case EInstallmentFrequencies.BIMONTHLY:\n label = `${Wording.frequencies.bimonthly}: ${displayFee}${currency}`;\n break;\n case EInstallmentFrequencies.FOURMONTHLY:\n label = `${Wording.frequencies.fourmonthly}: ${displayFee}${currency}`;\n break;\n case EInstallmentFrequencies.QUARTERLY:\n label = `${Wording.frequencies.quarterly}: ${displayFee}${currency}`;\n break;\n }\n return { id: `${i}`, label, value: frequency };\n },\n );\n};\n\nconst initialState: IState = {\n initialElectricityRateOptions: [],\n initialGasRateOptions: [],\n authorizedElectricityPackages: [],\n authorizedElectricityPackageSelection: null,\n authorizedGasPackages: [],\n authorizedGasPackageSelection: null,\n electricityFrequencies: [],\n electricityFrequencySelection: null,\n electricityOptions: [],\n electricityOptionSelection: [],\n electricityPlans: [],\n electricityPlanSelection: null,\n electricityProducts: [],\n electricityProductSelection: null,\n gasFrequencies: [],\n gasFrequencySelection: null,\n gasOptions: [],\n gasOptionSelection: [],\n gasPlans: [],\n gasPlanSelection: null,\n gasProducts: [],\n gasProductSelection: null,\n initialElectricityOptionSelection: null,\n initialGasOptionSelection: null,\n shouldShowGauge: false,\n showConsumptionModal: false,\n};\n\nexport function sortAuthorizedPackages(\n packages: TAuthorizedPackage[],\n): TAuthorizedPackage[] {\n const orderedTimeframePackages: TAuthorizedPackage[] = _.reduce<\n TAuthorizedPackage,\n TAuthorizedPackage[]\n >(\n packages,\n (result: TAuthorizedPackage[], value: TAuthorizedPackage) => {\n const summerIndex =\n value[0].timeframe === ETimeframes.SUMMER\n ? 0\n : value[1].timeframe === ETimeframes.SUMMER\n ? 1\n : -1;\n const winterIndex =\n value[0].timeframe === ETimeframes.WINTER\n ? 0\n : value[1].timeframe === ETimeframes.WINTER\n ? 1\n : -1;\n if (summerIndex >= 0 && winterIndex >= 0) {\n result.push([value[summerIndex], value[winterIndex]]);\n }\n return result;\n },\n [],\n );\n const [left, right]: [\n TAuthorizedPackage[],\n TAuthorizedPackage[],\n ] = _.partition(orderedTimeframePackages, (pkg: TAuthorizedPackage) => {\n return Number(pkg[0].amount) < Number(pkg[1].amount);\n });\n return [\n ...left.sort((a: TAuthorizedPackage, b: TAuthorizedPackage): number => {\n return Number(a[1].amount) > Number(b[1].amount) ? -1 : 1;\n }),\n ...right.sort(\n (a: TAuthorizedPackage, b: TAuthorizedPackage): number => {\n return Number(a[0].amount) < Number(b[0].amount) ? -1 : 1;\n },\n ),\n ];\n}\n\nfunction matchFrequency(\n rate: TAdditionalRate,\n freq: EInstallmentFrequencies,\n): boolean {\n let match = false;\n if (!_.includes(rate.code, 'PP_FREQ')) {\n return true;\n }\n switch (freq) {\n case EInstallmentFrequencies.MONTHLY:\n match = rate.code ? rate.code.includes('PP_FREQ_1') : false; // BECAUSE PP_FREQ_1_VAR || PP_FREQ_1_FIX\n break;\n case EInstallmentFrequencies.BIMONTHLY:\n match = rate.code ? rate.code.includes('PP_FREQ_2') : false;\n break;\n case EInstallmentFrequencies.FOURMONTHLY:\n match = rate.code ? rate.code.includes('PP_FREQ_4') : false;\n break;\n case EInstallmentFrequencies.QUARTERLY:\n match = rate.code ? rate.code.includes('PP_FREQ_3') : false;\n break;\n }\n return match;\n}\n\nclass OfferSection extends Component<IProps, IState> {\n constructor(props: any) {\n super(props);\n this.state = { ...initialState };\n this.handleSeasonalOfferModalDismiss = this.handleSeasonalOfferModalDismiss.bind(\n this,\n );\n this.handleElectricityFrequencySelection = this.handleElectricityFrequencySelection.bind(\n this,\n );\n this.handleElectricityPlanSelection = this.handleElectricityPlanSelection.bind(\n this,\n );\n this.handleElectricityProductSelection = this.handleElectricityProductSelection.bind(\n this,\n );\n this.handleGasFrequencySelection = this.handleGasFrequencySelection.bind(\n this,\n );\n this.handleGasPlanSelection = this.handleGasPlanSelection.bind(this);\n this.handleGasProductSelection = this.handleGasProductSelection.bind(\n this,\n );\n this.handleOptionSelection = this.handleOptionSelection.bind(this);\n this.handleSeasonalOffersModalToggle = this.handleSeasonalOffersModalToggle.bind(\n this,\n );\n this.handleValidationClick = this.handleValidationClick.bind(this);\n this.validateSeasonalOffersModal = this.validateSeasonalOffersModal.bind(\n this,\n );\n }\n componentDidMount() {\n this.init();\n }\n componentDidUpdate(prevProps: IProps) {\n const {\n contracts: prevContracts,\n electricityEnabled: prevElectricityEnabled,\n gasEnabled: prevGasEnabled,\n packages: prevPackages,\n products: prevProducts,\n frequencies: prevFrequencies,\n isPackageValid: prevIsPackageValid,\n deliveryPointPackages: prevDeliveryPointPackages,\n } = prevProps;\n\n const {\n contracts,\n electricityEnabled,\n gasEnabled,\n packages,\n products,\n frequencies,\n isPackageValid,\n deliveryPointPackages,\n } = this.props;\n\n const shouldUpdate =\n prevContracts !== contracts ||\n JSON.stringify(prevFrequencies) !== JSON.stringify(frequencies) ||\n JSON.stringify(prevPackages) !== JSON.stringify(packages) ||\n JSON.stringify(prevProducts) !== JSON.stringify(products) ||\n prevGasEnabled !== gasEnabled ||\n prevElectricityEnabled !== electricityEnabled;\n if (shouldUpdate) {\n this.refresh(contracts, packages, products, frequencies);\n }\n\n if (prevDeliveryPointPackages !== deliveryPointPackages || (prevIsPackageValid !== isPackageValid && !isPackageValid)) {\n const plans: Array<SelectOption<TPackage>> = _.map(\n deliveryPointPackages,\n (plan: TPackage, i: number) => ({\n id: `${i}`,\n label: plan.id,\n value: plan,\n }),\n );\n const electricityPlans: Array<SelectOption<\n TPackage\n >> = plans.filter(\n (plan: SelectOption<TPackage>) =>\n plan.value.energy === EEnergyTypes.ELECTRICTY,\n );\n const gasPlans: Array<SelectOption<TPackage>> = plans.filter(\n (plan: SelectOption<TPackage>) =>\n plan.value.energy === EEnergyTypes.GAS,\n );\n\n const recommendedElectricityPlans: Array<SelectOption<\n TPackage\n >> = _.map(\n electricityPlans,\n (plan: SelectOption<TPackage>, i: number) => ({\n id: `${i}`,\n label: `${plan.label}${\n plan.value.recommended ? ' (Recommandé)' : ''\n }`,\n value: plan.value,\n }),\n );\n\n const recommendedGasPlans: Array<SelectOption<TPackage>> = _.map(\n gasPlans,\n (plan: SelectOption<TPackage>, i: number) => ({\n id: `${i}`,\n label: `${plan.label}${\n plan.value.recommended ? ' (Recommandé)' : ''\n }`,\n value: plan.value,\n }),\n );\n\n this.setState({\n electricityPlans: recommendedElectricityPlans,\n electricityPlanSelection: null,\n gasPlans: recommendedGasPlans,\n gasPlanSelection: null,\n });\n }\n }\n handleSeasonalOfferModalDismiss() {\n this.setState({ shouldShowGauge: false });\n }\n\n init() {\n const { initialParams } = this.props;\n\n if (!!initialParams) {\n const authorizedElectricityPackages: TAuthorizedPackage[] = sortAuthorizedPackages(\n initialParams.authorizedElectricityPackages,\n );\n\n const authorizedElectricityPackageSelection: TAuthorizedPackage | null =\n initialParams.authorizedElectricityPackageSelection;\n const authorizedGasPackages: TAuthorizedPackage[] = sortAuthorizedPackages(\n initialParams.authorizedGasPackages,\n );\n const authorizedGasPackageSelection: TAuthorizedPackage | null =\n initialParams.authorizedGasPackageSelection;\n\n const mappedFrequencies = mapPackagePrepaymentFrequencies(\n initialParams.frequencies,\n );\n\n const electricityFrequencies: Array<SelectOption<\n EInstallmentFrequencies\n >> = mappedFrequencies;\n const electricityPlans: Array<SelectOption<TPackage>> = _.map(\n initialParams.electricityPlans,\n (plan: TPackage, i: number) => ({\n id: `${i}`,\n label: plan.id,\n value: plan,\n }),\n );\n const gasPlans: Array<SelectOption<TPackage>> = _.map(\n initialParams.gasPlans,\n (plan: TPackage, i: number) => ({\n id: `${i}`,\n label: plan.id,\n value: plan,\n }),\n );\n const electricityProducts: Array<SelectOption<TProduct>> = _.map(\n initialParams.electricityProducts,\n (prod: TProduct, i: number) => ({\n id: `${i}`,\n label: prod.label || '',\n value: prod,\n }),\n );\n const gasProducts: Array<SelectOption<TProduct>> = _.map(\n initialParams.gasProducts,\n (prod: TProduct, i: number) => ({\n id: `${i}`,\n label: prod.label || '',\n value: prod,\n }),\n );\n const electricityPlanSelection: SelectOption<TPackage> | null =\n _.find(electricityPlans, (opt: SelectOption<TPackage>) => {\n return (\n !!opt &&\n !!initialParams.electricityPlanSelection &&\n opt.value.id ===\n initialParams.electricityPlanSelection.id\n );\n }) || null;\n const electricityProductSelection: SelectOption<TProduct> | null =\n _.find(electricityProducts, (opt: SelectOption<TProduct>) => {\n return (\n !!opt &&\n !!initialParams.electricityProductSelection &&\n opt.value.productCode ===\n initialParams.electricityProductSelection\n .productCode\n );\n }) || null;\n const gasPlanSelection: SelectOption<TPackage> | null =\n _.find(gasPlans, (opt: SelectOption<TPackage>) => {\n return (\n !!opt &&\n !!initialParams.gasPlanSelection &&\n opt.value.id === initialParams.gasPlanSelection.id\n );\n }) || null;\n const gasProductSelection: SelectOption<TProduct> | null =\n _.find(gasProducts, (opt: SelectOption<TProduct>) => {\n return (\n !!opt &&\n !!initialParams.gasProductSelection &&\n opt.value.productCode ===\n initialParams.gasProductSelection.productCode\n );\n }) || null;\n let electricityFrequencySelection: SelectOption<\n EInstallmentFrequencies\n > | null = null;\n\n if (!!electricityProductSelection) {\n electricityFrequencySelection =\n _.find(\n electricityFrequencies,\n (freq: SelectOption<EInstallmentFrequencies>) => {\n return (\n !!freq &&\n initialParams.electricityFrequencySelection ===\n freq.value\n );\n },\n ) || electricityFrequencies[0];\n }\n const gasFrequencies: Array<SelectOption<\n EInstallmentFrequencies\n >> = mappedFrequencies;\n let gasFrequencySelection: SelectOption<\n EInstallmentFrequencies\n > | null = null;\n if (!!gasProductSelection) {\n gasFrequencySelection =\n _.find(\n gasFrequencies,\n (freq: SelectOption<EInstallmentFrequencies>) => {\n return (\n !!freq &&\n initialParams.gasFrequencySelection ===\n freq.value\n );\n },\n ) || gasFrequencies[0];\n }\n const electricityOptions: TAdditionalRate[] = filterOptions([\n ...initialParams.electricityOptions,\n ]);\n const gasOptions: TAdditionalRate[] = filterOptions([\n ...initialParams.gasOptions,\n ]);\n const electricityOptionSelection: boolean[] = _.map(\n electricityOptions,\n (rate: TAdditionalRate) => {\n return !!_.find(\n initialParams.electricitySelectedOptions,\n rate,\n );\n },\n );\n const gasOptionSelection: boolean[] = _.map(\n gasOptions,\n (rate: TAdditionalRate) => {\n return !!_.find(initialParams.gasSelectedOptions, rate);\n },\n );\n this.setState({\n authorizedElectricityPackages,\n authorizedElectricityPackageSelection,\n authorizedGasPackages,\n authorizedGasPackageSelection,\n electricityFrequencies,\n electricityFrequencySelection,\n electricityOptions,\n electricityOptionSelection,\n electricityPlans,\n electricityPlanSelection,\n electricityProducts,\n electricityProductSelection,\n gasFrequencies,\n gasFrequencySelection,\n gasOptions,\n gasOptionSelection,\n gasPlans,\n gasPlanSelection,\n gasProducts,\n gasProductSelection,\n initialElectricityRateOptions: electricityProductSelection\n ? electricityProductSelection.value.additionalRates || []\n : [],\n initialGasRateOptions: gasProductSelection\n ? gasProductSelection.value.additionalRates || []\n : [],\n });\n }\n }\n handleElectricityFrequencySelection(\n opt: SelectOption<EInstallmentFrequencies>,\n ) {\n this.setState({ electricityFrequencySelection: opt });\n }\n handleElectricityPlanSelection(\n electricityPlanSelection: SelectOption<TPackage>,\n ) {\n let authorizedPackages: TAuthorizedPackage[] = [];\n if (\n !!electricityPlanSelection &&\n !!electricityPlanSelection.value.authorizedPackages &&\n electricityPlanSelection.value.authorizedPackages.length > 0\n ) {\n authorizedPackages = sortAuthorizedPackages(\n electricityPlanSelection.value.authorizedPackages,\n );\n }\n this.setState({\n authorizedElectricityPackages: authorizedPackages,\n electricityPlanSelection,\n });\n }\n handleElectricityProductSelection(opt: SelectOption<TProduct>) {\n const { onProductSelection, dynamicValidation } = this.props;\n const nextState: Partial<IState> = {};\n const isCyclical: boolean = !!opt && isCyclicalProduct(opt.value);\n if (isCyclical && !!opt) {\n nextState.electricityPlanSelection = null;\n nextState.electricityFrequencySelection = null;\n }\n nextState.electricityProductSelection = opt;\n nextState.shouldShowGauge = false;\n nextState.electricityOptions = filterOptions(\n _.get(opt, 'value.additionalRates', []),\n );\n nextState.electricityOptionSelection = [];\n nextState.initialElectricityRateOptions = _.get(\n opt,\n 'value.additionalRates',\n [],\n );\n this.setState({ ...nextState } as IState);\n const product = _.get(opt, 'value', null);\n if (!isCyclicalProduct(product)) {\n dynamicValidation({product: product as TProduct, energyType: EEnergyTypes.ELECTRICTY})\n }\n // TODO : appeler le getPack avec le produit au dessus et le contract\n onProductSelection(EEnergyTypes.ELECTRICTY, product);\n }\n\n handleGasFrequencySelection(opt: SelectOption<EInstallmentFrequencies>) {\n this.setState({ gasFrequencySelection: opt });\n }\n handleGasPlanSelection(gasPlanSelection: SelectOption<TPackage>) {\n let authorizedPackages: TAuthorizedPackage[] = [];\n if (\n !!gasPlanSelection &&\n !!gasPlanSelection.value.authorizedPackages &&\n gasPlanSelection.value.authorizedPackages.length > 0\n ) {\n authorizedPackages = sortAuthorizedPackages(\n gasPlanSelection.value.authorizedPackages,\n );\n }\n this.setState({\n authorizedGasPackages: authorizedPackages,\n gasPlanSelection,\n });\n }\n handleGasProductSelection(opt: SelectOption<TProduct>) {\n const { onProductSelection, dynamicValidation } = this.props;\n const nextState: Partial<IState> = {};\n const isCyclical: boolean = !!opt && isCyclicalProduct(opt.value);\n if (isCyclical && !!opt) {\n nextState.gasPlanSelection = null;\n nextState.gasFrequencySelection = null;\n }\n nextState.gasProductSelection = opt;\n nextState.shouldShowGauge = false;\n nextState.gasOptions = filterOptions(\n _.get(opt, 'value.additionalRates', []),\n );\n nextState.gasOptionSelection = [];\n nextState.initialGasRateOptions = _.get(\n opt,\n 'value.additionalRates',\n [],\n );\n this.setState({ ...nextState } as IState);\n const product = _.get(opt, 'value', null);\n if (!isCyclicalProduct(product)) {\n dynamicValidation({product: product as TProduct, energyType: EEnergyTypes.GAS})\n }\n // TODO : appeler le getPack avec le produit au dessus et le contract\n onProductSelection(EEnergyTypes.GAS, product);\n }\n handleOptionSelection(electricity: boolean[], gas: boolean[]) {\n this.setState({\n electricityOptionSelection: electricity,\n gasOptionSelection: gas,\n });\n }\n handleSeasonalOffersModalToggle() {\n this.setState({ shouldShowGauge: true });\n }\n handleValidationClick() {\n const { electricityEnabled, gasEnabled, onValidate } = this.props;\n const {\n authorizedElectricityPackageSelection,\n authorizedGasPackageSelection,\n electricityFrequencySelection,\n electricityOptions,\n electricityOptionSelection,\n electricityPlanSelection,\n electricityProductSelection,\n gasFrequencySelection,\n gasOptions,\n gasOptionSelection,\n gasPlanSelection,\n gasProductSelection,\n initialGasRateOptions,\n initialElectricityRateOptions,\n } = this.state;\n let electricityProductWithOptions: TProduct | null = null;\n let gasProductWithOptions: TProduct | null = null;\n const selectedElectricityOptions: TAdditionalRate[] = _.map(\n electricityOptions,\n (rate: TAdditionalRate, index: number) => ({\n ...rate,\n active: electricityOptionSelection[index],\n }),\n );\n const selectedGasOptions: TAdditionalRate[] = _.map(\n gasOptions,\n (rate: TAdditionalRate, index: number) => ({\n ...rate,\n active: gasOptionSelection[index],\n }),\n );\n let selection: any = {};\n if (electricityEnabled && !!electricityProductSelection) {\n electricityProductWithOptions = electricityProductSelection.value;\n electricityProductWithOptions.additionalRates = _.map(\n !isEmpty(initialElectricityRateOptions)\n ? initialElectricityRateOptions\n : electricityProductWithOptions.additionalRates,\n (rate: TAdditionalRate) => {\n const match = _.find(selectedElectricityOptions, rate);\n if (!!match && match.active) rate.active = true;\n return rate;\n },\n ).filter((rate: TAdditionalRate) => {\n const isFee = rate.type === EAdditionalRateTypes.FEE;\n\n if (!!electricityFrequencySelection && isFee) {\n return matchFrequency(\n rate,\n electricityFrequencySelection.value,\n );\n } else if (isFee) {\n return false;\n }\n return true;\n });\n\n if (isCyclicalProduct(electricityProductWithOptions)) {\n selection = {\n ...selection,\n electricityProduct: electricityProductWithOptions,\n };\n } else if (\n !!electricityFrequencySelection &&\n !!electricityPlanSelection\n ) {\n selection = {\n ...selection,\n electricityFrequency: electricityFrequencySelection.value,\n electricityPackage: electricityPlanSelection.value,\n electricityProduct: electricityProductWithOptions,\n electricitySeasonalPackages: authorizedElectricityPackageSelection,\n };\n } else {\n console.error('Unexpected product type');\n return;\n }\n }\n if (gasEnabled && !!gasProductSelection) {\n gasProductWithOptions = gasProductSelection.value;\n gasProductWithOptions.additionalRates = _.map(\n !isEmpty(initialGasRateOptions)\n ? initialGasRateOptions\n : gasProductWithOptions.additionalRates,\n (rate: TAdditionalRate) => {\n const match = _.find(selectedGasOptions, rate);\n if (!!match && match.active) rate.active = true;\n return rate;\n },\n ).filter((rate: TAdditionalRate) => {\n const isFee = rate.type === EAdditionalRateTypes.FEE;\n if (!!gasFrequencySelection && isFee) {\n return matchFrequency(rate, gasFrequencySelection.value);\n } else if (isFee) {\n return false;\n }\n return true;\n });\n if (isCyclicalProduct(gasProductWithOptions)) {\n selection = {\n ...selection,\n gasProduct: gasProductWithOptions,\n };\n } else if (!!gasFrequencySelection && !!gasPlanSelection) {\n selection = {\n ...selection,\n gasFrequency: gasFrequencySelection.value,\n gasPackage: gasPlanSelection.value,\n gasProduct: gasProductWithOptions,\n gasSeasonalPackages: authorizedGasPackageSelection,\n };\n } else {\n console.error('Unexpected product type');\n return;\n }\n }\n onValidate({\n ...selection,\n });\n }\n refresh(\n contracts: TContract[] | null,\n packages: TPackage[] | null,\n products: TProduct[] | null,\n frequencies: TPrepaymentFrequencies[] | null,\n ) {\n let nextState: any = {};\n if (!contracts || !packages || !products) {\n nextState = {\n electricityFrequencySelection: null,\n electricityPlanSelection: null,\n electricityProductSelection: null,\n gasFrequencySelection: null,\n gasPlanSelection: null,\n gasProductSelection: null,\n };\n }\n\n const mappedFrequencies = mapPackagePrepaymentFrequencies(frequencies);\n const electricityFrequencies: Array<SelectOption<\n EInstallmentFrequencies\n >> = [...mappedFrequencies];\n const gasFrequencies: Array<SelectOption<EInstallmentFrequencies>> = [\n ...mappedFrequencies,\n ];\n const electricityPlans: Array<SelectOption<TPackage>> = [];\n const gasPlans: Array<SelectOption<TPackage>> = [];\n _.forEach(packages, (pkg: TPackage, i: number) => {\n const energy = _.get(pkg, 'energy', '');\n const label = _.get(pkg, 'id');\n if (!label) return false;\n const opt: SelectOption<TPackage> = {\n id: `${i}`,\n label: `${label}${pkg.recommended ? ' (Recommandé)' : ''}`,\n value: pkg,\n };\n if (energy === EEnergyTypes.ELECTRICTY) {\n electricityPlans.push(opt);\n } else if (energy === EEnergyTypes.GAS) {\n gasPlans.push(opt);\n }\n });\n const electricityProducts: Array<SelectOption<TProduct>> = [];\n const gasProducts: Array<SelectOption<TProduct>> = [];\n _.forEach(products, (product: TProduct, i: number) => {\n const energy = _.get(product, 'energy', '');\n const label = _.get(product, 'label');\n if (!label) return false;\n const opt: SelectOption<TProduct> = {\n id: `${i}`,\n label,\n value: product,\n };\n if (energy === (EEnergyTypes.ELECTRICTY as string)) {\n electricityProducts.push(opt);\n } else if (energy === EEnergyTypes.GAS) {\n gasProducts.push(opt);\n }\n });\n const electricityOptions: TAdditionalRate[] = [];\n const electricityOptionSelection: TAdditionalRate[] = [];\n const gasOptions: TAdditionalRate[] = [];\n const gasOptionSelection: TAdditionalRate[] = [];\n nextState = {\n ...nextState,\n authorizedElectricityPackages: [],\n authorizedElectricityPackageSelection: null,\n authorizedGasPackages: [],\n authorizedGasPackageSelection: null,\n electricityFrequencies,\n electricityOptions,\n electricityOptionSelection,\n electricityPlans,\n electricityProducts,\n gasFrequencies,\n gasOptions,\n gasOptionSelection,\n gasPlans,\n gasProducts,\n gaugeTarget: null,\n shouldShowGauge: false,\n electricityFrequencySelection: null,\n electricityProductSelection: null,\n electricityPlanSelection: null,\n gasProductSelection: null,\n gasPlanSelection: null,\n gasFrequencySelection: null,\n };\n this.setState({ ...nextState });\n }\n shouldAllowSeasonalSelection(): boolean {\n const { electricityEnabled, gasEnabled } = this.props;\n const {\n electricityPlanSelection,\n electricityProductSelection,\n gasPlanSelection,\n gasProductSelection,\n } = this.state;\n let should = true;\n const hasCyclicalElectricity: boolean = isCyclicalProduct(\n _.get(electricityProductSelection, 'value', null),\n );\n const hasCyclicalGas: boolean = isCyclicalProduct(\n _.get(gasProductSelection, 'value', null),\n );\n if (hasCyclicalElectricity && hasCyclicalGas) {\n should = false;\n } else if (hasCyclicalElectricity || hasCyclicalGas) {\n if (hasCyclicalElectricity && gasEnabled) {\n should =\n !!electricityProductSelection &&\n !!gasProductSelection &&\n !!gasPlanSelection;\n } else if (hasCyclicalGas && electricityEnabled) {\n should =\n !!gasProductSelection &&\n !!electricityProductSelection &&\n !!electricityPlanSelection;\n } else if (electricityEnabled && !gasEnabled) {\n should =\n !!electricityProductSelection && !!electricityPlanSelection;\n } else if (!electricityEnabled && gasEnabled) {\n should = !!gasProductSelection && !!gasPlanSelection;\n }\n } else {\n if (electricityEnabled) {\n should =\n should &&\n !!electricityProductSelection &&\n !!electricityPlanSelection;\n }\n if (gasEnabled) {\n should = should && !!gasProductSelection && !!gasPlanSelection;\n }\n }\n return should;\n }\n validateSeasonalOffersModal(\n electricity: TAuthorizedPackage | null,\n gas: TAuthorizedPackage | null,\n ) {\n this.setState({\n authorizedElectricityPackageSelection: electricity,\n authorizedGasPackageSelection: gas,\n shouldShowGauge: false,\n });\n }\n\n controlChangeAfterSave = (initialParams: Data) => {\n const {\n electricityProductSelection,\n gasProductSelection,\n electricityPlanSelection,\n gasPlanSelection,\n electricityFrequencySelection,\n gasFrequencySelection,\n electricityOptionSelection,\n gasOptionSelection,\n electricityOptions,\n gasOptions,\n } = this.state;\n\n const { electricityEnabled, gasEnabled } = this.props;\n\n let checkElec = true;\n let checkGas = true;\n\n const checkMainElec = (checked: boolean) => checkElec && checked;\n const checkMainGas = (checked: boolean) => checkGas && checked;\n\n const checkProductSelection = (\n initial: TProduct | null,\n current: SelectOption<TProduct> | null,\n ) => {\n const res =\n initial !== null &&\n current !== null &&\n initial.productCode === current.value.productCode;\n\n return res === null ? false : (res as boolean);\n };\n\n const checkPlanSelection = (\n initial: TPackage | null,\n current: SelectOption<TPackage> | null,\n ) => {\n const res =\n initial !== null &&\n current !== null &&\n initial.id === current.value.id;\n\n return res === null ? false : (res as boolean);\n };\n\n const checkFrequencySelection = (\n initial: EInstallmentFrequencies | null,\n current: SelectOption<EInstallmentFrequencies> | null,\n ) => {\n const res =\n initial !== null &&\n current !== null &&\n initial === current.value;\n\n return res === null ? false : (res as boolean);\n };\n\n if (electricityEnabled) {\n const checkElectricityProductSelection = checkProductSelection(\n initialParams.electricityProductSelection,\n electricityProductSelection,\n );\n\n const checkElectricityPlanSelection = checkPlanSelection(\n initialParams.electricityPlanSelection,\n electricityPlanSelection,\n );\n\n const checkElectricityFrequency = checkFrequencySelection(\n initialParams.electricityFrequencySelection,\n electricityFrequencySelection,\n );\n\n const initialElectricityOptionSelection: boolean[] = _.map(\n electricityOptions,\n (rate: TAdditionalRate) => {\n return !!_.find(\n initialParams.electricitySelectedOptions,\n rate,\n );\n },\n );\n\n const checkElectricityOptionSelection = _.isEqual(\n electricityOptionSelection,\n initialElectricityOptionSelection,\n );\n\n checkElec = checkMainElec(checkElectricityProductSelection);\n checkElec = checkMainElec(checkElectricityPlanSelection);\n checkElec = checkMainElec(checkElectricityFrequency);\n checkElec = checkMainElec(checkElectricityOptionSelection);\n }\n\n if (gasEnabled) {\n const checkGasProductSelection = checkProductSelection(\n initialParams.gasProductSelection,\n gasProductSelection,\n );\n\n const checkGasPlanSelection = checkPlanSelection(\n initialParams.gasPlanSelection,\n gasPlanSelection,\n );\n\n const checkGasFrequency = checkFrequencySelection(\n initialParams.gasFrequencySelection,\n gasFrequencySelection,\n );\n\n const initialGasOptionSelection: boolean[] = _.map(\n gasOptions,\n (rate: TAdditionalRate) => {\n return !!_.find(initialParams.gasSelectedOptions, rate);\n },\n );\n\n const checkGasOptionSelection = _.isEqual(\n gasOptionSelection,\n initialGasOptionSelection,\n );\n\n checkGas = checkMainGas(checkGasProductSelection);\n checkGas = checkMainGas(checkGasPlanSelection);\n checkGas = checkMainGas(checkGasFrequency);\n checkGas = checkMainGas(checkGasOptionSelection);\n }\n\n return checkGas && checkElec;\n };\n\n handleConsumptionModal = () => {\n const { showConsumptionModal } = this.state;\n\n this.setState({ showConsumptionModal: !showConsumptionModal });\n };\n\n render() {\n const {\n electricityEnabled,\n initialParams,\n gasEnabled,\n handleSetGaugeProps,\n contracts,\n handleEstimatesPackagesByClient,\n errorOffer,\n } = this.props;\n const {\n authorizedElectricityPackages,\n authorizedElectricityPackageSelection,\n authorizedGasPackages,\n authorizedGasPackageSelection,\n electricityFrequencies,\n electricityFrequencySelection,\n electricityOptions,\n electricityOptionSelection,\n electricityPlans,\n electricityPlanSelection,\n electricityProducts,\n electricityProductSelection,\n gasFrequencies,\n gasFrequencySelection,\n gasOptions,\n gasOptionSelection,\n gasPlans,\n gasPlanSelection,\n gasProducts,\n gasProductSelection,\n shouldShowGauge,\n showConsumptionModal,\n } = this.state;\n const electricityProductText = tch(\n `${Wording.product} ${Wording.electricity}`,\n );\n const electricityPlanText = tch(\n `${Wording.plan} ${Wording.electricity}`,\n );\n const gasProductText = tch(`${Wording.product} ${Wording.gas}`);\n const gasPlanText = tch(`${Wording.plan} ${Wording.gas}`);\n const frequencyText = tch(Wording.frequency);\n const hasCyclicalElectricityProduct =\n !!electricityProductSelection &&\n isCyclicalProduct(electricityProductSelection.value);\n const hasCyclicalGasProduct =\n !!gasProductSelection &&\n isCyclicalProduct(gasProductSelection.value);\n const allowSeasonalSelection: boolean = this.shouldAllowSeasonalSelection();\n const electricityPlanDefaultLabel: string = hasCyclicalElectricityProduct\n ? Wording.cyclicalPlaceholderText\n : electricityEnabled && !electricityPlanSelection\n ? _.get(initialParams, 'previousElectricityPlanSelection.id')\n : undefined;\n const gasPlanDefaultLabel: string = hasCyclicalGasProduct\n ? Wording.cyclicalPlaceholderText\n : gasEnabled && !gasPlanSelection\n ? _.get(initialParams, 'previousGasPlanSelection.id')\n : undefined;\n\n const userGroup = localStorage.getItem('userGroup');\n const isAdmin = userGroup === 'ADMIN';\n\n const hasErrorOffer = errorOffer.some(value => value);\n\n return (\n <section className={baseClassName}>\n <h2>{Wording.title}</h2>\n <p>{Wording.heading}</p>\n <div className={bcn([baseClassName, selectGridClassName])}>\n {electricityEnabled && (\n <div\n className={bcn([\n baseClassName,\n selectGridClassName,\n 'half',\n ])}\n >\n <CustomSelect\n disabled={\n !electricityEnabled ||\n electricityProducts.length === 0\n }\n handleChangeSelect={\n this.handleElectricityProductSelection\n }\n options={electricityProducts}\n text={electricityProductText}\n value={electricityProductSelection}\n />\n <div\n className={classnames({\n 'disabled-section': hasCyclicalElectricityProduct,\n })}\n >\n <CustomSelect\n disabled={\n !electricityEnabled ||\n hasCyclicalElectricityProduct ||\n electricityPlans.length === 0 ||\n !electricityProductSelection\n }\n handleChangeSelect={\n this.handleElectricityPlanSelection\n }\n options={electricityPlans}\n placeholder={electricityPlanDefaultLabel}\n text={electricityPlanText}\n value={electricityPlanSelection}\n />\n <CustomSelect\n disabled={\n !electricityEnabled ||\n hasCyclicalElectricityProduct ||\n electricityFrequencies.length === 0 ||\n !electricityProductSelection\n }\n handleChangeSelect={\n this.handleElectricityFrequencySelection\n }\n options={prepareFrequenciesToDisplay(\n electricityFrequencies,\n )}\n text={frequencyText}\n value={electricityFrequencySelection}\n placeholder={\n hasCyclicalElectricityProduct\n ? Wording.cyclicalPlaceholderText\n : ''\n }\n />\n <ToggleIndicator\n text={Wording.seasonalActivation}\n textAlignment={'right'}\n toggled={\n !!authorizedElectricityPackageSelection\n }\n />\n </div>\n </div>\n )}\n {gasEnabled && (\n <div\n className={bcn([\n baseClassName,\n selectGridClassName,\n 'half',\n ])}\n >\n <CustomSelect\n disabled={\n !gasEnabled || gasProducts.length === 0\n }\n handleChangeSelect={\n this.handleGasProductSelection\n }\n options={gasProducts}\n text={gasProductText}\n value={gasProductSelection}\n />\n <div\n className={classnames({\n 'disabled-section': hasCyclicalGasProduct,\n })}\n >\n <CustomSelect\n disabled={\n !gasEnabled ||\n hasCyclicalGasProduct ||\n gasPlans.length === 0 ||\n !gasProductSelection\n }\n handleChangeSelect={\n this.handleGasPlanSelection\n }\n options={gasPlans}\n placeholder={gasPlanDefaultLabel}\n text={gasPlanText}\n value={gasPlanSelection}\n />\n <CustomSelect\n disabled={\n !gasEnabled ||\n hasCyclicalGasProduct ||\n gasFrequencies.length === 0 ||\n !gasProductSelection\n }\n handleChangeSelect={\n this.handleGasFrequencySelection\n }\n options={prepareFrequenciesToDisplay(\n gasFrequencies,\n )}\n text={frequencyText}\n value={gasFrequencySelection}\n placeholder={\n hasCyclicalGasProduct\n ? Wording.cyclicalPlaceholderText\n : ''\n }\n />\n <ToggleIndicator\n text={Wording.seasonalActivation}\n textAlignment={'left'}\n toggled={!!authorizedGasPackageSelection}\n />\n </div>\n </div>\n )}\n </div>\n {allowSeasonalSelection && (\n <div className={bcn([baseClassName, 'package-manage'])}>\n <CustomButton\n color={'gray'}\n onClick={this.handleSeasonalOffersModalToggle}\n title={Wording.adjust}\n />\n {/* {isAdmin && (<CustomButton\n color={'gray'}\n onClick={this.handleConsumptionModal}\n title={Wording.consumption}\n />)}*/}\n \n </div>\n )}\n <CustomOverlay centered={true} show={shouldShowGauge}>\n <SeasonalOffersModal\n authorizedElectricityPackages={\n authorizedElectricityPackages\n }\n authorizedGasPackages={authorizedGasPackages}\n electricityEnabled={electricityEnabled}\n dismiss={this.handleSeasonalOfferModalDismiss}\n gasEnabled={gasEnabled}\n initialElectricitySelection={\n authorizedElectricityPackageSelection\n }\n initialGasSelection={authorizedGasPackageSelection}\n onValidate={this.validateSeasonalOffersModal}\n handleSetGaugeProps={handleSetGaugeProps}\n />\n </CustomOverlay>\n <Options\n electricityOptions={electricityOptions}\n electricityOptionSelection={electricityOptionSelection}\n gasOptions={gasOptions}\n gasOptionSelection={gasOptionSelection}\n onSelection={this.handleOptionSelection}\n />\n\n {!!initialParams &&\n !this.controlChangeAfterSave(initialParams) && (\n <p className=\"error-message\">\n {Wording.errorMessageAfterChangeInitailParams}\n </p>\n )}\n <CustomButton\n color={'orange'}\n heavy={true}\n onClick={this.handleValidationClick}\n title={Wording.validate}\n disabled={hasErrorOffer}\n />\n <ClientConsumption\n gasEnabled={gasEnabled}\n electricityEnabled={electricityEnabled}\n open={showConsumptionModal}\n contracts={contracts}\n handleModalClick={this.handleConsumptionModal}\n handleEstimatesPackagesByClient={\n handleEstimatesPackagesByClient\n }\n />\n </section>\n );\n }\n}\n\nexport default OfferSection;\n","import OfferSection from './OfferSection';\nexport default OfferSection;\n","import React, { FC } from 'react';\n\ntype FieldProps = {\n name: string;\n value?: string;\n};\n\nconst baseClassName = 'recap-field';\n\nconst RecapField: FC<FieldProps> = (props: FieldProps) => {\n const { name, value } = props;\n\n return (\n <div className={baseClassName}>\n <span>{`${name} :`}</span>\n <span>{value || '-'}</span>\n </div>\n );\n};\n\nexport default RecapField;\n","import React, { FC, useEffect, useState } from 'react';\nimport _ from 'lodash';\nimport shortid from 'shortid';\nimport {\n EUnitAmounts,\n ECategories,\n TAmountWithLabel,\n TUnitPriceWithLabel,\n TOffer,\n TSeasonalPackage,\n TPackage,\n EEnergyTypes,\n EInstallmentFrequencies,\n} from '../../../../../utils/network/types';\nimport RecapField from './RecapField';\nimport { toIsc } from '../../../../../utils/text';\nimport WordingConstant from '../../../../../utils/wording.json';\nimport { EnergyGauge } from '../../../../../components';\nimport {\n additionalRatesDuplicateValue,\n array_move,\n} from '../../../../../utils/helpers';\n\nconst baseClassName = 'recap-group';\nconst fieldsClassName = 'fields';\n// const rebateLabelRegex = new RegExp(/^[rR]emise */);\nconst Wording = WordingConstant.AdminSubscriptionContainer.Recap;\n\ntype GroupProps = {\n offer: TOffer;\n title: string;\n installmentFrequency?: EInstallmentFrequencies;\n chosenPackages: Array<TPackage | TSeasonalPackage>;\n gaugeProps: {\n electricityGaugeProps: GaugeProps | null;\n gasGaugeProps: GaugeProps | null;\n };\n};\n\ntype Line = [string, string];\n\nfunction isRawPriceDetail(detail: TAmountWithLabel): boolean {\n let is = false;\n switch (detail.category) {\n case ECategories.TOTAL_AMOUNT:\n is = true;\n break;\n case ECategories.ADDITIONAL_RATE:\n // if (!rebateLabelRegex.test(detail.label || '')) is = true;\n is = true;\n break;\n }\n return is;\n}\n\nfunction isRebateDetail(dt: TAmountWithLabel): boolean {\n const { category } = dt;\n return (\n category === ECategories.ADDITIONAL_RATE ||\n category === ECategories.TOTAL_AMOUNT ||\n category === ECategories.TOTAL_BUDGET\n );\n}\n\nfunction isPriceAfterRebateDetail(detail: TAmountWithLabel): boolean {\n let is = false;\n switch (detail.category) {\n case ECategories.DISCOUNTED_UNIT_PRICE:\n case ECategories.DISCOUNTED_UNIT_PRICE_TTC:\n is = true;\n break;\n }\n return is;\n}\n\nfunction formatUnit(unit: EUnitAmounts): string {\n let formattedUnit: string = unit;\n switch (unit) {\n case EUnitAmounts.PERCENT:\n formattedUnit = '%';\n break;\n }\n return formattedUnit;\n}\n\nfunction formatUnitLabel(price: TUnitPriceWithLabel): string {\n let formattedLabel: string = price.label || '';\n if (!!price.unit && price.unit === EUnitAmounts.EURO_KWH) {\n formattedLabel = [formattedLabel, `(${Wording.unitPrice})`].join(' ');\n }\n return formattedLabel;\n}\n\nfunction formatLine(detail: TAmountWithLabel): Line[] | null {\n const lines: Line[] = [];\n\n if (!!detail.label) {\n const name: string = detail.label;\n let value: string = '';\n if (!!detail.amount && !!detail.unit) {\n value = toIsc(`${detail.amount} ${formatUnit(detail.unit)}`);\n }\n lines.push([name, value]);\n }\n // if (!!detail.unitPrices && detail.unitPrices.length > 0) {\n // _.forEach(detail.unitPrices, (unitPrice: TUnitPriceWithLabel) => {\n // if (!!unitPrice.label && !!unitPrice.price && !!unitPrice.unit) {\n // const value = toIsc(\n // `${unitPrice.price} ${formatUnit(unitPrice.unit)}`,\n // );\n // lines.push([formatUnitLabel(unitPrice), value]);\n // }\n // });\n // }\n return lines;\n}\n\nfunction formatFields(title: string, lines: Line[]): JSX.Element | null {\n return (\n <div key={shortid.generate()} className={fieldsClassName}>\n <h4>{title}</h4>\n {lines &&\n lines\n .filter(ln => ln !== undefined && ln.length > 0)\n .map((line: Line) => (\n <RecapField\n key={line[0]}\n name={line[0]}\n value={line[1]}\n />\n ))\n }\n </div>\n );\n}\n\nconst unitPricesArr = (unitPrices: TUnitPriceWithLabel[]) =>\n unitPrices.map(({ unit, price, label }) => [\n label,\n `${price}${unit}`,\n ]) as Line[];\n\ntype GaugeProps = {\n initial: number;\n ranges: number[][];\n maxValue: number;\n};\n\nconst RecapGroup: FC<GroupProps> = (props: GroupProps) => {\n const { offer, title, chosenPackages, installmentFrequency } = props;\n\n const rawDetailsPriceLines: Line[] = [];\n const priceAfterPresentation: TAmountWithLabel[] = [];\n\n const rawPriceLine: Line[] = [];\n\n _.forEach(offer.details, (detail: TAmountWithLabel) => {\n\n const line: Line[] | null = formatLine(detail);\n\n if (isRawPriceDetail(detail)) {\n if (detail.unitPrices) {\n unitPricesArr(detail.unitPrices).forEach(l =>\n rawDetailsPriceLines.push(l),\n );\n\n }\n }\n if (isRebateDetail(detail)) {\n rawPriceLine.push(...line);\n\n if (\n detail.category &&\n detail.category === ECategories.ECONOMY &&\n !!detail.unitPrices &&\n detail.unitPrices.length > 0\n ) {\n _.forEach(\n detail.unitPrices,\n (unitPrice: TUnitPriceWithLabel) => {\n if (\n !!unitPrice.label &&\n !!unitPrice.price &&\n !!unitPrice.unit\n ) {\n const value = toIsc(\n `${unitPrice.price} ${formatUnit(\n unitPrice.unit,\n )}`,\n );\n rawPriceLine.push([\n formatUnitLabel(unitPrice),\n value,\n ]);\n }\n },\n );\n }\n }\n if (isPriceAfterRebateDetail(detail)) {\n priceAfterPresentation.push(detail);\n }\n });\n\n const getGaugePropsByEnergy = (): GaugeProps | null => {\n if (offer.energy === EEnergyTypes.ELECTRICTY) {\n return props.gaugeProps.electricityGaugeProps;\n }\n\n if (offer.energy === EEnergyTypes.GAS) {\n return props.gaugeProps.gasGaugeProps;\n }\n return null;\n };\n\n const renderChosenPackage = () => {\n const title = (\n <div className={fieldsClassName}>\n <h4 className=\"without-margin\">{Wording.fields.forfais}</h4>\n </div>\n );\n if (chosenPackages.length === 1) {\n const current = chosenPackages[0];\n return (\n <>\n {title}\n <div className=\"chosen-package-mono\">\n <p>\n {current.amount} {current.currency}\n </p>\n </div>\n </>\n );\n }\n\n const gaugeProps = getGaugePropsByEnergy();\n\n if (gaugeProps !== null) {\n return (\n <>\n {title}\n\n <div className=\"chosen-package-bi\">\n <EnergyGauge {...gaugeProps} onChange={() => { }} />\n </div>\n </>\n );\n }\n\n return (\n chosenPackages.length !== 0 &&\n chosenPackages[0] && (\n <>\n {title}\n <div className=\"chosen-package-mono chosen-package-mono-bi\">\n <p>\n {chosenPackages[0].amount}{' '}\n {chosenPackages[0].currency} |{' '}\n {chosenPackages[1].amount}{' '}\n {chosenPackages[1].currency}\n </p>\n </div>\n </>\n )\n );\n };\n\n const sortRawDetailsPriceLines = rawDetailsPriceLines.sort((a, b) => {\n if (a[1] > b[1]) return -1;\n if (a[1] < b[1]) return 1;\n return 0;\n });\n\n if (\n installmentFrequency &&\n installmentFrequency === 'MONTHLY' &&\n sortRawDetailsPriceLines.length === 4\n ) {\n array_move(sortRawDetailsPriceLines, 2, 3);\n\n if (sortRawDetailsPriceLines[1][0] === 'Abonnement') {\n array_move(sortRawDetailsPriceLines, 0, 1);\n }\n }\n\n return (\n <div className={baseClassName}>\n <h3>{title}</h3>\n {renderChosenPackage()}\n\n {!!rawPriceLine.length &&\n formatFields(\n Wording.fields.rawPrice,\n additionalRatesDuplicateValue(rawPriceLine),\n )}\n\n {!!rawDetailsPriceLines.length &&\n formatFields(\n Wording.fields.detailsPrice_HT,\n sortRawDetailsPriceLines,\n )}\n\n {priceAfterPresentation.map(({ category, unitPrices }) => {\n if (category) {\n const nup = unitPrices && unitPricesArr(unitPrices);\n\n if (category === ECategories.DISCOUNTED_UNIT_PRICE) {\n return formatFields(\n Wording.fields.discountPrice_HT,\n nup as Line[],\n );\n }\n\n if (category === ECategories.DISCOUNTED_UNIT_PRICE_TTC) {\n return formatFields(\n Wording.fields.discountPrice_TTC,\n nup as Line[],\n );\n }\n }\n })}\n </div>\n );\n};\n\nexport default RecapGroup;\n","import React, { ChangeEvent, FC, useEffect, useState } from 'react';\n\nimport _ from 'lodash';\nimport WordingConstant from '../../../../../utils/wording.json';\nimport { buildClassName as bcn } from '../../../../../utils/helpers';\nimport {\n ERebateCodeTypes,\n EEnergyTypes,\n TOffer,\n TContract,\n} from '../../../../../utils/network/types';\nimport RecapGroup from './RecapGroup';\nimport { SelectOption } from 'Types';\nimport {\n CustomError,\n CustomInput,\n CustomSelect,\n CustomToggle,\n} from '../../../../../components';\nimport { RequestError } from '../../../../../utils/network/errors';\nimport Data from './Data';\n\nconst Wording = WordingConstant.AdminSubscriptionContainer.Recap;\nconst baseClassName = 'recap-section';\nconst groupsClassName = bcn([baseClassName, 'groups']);\nconst codeClassName = 'code';\nconst radioToggleClassName = bcn([codeClassName, 'radios']);\nconst codeInputClassName = bcn([codeClassName, 'inputs']);\nconst codeOptions: Array<SelectOption<ERebateCodeTypes>> = [\n { id: '0', label: Wording.code.sponsor, value: ERebateCodeTypes.SPONSOR },\n {\n id: '1',\n label: Wording.code.promotional,\n value: ERebateCodeTypes.PROMOTION,\n },\n { id: '2', label: Wording.code.cashback, value: ERebateCodeTypes.CASHBACK },\n];\n\ntype GaugeProps = {\n initial: number;\n ranges: number[][];\n maxValue: number;\n};\n\ninterface ISectionProps {\n initialParams?: Data;\n offers: TOffer[] | null;\n finalContracts: TContract[];\n gaugeProps: {\n electricityGaugeProps: GaugeProps | null;\n gasGaugeProps: GaugeProps | null;\n };\n onCodeValidation: (\n validated: boolean,\n code: string,\n type?: ERebateCodeTypes,\n ) => void;\n validateSponsorCode: (code: string) => Promise<boolean | RequestError>;\n}\n\nfunction getCodeHint(code: ERebateCodeTypes | null) {\n switch (code) {\n case ERebateCodeTypes.SPONSOR:\n return Wording.code.sponsorHint;\n case ERebateCodeTypes.CASHBACK:\n return Wording.code.cashbackHint;\n default:\n return '';\n }\n}\n\nfunction getCodePlaceholder(code: ERebateCodeTypes | null) {\n switch (code) {\n case ERebateCodeTypes.SPONSOR:\n return Wording.code.sponsorPlaceholder;\n case ERebateCodeTypes.PROMOTION:\n return Wording.code.promotionalPlaceholder;\n case ERebateCodeTypes.CASHBACK:\n return Wording.code.cashbackPlaceholder;\n default:\n return '';\n }\n}\n\nconst RecapSection: FC<ISectionProps> = (props: ISectionProps) => {\n const {\n initialParams,\n offers,\n onCodeValidation,\n validateSponsorCode,\n finalContracts,\n gaugeProps,\n } = props;\n const codeSelectionDefault: SelectOption<ERebateCodeTypes> | null =\n !!initialParams && !!initialParams.codeType\n ? _.find(codeOptions, (option: SelectOption<ERebateCodeTypes>) => {\n return option.value === initialParams.codeType;\n }) || null\n : null;\n\n const [codeSelection, setCodeSelection] = useState<SelectOption<\n ERebateCodeTypes\n > | null>(codeSelectionDefault);\n\n const [codeInputToggled, toggleCodeInput] = useState<boolean>(\n !!initialParams ? initialParams.codeInputToggled : false,\n );\n\n const [code, setCode] = useState<string>(\n !!initialParams ? initialParams.code : '',\n );\n\n const [codeError, setCodeError] = useState<string>('');\n const selectedCode = _.get(codeSelection, 'value', null);\n const codeInputHint = getCodeHint(selectedCode);\n const codeInputPlaceholder = getCodePlaceholder(selectedCode);\n\n const handleCodeInputChange = (e: ChangeEvent<HTMLInputElement>) => {\n if (codeSelection === null) {\n setCodeError(Wording.code.missingSelection);\n return;\n }\n setCodeError('');\n const nextValue = _.get(e, 'target.value', '');\n\n setCode(nextValue);\n\n onCodeValidation(true, nextValue, _.get(codeSelection, 'value'));\n };\n const handleCodeSelection = (\n opt: SelectOption<ERebateCodeTypes> | null,\n ) => {\n setCodeError('');\n setCode('');\n setCodeSelection(opt);\n };\n const handleCodeToggle = (e: ChangeEvent<HTMLInputElement>) => {\n handleCodeSelection(null);\n toggleCodeInput(!codeInputToggled);\n };\n\n const offerArr: TOffer[] = !!initialParams\n ? initialParams.offers\n : offers || [];\n const groupClassNameSuffix = offerArr.length > 1 ? 'bi' : 'mono';\n return (\n <section className={baseClassName}>\n <h2>{Wording.title}</h2>\n {offerArr.length > 0 ? (\n <div className={`${groupsClassName}-${groupClassNameSuffix}`}>\n {offerArr.map((offer: TOffer, idx: number) => {\n let title = '-';\n if (offer.energy === EEnergyTypes.ELECTRICTY) {\n title = Wording.electricity;\n } else if (offer.energy === EEnergyTypes.GAS) {\n title = Wording.gas;\n }\n\n const currentContract = finalContracts.find(\n cntr => cntr.energy === offer.energy,\n );\n\n return (\n <RecapGroup\n chosenPackages={\n currentContract\n ? currentContract.chosenPackages || []\n : []\n }\n key={idx}\n offer={offer}\n title={title}\n gaugeProps={gaugeProps}\n installmentFrequency={\n currentContract\n ? currentContract.installmentFrequency\n : undefined\n }\n />\n );\n })}\n </div>\n ) : (\n <CustomError\n text={\n WordingConstant.AdminSubscriptionContainer.errors\n .getOffers\n }\n title={\n WordingConstant.AdminSubscriptionContainer.errors\n .defaultTitle\n }\n />\n )}\n <div className={codeClassName}>\n <div className={radioToggleClassName}>\n <CustomToggle\n checked={codeInputToggled}\n handleCheck={handleCodeToggle}\n id={'code-toggle'}\n text={Wording.code.prompt}\n />\n </div>\n {codeInputToggled && (\n <div className={codeInputClassName}>\n <CustomSelect\n handleChangeSelect={handleCodeSelection}\n options={codeOptions}\n value={codeSelection}\n />\n <CustomInput\n error={codeError}\n onInputChange={handleCodeInputChange}\n placeholder={codeInputPlaceholder}\n value={code}\n />\n </div>\n )}\n {codeInputToggled && !!codeInputHint && <p>{codeInputHint}</p>}\n </div>\n </section>\n );\n};\n\nexport default RecapSection;\n","import { SelectOption } from 'Types';\nimport _ from 'lodash';\nimport React from 'react';\nimport shortid from 'shortid';\nimport { ISectionData } from '.';\nimport ICLogo from '../../../assets/icons/ic-logo-wekiwi.svg';\nimport {\n CustomButton,\n CustomError,\n CustomOverlay,\n Separator,\n} from '../../../components';\nimport { LoadingSpinner } from '../../../libraries/withLoader';\nimport { ConnectedProps } from '../../../pages/admin/AdminSubscriptionPage/AdminSubscriptionPage';\nimport {\n buildClassName as bcn,\n compareAddress,\n forEach,\n getInitialGroup,\n parseQueryParams,\n} from '../../../utils/helpers';\nimport {\n buildFinalContracts,\n buildPendingOrder,\n Energy,\n} from '../../../utils/network/builders';\nimport {\n NoMatchingPackagesError,\n NoPackageListError,\n RequestError,\n} from '../../../utils/network/errors';\nimport {\n isCyclicalProduct,\n isEqualAuthorizedPackages,\n isEqualProduct,\n parseOrderRebateCode,\n requiresPayment,\n toEnergies,\n} from '../../../utils/network/helpers';\nimport {\n getDeliveryPointPackages,\n getRawDeliveryPointPackages,\n} from '../../../utils/network/request';\nimport {\n ECivilities,\n ECustomerTypes,\n EEffectiveStartRanges,\n EEnergyTypes,\n EFirstPaymentCBStatuses,\n EHeatingTypes,\n EHousingTypes,\n EInstallmentFrequencies,\n EOrderStatuses,\n EPaymentModes,\n EProcessTypes,\n ERateOptions,\n ERebateCodeTypes,\n EResidenceTypes,\n ERoles,\n ESubscriptionTypes,\n ETimeframes,\n ETimeslots,\n TAdditionalRate,\n TAddress,\n TAmountWithLabel,\n TAppointmentDay,\n TAuthorizedPackage,\n TContract,\n TCustomerContact,\n TEstimate,\n TGetOrderStatusResponse,\n TGetPackageResponse,\n TGetProductResponse,\n TOffer,\n TOrder,\n TOrderResponse,\n TPackage,\n TPaymentCBResponse,\n TPrepaymentFrequencies,\n TProduct,\n TSaveOrderResponse,\n TSeasonalPackage,\n TSignOrderResponse,\n TSurvey,\n TThirdParty,\n} from '../../../utils/network/types';\nimport { setState } from '../../../utils/reactHelpers';\nimport {\n removeSpaces as rs,\n toColonHeading as tch,\n toIsc,\n} from '../../../utils/text';\nimport WordingConstant from '../../../utils/wording.json';\nimport CustomerFormModal from './modals/CustomerSurveyModal';\nimport PaymentIframeModal from './modals/PaymentIframeModal';\nimport ResetModal from './modals/ResetModal';\nimport ClientDataSection from './sections/ClientDataSection';\nimport ClientSectionData from './sections/ClientDataSection/Data';\nimport MissingInformationSection from './sections/MissingInformationSection';\nimport OfferSection from './sections/OfferSection';\nimport OfferSectionData from './sections/OfferSection/Data';\nimport RecapSection from './sections/RecapSection';\nimport RecapSectionData from './sections/RecapSection/Data';\nimport SiteSection from './sections/SiteSection';\nimport SiteSectionData from './sections/SiteSection/Data';\nimport SituationSection from './sections/SituationSection';\nimport SituationSectionData, {\n SwitchData,\n} from './sections/SituationSection/Data';\nimport SubscribeSection from './sections/SubscribeSection';\nimport TopInformationSection from './sections/TopInformationSection';\nimport { EtypePayment } from '../../../utils/enums';\n\ntype GaugeProps = {\n initial: number;\n ranges: number[][];\n maxValue: number;\n};\n\nenum Sections {\n ClientData = 0,\n Site = 1,\n Offer = 2,\n Situation = 3,\n Recap = 4,\n MissingInformations = 5,\n Subscribe = 6,\n}\n\ntype PendingOrder = {\n data: TOrder;\n number: string;\n validation: TSignOrderResponse;\n};\n\ntype Situation = {\n coords?: {\n civility: ECivilities | null;\n firstName: string;\n lastName: string;\n };\n effectiveStartRange?: EEffectiveStartRanges;\n electricityEffectiveStartDate?: Date;\n electricityDueDate?: Date;\n gasDueDate?: Date;\n electricityExpress?: boolean;\n gasEffectiveStartDate?: Date;\n gasExpress?: boolean;\n electricityTimeslot?: ETimeslots;\n gasTimeslot?: ETimeslots;\n electricityFirstPaymentCB?: boolean;\n gasFirstPaymentCB?: boolean;\n billingAddress?: TAddress;\n iban?: string;\n processType?: EProcessTypes;\n thirdParty?: {\n civility: ECivilities;\n firstName: string;\n lastName: string;\n };\n};\n\ntype Section = {\n id: Sections;\n initialData: ISectionData | null;\n key: string;\n toggled: boolean;\n};\n\ntype Coholder = Pick<TThirdParty, 'civility' | 'firstName' | 'lastName'>;\n\ntype IProps = ConnectedProps;\n\ninterface IState {\n errorOffer: boolean[];\n contracts: TContract[] | null;\n prepaymentFrequencies: TPrepaymentFrequencies[] | null;\n currentKey: string;\n customerContact: TCustomerContact | null;\n didSaveOrder: boolean;\n electricityDeliveryAddress: TAddress | null;\n error: { text: string; title: string } | null;\n finalContracts: TContract[];\n firstPaymentCBStatus: EFirstPaymentCBStatuses | null;\n gasDeliveryAddress: TAddress | null;\n isIndividual: boolean;\n isSurvey: boolean;\n loading: boolean;\n offers: TOffer[] | null;\n orderReference: string | null;\n orderStatus: EOrderStatuses | null;\n packages: TPackage[] | null;\n pendingOrder: PendingOrder | null;\n previousOrder: TOrder | null;\n products: TProduct[] | null;\n rebateCode: string | null;\n rebateCodeType: ERebateCodeTypes | null;\n sections: Map<Sections, Section>;\n selectedElectricityProduct: TProduct | null;\n selectedGasProduct: TProduct | null;\n shouldDisplayPaymentIframe: boolean;\n shouldDisplayResetModal: boolean;\n shouldDisplaySurveyModal: boolean;\n siteOptionSelection: ESubscriptionTypes | null;\n situation: Situation | null;\n channel: string;\n paramsOrderNumber: boolean;\n gaugeProps: {\n electricityGaugeProps: GaugeProps | null;\n gasGaugeProps: GaugeProps | null;\n };\n\n isNewSiteSectionData?: boolean;\n isNewSiteSectionDataCheckRender?: boolean;\n\n pointsOfDeliveries: {\n EL?: string;\n NG?: string;\n };\n isPackageValid: boolean;\n deliveryPointPackages: TPackage[];\n gazAdress?: string;\n elecAdress?: string;\n recoverySurvey: boolean;\n}\n\nconst Wording = WordingConstant.AdminSubscriptionContainer;\nconst title = `${toIsc(Wording.title)} ${toIsc('- ')}${toIsc(\n Wording.titleMode,\n)}`;\nconst baseClassName = 'admin-subscription-container';\nconst maskClassName = bcn([baseClassName, 'mask']);\nconst customerFormId = 'customer-form';\nconst paymentIframeId = 'payment-modal';\nconst resetModalId = 'reset-modal';\nconst buildSection = (\n id: Sections,\n toggled: boolean = false,\n data?: ISectionData,\n): Section => ({\n id,\n initialData: data || null,\n key: shortid.generate(),\n toggled,\n});\nconst buildInitialSections = () =>\n new Map<Sections, Section>([\n [Sections.ClientData, buildSection(Sections.ClientData, true)],\n [Sections.Site, buildSection(Sections.Site)],\n [Sections.Offer, buildSection(Sections.Offer)],\n [Sections.Situation, buildSection(Sections.Situation)],\n [Sections.Recap, buildSection(Sections.Recap)],\n [\n Sections.MissingInformations,\n buildSection(Sections.MissingInformations),\n ],\n [Sections.Subscribe, buildSection(Sections.Subscribe)],\n ]);\nconst initialState = {\n errorOffer: [false, false],\n contracts: null,\n prepaymentFrequencies: null,\n currentKey: shortid.generate(),\n customerContact: null,\n didSaveOrder: false,\n electricityDeliveryAddress: null,\n electricityOptions: [],\n electricityOptionSelection: [],\n error: null,\n finalContracts: [],\n firstPaymentCBStatus: null,\n gasDeliveryAddress: null,\n gasOptions: [],\n gasOptionSelection: [],\n initialParams: null,\n isIndividual: true,\n isSurvey: false,\n loading: false,\n masked: false,\n offers: null,\n orderReference: null,\n orderStatus: null,\n packages: null,\n pendingOrder: null,\n previousOrder: null,\n products: null,\n rebateCode: null,\n rebateCodeType: null,\n sections: buildInitialSections(),\n selectedElectricityProduct: null,\n selectedGasProduct: null,\n shouldDisplayPaymentIframe: false,\n shouldDisplayResetModal: false,\n shouldDisplaySurveyModal: false,\n siteOptionSelection: null,\n situation: null,\n channel: '',\n gaugeProps: {\n electricityGaugeProps: null,\n gasGaugeProps: null,\n },\n orderNbr: null,\n paramsOrderNumber: false,\n isNewSiteSectionData: false,\n\n pointsOfDeliveries: {},\n isPackageValid: true,\n deliveryPointPackages: [],\n recoverySurvey: false,\n};\n\nclass AdminSubscriptionContainer extends React.Component<IProps, IState> {\n currOrderNbr: string | null;\n PDLRef: React.RefObject<string | null>;\n PCERef: React.RefObject<string | null>;\n\n constructor(props: IProps) {\n super(props);\n this.currOrderNbr = null;\n this.PDLRef = React.createRef();\n this.PCERef = React.createRef();\n\n this.state = _.cloneDeep(initialState);\n this.checkOrderStatus = this.checkOrderStatus.bind(this);\n this.checkSponsor = this.checkSponsor.bind(this);\n this.fetchAppointmentTimeslot = this.fetchAppointmentTimeslot.bind(\n this,\n );\n this.fetchCalendarAppointment = this.fetchCalendarAppointment.bind(\n this,\n );\n this.handleDebitDay = this.handleDebitDay.bind(this);\n this.getNextDisplayedSections = this.getNextDisplayedSections.bind(\n this,\n );\n this.handleProductSelection = this.handleProductSelection.bind(this);\n this.handleIsIndividualToggle = this.handleIsIndividualToggle.bind(\n this,\n );\n this.onSelectedGroup = this.onSelectedGroup.bind(this);\n this.handleMissingSiteID = this.handleMissingSiteID.bind(this);\n this.handleMissingInformations = this.handleMissingInformations.bind(\n this,\n );\n this.handleSiteModalValidation = this.handleSiteModalValidation.bind(\n this,\n );\n this.handleSiteOptionSelection = this.handleSiteOptionSelection.bind(\n this,\n );\n this.hideModal = this.hideModal.bind(this);\n this.onReceivePackages = this.onReceivePackages.bind(this);\n this.searchSIRET = this.searchSIRET.bind(this);\n this.submitSiteData = this.submitSiteData.bind(this);\n this.handleClientDataValidation = this.handleClientDataValidation.bind(\n this,\n );\n this.handleCodeValidation = this.handleCodeValidation.bind(this);\n this.handleOfferValidation = this.handleOfferValidation.bind(this);\n this.handlePackDynamicValidation = this.handlePackDynamicValidation.bind(\n this,\n );\n this.handlePaymentModalDismiss = this.handlePaymentModalDismiss.bind(\n this,\n );\n this.handleReset = this.handleReset.bind(this);\n this.handleResetCancel = this.handleResetCancel.bind(this);\n this.handleSituationValidation = this.handleSituationValidation.bind(\n this,\n );\n this.pay = this.pay.bind(this);\n this.reset = this.reset.bind(this);\n this.saveOrder = this.saveOrder.bind(this);\n this.signOrder = this.signOrder.bind(this);\n this.triggerSignaturePopin = this.triggerSignaturePopin.bind(this);\n this.handleSetGaugeProps = this.handleSetGaugeProps.bind(this);\n\n this.handleEstimatesPackagesByClient = this.handleEstimatesPackagesByClient.bind(\n this,\n );\n }\n componentDidMount() {\n const params = parseQueryParams(\n document.location,\n window.location.host,\n window.location.protocol,\n );\n const orderNumber: string | number | undefined = params.get(\n 'orderNumber',\n );\n\n const customerType = params.get('customerType');\n\n if (!!orderNumber) {\n this.fetchOrder(String(orderNumber));\n this.currOrderNbr = orderNumber as string;\n this.setState({\n paramsOrderNumber: true,\n });\n } else if (!!customerType) {\n this.setState({\n isIndividual: customerType === ECustomerTypes.INDIVIDUAL,\n });\n }\n }\n\n componentDidUpdate(prevProps: IProps, prevState: IState) {\n const { didSaveOrder } = this.state;\n const bannedProperties = [\n 'didSaveOrder',\n 'error',\n 'loading',\n 'orderReference',\n 'previousOrder',\n 'shouldDisplayPaymentIframe',\n 'shouldDisplayResetModal',\n 'shouldDisplaySurveyModal',\n ];\n const partialPrevState = _.omit(prevState, ...bannedProperties);\n const partialState = _.omit(this.state, ...bannedProperties);\n if (!_.isEqual(partialPrevState, partialState) && didSaveOrder) {\n this.setState({ didSaveOrder: false });\n }\n }\n\n buildOrder(isSign: boolean) {\n const {\n customerContact,\n electricityDeliveryAddress,\n finalContracts,\n gasDeliveryAddress,\n isIndividual,\n isSurvey,\n previousOrder,\n rebateCode,\n rebateCodeType,\n situation,\n channel,\n } = this.state;\n\n if (\n !situation ||\n finalContracts.length <= 0 ||\n customerContact === null\n ) {\n return null;\n }\n let customerAddress: TAddress | null = _.get(\n customerContact,\n 'address',\n null,\n );\n if (!customerAddress) {\n customerAddress = _.get(\n finalContracts,\n '0.deliveryPoint.address',\n null,\n );\n }\n const order: TOrder | null = buildPendingOrder(\n {\n customerContact: {\n ..._.omit(\n customerContact,\n isIndividual\n ? [\n 'companyName',\n 'companyType',\n 'identificationNumber',\n 'activityCode',\n ]\n : [],\n ),\n address: customerAddress as TAddress,\n },\n typePayment:\n situation.effectiveStartRange ===\n EEffectiveStartRanges.LATER &&\n situation.processType === EProcessTypes.SWITCH\n ? EtypePayment.SDD\n : EtypePayment.OTHER,\n customerType: isIndividual\n ? ECustomerTypes.INDIVIDUAL\n : ECustomerTypes.PROFESSIONAL,\n },\n {\n contracts: finalContracts,\n },\n {\n billingAddress: situation.billingAddress,\n coords: situation.coords,\n coholder: { ...situation.thirdParty },\n effectiveStartRange: situation.effectiveStartRange,\n energies: {\n EL: !!situation.electricityEffectiveStartDate\n ? {\n effectiveStartDate:\n situation.electricityEffectiveStartDate,\n express: !!situation.electricityEffectiveStartDate\n ? !!situation.electricityExpress\n : undefined,\n firstPaymentCB: !!situation.electricityFirstPaymentCB,\n timeslot: situation.electricityTimeslot,\n dueDate: situation.electricityDueDate,\n }\n : undefined,\n NG: !!situation.gasEffectiveStartDate\n ? {\n effectiveStartDate:\n situation.gasEffectiveStartDate,\n express: situation.gasEffectiveStartDate\n ? !!situation.gasExpress\n : undefined,\n firstPaymentCB: !!situation.gasFirstPaymentCB,\n timeslot: situation.gasTimeslot,\n dueDate: situation.gasDueDate,\n }\n : undefined,\n },\n payment: {\n iban: situation.iban,\n },\n processType: situation.processType,\n },\n {\n rebateCode:\n rebateCode !== null\n ? {\n code: rebateCode,\n type: rebateCodeType,\n }\n : undefined,\n channel,\n isSign,\n },\n );\n if (!!order) {\n _.set(order, 'orderStatus', EOrderStatuses.IN_PROGRESS);\n const requiresFirstPaymentCB: boolean = _.reduce<\n TContract,\n boolean\n >(\n order.contracts,\n (result: boolean, value: TContract) => {\n return result && requiresPayment(value);\n },\n true,\n );\n if (requiresFirstPaymentCB) {\n _.set(\n order,\n 'firstPaymentCBStatus',\n EFirstPaymentCBStatuses.PENDING,\n );\n }\n }\n if (!!order && !!previousOrder) {\n const previousOrderReference: string = _.get(\n previousOrder,\n 'orderReference',\n '',\n );\n const previousOrderStatus: string = _.get(\n previousOrder,\n 'orderStatus',\n '',\n );\n const previousElectricityContractNumber: string | undefined = _.get(\n _.find(previousOrder.contracts, (contract: TContract) => {\n return contract.energy === EEnergyTypes.ELECTRICTY;\n }),\n 'contractNumber',\n );\n const previousGasContractNumber: string | undefined = _.get(\n _.find(previousOrder.contracts, (contract: TContract) => {\n return contract.energy === EEnergyTypes.GAS;\n }),\n 'contractNumber',\n );\n if (\n previousOrderStatus === EOrderStatuses.IN_PROGRESS ||\n previousOrderStatus === EOrderStatuses.IN_FAILURE\n ) {\n _.set(order, 'orderReference', previousOrderReference);\n _.set(order, 'orderStatus', previousOrderStatus);\n _.forEach(order.contracts, (contract: TContract, i: number) => {\n if (contract.energy === EEnergyTypes.ELECTRICTY) {\n _.set(\n order,\n `contracts.${i}.contractNumber`,\n previousElectricityContractNumber,\n );\n } else if (contract.energy === EEnergyTypes.GAS) {\n _.set(\n order,\n `contracts.${i}.contractNumber`,\n previousGasContractNumber,\n );\n }\n });\n }\n }\n\n return order;\n }\n async checkOrderStatus(\n orderNumber: string,\n ): Promise<TGetOrderStatusResponse | RequestError> {\n const { getOrderStatus } = this.props;\n const { pendingOrder, channel } = this.state;\n const res:\n | TGetOrderStatusResponse\n | RequestError = await getOrderStatus(\n getInitialGroup(channel),\n orderNumber,\n );\n if (!(res instanceof RequestError)) {\n if (!!pendingOrder) {\n _.set(pendingOrder, 'data.orderStatus', res.orderStatus);\n }\n this.setState({\n orderStatus: res.orderStatus,\n firstPaymentCBStatus: res.firstPaymentCBStatus,\n pendingOrder,\n });\n }\n return res;\n }\n async checkSponsor(code: string): Promise<boolean | RequestError> {\n const { checkSponsor } = this.props;\n return this.load(checkSponsor, [code]);\n }\n async fetchAppointmentTimeslot(\n date: Date,\n energy: EEnergyTypes,\n ): Promise<ETimeslots[] | RequestError> {\n const { searchAppointmentTimeslot } = this.props;\n const res:\n | ETimeslots[]\n | RequestError = await this.load(searchAppointmentTimeslot, [\n date,\n energy,\n ]);\n return res;\n }\n async fetchCalendarAppointment(\n energyType: EEnergyTypes,\n isIndividual: boolean,\n onInit?: boolean,\n ): Promise<TAppointmentDay[] | RequestError> {\n const { getCalendarAppointment } = this.props;\n const { previousOrder, channel } = this.state;\n const electricityProduct =\n this.state.selectedElectricityProduct &&\n this.state.selectedElectricityProduct.productCode;\n const gasProduct =\n this.state.selectedGasProduct &&\n this.state.selectedGasProduct.productCode;\n\n const productCodePro =\n energyType === EEnergyTypes.ELECTRICTY\n ? electricityProduct\n : gasProduct;\n const order =\n !!onInit && !!previousOrder\n ? previousOrder || undefined\n : undefined;\n const res:\n | TAppointmentDay[]\n | RequestError = await this.load(getCalendarAppointment, [\n getInitialGroup(channel),\n energyType,\n isIndividual,\n order,\n productCodePro,\n ]);\n return res;\n }\n didCompleteSubcription(): boolean {\n const { firstPaymentCBStatus } = this.state;\n return (\n this.didSignOrder() &&\n (firstPaymentCBStatus === null ||\n firstPaymentCBStatus === EFirstPaymentCBStatuses.FINALIZED)\n );\n }\n didSignOrder(): boolean {\n const { orderStatus } = this.state;\n return (\n orderStatus === EOrderStatuses.FINALIZED ||\n orderStatus === EOrderStatuses.FINALIZED_WITHOUT_DOC\n );\n }\n async fetchOrder(orderNumber: string) {\n const { getOrder } = this.props;\n const { channel } = this.state;\n const res: TOrderResponse | RequestError = await this.load(\n getOrder,\n [getInitialGroup(channel), orderNumber],\n (err: RequestError) => {\n this.reset({\n error: {\n title: Wording.errors.fetchOrder,\n text: err.message,\n },\n });\n },\n );\n if (res instanceof RequestError) return;\n const isIndividual: boolean = !(\n _.get(res, 'order.customer.type') === ECustomerTypes.PROFESSIONAL\n );\n\n const sections: Map<Sections, Section> | null = await this.load(\n this.getInitialSections,\n [res],\n () => {\n this.setState({\n error: {\n title: Wording.errors.defaultTitle,\n text: Wording.errors.getInitialSections,\n },\n });\n },\n );\n let siteOptionSelection: ESubscriptionTypes | null = null;\n const contracts: TContract[] | null = _.get(\n res,\n 'order.contracts',\n null,\n );\n const electricityContract: TContract | undefined = _.find(\n contracts,\n (contract: TContract) => {\n return contract.energy === EEnergyTypes.ELECTRICTY;\n },\n );\n const gasContract: TContract | undefined = _.find(\n contracts,\n (contract: TContract) => {\n return contract.energy === EEnergyTypes.GAS;\n },\n );\n const hasElectricity: boolean = !!electricityContract;\n const hasGas: boolean = !!gasContract;\n if (hasElectricity && hasGas) {\n siteOptionSelection = ESubscriptionTypes.ELECTRICITY_AND_GAS;\n } else if (hasElectricity) {\n siteOptionSelection = ESubscriptionTypes.ELECTRICITY;\n } else if (hasGas) {\n siteOptionSelection = ESubscriptionTypes.GAS;\n }\n const orderCode = parseOrderRebateCode(contracts || []);\n const electricityEffectiveStartDate =\n new Date(_.get(electricityContract, 'effectiveStartDate', '')) ||\n undefined;\n const gasEffectiveStartDate =\n new Date(_.get(gasContract, 'effectiveStartDate', '')) || undefined;\n const thirdParty = _.find(\n _.get(res, 'contracts.0.thirdParties'),\n (tp: TThirdParty) => {\n return tp.role === ERoles.COHOLDER;\n },\n );\n const situation: Situation = {\n effectiveStartRange: _.get(\n res,\n 'order.contracts.0.effectiveStartRange',\n ),\n electricityEffectiveStartDate,\n electricityExpress: !!_.get(\n electricityContract,\n 'deliveryPoint.process.express',\n ),\n gasEffectiveStartDate,\n gasExpress: !!_.get(gasContract, 'deliveryPoint.process.express'),\n electricityTimeslot: _.get(\n electricityContract,\n 'deliveryPoint.process.appointmentTimeslot',\n ),\n gasTimeslot: _.get(\n gasContract,\n 'deliveryPoint.process.appointmentTimeslot',\n ),\n electricityFirstPaymentCB: _.get(\n electricityContract,\n 'firstPaymentCB',\n ),\n gasFirstPaymentCB: _.get(gasContract, 'firstPaymentCB'),\n billingAddress: _.get(\n res,\n 'customer.finance.billingContact.address',\n ),\n iban: _.get(res, 'customer.finance.ibanCode'),\n processType: _.get(\n electricityContract,\n 'deliveryPoint.process.type',\n ),\n thirdParty,\n };\n /* The following state attributes are missing from the reset pendingState\n packages: TPackage[] | null;\n products: TProduct[] | null;\n selectedElectricityProduct: TProduct | null;\n selectedGasProduct: TProduct | null;\n */\n if (!!sections) {\n this.reset({\n contracts,\n customerContact: _.get(res, 'order.customer.contact') || null,\n electricityDeliveryAddress:\n _.get(electricityContract, 'deliveryPoint.address') || null,\n finalContracts: contracts || undefined,\n firstPaymentCBStatus: _.get(\n res,\n 'order.firstPaymentCBStatus',\n null,\n ),\n gasDeliveryAddress:\n _.get(gasContract, 'deliveryPoint.address') || null,\n isIndividual,\n isSurvey: !_.get(contracts, '0.deliveryPoint.pointOfDelivery'),\n orderStatus: _.get(res, 'order.orderStatus', null),\n previousOrder: res.order,\n rebateCode: !!orderCode ? orderCode.code : null,\n rebateCodeType: !!orderCode ? orderCode.type : null,\n sections,\n siteOptionSelection,\n situation,\n channel: res.channel,\n });\n }\n }\n getStatusWording(\n orderStatus: EOrderStatuses | null,\n firstPaymentCBStatus: EFirstPaymentCBStatuses | null,\n ): [[string, string], [string, string]] {\n let orderStr: string = Wording.orderStatuses.inProgress;\n let paymentStr: string = '-';\n switch (orderStatus) {\n case EOrderStatuses.FINALIZED:\n case EOrderStatuses.FINALIZED_WITHOUT_DOC:\n orderStr = Wording.orderStatuses.finalized;\n break;\n }\n switch (firstPaymentCBStatus) {\n case EFirstPaymentCBStatuses.FINALIZED:\n paymentStr = Wording.paymentStatuses.finalized;\n break;\n case EFirstPaymentCBStatuses.PENDING:\n paymentStr = Wording.paymentStatuses.pending;\n break;\n case EFirstPaymentCBStatuses.CANCELED:\n paymentStr = Wording.paymentStatuses.canceled;\n break;\n case EFirstPaymentCBStatuses.IN_FAILURE:\n paymentStr = Wording.paymentStatuses.inFailure;\n break;\n }\n return [\n [tch(Wording.orderStatus), orderStr],\n [tch(Wording.paymentStatus), paymentStr],\n ];\n }\n\n handleSetGaugeProps(gaugeProps: {\n electricityGaugeProps: GaugeProps | null;\n gasGaugeProps: GaugeProps | null;\n }) {\n this.setState({ gaugeProps });\n }\n\n handleProductSelection(energy: EEnergyTypes, product: TProduct | null) {\n const nextState: any = {};\n if (energy === EEnergyTypes.ELECTRICTY) {\n nextState.selectedElectricityProduct = product;\n if (!!product && !!product.additionalRates) {\n nextState.electricityOptions = product.additionalRates;\n }\n } else if (energy === EEnergyTypes.GAS) {\n nextState.selectedGasProduct = product;\n if (!!product && !!product.additionalRates) {\n nextState.gasOptions = product.additionalRates;\n }\n }\n this.setState({ ...nextState });\n }\n handleIsIndividualToggle(isIndividual: boolean) {\n this.reset({ isIndividual });\n }\n onSelectedGroup(group: SelectOption<string>) {\n this.setState({ channel: group.value });\n }\n handleMissingSiteID(value: boolean) {\n this.setState({\n shouldDisplaySurveyModal: true,\n recoverySurvey: value,\n });\n }\n async load<R, F extends (...args: any[]) => Promise<R>>(\n fn: F,\n args: Parameters<F>,\n errorHandler?: (err: RequestError) => void | Promise<void>,\n ): Promise<R> {\n this.setState({ error: null, loading: true });\n const res = await fn.call(this, ...args);\n if (res instanceof RequestError && !!errorHandler) {\n console.error(res);\n if (!!errorHandler) {\n await errorHandler(res);\n } else {\n this.setState({\n error: {\n title: Wording.errors.defaultTitle,\n text: res.message,\n },\n });\n }\n }\n this.setState({ loading: false });\n return res;\n }\n handleClientDataValidation(\n validated: boolean,\n customerContact: TCustomerContact,\n ) {\n this.setState({\n customerContact,\n sections: this.getNextDisplayedSections(\n Sections.Site,\n validated,\n true,\n ),\n });\n }\n handleCodeValidation(\n validated: boolean,\n code: string,\n type?: ERebateCodeTypes,\n ) {\n this.setState({\n rebateCode: validated ? code : null,\n rebateCodeType: type || null,\n });\n }\n handleDebitDay(debitDay: number) {\n const { finalContracts } = this.state;\n finalContracts.map((finalContract, index) => {\n finalContracts[index].debitDay = debitDay;\n });\n this.setState({\n finalContracts,\n });\n }\n async handleMissingInformations(PCE?: string, PDL?: string) {\n const { getDeliveryPointPackages } = this.props;\n\n const {\n finalContracts,\n isIndividual,\n siteOptionSelection,\n channel,\n customerContact,\n } = this.state;\n\n const electricityEnabled =\n siteOptionSelection === ESubscriptionTypes.ELECTRICITY ||\n siteOptionSelection === ESubscriptionTypes.ELECTRICITY_AND_GAS;\n const gasEnabled =\n siteOptionSelection === ESubscriptionTypes.GAS ||\n siteOptionSelection === ESubscriptionTypes.ELECTRICITY_AND_GAS;\n this.setState({ error: null });\n const res: TGetPackageResponse | RequestError = await this.load(\n getDeliveryPointPackages,\n [getInitialGroup(channel), PDL || null, PCE || null, isIndividual],\n (err: RequestError) => {\n this.setState({\n error: {\n title: Wording.errors.getPackages,\n text:\n err.message +\n '. Veuillez réessayer ou recommencer la souscription avec le point directement',\n },\n });\n },\n );\n\n const electricityIndex: number = _.findIndex(\n finalContracts,\n (contract: TContract) => {\n const energy: EEnergyTypes = _.get(contract, 'energy');\n return energy === EEnergyTypes.ELECTRICTY;\n },\n );\n const gasIndex: number = _.findIndex(\n finalContracts,\n (contract: TContract) => {\n const energy: EEnergyTypes = _.get(contract, 'energy');\n return energy === EEnergyTypes.GAS;\n },\n );\n\n // à voir si on garde ou on modifie\n if (electricityIndex !== -1) {\n _.set(\n finalContracts[electricityIndex],\n 'deliveryPoint.pointOfDelivery',\n PDL,\n );\n }\n\n if (gasIndex !== -1) {\n _.set(\n finalContracts[gasIndex],\n 'deliveryPoint.pointOfDelivery',\n PCE,\n );\n }\n\n if (res instanceof RequestError) return;\n\n const newContracts: TContract[] = res.contracts;\n const newPackages: TPackage[] = res.packagesList;\n\n let electricityDeliveryAddress: TContract | null = null;\n let gasDeliveryAddress: TContract | null = null;\n let isPackageValid = true;\n for (const element of finalContracts) {\n const chosenPackages = element.chosenPackages || [];\n if (element.chosenPackages !== undefined) {\n for (const element of chosenPackages) {\n if (\n newPackages.findIndex(\n newPackage =>\n newPackage.energy === element.energy &&\n newPackage.amount === element.amount,\n ) === -1\n ) {\n isPackageValid = false;\n break;\n }\n }\n } else {\n isPackageValid = false;\n break;\n }\n }\n\n this.setState({\n isPackageValid,\n deliveryPointPackages: newPackages,\n });\n\n if (!isPackageValid) {\n return;\n }\n\n _.forEach(newContracts, (contract: TContract) => {\n if (\n electricityEnabled &&\n contract.energy === EEnergyTypes.ELECTRICTY\n ) {\n electricityDeliveryAddress = _.get(\n contract,\n 'deliveryPoint.address',\n null,\n );\n // if (\n // electricityIndex !== -1 &&\n // !_.get(\n // finalContracts[electricityIndex],\n // 'deliveryPoint.pointOfDelivery',\n // )\n // ) {\n _.set(\n finalContracts[electricityIndex],\n 'deliveryPoint.pointOfDelivery',\n _.get(contract, 'deliveryPoint.pointOfDelivery'),\n );\n _.set(\n finalContracts[electricityIndex],\n 'deliveryPoint.address',\n _.get(contract, 'deliveryPoint.address'),\n );\n _.set(\n finalContracts[electricityIndex],\n 'deliveryPoint.contractualCapacity',\n _.get(contract, 'deliveryPoint.contractualCapacity'),\n );\n _.set(\n finalContracts[electricityIndex],\n 'deliveryPoint.effectiveStartDate',\n _.get(contract, 'deliveryPoint.effectiveStartDate'),\n );\n _.set(\n finalContracts[electricityIndex],\n 'deliveryPoint.greedRate',\n _.get(contract, 'deliveryPoint.greedRate'),\n );\n if (\n electricityIndex !== -1 &&\n !_.get(\n finalContracts[electricityIndex],\n 'deliveryPoint.profile',\n )\n ) {\n _.set(\n finalContracts[electricityIndex],\n 'deliveryPoint.profile',\n _.get(contract, 'deliveryPoint.profile'),\n );\n }\n } else if (gasEnabled && contract.energy === EEnergyTypes.GAS) {\n gasDeliveryAddress = _.get(\n contract,\n 'deliveryPoint.address',\n null,\n );\n // if (\n // gasIndex !== -1 &&\n // !_.get(\n // finalContracts[gasIndex],\n // 'deliveryPoint.pointOfDelivery',\n // )\n // ) {\n _.set(\n finalContracts[gasIndex],\n 'deliveryPoint.pointOfDelivery',\n _.get(contract, 'deliveryPoint.pointOfDelivery'),\n );\n _.set(\n finalContracts[gasIndex],\n 'deliveryPoint.address',\n _.get(contract, 'deliveryPoint.address'),\n );\n _.set(\n finalContracts[gasIndex],\n 'deliveryPoint.greedRate',\n _.get(contract, 'deliveryPoint.greedRate'),\n );\n if (\n gasIndex !== -1 &&\n !_.get(finalContracts[gasIndex], 'deliveryPoint.profile')\n ) {\n _.set(\n finalContracts[gasIndex],\n 'deliveryPoint.profile',\n _.get(contract, 'deliveryPoint.profile'),\n );\n }\n }\n // }\n });\n\n const newContact = { ...customerContact };\n\n if (customerContact) {\n (newContact as any).address = _.get(\n finalContracts[0],\n 'deliveryPoint.address',\n customerContact !== null\n ? (customerContact as TCustomerContact).address\n : undefined,\n );\n }\n\n this.setState({\n electricityDeliveryAddress,\n gasDeliveryAddress,\n finalContracts,\n customerContact: newContact as TCustomerContact,\n });\n }\n async handlePackDynamicValidation(selection: {\n product?: TProduct;\n energyType?: EEnergyTypes;\n }) {\n const { getPackDynamic, getEstimatesPackages } = this.props;\n const {\n contracts,\n isIndividual,\n channel,\n pointsOfDeliveries,\n deliveryPointPackages,\n errorOffer,\n } = this.state;\n if (!contracts || contracts.length === 0) return;\n\n const error: { text: string; title: string } | null = null;\n\n let electricityEnergy: Partial<Energy> | null = null;\n let gasEnergy: Partial<Energy> | null = null;\n _.forEach(contracts, (contract: TContract) => {\n if (\n contract.energy === EEnergyTypes.ELECTRICTY &&\n selection.energyType === EEnergyTypes.ELECTRICTY\n ) {\n electricityEnergy = {\n chosenPackages: [],\n contract,\n chosenProduct: selection.product,\n pointOfDelivery: pointsOfDeliveries.EL,\n };\n } else if (\n contract.energy === EEnergyTypes.GAS &&\n selection.energyType === EEnergyTypes.GAS\n ) {\n gasEnergy = {\n chosenPackages: [],\n contract,\n chosenProduct: selection.product,\n pointOfDelivery: pointsOfDeliveries.NG,\n };\n }\n });\n\n const finalContracts: TContract[] = buildFinalContracts(\n electricityEnergy,\n gasEnergy,\n );\n const res: any | RequestError = await this.load(\n getPackDynamic,\n [getInitialGroup(channel), finalContracts, isIndividual],\n () => {},\n );\n const validated = !(res instanceof RequestError);\n\n if (!validated) {\n return;\n }\n const budget: TAmountWithLabel = res.budgets[0];\n\n if (budget.amount && parseInt(budget.amount, 10) >= 6000) {\n const updatedErrorOffer = errorOffer.map((value, index) => {\n if (\n selection.energyType === EEnergyTypes.ELECTRICTY &&\n index === 0\n ) {\n return true;\n } else if (\n selection.energyType === EEnergyTypes.GAS &&\n index === 1\n ) {\n return true;\n }\n return value;\n });\n\n await setState(this, {\n errorOffer: updatedErrorOffer,\n });\n return;\n } else {\n const updatedErrorOffer = errorOffer.map((value, index) => {\n if (\n selection.energyType === EEnergyTypes.ELECTRICTY &&\n index === 0\n ) {\n return false;\n } else if (\n selection.energyType === EEnergyTypes.GAS &&\n index === 1\n ) {\n return false;\n }\n return value;\n });\n await setState(this, {\n errorOffer: updatedErrorOffer,\n });\n }\n\n const estimate: TEstimate = {\n quantity: res.packages[0].packageQuantity + 1,\n timeframe: (finalContracts[0].rateOption as unknown) as ETimeframes,\n energy: selection.energyType,\n };\n const packageReal:\n | TGetPackageResponse\n | RequestError = await this.load(\n getEstimatesPackages,\n [\n getInitialGroup(channel),\n [estimate],\n isIndividual,\n [selection.energyType as EEnergyTypes],\n ],\n () => {},\n );\n if (packageReal instanceof RequestError) {\n return;\n }\n const dynamicPackage: TPackage[] = (packageReal as TGetPackageResponse)\n .packagesList;\n const elecPackage = dynamicPackage.every(\n pkg => pkg.energy === EEnergyTypes.ELECTRICTY,\n );\n const ngPackage = dynamicPackage.every(\n pkg => pkg.energy === EEnergyTypes.GAS,\n );\n\n let updatedDeliveryPointPackages: TPackage[] = [];\n if (elecPackage) {\n updatedDeliveryPointPackages = [\n ...deliveryPointPackages.filter(\n pkg => pkg.energy !== EEnergyTypes.ELECTRICTY,\n ),\n ...dynamicPackage,\n ];\n }\n\n if (ngPackage) {\n updatedDeliveryPointPackages = [\n ...deliveryPointPackages.filter(\n pkg => pkg.energy !== EEnergyTypes.GAS,\n ),\n ...dynamicPackage,\n ];\n }\n\n await setState(this, {\n deliveryPointPackages: updatedDeliveryPointPackages,\n isPackageValid: true,\n offers: validated ? (res as TOffer[]) : [],\n });\n }\n async handleOfferValidation(selection: {\n electricityFrequency?: EInstallmentFrequencies;\n electricityPackage?: TPackage;\n electricityProduct?: TProduct;\n electricitySeasonalPackages?: TAuthorizedPackage | null;\n gasFrequency?: EInstallmentFrequencies;\n gasPackage?: TPackage;\n gasProduct?: TProduct;\n gasSeasonalPackages?: TAuthorizedPackage | null;\n }) {\n const { getOffers } = this.props;\n const {\n contracts,\n isIndividual,\n siteOptionSelection,\n channel,\n pointsOfDeliveries,\n isSurvey,\n } = this.state;\n if (!contracts || contracts.length === 0) return;\n\n const energies: EEnergyTypes[] = toEnergies(siteOptionSelection);\n let error: { text: string; title: string } | null = null;\n if (\n (_.includes(energies, EEnergyTypes.ELECTRICTY) &&\n !selection.electricityProduct) ||\n (_.includes(energies, EEnergyTypes.GAS) && !selection.gasProduct)\n ) {\n error = {\n text: Wording.errors.missingEnergies,\n title: Wording.errors.defaultTitle,\n };\n await setState(this, { error });\n return;\n }\n let electricityEnergy: Partial<Energy> | null = null;\n let gasEnergy: Partial<Energy> | null = null;\n _.forEach(contracts, (contract: TContract) => {\n if (contract.energy === EEnergyTypes.ELECTRICTY) {\n if (isCyclicalProduct(selection.electricityProduct)) {\n electricityEnergy = {\n contract,\n chosenProduct: selection.electricityProduct,\n pointOfDelivery: pointsOfDeliveries.EL,\n };\n } else if (!!selection.electricityPackage) {\n electricityEnergy = {\n contract,\n chosenPackages:\n !!selection.electricitySeasonalPackages &&\n selection.electricitySeasonalPackages.length > 0\n ? [...selection.electricitySeasonalPackages]\n : [selection.electricityPackage],\n chosenProduct: selection.electricityProduct,\n selectedFrequency: selection.electricityFrequency,\n pointOfDelivery: pointsOfDeliveries.EL,\n };\n }\n } else if (contract.energy === EEnergyTypes.GAS) {\n if (isCyclicalProduct(selection.gasProduct)) {\n gasEnergy = {\n contract,\n chosenProduct: selection.gasProduct,\n pointOfDelivery: pointsOfDeliveries.NG,\n };\n } else if (!!selection.gasPackage) {\n gasEnergy = {\n contract,\n chosenPackages:\n !!selection.gasSeasonalPackages &&\n selection.gasSeasonalPackages.length > 0\n ? [...selection.gasSeasonalPackages]\n : [selection.gasPackage],\n chosenProduct: selection.gasProduct,\n selectedFrequency: selection.gasFrequency,\n pointOfDelivery: pointsOfDeliveries.NG,\n };\n }\n }\n });\n\n const finalContracts: TContract[] = buildFinalContracts(\n electricityEnergy,\n gasEnergy,\n );\n await setState(this, {\n finalContracts,\n isNewSiteSectionDataCheckRender: false,\n });\n const res: TOffer[] | RequestError = await this.load(\n getOffers,\n [getInitialGroup(channel), finalContracts, isIndividual],\n () => {},\n );\n const validated = !(res instanceof RequestError);\n\n if (!validated) {\n return;\n }\n await setState(this, {\n isPackageValid: true,\n offers: validated ? (res as TOffer[]) : [],\n sections: this.getNextDisplayedSections(\n Sections.Situation,\n validated,\n ),\n });\n }\n handlePaymentModalDismiss(\n paymentCBStatus: EFirstPaymentCBStatuses,\n error?: { title: string; text: string },\n ) {\n this.setState({\n shouldDisplayPaymentIframe: false,\n error: error || null,\n firstPaymentCBStatus: paymentCBStatus,\n });\n }\n handleReset() {\n this.setState({ shouldDisplayResetModal: true });\n }\n handleResetCancel() {\n this.setState({ shouldDisplayResetModal: false });\n }\n async handleSiteModalValidation(\n accomodationType: EResidenceTypes,\n area: number,\n address: TAddress,\n consumption: number,\n heatingType: EHeatingTypes,\n inhabitants: number,\n livingIn: EHousingTypes,\n rateOption: ERateOptions,\n ) {\n this.hideModal();\n const { getSurveyPackages } = this.props;\n const { isIndividual, siteOptionSelection, channel } = this.state;\n const customerType: ECustomerTypes = isIndividual\n ? ECustomerTypes.INDIVIDUAL\n : ECustomerTypes.PROFESSIONAL;\n const energyList: EEnergyTypes[] = [];\n if (siteOptionSelection === ESubscriptionTypes.ELECTRICITY_AND_GAS) {\n energyList.push(EEnergyTypes.ELECTRICTY);\n energyList.push(EEnergyTypes.GAS);\n } else if (siteOptionSelection === ESubscriptionTypes.ELECTRICITY) {\n energyList.push(EEnergyTypes.ELECTRICTY);\n } else if (siteOptionSelection === ESubscriptionTypes.GAS) {\n energyList.push(EEnergyTypes.GAS);\n }\n const survey: TSurvey = {\n energyList,\n housingType: livingIn,\n residenceType: accomodationType,\n area,\n inhabitantsNumber: inhabitants,\n heatingType,\n rateOption,\n address,\n };\n const prevContracts = this.state.contracts\n ? this.state.contracts.slice()\n : [];\n await setState(this, {\n contracts: null,\n packages: null,\n products: null,\n selectedElectricityProduct: null,\n selectedGasProduct: null,\n // pointsOfDeliveries: { NG: undefined, EL: undefined }\n });\n const res = await this.load(getSurveyPackages, [\n getInitialGroup(channel),\n survey,\n isIndividual,\n ]);\n if (res instanceof RequestError) {\n return;\n }\n this.setState({\n sections: this.getNextDisplayedSections(Sections.Offer, true),\n });\n const [contracts, packages, frequencies]: [\n TContract[] | null,\n TPackage[] | null,\n TPrepaymentFrequencies[] | null,\n ] = this.parseGetPackageResponse(res);\n if (prevContracts && contracts) {\n contracts.map((c, index) => Object.assign(c, prevContracts[index]));\n }\n this.onReceivePackages(\n contracts,\n packages,\n frequencies,\n customerType,\n true,\n );\n\n let elecAdress = '';\n let gazAdress = '';\n\n if (contracts) {\n const elecContract = contracts.find(\n contract => contract.energy === 'EL',\n );\n if (\n elecContract &&\n elecContract.deliveryPoint &&\n elecContract.deliveryPoint.address\n ) {\n const addressParts = [];\n\n if (elecContract.deliveryPoint.address.number) {\n addressParts.push(\n elecContract.deliveryPoint.address.number,\n );\n }\n\n if (elecContract.deliveryPoint.address.street) {\n addressParts.push(\n elecContract.deliveryPoint.address.street,\n );\n }\n if (elecContract.deliveryPoint.address.postalCode) {\n addressParts.push(\n elecContract.deliveryPoint.address.postalCode,\n );\n }\n if (elecContract.deliveryPoint.address.townName) {\n addressParts.push(\n elecContract.deliveryPoint.address.townName,\n );\n }\n\n if (addressParts.length === 4) {\n addressParts[1] = `${addressParts[1]},`;\n } else if (addressParts.length === 3) {\n addressParts[0] = `${addressParts[0]},`;\n }\n\n elecAdress = addressParts.join(' ');\n }\n\n const gazContract = contracts.find(\n contract => contract.energy === 'NG',\n );\n if (\n gazContract &&\n gazContract.deliveryPoint &&\n gazContract.deliveryPoint.address\n ) {\n const addressParts = [];\n\n if (gazContract.deliveryPoint.address.number) {\n addressParts.push(gazContract.deliveryPoint.address.number);\n }\n\n if (gazContract.deliveryPoint.address.street) {\n addressParts.push(gazContract.deliveryPoint.address.street);\n }\n if (gazContract.deliveryPoint.address.postalCode) {\n addressParts.push(\n gazContract.deliveryPoint.address.postalCode,\n );\n }\n if (gazContract.deliveryPoint.address.townName) {\n addressParts.push(\n gazContract.deliveryPoint.address.townName,\n );\n }\n\n if (addressParts.length === 4) {\n addressParts[1] = `${addressParts[1]},`;\n } else if (addressParts.length === 3) {\n addressParts[0] = `${addressParts[0]},`;\n }\n\n gazAdress = addressParts.join(' ');\n }\n }\n this.setState({\n elecAdress,\n gazAdress,\n });\n }\n handleSiteOptionSelection(siteOptionSelection: ESubscriptionTypes) {\n const nextState: any = {\n contracts: null,\n electricityOptions: [],\n gasOptions: [],\n packages: null,\n products: null,\n selectedElectricityProduct: null,\n selectedGasProduct: null,\n siteOptionSelection,\n orderStatus: null,\n };\n this.setState({ ...nextState });\n }\n handleSituationValidation(validated: boolean, situation: Situation) {\n this.setState({\n situation: validated ? situation : null,\n sections: this.getNextDisplayedSections(\n Sections.Subscribe,\n validated,\n ),\n });\n }\n hideModal() {\n this.setState({ shouldDisplaySurveyModal: false });\n }\n async onReceivePackages(\n contracts: TContract[] | null,\n packages: TPackage[] | null,\n frequencies: TPrepaymentFrequencies[] | null,\n customerType: ECustomerTypes,\n survey: boolean,\n ) {\n const { getProducts } = this.props;\n const { channel } = this.state;\n if (!contracts || !packages) {\n console.error(\n `Could not fetch products: args: contracts: ${contracts} packages: ${packages}`,\n );\n return;\n }\n let products = null;\n const res: TGetProductResponse | RequestError = await this.load(\n getProducts,\n [getInitialGroup(channel), contracts, customerType],\n () => {\n this.setState({\n error: {\n title: Wording.errors.defaultTitle,\n text: Wording.errors.offer,\n },\n });\n },\n );\n if (res instanceof RequestError) return;\n products = this.parseGetProductsResponse(res);\n this.setState({\n contracts,\n isSurvey: survey,\n packages,\n products,\n prepaymentFrequencies: frequencies,\n });\n }\n parseGetPackageResponse(\n res: any,\n ): [\n TContract[] | null,\n TPackage[] | null,\n TPrepaymentFrequencies[] | null,\n ] {\n const contracts = _.get(res, 'contracts', null);\n const packages = _.get(res, 'packagesList', null);\n const frequencies = _.get(res, 'prepaymentFrequencies', null);\n return [contracts, packages, frequencies];\n }\n parseGetProductsResponse(res: TGetProductResponse): TProduct[] | null {\n const products: TProduct[] | null = _.get(res, 'productsList', null);\n return products;\n }\n reset(pendingState: Partial<IState> = { isIndividual: true }) {\n const nextKey: string = shortid.generate();\n this.setState(\n {\n ..._.cloneDeep(initialState),\n sections: buildInitialSections(),\n ...pendingState,\n currentKey: nextKey,\n },\n () => {\n window.scrollTo({ top: 0, behavior: 'smooth' });\n },\n );\n }\n async searchSIRET(value: string) {\n const { searchSiret } = this.props;\n this.setState({ loading: true });\n const res = await searchSiret(value);\n this.setState({ loading: false });\n return res;\n }\n setLoading(loading: boolean) {\n this.setState({ loading });\n }\n shouldAllowSignOrder() {\n const {\n electricityDeliveryAddress,\n gasDeliveryAddress,\n isSurvey,\n siteOptionSelection,\n finalContracts,\n isNewSiteSectionDataCheckRender,\n contracts,\n } = this.state;\n\n const checkPointOfDelivery = finalContracts.reduce(\n (acc, curr) =>\n Boolean(\n acc &&\n curr.deliveryPoint &&\n curr.deliveryPoint.pointOfDelivery !== undefined,\n ),\n true,\n );\n\n let hasAddress = true;\n const electricityEnabled =\n siteOptionSelection === ESubscriptionTypes.ELECTRICITY ||\n siteOptionSelection === ESubscriptionTypes.ELECTRICITY_AND_GAS;\n const gasEnabled =\n siteOptionSelection === ESubscriptionTypes.GAS ||\n siteOptionSelection === ESubscriptionTypes.ELECTRICITY_AND_GAS;\n\n if (isSurvey) {\n if (electricityEnabled && !checkPointOfDelivery) {\n hasAddress = hasAddress && !!electricityDeliveryAddress;\n }\n if (gasEnabled && !checkPointOfDelivery) {\n hasAddress = hasAddress && !!gasDeliveryAddress;\n }\n }\n let offerCheck = true;\n\n if (isNewSiteSectionDataCheckRender && contracts) {\n // @ts-ignore\n offerCheck = contracts.reduce(\n (acc, curr) =>\n // @ts-ignore\n Boolean(\n acc &&\n curr.chosenPackages !== undefined &&\n curr.chosenPackages.length !== 0,\n ),\n true,\n );\n }\n\n return hasAddress && checkPointOfDelivery && offerCheck;\n }\n shouldShow(target: Sections) {\n const { sections } = this.state;\n const section: Section | undefined = sections.get(target);\n if (section) {\n if (\n this.state.previousOrder &&\n this.state.previousOrder.orderReference &&\n section.id !== 5\n ) {\n return true;\n }\n }\n return !!section && section.toggled;\n }\n getNextDisplayedSections(\n targetSection: Sections,\n toggled: boolean,\n resetInitialData: boolean = false,\n ) {\n const { isSurvey, sections, finalContracts } = this.state;\n const nextSections: Map<Sections, Section> = new Map(sections);\n const nextSectionsArr: Section[] = [\n ...nextSections.values(),\n ].sort((a: Section, b: Section) => (a.id < b.id ? -1 : 1));\n for (let i = 0; i < nextSectionsArr.length; i = i + 1) {\n const section: Section | undefined = nextSectionsArr[i];\n if (!section) {\n console.error('Section validation error');\n return sections;\n }\n if (i === targetSection) {\n section.toggled = toggled;\n if (resetInitialData) section.initialData = null;\n } else {\n const hidden: boolean = i >= targetSection;\n section.toggled = !hidden;\n if (hidden) section.key = shortid.generate();\n }\n if (i === Sections.Recap) {\n section.toggled =\n section.toggled &&\n targetSection >= Sections.Subscribe &&\n toggled;\n } else if (i === Sections.MissingInformations) {\n const checkDeliveryPoints = finalContracts.reduce(\n (acc, curr) =>\n acc &&\n curr.deliveryPoint !== undefined &&\n curr.deliveryPoint.pointOfDelivery === undefined,\n true,\n );\n\n section.toggled =\n section.toggled && isSurvey && checkDeliveryPoints;\n } else if (i === Sections.Subscribe) {\n section.toggled =\n section.toggled && !this.didCompleteSubcription();\n }\n nextSections.set(section.id, section);\n }\n return nextSections;\n }\n async getInitialSections(\n order: TOrderResponse,\n ): Promise<Map<Sections, Section>> {\n const sections = new Map<Sections, Section>(buildInitialSections());\n let clientData: ClientSectionData | null = null;\n let siteData: SiteSectionData | null = null;\n let offerData: OfferSectionData | null = null;\n let situationData: SituationSectionData | null = null;\n let recapData: RecapSectionData | null = null;\n await forEach(sections, async (value: Section, key: Sections) => {\n switch (key) {\n case Sections.ClientData:\n clientData = this.parsePreviousClientData(order);\n value.initialData = clientData;\n value.toggled = !!clientData;\n break;\n case Sections.Site:\n siteData = await this.parsePreviousSiteData(order.order);\n value.initialData = siteData;\n value.toggled = !!siteData;\n break;\n case Sections.Offer:\n offerData = await this.parsePreviousOfferData(order);\n value.initialData = offerData;\n value.toggled = !!offerData;\n break;\n case Sections.Situation:\n situationData = this.parsePreviousSituationData(\n order.order,\n );\n\n value.initialData = situationData;\n value.toggled = !!situationData;\n break;\n case Sections.Recap:\n recapData = await this.parsePreviousRecapData(order);\n value.initialData = recapData;\n value.toggled = !!recapData;\n break;\n }\n });\n await setState(this, {\n orderReference: order.order.orderReference || null,\n orderStatus: order.order.orderStatus || null,\n firstPaymentCBStatus: order.order.firstPaymentCBStatus || null,\n });\n return sections;\n }\n\n async handleEstimatesPackagesByClient(\n estimates: TEstimate[],\n energies: EEnergyTypes[],\n ) {\n const { getEstimatesPackages } = this.props;\n const { channel, isIndividual } = this.state;\n\n try {\n const pkgRes: TGetPackageResponse | RequestError = await this.load(\n getEstimatesPackages,\n [getInitialGroup(channel), estimates, isIndividual, energies],\n (err: RequestError) => {\n this.setState({\n error: {\n title: Wording.errors.getPackages,\n text: err.message,\n },\n });\n },\n );\n if (pkgRes instanceof RequestError) return;\n\n const nextState: any = {};\n if (pkgRes.prepaymentFrequencies) {\n nextState.prepaymentFrequencies = pkgRes.prepaymentFrequencies;\n }\n\n if (pkgRes.packagesList) nextState.packages = pkgRes.packagesList;\n if (pkgRes.contracts) nextState.contracts = pkgRes.contracts;\n\n await setState(this, {\n ...nextState,\n selectedGasProduct: null,\n selectedElectricityProduct: null,\n });\n } catch (err) {\n if (err instanceof RequestError) {\n console.error('Could not restore previous contracts');\n console.error(err);\n } else console.log('No prior offer data');\n }\n }\n\n getSectionCurrentKey(index: Sections): string {\n const { currentKey, sections } = this.state;\n const key: string =\n currentKey + _.get(sections.get(index), 'key', shortid.generate());\n return key;\n }\n parsePreviousClientData(order: TOrderResponse): ClientSectionData | null {\n let data: ClientSectionData | null = null;\n\n try {\n const { contracts } = order.order;\n const contact = _.get(order, 'order.customer.contact', {});\n const mainContract =\n contracts.length === 2\n ? contracts.find(\n ctr => ctr.energy === EEnergyTypes.ELECTRICTY,\n )\n : contracts[0];\n\n let addressDeliverypoint = {};\n\n if (\n mainContract &&\n mainContract.deliveryPoint &&\n mainContract.deliveryPoint.address\n ) {\n addressDeliverypoint = mainContract.deliveryPoint.address;\n } else {\n addressDeliverypoint = contact.address;\n }\n\n const isSame = compareAddress(\n addressDeliverypoint as any,\n contact.address,\n );\n\n data = {\n section: Sections.ClientData,\n firstNameValue: contact.firstName,\n lastNameValue: contact.lastName,\n birthDatePick: new Date(contact.birthdate),\n birthDatePickPro: new Date(contact.birthdate),\n businessNameValue: contact.companyName || null,\n SIRETValue: contact.identificationNumber || null,\n mailAddressValue: contact.email,\n phoneNumberValue: contact.phone,\n identicalAddressToggleState: !order.order.customer.contact\n .address,\n addressAddressValue: `${_.get(\n contact,\n 'address.number',\n '',\n )} ${_.get(contact, 'address.street', '')}`,\n address: isSame ? undefined : contact.address,\n civilStatus: contact.civility,\n legalStatus: contact.companyType || null,\n APE: contact.activityCode || '',\n defaultGroup: order.channel,\n birthTown: contact.birthTown,\n };\n } catch (err) {\n console.log('No prior client data');\n }\n return data;\n }\n async parsePreviousSiteData(\n order: TOrder,\n ): Promise<SiteSectionData | null> {\n let data: SiteSectionData | null = null;\n try {\n const electricityContract: TContract | undefined = _.find(\n order.contracts,\n (contract: TContract) => {\n return contract.energy === EEnergyTypes.ELECTRICTY;\n },\n );\n const gasContract: TContract | undefined = _.find(\n order.contracts,\n (contract: TContract) => {\n return contract.energy === EEnergyTypes.GAS;\n },\n );\n let subscriptionType: ESubscriptionTypes | null = null;\n if (!!electricityContract && !!gasContract) {\n subscriptionType = ESubscriptionTypes.ELECTRICITY_AND_GAS;\n } else if (!!electricityContract) {\n subscriptionType = ESubscriptionTypes.ELECTRICITY;\n } else if (!!gasContract) {\n subscriptionType = ESubscriptionTypes.GAS;\n }\n const contracts: TContract[] = [];\n if (!!electricityContract) contracts.push(electricityContract);\n if (!!gasContract) contracts.push(gasContract);\n await setState(this, { contracts });\n data = {\n PCEValue: _.get(\n gasContract,\n 'deliveryPoint.pointOfDelivery',\n '',\n ),\n PDLValue: _.get(\n electricityContract,\n 'deliveryPoint.pointOfDelivery',\n '',\n ),\n section: Sections.Site,\n siteOptionSelection: subscriptionType,\n };\n } catch (err) {\n console.log('No prior site data');\n }\n return data;\n }\n async parsePreviousOfferData(\n orderResponse: TOrderResponse,\n ): Promise<OfferSectionData | null> {\n const { getEstimatesPackages, getProducts } = this.props;\n const { prepaymentFrequencies } = this.state;\n const { channel, order } = orderResponse;\n\n let data: OfferSectionData | null = null;\n\n try {\n const previousElectricityContract: TContract | undefined = _.find(\n order.contracts,\n (contract: TContract) => {\n return contract.energy === EEnergyTypes.ELECTRICTY;\n },\n );\n const previousGasContract: TContract | undefined = _.find(\n order.contracts,\n (contract: TContract) => {\n return contract.energy === EEnergyTypes.GAS;\n },\n );\n const isIndividual: boolean =\n order.customer.type !== ECustomerTypes.PROFESSIONAL;\n const energies: EEnergyTypes[] = [];\n if (!!previousElectricityContract) {\n energies.push(EEnergyTypes.ELECTRICTY);\n }\n if (!!previousGasContract) {\n energies.push(EEnergyTypes.GAS);\n }\n const estimates: TEstimate[] = [];\n _.forEach(order.contracts, (contract: TContract) => {\n if (!!contract.estimates && !!contract.estimates[0]) {\n estimates.push({\n ...contract.estimates[0],\n energy: contract.energy,\n });\n }\n });\n\n const handleGetPackages = async () => {\n const [elecPoints, gasPoints] = [\n previousElectricityContract,\n previousGasContract,\n ].map(\n ctr =>\n ctr &&\n ctr.deliveryPoint &&\n ctr.deliveryPoint.pointOfDelivery,\n );\n\n if (elecPoints || gasPoints) {\n return await getDeliveryPointPackages(\n channel,\n elecPoints,\n gasPoints,\n isIndividual,\n );\n }\n\n return await getEstimatesPackages(\n channel,\n estimates,\n isIndividual,\n energies,\n );\n };\n\n const pkgRes:\n | TGetPackageResponse\n | RequestError = await handleGetPackages();\n\n if (pkgRes instanceof RequestError) throw pkgRes;\n const prodRes:\n | TGetProductResponse\n | RequestError = await getProducts(\n getInitialGroup(channel),\n order.contracts, // or pkgRes.contracts ?\n isIndividual\n ? ECustomerTypes.INDIVIDUAL\n : ECustomerTypes.PROFESSIONAL,\n );\n if (prodRes instanceof RequestError) throw prodRes;\n const previousElectricityPackages: Array<\n TPackage | TSeasonalPackage\n > = _.get(previousElectricityContract, 'chosenPackages', []);\n const previousGasPackages: Array<\n TPackage | TSeasonalPackage\n > = _.get(previousGasContract, 'chosenPackages', []);\n let authorizedElectricityPackages: TAuthorizedPackage[] = [];\n let authorizedElectricityPackageSelection: TAuthorizedPackage | null = null;\n let authorizedGasPackages: TAuthorizedPackage[] = [];\n let authorizedGasPackageSelection: TAuthorizedPackage | null = null;\n const electricityFrequencies: EInstallmentFrequencies[] = [];\n let electricityFrequencySelection: EInstallmentFrequencies | null = null;\n let electricityPlans: TPackage[] = [];\n let electricityPlanSelection: TPackage | null = null;\n const electricityProducts: TProduct[] = [];\n let electricityProductSelection: TProduct | null = null;\n const gasFrequencies: EInstallmentFrequencies[] = [];\n let gasFrequencySelection: EInstallmentFrequencies | null = null;\n let gasPlans: TPackage[] = [];\n let gasPlanSelection: TPackage | null = null;\n const gasProducts: TProduct[] = [];\n let gasProductSelection: TProduct | null = null;\n let previousElectricityPlanSelection: TPackage | null = null;\n let previousGasPlanSelection: TPackage | null = null;\n _.forEach(prodRes.productsList, (prod: TProduct) => {\n if (prod.energy === EEnergyTypes.ELECTRICTY) {\n electricityProducts.push(prod);\n if (\n !!previousElectricityContract &&\n isEqualProduct(\n prod,\n previousElectricityContract.chosenProduct,\n )\n ) {\n electricityProductSelection = prod;\n }\n } else if (prod.energy === EEnergyTypes.GAS) {\n gasProducts.push(prod);\n if (\n !!previousGasContract &&\n isEqualProduct(prod, previousGasContract.chosenProduct)\n ) {\n gasProductSelection = prod;\n }\n }\n });\n electricityPlans = _.filter(\n pkgRes.packagesList,\n (pkg: TPackage) => {\n return pkg.energy === EEnergyTypes.ELECTRICTY;\n },\n );\n if (\n previousElectricityPackages.length === 2 &&\n !!electricityProductSelection\n ) {\n _.forEach(electricityPlans, (pkg: TPackage) => {\n const shouldBreak: boolean = false;\n if (!!pkg.authorizedPackages) {\n _.forEach(\n pkg.authorizedPackages,\n (authPkg: TAuthorizedPackage) => {\n const authorizedPackagesMatched: boolean = isEqualAuthorizedPackages(\n authPkg,\n previousElectricityPackages as TSeasonalPackage[],\n );\n if (authorizedPackagesMatched) {\n electricityPlanSelection = pkg;\n authorizedElectricityPackages =\n pkg.authorizedPackages || [];\n authorizedElectricityPackageSelection = authPkg;\n }\n },\n );\n }\n if (shouldBreak) return false;\n });\n } else if (previousElectricityPackages.length === 1) {\n previousElectricityPlanSelection = previousElectricityPackages[0] as TPackage;\n electricityPlanSelection =\n _.find(electricityPlans, (pkg: TPackage) => {\n return (\n pkg.energy === EEnergyTypes.ELECTRICTY &&\n pkg.id === previousElectricityPackages[0].id\n );\n }) || null;\n }\n gasPlans = _.filter(pkgRes.packagesList, (pkg: TPackage) => {\n return pkg.energy === EEnergyTypes.GAS;\n });\n if (previousGasPackages.length === 2 && !!gasProductSelection) {\n _.forEach(gasPlans, (pkg: TPackage) => {\n const shouldBreak: boolean = false;\n if (!!pkg.authorizedPackages) {\n _.forEach(\n pkg.authorizedPackages,\n (authPkg: TAuthorizedPackage) => {\n const authorizedPackagesMatched: boolean = isEqualAuthorizedPackages(\n authPkg,\n previousGasPackages as TSeasonalPackage[],\n );\n if (authorizedPackagesMatched) {\n gasPlanSelection = pkg;\n authorizedGasPackages =\n pkg.authorizedPackages || [];\n authorizedGasPackageSelection = authPkg;\n }\n },\n );\n }\n if (shouldBreak) return false;\n });\n } else if (previousGasPackages.length === 1) {\n previousGasPlanSelection = previousGasPackages[0] as TPackage;\n gasPlanSelection =\n _.find(gasPlans, (pkg: TPackage) => {\n return (\n pkg.energy === EEnergyTypes.GAS &&\n pkg.id === previousGasPackages[0].id\n );\n }) || null;\n }\n const previousElectricityFrequency: EInstallmentFrequencies | null = _.get(\n previousElectricityContract,\n 'installmentFrequency',\n null,\n );\n const previousGasFrequency: EInstallmentFrequencies | null = _.get(\n previousGasContract,\n 'installmentFrequency',\n null,\n );\n\n // TODO\n // electricityFrequencySelection =\n // _.find(\n // electricityFrequencies,\n // (freq: EInstallmentFrequencies) => {\n // return previousElectricityFrequency === freq;\n // },\n // ) || null;\n\n electricityFrequencySelection = previousElectricityFrequency;\n\n // TODO\n // gasFrequencySelection =\n // _.find(gasFrequencies, (freq: EInstallmentFrequencies) => {\n // return previousGasFrequency === freq;\n // }) || null;\n\n gasFrequencySelection = previousGasFrequency;\n\n const electricityOptions: TAdditionalRate[] = _.get(\n electricityProductSelection,\n 'additionalRates',\n [],\n );\n const previousElectricityOptions: TAdditionalRate[] = _.get(\n previousElectricityContract,\n 'chosenProduct.additionalRates',\n [],\n );\n const electricitySelectedOptions: TAdditionalRate[] = _.filter(\n previousElectricityOptions,\n (rate: TAdditionalRate) => {\n return (\n !!rate.active &&\n !!_.find(electricityOptions, _.omit(rate, 'active'))\n );\n },\n );\n const gasOptions: TAdditionalRate[] = _.get(\n gasProductSelection,\n 'additionalRates',\n [],\n );\n const previousGasOptions: TAdditionalRate[] = _.get(\n previousGasContract,\n 'chosenProduct.additionalRates',\n [],\n );\n const gasSelectedOptions: TAdditionalRate[] = _.filter(\n previousGasOptions,\n (rate: TAdditionalRate) => {\n return (\n !!rate.active &&\n !!_.find(gasOptions, _.omit(rate, 'active'))\n );\n },\n );\n\n data = {\n authorizedElectricityPackages,\n authorizedElectricityPackageSelection,\n authorizedGasPackages,\n authorizedGasPackageSelection,\n electricityFrequencySelection,\n electricityPlans,\n electricityPlanSelection,\n electricityProducts,\n electricityProductSelection,\n electricityOptions,\n electricitySelectedOptions,\n gasFrequencySelection,\n gasPlans,\n gasPlanSelection,\n gasProducts,\n gasProductSelection,\n gasOptions,\n gasSelectedOptions,\n section: Sections.Offer,\n previousElectricityPlanSelection,\n previousGasPlanSelection,\n frequencies:\n pkgRes.prepaymentFrequencies || prepaymentFrequencies,\n };\n } catch (err) {\n if (err instanceof RequestError) {\n console.error('Could not restore previous contracts');\n console.error(err);\n } else console.log('No prior offer data');\n }\n\n return data;\n }\n parsePreviousSituationData(order: TOrder): SituationSectionData | null {\n let data: SituationSectionData | null = null;\n try {\n const energies: EEnergyTypes[] = [];\n const iban: string | undefined = order.customer.finance.ibanCode;\n let switchingSupplierStartRange: EEffectiveStartRanges | undefined;\n const movingInData: {\n EL?: {\n date: Date;\n timeslot: ETimeslots;\n };\n NG?: {\n date: Date;\n timeslot: ETimeslots;\n };\n } = {};\n\n const switchData: SwitchData = {};\n\n const billingAddress: TAddress | undefined = _.get(\n order,\n 'customer.finance.billingContact.address',\n );\n const coords = !!billingAddress\n ? {\n civility: _.get(\n order,\n 'customer.finance.billingContact.civility',\n ECivilities.MR,\n ),\n firstName: _.get(\n order,\n 'customer.finance.billingContact.firstName',\n '',\n ),\n lastName: _.get(\n order,\n 'customer.finance.billingContact.lastName',\n '',\n ),\n }\n : undefined;\n\n const thirdParty: Coholder | undefined =\n _.filter(\n _.get(order, 'contracts.0.thirdParties', []),\n (tp: TThirdParty) => {\n return tp.role === ERoles.COHOLDER;\n },\n ).map((tp: TThirdParty) => {\n return _.pick(tp, ['civility', 'firstName', 'lastName']);\n })[0] || undefined;\n const paymentMode: EPaymentModes = _.get(\n order,\n 'customer.finance.paymentMode',\n );\n // if (paymentMode === EPaymentModes.DIRECT_DEBIT) {\n // // TODO Currently removed from saveOrder request\n // iban = '';\n // }\n\n const processType: EProcessTypes | undefined = _.get(\n order,\n 'contracts.0.deliveryPoint.process.type',\n );\n\n const previousElectricityContract: TContract | undefined = _.find(\n _.get(order, 'contracts', []),\n (contract: TContract) => {\n return contract.energy === EEnergyTypes.ELECTRICTY;\n },\n );\n const previousGasContract: TContract | undefined = _.find(\n _.get(order, 'contracts', []),\n (contract: TContract) => {\n return contract.energy === EEnergyTypes.GAS;\n },\n );\n\n if (processType === EProcessTypes.MOVE_IN) {\n if (!!previousElectricityContract) {\n const date: Date | undefined = new Date(\n _.get(\n previousElectricityContract,\n 'effectiveStartDate',\n '',\n ),\n );\n const timeslot: ETimeslots | undefined = _.get(\n previousElectricityContract,\n 'deliveryPoint.process.appointmentTimeslot',\n );\n if (!!date && !!timeslot && !isNaN(date.getTime())) {\n movingInData.EL = {\n date,\n timeslot,\n };\n }\n energies.push(EEnergyTypes.ELECTRICTY);\n }\n if (!!previousGasContract) {\n const date: Date | undefined = new Date(\n _.get(previousGasContract, 'effectiveStartDate', ''),\n );\n const timeslot: ETimeslots | undefined = _.get(\n previousGasContract,\n 'deliveryPoint.process.appointmentTimeslot',\n );\n if (!!date && !!timeslot && !isNaN(date.getTime())) {\n movingInData.NG = {\n date,\n timeslot,\n };\n }\n energies.push(EEnergyTypes.GAS);\n }\n }\n\n order.contracts.forEach(ctr =>\n energies.push(ctr.energy as EEnergyTypes),\n );\n\n data = {\n coords,\n billingAddress,\n energies,\n payment: {\n mode: paymentMode,\n data: { iban },\n },\n section: Sections.Situation,\n startDate: {\n processType: processType || EProcessTypes.MOVE_IN,\n movingInData: { ...movingInData },\n switchData: (() => {\n if (processType === EProcessTypes.SWITCH) {\n switchingSupplierStartRange = _.get(\n order,\n 'contracts.0.effectiveStartRange',\n );\n\n const nextStartRange = switchingSupplierStartRange as EEffectiveStartRanges;\n\n const nextSwitchData = order.contracts.reduce(\n (acc, curr) => ({\n ...acc,\n [curr.energy]: {\n dueDate: new Date(\n curr.dueDate as string,\n ),\n effectiveStartDate: new Date(\n curr.effectiveStartDate as string,\n ),\n },\n }),\n {} as any,\n );\n\n return {\n ...nextSwitchData,\n startRange: nextStartRange,\n };\n }\n return {};\n })(),\n },\n thirdParty,\n };\n } catch (err) {\n console.log('No prior situation data');\n }\n\n return data;\n }\n async parsePreviousRecapData(\n orderResponse: TOrderResponse,\n ): Promise<RecapSectionData | null> {\n const { getOffers } = this.props;\n const { order, channel } = orderResponse;\n let data: RecapSectionData | null = null;\n let offers: TOffer[] = [];\n try {\n const contracts: TContract[] = _.get(order, 'contracts', []);\n const isIndividual: boolean =\n order.customer.type === ECustomerTypes.INDIVIDUAL;\n const offerRes: TOffer[] | RequestError = await getOffers(\n getInitialGroup(channel),\n contracts,\n isIndividual,\n );\n if (!(offerRes instanceof RequestError)) offers = offerRes;\n const orderCode = parseOrderRebateCode(contracts);\n\n data = {\n codeType: _.get(orderCode, 'type'),\n codeInputToggled: !!orderCode,\n code: _.get(orderCode, 'code', ''),\n offers,\n section: Sections.Recap,\n };\n } catch (err) {}\n return data;\n }\n async pay(order: TOrder): Promise<TPaymentCBResponse | RequestError> {\n const { paymentCB } = this.props;\n const { channel } = this.state;\n return await paymentCB(getInitialGroup(channel), order);\n }\n async submitSiteData(\n electricity: string,\n gas: string,\n ): Promise<boolean | RequestError> {\n const { getDeliveryPointPackages } = this.props;\n\n const { isIndividual, channel, customerContact } = this.state;\n const customerType: ECustomerTypes = isIndividual\n ? ECustomerTypes.INDIVIDUAL\n : ECustomerTypes.PROFESSIONAL;\n const fmtElectricity = !!electricity ? rs(electricity) : null;\n const fmtGas = !!gas ? rs(gas) : null;\n const pointsOfDeliveries: any = {};\n const email = customerContact ? customerContact.email : '';\n const firstName = customerContact ? customerContact.firstName : '';\n const lastName = customerContact ? customerContact.lastName : '';\n if (electricity !== '') pointsOfDeliveries.EL = electricity;\n if (gas !== '') pointsOfDeliveries.NG = gas;\n\n await setState(this, {\n contracts: null,\n packages: null,\n products: null,\n selectedElectricityProduct: null,\n selectedGasProduct: null,\n pointsOfDeliveries,\n });\n const res:\n | TGetPackageResponse\n | RequestError = await this.load(getDeliveryPointPackages, [\n getInitialGroup(channel),\n fmtElectricity || null,\n fmtGas || null,\n isIndividual,\n email,\n firstName,\n lastName,\n ]);\n if (res instanceof RequestError) {\n if (\n res instanceof NoMatchingPackagesError ||\n res instanceof NoPackageListError\n ) {\n const resContracts:\n | TGetPackageResponse\n | RequestError = await this.load(\n getRawDeliveryPointPackages,\n [\n getInitialGroup(channel),\n fmtElectricity || null,\n fmtGas || null,\n isIndividual,\n email,\n firstName,\n lastName,\n ],\n );\n const [contracts]: [\n TContract[] | null,\n TPackage[] | null,\n TPrepaymentFrequencies[] | null,\n ] = this.parseGetPackageResponse(resContracts);\n this.setState({ contracts });\n }\n return res;\n }\n const [contracts, packages, frequencies]: [\n TContract[] | null,\n TPackage[] | null,\n TPrepaymentFrequencies[] | null,\n ] = this.parseGetPackageResponse(res);\n\n this.onReceivePackages(\n !!this.currOrderNbr\n ? contracts &&\n contracts.map(c => ({ ...c, chosenPackages: [] }))\n : contracts,\n packages,\n frequencies,\n customerType,\n false,\n );\n\n let elecAdress;\n let gazAdress;\n\n if (contracts) {\n const elecContract = contracts.find(\n contract => contract.energy === 'EL',\n );\n if (\n elecContract &&\n elecContract.deliveryPoint &&\n elecContract.deliveryPoint.address\n ) {\n const addressParts = [];\n\n if (elecContract.deliveryPoint.address.number) {\n addressParts.push(\n elecContract.deliveryPoint.address.number,\n );\n }\n\n if (elecContract.deliveryPoint.address.street) {\n addressParts.push(\n elecContract.deliveryPoint.address.street,\n );\n }\n if (elecContract.deliveryPoint.address.postalCode) {\n addressParts.push(\n elecContract.deliveryPoint.address.postalCode,\n );\n }\n if (elecContract.deliveryPoint.address.townName) {\n addressParts.push(\n elecContract.deliveryPoint.address.townName,\n );\n }\n\n if (addressParts.length === 4) {\n addressParts[1] = `${addressParts[1]},`;\n } else if (addressParts.length === 3) {\n addressParts[0] = `${addressParts[0]},`;\n }\n\n elecAdress = addressParts.join(' ');\n }\n\n const gazContract = contracts.find(\n contract => contract.energy === 'NG',\n );\n if (\n gazContract &&\n gazContract.deliveryPoint &&\n gazContract.deliveryPoint.address\n ) {\n const addressParts = [];\n\n if (gazContract.deliveryPoint.address.number) {\n addressParts.push(gazContract.deliveryPoint.address.number);\n }\n\n if (gazContract.deliveryPoint.address.street) {\n addressParts.push(gazContract.deliveryPoint.address.street);\n }\n if (gazContract.deliveryPoint.address.postalCode) {\n addressParts.push(\n gazContract.deliveryPoint.address.postalCode,\n );\n }\n if (gazContract.deliveryPoint.address.townName) {\n addressParts.push(\n gazContract.deliveryPoint.address.townName,\n );\n }\n\n if (addressParts.length === 4) {\n addressParts[1] = `${addressParts[1]},`;\n } else if (addressParts.length === 3) {\n addressParts[0] = `${addressParts[0]},`;\n }\n\n gazAdress = addressParts.join(' ');\n }\n }\n\n this.setState({\n loading: false,\n isNewSiteSectionData: !!this.currOrderNbr,\n isNewSiteSectionDataCheckRender: !!this.currOrderNbr,\n gazAdress,\n elecAdress,\n });\n return _.get(packages, 'length', 0) > 0;\n }\n\n async saveOrder() {\n const { group: channel, saveOrder, userId } = this.props;\n const { orderReference } = this.state;\n const pendingOrder = this.buildOrder(false);\n\n if (!!pendingOrder) {\n pendingOrder.createdBy = userId;\n }\n this.setState({ error: null });\n if (!pendingOrder) {\n console.error('Could not save order: missing parameter');\n return;\n } else if (!!orderReference) {\n _.set(pendingOrder, 'orderReference', orderReference);\n }\n const res: RequestError | TSaveOrderResponse = await this.load(\n saveOrder,\n [this.state.channel, pendingOrder],\n handlerProps => {\n this.setState({\n error: {\n title: Wording.saveOrder.title,\n text:\n handlerProps.message ||\n Wording.saveOrder.defaultText,\n },\n });\n },\n );\n if (!(res instanceof RequestError)) {\n this.setState({\n didSaveOrder: true,\n orderReference: _.get(res, 'orderNumber', null),\n });\n }\n }\n async signOrder() {\n const { group: channel, signOrder, userId } = this.props;\n const { orderReference, pendingOrder } = this.state;\n this.setState({ pendingOrder: null });\n const order: TOrder | null = this.buildOrder(true);\n\n if (!!order && !!orderReference) {\n _.set(order, 'orderReference', orderReference);\n }\n const previousExternalReference: string | undefined = _.get(\n pendingOrder,\n 'validation.orderExternalReference',\n );\n if (\n !!order &&\n !!pendingOrder &&\n !!previousExternalReference &&\n _.isEqual(order, _.omit(pendingOrder.data, 'createdBy'))\n ) {\n order.externalReference = previousExternalReference;\n } else if (!order) {\n console.error('Cannot sign order: missing order');\n const text = Wording.signOrder.defaultText;\n const title = Wording.signOrder.title;\n this.setState({ error: { text, title } });\n return;\n }\n\n const res: TSignOrderResponse | RequestError = await this.load(\n signOrder,\n [this.state.channel, order, userId],\n () => {\n this.setState({\n error: {\n title: Wording.signOrder.title,\n text: Wording.signOrder.defaultText,\n },\n });\n },\n );\n if (res instanceof RequestError) return;\n this.setState({\n orderReference: res.orderNumber || null,\n pendingOrder: {\n data: order,\n number: res.orderNumber,\n validation: res,\n },\n shouldDisplayPaymentIframe: true,\n });\n }\n triggerSignaturePopin() {\n const didCompleteSubcription = this.didCompleteSubcription();\n\n const didSignOrder = this.didSignOrder();\n this.setState({ error: null });\n if (didCompleteSubcription) {\n return;\n }\n if (didSignOrder) {\n this.setState({ shouldDisplayPaymentIframe: true });\n } else {\n this.signOrder();\n }\n }\n render() {\n const {\n contracts,\n situation,\n currentKey,\n didSaveOrder,\n error,\n firstPaymentCBStatus,\n isIndividual,\n isSurvey,\n loading,\n offers,\n orderStatus,\n orderReference,\n packages,\n pendingOrder,\n finalContracts,\n previousOrder,\n products,\n sections,\n selectedElectricityProduct,\n selectedGasProduct,\n shouldDisplayPaymentIframe,\n shouldDisplayResetModal,\n shouldDisplaySurveyModal,\n siteOptionSelection,\n gaugeProps,\n prepaymentFrequencies,\n isNewSiteSectionData,\n isNewSiteSectionDataCheckRender,\n channel,\n isPackageValid,\n deliveryPointPackages,\n errorOffer,\n } = this.state;\n\n const electricityEnabled =\n siteOptionSelection === ESubscriptionTypes.ELECTRICITY_AND_GAS ||\n siteOptionSelection === ESubscriptionTypes.ELECTRICITY;\n const gasEnabled =\n siteOptionSelection === ESubscriptionTypes.ELECTRICITY_AND_GAS ||\n siteOptionSelection === ESubscriptionTypes.GAS;\n const [\n orderStatusStrs,\n firstPaymentCBStatusStrs,\n ] = this.getStatusWording(orderStatus, firstPaymentCBStatus);\n const shouldShowSiteSection = this.shouldShow(Sections.Site);\n const shouldShowOfferSection = this.shouldShow(Sections.Offer);\n const shouldShowStatusSection = this.shouldShow(Sections.Situation);\n const shouldShowRecapSection =\n this.shouldShow(Sections.Recap) && !isNewSiteSectionDataCheckRender;\n const shouldShowMissingInformationSection = this.shouldShow(\n Sections.MissingInformations,\n );\n const shouldShowSubscribeSection = this.shouldShow(Sections.Subscribe);\n const cyclicalProducts: EEnergyTypes[] = [];\n if (isCyclicalProduct(selectedElectricityProduct)) {\n cyclicalProducts.push(EEnergyTypes.ELECTRICTY);\n }\n if (isCyclicalProduct(selectedGasProduct)) {\n cyclicalProducts.push(EEnergyTypes.GAS);\n }\n const signatureEnabled: boolean = this.shouldAllowSignOrder();\n const shouldApplyMask = this.didSignOrder();\n const shouldHighlightSignButton =\n shouldApplyMask && !loading && !this.didCompleteSubcription();\n const initialClientData: ClientSectionData | undefined = !!sections.get(\n Sections.ClientData,\n )\n ? ((sections.get(Sections.ClientData) as Section)\n .initialData as ClientSectionData)\n : undefined;\n const initialSiteData: SiteSectionData | undefined = !!sections.get(\n Sections.Site,\n )\n ? ((sections.get(Sections.Site) as Section)\n .initialData as SiteSectionData)\n : undefined;\n const initialOfferData: OfferSectionData | undefined =\n !!sections.get(Sections.Offer) && !isNewSiteSectionData\n ? ((sections.get(Sections.Offer) as Section)\n .initialData as OfferSectionData)\n : undefined;\n const initialSituationData:\n | SituationSectionData\n | undefined = !!sections.get(Sections.Situation)\n ? ((sections.get(Sections.Situation) as Section)\n .initialData as SituationSectionData)\n : undefined;\n const initialRecapData: RecapSectionData | undefined =\n !!sections.get(Sections.Recap) && !isNewSiteSectionDataCheckRender\n ? ((sections.get(Sections.Recap) as Section)\n .initialData as RecapSectionData)\n : undefined;\n const clientDataSectionKey: string = this.getSectionCurrentKey(\n Sections.ClientData,\n );\n const siteSectionKey: string = this.getSectionCurrentKey(Sections.Site);\n const offerSectionKey: string = this.getSectionCurrentKey(\n Sections.Offer,\n );\n const situationSectionKey: string = this.getSectionCurrentKey(\n Sections.Situation,\n );\n const recapSectionKey: string = this.getSectionCurrentKey(\n Sections.Recap,\n );\n const missingInformationsSectionKey: string = this.getSectionCurrentKey(\n Sections.MissingInformations,\n );\n const subscribeSectionKey: string = this.getSectionCurrentKey(\n Sections.Subscribe,\n );\n\n const hasErrorOffer = errorOffer.some(value => {\n return value;\n });\n\n return (\n <div className={baseClassName} key={currentKey}>\n {shouldApplyMask && <div className={maskClassName} />}\n {loading && (\n <div className={bcn([baseClassName, 'loader-background'])}>\n <LoadingSpinner />\n </div>\n )}\n <CustomOverlay\n centered={true}\n id={paymentIframeId}\n show={!!shouldDisplayPaymentIframe}\n showCloseButton\n >\n <PaymentIframeModal\n orderReference={orderReference}\n checkOrderStatus={this.checkOrderStatus}\n onClose={this.handlePaymentModalDismiss}\n order={pendingOrder}\n previousOrder={previousOrder}\n pay={this.pay}\n />\n </CustomOverlay>\n <CustomOverlay\n centered={true}\n id={resetModalId}\n show={shouldDisplayResetModal}\n >\n <ResetModal\n onBack={this.handleResetCancel}\n onConfirm={this.reset}\n />\n </CustomOverlay>\n <div className={bcn([baseClassName, 'header'])}>\n <h1>{title}</h1>\n <img src={ICLogo} />\n </div>\n <div className={bcn([baseClassName, 'body'])}>\n <TopInformationSection\n currOrderNbr={this.currOrderNbr}\n orderStatusStrs={orderStatusStrs}\n firstPaymentCBStatusStrs={firstPaymentCBStatusStrs}\n />\n\n <ClientDataSection\n key={clientDataSectionKey}\n initialParams={initialClientData}\n isIndividual={isIndividual}\n onIsIndividualToggle={this.handleIsIndividualToggle}\n onValidationStatusChange={\n this.handleClientDataValidation\n }\n searchSiret={this.searchSIRET}\n groupList={this.props.groupList}\n schemaProps={(this.props as any).schemaProps}\n handleGroupSelection={this.onSelectedGroup}\n />\n <CustomOverlay\n id={customerFormId}\n show={shouldDisplaySurveyModal}\n >\n <CustomerFormModal\n onCancel={this.hideModal}\n onValidation={this.handleSiteModalValidation}\n recoverySurvey={this.state.recoverySurvey}\n />\n </CustomOverlay>\n {shouldShowSiteSection && <Separator />}\n {shouldShowSiteSection && (\n <SiteSection\n key={siteSectionKey}\n didValidateSurvey={isSurvey}\n initialParams={initialSiteData}\n onMissingSiteId={this.handleMissingSiteID}\n PDLRef={this.PDLRef}\n PCERef={this.PCERef}\n onSiteOptionSelection={\n this.handleSiteOptionSelection\n }\n onValidationStatusChange={(validated: boolean) => {\n this.setState({\n errorOffer: [false, false],\n sections: this.getNextDisplayedSections(\n Sections.Offer,\n validated,\n ),\n });\n }}\n submitSiteData={this.submitSiteData}\n elecAdress={this.state.elecAdress}\n gazAdress={this.state.gazAdress}\n />\n )}\n {shouldShowOfferSection && <Separator />}\n {shouldShowOfferSection && (\n <>\n <OfferSection\n key={offerSectionKey}\n contracts={contracts}\n electricityEnabled={electricityEnabled}\n gasEnabled={gasEnabled}\n initialParams={initialOfferData}\n onProductSelection={this.handleProductSelection}\n onValidate={this.handleOfferValidation}\n dynamicValidation={\n this.handlePackDynamicValidation\n }\n packages={packages}\n products={products}\n isPackageValid={isPackageValid}\n deliveryPointPackages={deliveryPointPackages}\n handleSetGaugeProps={this.handleSetGaugeProps}\n frequencies={prepaymentFrequencies}\n handleEstimatesPackagesByClient={\n this.handleEstimatesPackagesByClient\n }\n errorOffer={errorOffer}\n />\n {hasErrorOffer && (\n <CustomError\n text={\n \"En raison d'un niveau de consommation assez élevé veuillez contacter le service commercial Wekiwi au mail service.commercial@wekiwi.fr pour trouver la solution optimale à vos besoins\"\n }\n title={\"Erreur pour l'offre\"}\n />\n )}\n </>\n )}\n {shouldShowStatusSection && <Separator />}\n {shouldShowStatusSection && (\n <SituationSection\n key={situationSectionKey}\n productCode={[\n selectedElectricityProduct as TProduct,\n selectedGasProduct as TProduct,\n ]}\n channel={channel}\n cyclicalProducts={cyclicalProducts}\n getCalendarAppointment={\n this.fetchCalendarAppointment\n }\n initialParams={initialSituationData}\n isIndividual={isIndividual}\n onValidationStatusChange={\n this.handleSituationValidation\n }\n searchAppointmentTimeslot={\n this.fetchAppointmentTimeslot\n }\n siteOptionSelection={siteOptionSelection}\n handleDebitDay={this.handleDebitDay}\n />\n )}\n {shouldShowRecapSection && <Separator />}\n {shouldShowRecapSection && (\n <RecapSection\n key={recapSectionKey}\n initialParams={initialRecapData}\n offers={offers}\n onCodeValidation={this.handleCodeValidation}\n validateSponsorCode={this.checkSponsor}\n finalContracts={finalContracts}\n gaugeProps={gaugeProps}\n />\n )}\n {shouldShowMissingInformationSection && <Separator />}\n {shouldShowMissingInformationSection && (\n <MissingInformationSection\n key={missingInformationsSectionKey}\n requiresPCE={gasEnabled}\n requiresPDL={electricityEnabled}\n isPackageValid={isPackageValid}\n onValidate={this.handleMissingInformations}\n PDLRef={this.PDLRef}\n PCERef={this.PCERef}\n />\n )}\n {shouldShowSubscribeSection && <Separator />}\n {shouldShowSubscribeSection && (\n <SubscribeSection\n orderReference={orderReference}\n key={subscribeSectionKey}\n didSaveOrder={didSaveOrder}\n firstPaymentCBStatus={firstPaymentCBStatus}\n highlightSignature={shouldHighlightSignButton}\n orderStatus={orderStatus}\n saveOrder={this.saveOrder}\n signatureEnabled={signatureEnabled}\n triggerPopin={this.triggerSignaturePopin}\n isPackageValid={isPackageValid}\n offers={offers}\n finalContracts={finalContracts as TContract[]}\n PDLRef={this.PDLRef}\n PCERef={this.PCERef}\n contracts={contracts as TContract[]}\n situation={situation as Situation}\n />\n )}\n {!!error && (\n <CustomError text={error.text} title={error.title} />\n )}\n </div>\n <div className={bcn([baseClassName, 'footer'])} />\n {!loading && (\n <CustomButton\n color={'gray'}\n onClick={this.handleReset}\n title={Wording.reset}\n />\n )}\n </div>\n );\n }\n}\n\nexport default AdminSubscriptionContainer;\n","import RecapSection from './RecapSection';\nexport default RecapSection;\n","import React, { ChangeEvent, Component } from 'react';\nimport _ from 'lodash';\nimport WordingConstant from '../../../../../utils/wording.json';\nimport {\n CustomButton,\n CustomError,\n CustomInput,\n CustomSelect,\n} from '../../../../../components';\nimport {\n buildClassName as bcn,\n formatSiteString,\n parseQueryParams,\n} from '../../../../../utils/helpers';\nimport { toIsc } from '../../../../../utils/text';\nimport { ESubscriptionTypes } from '../../../../../utils/network/types';\nimport { SelectOption } from 'Types';\nimport {\n RequestError,\n NoMatchingPackagesError,\n NoPackageListError,\n ExternalError,\n CompletePackagesError,\n} from '../../../../../utils/network/errors';\nimport Data from './Data';\n\ninterface IProps {\n didValidateSurvey: boolean;\n initialParams?: Data;\n onMissingSiteId: (value: boolean) => void;\n onSiteOptionSelection: (type: ESubscriptionTypes) => void;\n onValidationStatusChange: (validated: boolean) => void;\n submitSiteData: (\n electricity: string,\n gas: string,\n ) => Promise<boolean | RequestError>;\n PDLRef: React.MutableRefObject<string | null>;\n PCERef: React.MutableRefObject<string | null>;\n elecAdress?: string;\n gazAdress?: string;\n}\n\ninterface IState {\n PCEError: string;\n PCEValue: string;\n PDLError: string;\n PDLValue: string;\n requestError: string | null;\n siteOptionSelection: SelectOption<ESubscriptionTypes> | null;\n}\n\nconst Wording = WordingConstant.AdminSubscriptionContainer.Site;\nconst baseClassName = 'site-section';\nconst mainClassName = 'main';\nconst compoundOption = toIsc(`${Wording.electricity} & ${Wording.gas}`);\nconst siteOptions: Array<SelectOption<ESubscriptionTypes>> = [\n {\n id: Wording.electricity,\n label: Wording.electricity,\n value: ESubscriptionTypes.ELECTRICITY,\n },\n {\n id: compoundOption,\n label: compoundOption,\n value: ESubscriptionTypes.ELECTRICITY_AND_GAS,\n },\n {\n id: Wording.gas,\n label: Wording.gas,\n value: ESubscriptionTypes.GAS,\n },\n];\n\nclass SiteSection extends Component<IProps, IState> {\n constructor(props: IProps) {\n super(props);\n this.state = {\n PCEError: '',\n PCEValue: '',\n PDLError: '',\n PDLValue: '',\n requestError: null,\n siteOptionSelection: null,\n };\n this.handleMissingSiteIDIfNeeded = this.handleMissingSiteIDIfNeeded.bind(\n this,\n );\n this.handlePCEInput = this.handlePCEInput.bind(this);\n this.handlePDLInput = this.handlePDLInput.bind(this);\n this.handleSiteOptionSelection = this.handleSiteOptionSelection.bind(\n this,\n );\n this.handleValidationClick = this.handleValidationClick.bind(this);\n this.submitData = this.submitData.bind(this);\n }\n componentDidMount() {\n this.init();\n\n this.initWithUrl();\n }\n init() {\n const { initialParams } = this.props;\n if (!!initialParams) {\n const siteOptionSelection: SelectOption<ESubscriptionTypes> | null =\n _.find(\n siteOptions,\n (option: SelectOption<ESubscriptionTypes>) => {\n return (\n option.value === initialParams.siteOptionSelection\n );\n },\n ) || null;\n this.setState({\n PCEValue: initialParams.PCEValue || '',\n PDLValue: initialParams.PDLValue || '',\n siteOptionSelection,\n });\n }\n }\n\n initWithUrl() {\n const { onSiteOptionSelection } = this.props;\n\n const params = parseQueryParams(\n document.location,\n window.location.host,\n window.location.protocol,\n );\n\n const energies = params.get('energyTypes[]');\n\n if (!!energies) {\n const manageSelection = (() => {\n const spltEng = energies && energies.toString().split('|');\n\n if (spltEng && spltEng.length === 2) {\n return ESubscriptionTypes.ELECTRICITY_AND_GAS;\n }\n\n return spltEng && (spltEng[0] as string) === 'EL'\n ? ESubscriptionTypes.ELECTRICITY\n : ESubscriptionTypes.GAS;\n })();\n\n this.setState({\n siteOptionSelection:\n _.find(\n siteOptions,\n (option: SelectOption<ESubscriptionTypes>) => {\n return option.value === manageSelection;\n },\n ) || null,\n });\n\n if (manageSelection) onSiteOptionSelection(manageSelection);\n }\n }\n checkInputValidity(\n PCE: string,\n PDL: string,\n type: ESubscriptionTypes | null,\n ): boolean {\n let hasValidInput: boolean = false;\n if (type === ESubscriptionTypes.ELECTRICITY_AND_GAS) {\n const hasValidPCE = this.checkPCEValidity(PCE);\n const hasValidPDL = this.checkPDLValidity(PDL);\n hasValidInput = hasValidPCE && hasValidPDL;\n } else if (type === ESubscriptionTypes.ELECTRICITY) {\n hasValidInput = this.checkPDLValidity(PDL);\n } else if (type === ESubscriptionTypes.GAS) {\n hasValidInput = this.checkPCEValidity(PCE);\n }\n return hasValidInput;\n }\n checkPCEValidity(PCE: string): boolean {\n const isValid = this.validatePCE(PCE);\n if (!isValid) this.setState({ PCEError: Wording.PCEError });\n return isValid;\n }\n checkPDLValidity(PDL: string): boolean {\n const isValid = this.validatePDL(PDL);\n if (!isValid) this.setState({ PDLError: Wording.PDLError });\n return isValid;\n }\n handleMissingSiteIDIfNeeded(\n force: boolean = false,\n recovery: boolean = false,\n ) {\n const { onMissingSiteId } = this.props;\n const { PCEValue, PDLValue, siteOptionSelection } = this.state;\n if (siteOptionSelection === null) return;\n let clickEnabled = true;\n if (\n siteOptionSelection.value === ESubscriptionTypes.ELECTRICITY_AND_GAS\n ) {\n clickEnabled =\n clickEnabled && PDLValue.length === 0 && PCEValue.length === 0;\n } else if (\n siteOptionSelection.value === ESubscriptionTypes.ELECTRICITY\n ) {\n clickEnabled = clickEnabled && PDLValue.length === 0;\n } else if (siteOptionSelection.value === ESubscriptionTypes.GAS) {\n clickEnabled = clickEnabled && PCEValue.length === 0;\n }\n if (force || clickEnabled) onMissingSiteId(recovery);\n }\n handlePCEInput(e: ChangeEvent<HTMLInputElement>) {\n let value = _.get(e, 'target.value', '');\n value = formatSiteString(value);\n this.props.PCERef.current = value;\n this.setState({\n PCEError: '',\n PCEValue: value,\n requestError: '',\n });\n }\n handlePDLInput(e: ChangeEvent<HTMLInputElement>) {\n let value = _.get(e, 'target.value', '');\n value = formatSiteString(value);\n this.props.PDLRef.current = value;\n this.setState({\n PDLError: '',\n PDLValue: value,\n requestError: '',\n });\n }\n handleSiteOptionSelection(type: SelectOption<ESubscriptionTypes>) {\n const { onSiteOptionSelection } = this.props;\n onSiteOptionSelection(type.value);\n this.setState({\n siteOptionSelection: type,\n requestError: '',\n });\n }\n handleValidationClick() {\n const { PCEValue, PDLValue, siteOptionSelection } = this.state;\n const type: ESubscriptionTypes | null = _.get(\n siteOptionSelection,\n 'value',\n null,\n );\n const hasValidInput = this.checkInputValidity(PCEValue, PDLValue, type);\n this.submitData(hasValidInput);\n }\n shouldShow(input: ESubscriptionTypes): boolean {\n const { siteOptionSelection } = this.state;\n const value = _.get(siteOptionSelection, 'value');\n return (\n input === value || value === ESubscriptionTypes.ELECTRICITY_AND_GAS\n );\n }\n async submitData(hasValidInput: boolean) {\n const { onValidationStatusChange, submitSiteData } = this.props;\n const { PCEValue, PDLValue, siteOptionSelection } = this.state;\n if (!hasValidInput) {\n onValidationStatusChange(false);\n return;\n }\n if (!!siteOptionSelection) {\n let res: boolean | RequestError;\n if (this.state.siteOptionSelection) {\n if (\n this.state.siteOptionSelection.value ===\n ESubscriptionTypes.ELECTRICITY\n ) {\n res = await submitSiteData(PDLValue, '');\n } else if (\n this.state.siteOptionSelection.value ===\n ESubscriptionTypes.GAS\n ) {\n res = await submitSiteData('', PCEValue);\n } else {\n res = await submitSiteData(PDLValue, PCEValue);\n }\n } else {\n res = await submitSiteData(PDLValue, PCEValue);\n }\n\n let validated = false;\n if (res instanceof RequestError) {\n let message = WordingConstant.Errors.default;\n if (res instanceof ExternalError) {\n message = res.message;\n }\n if (\n res instanceof NoPackageListError ||\n res instanceof NoMatchingPackagesError\n ) {\n message = res.message;\n this.handleMissingSiteIDIfNeeded(true);\n }\n if (res instanceof CompletePackagesError) {\n message = res.message;\n this.handleMissingSiteIDIfNeeded(true, true);\n }\n this.setState({ requestError: message });\n } else {\n validated = true;\n this.setState({ requestError: null });\n this.handleMissingSiteIDIfNeeded();\n }\n onValidationStatusChange(validated);\n }\n }\n validateSiteId(id: string) {\n return id.replace(/\\s/g, '').length === 14;\n }\n validatePCE(PCE: string): boolean {\n return this.validateSiteId(PCE);\n }\n validatePDL(PDL: string): boolean {\n return this.validateSiteId(PDL);\n }\n render() {\n const { didValidateSurvey, elecAdress, gazAdress } = this.props;\n const {\n PCEError,\n PCEValue,\n PDLError,\n PDLValue,\n requestError,\n siteOptionSelection,\n } = this.state;\n\n return (\n <section className={baseClassName}>\n <h2>{Wording.title}</h2>\n <div className={bcn([baseClassName, mainClassName])}>\n <CustomSelect\n handleChangeSelect={this.handleSiteOptionSelection}\n options={siteOptions}\n text={`${Wording.offerPick}${toIsc(' :')}`}\n value={siteOptionSelection}\n />\n <div\n className={bcn([baseClassName, mainClassName, 'site'])}\n >\n {this.shouldShow(ESubscriptionTypes.ELECTRICITY) && (\n <CustomInput\n error={PDLError}\n onInputChange={this.handlePDLInput}\n text={`${Wording.PDLPrompt}${toIsc(' :')}`}\n value={PDLValue}\n />\n )}\n <span\n style={{\n paddingLeft: '35%',\n fontWeight: 'bold',\n }}\n >\n {elecAdress}\n </span>\n\n {this.shouldShow(ESubscriptionTypes.GAS) && (\n <CustomInput\n style={\n gazAdress\n ? { marginTop: '20px' }\n : undefined\n }\n error={PCEError}\n onInputChange={this.handlePCEInput}\n text={`${Wording.PCEPrompt}${toIsc(' :')}`}\n value={PCEValue}\n />\n )}\n <span\n style={{ paddingLeft: '35%', fontWeight: 'bold' }}\n >\n {gazAdress}\n </span>\n </div>\n {!!requestError && !didValidateSurvey && (\n <CustomError\n text={requestError}\n title={Wording.error}\n />\n )}\n <CustomButton\n color={'orange'}\n heavy={true}\n onClick={this.handleValidationClick}\n title={Wording.validate}\n />\n <div\n className={bcn([\n baseClassName,\n mainClassName,\n didValidateSurvey\n ? 'missing--highlighted'\n : 'missing',\n ])}\n >\n <span\n onClick={() => this.handleMissingSiteIDIfNeeded()}\n >\n {Wording.missingSiteID}\n </span>\n <p>{Wording.terms}</p>\n </div>\n </div>\n </section>\n );\n }\n}\n\nexport default SiteSection;\n","import SiteSection from './SiteSection';\nexport default SiteSection;\n","import SituationSection from './SituationSection';\nexport default SituationSection;\n","import React, { useEffect } from 'react';\nimport { CustomButton } from '../../../../../components';\nimport { buildClassName as bcn } from '../../../../../utils/helpers';\nimport WordingConstant from '../../../../../utils/wording.json';\nimport {\n EFirstPaymentCBStatuses,\n EOrderStatuses,\n TContract,\n ECivilities,\n ETimeslots,\n EEffectiveStartRanges,\n TAddress,\n EProcessTypes,\n TOffer,\n} from '../../../../../utils/network/types';\nimport { isCyclicalProduct } from '../../../../../utils/network/helpers';\nimport offer from '../../../../../components/PDFs/ProofOfPayment/components/RightColumn/Offer';\n\ntype Situation = {\n coords?: {\n civility: ECivilities | null;\n firstName: string;\n lastName: string;\n };\n effectiveStartRange?: EEffectiveStartRanges;\n electricityEffectiveStartDate?: Date;\n electricityDueDate?: Date;\n gasDueDate?: Date;\n electricityExpress?: boolean;\n gasEffectiveStartDate?: Date;\n gasExpress?: boolean;\n electricityTimeslot?: ETimeslots;\n gasTimeslot?: ETimeslots;\n electricityFirstPaymentCB?: boolean;\n gasFirstPaymentCB?: boolean;\n billingAddress?: TAddress;\n iban?: string;\n processType?: EProcessTypes;\n thirdParty?: {\n civility: ECivilities;\n firstName: string;\n lastName: string;\n };\n};\n\ninterface IProps {\n orderReference: string | null;\n didSaveOrder: boolean;\n firstPaymentCBStatus: EFirstPaymentCBStatuses | null;\n highlightSignature: boolean;\n orderStatus: EOrderStatuses | null;\n saveOrder: () => void;\n signatureEnabled: boolean;\n triggerPopin: () => void;\n isPackageValid?: boolean;\n PDLRef: React.RefObject<string | null>;\n PCERef: React.RefObject<string | null>;\n contracts: TContract[];\n finalContracts: TContract[];\n situation: Situation;\n offers: TOffer[] | null;\n}\n\nconst Wording = WordingConstant.AdminSubscriptionContainer.Subscribe;\nconst baseClassName = 'subscribe-section';\nconst buttonsClassName = bcn([baseClassName, 'buttons']);\nconst saveClassName = bcn([buttonsClassName, 'save']);\nconst signClassName = bcn([buttonsClassName, 'sign']);\n\nconst SubscribeSection: React.FC<IProps> = ({\n orderReference,\n didSaveOrder,\n firstPaymentCBStatus,\n highlightSignature,\n orderStatus,\n saveOrder,\n signatureEnabled,\n triggerPopin,\n finalContracts,\n isPackageValid,\n PDLRef,\n PCERef,\n contracts,\n situation,\n offers,\n}) => {\n // const hasEffectiveStartDate = contracts.some(contract => {\n // return contract.effectiveStartDate !== '';\n // });\n const hasFinalizedOrder =\n orderStatus === EOrderStatuses.FINALIZED ||\n orderStatus === EOrderStatuses.FINALIZED_WITHOUT_DOC;\n const isFinalized =\n hasFinalizedOrder &&\n !!firstPaymentCBStatus &&\n firstPaymentCBStatus !== EFirstPaymentCBStatuses.FINALIZED;\n\n const signTitleString = isFinalized\n ? Wording.pay.title\n : Wording.sign.title;\n\n const signButtonClassname =\n highlightSignature && isFinalized\n ? bcn([signClassName, 'highlighted'], '--')\n : signClassName;\n\n const userGroup = localStorage.getItem('userGroup');\n const isAdmin = userGroup === 'ADMIN';\n\n const {\n electricityEffectiveStartDate = null,\n gasEffectiveStartDate = null,\n } = situation || {};\n\n const isCyclic = finalContracts.some(contract => {\n return isCyclicalProduct(contract.chosenProduct);\n });\n\n const hasAddress = finalContracts.every(value => {\n if (value.deliveryPoint && value.deliveryPoint.address) {\n return (\n value.deliveryPoint.address.street !== null &&\n value.deliveryPoint.address.street !== undefined\n );\n }\n return false;\n });\n\n return (\n <section className={baseClassName}>\n <h2>{Wording.title}</h2>\n <div className={buttonsClassName}>\n <div className={saveClassName}>\n {!isCyclic &&\n situation &&\n !electricityEffectiveStartDate &&\n !gasEffectiveStartDate && (\n <span className=\"warning-text\">\n Veuillez choisir une date de prélèvement avant\n de pouvoir enregistrer la souscription.\n </span>\n )}\n <CustomButton\n color={'white'}\n onClick={saveOrder}\n title={Wording.save.title}\n disabled={\n !offers ||\n offers.length === 0 ||\n !isPackageValid ||\n (PDLRef.current === null &&\n PCERef.current === null) ||\n (!isCyclic &&\n !electricityEffectiveStartDate &&\n !gasEffectiveStartDate) ||\n !hasAddress\n // !hasEffectiveStartDate\n }\n />\n {(!offers ||\n offers.length === 0 ||\n !isPackageValid ||\n (PDLRef.current === null && PCERef.current === null) ||\n (!isCyclic &&\n !electricityEffectiveStartDate &&\n !gasEffectiveStartDate) ||\n !hasAddress) && (\n <span className={'save-warning'}>\n Une information est manquante pour valider la\n sauvegarde\n </span>\n )}\n {(!offers || offers.length === 0) && (\n <span className={'save-warning'}>\n Tu ne peux pas continuer ta souscription, les offres\n sont manquantes.\n </span>\n )}\n\n {didSaveOrder && (\n <span className={'save-confirm'}>\n {Wording.save.confirm}\n </span>\n )}\n <span>{Wording.save.hint1}</span>\n <span>{Wording.save.hint2}</span>\n </div>\n <div className={signButtonClassname}>\n {isAdmin && (\n <CustomButton\n color={isFinalized ? 'orange' : 'gray'}\n heavy={true}\n onClick={() => triggerPopin()}\n title={signTitleString}\n disabled={\n !offers ||\n offers.length === 0 ||\n !isPackageValid ||\n (PDLRef.current === null &&\n PCERef.current === null)\n }\n />\n )}\n\n {isAdmin && !hasFinalizedOrder && (\n <span>{Wording.sign.hint}</span>\n )}\n </div>\n </div>\n {orderReference !== null ? (\n <div className=\"orderNumberDisplay\">\n Votre numéro de souscription a bien été créé :{' '}\n <strong>{orderReference}</strong>\n </div>\n ) : (\n <></>\n )}\n </section>\n );\n};\n\nexport default SubscribeSection;\n","import SubscribeSection from './SubscribeSection';\nexport default SubscribeSection;\n","import TopInformationSection from './TopInformationSection';\n\nexport default TopInformationSection;\n","import React from 'react';\nimport { buildClassName as bcn } from '../../../../../utils/helpers';\n\nconst baseClassName = 'admin-subscription-container';\n\ninterface IProps {\n currOrderNbr: string | null;\n orderStatusStrs: [string, string];\n firstPaymentCBStatusStrs: [string, string];\n}\n\nconst TopInformationSection: React.FC<IProps> = ({\n currOrderNbr,\n firstPaymentCBStatusStrs,\n orderStatusStrs,\n}) => (\n <div className={bcn([baseClassName, 'body', 'top'])}>\n {currOrderNbr !== null && currOrderNbr !== undefined ? (\n <div\n className={bcn([\n baseClassName,\n 'body',\n 'top',\n 'display-order-number',\n ])}\n >\n <p>Affaire n°: {currOrderNbr}</p>\n </div>\n ) : (\n <div />\n )}\n\n <div className={bcn([baseClassName, 'body', 'top', 'status'])}>\n <span>{orderStatusStrs[0]}</span>\n <span>{orderStatusStrs[1]}</span>\n <span>{firstPaymentCBStatusStrs[0]}</span>\n <span>{firstPaymentCBStatusStrs[1]}</span>\n </div>\n </div>\n);\n\nexport default TopInformationSection;\n","import AdminSubscriptionContainer from './AdminSubscriptionContainer';\nexport interface ISectionData {\n section: number;\n}\n\nexport default AdminSubscriptionContainer;\n","import _ from 'lodash';\nimport { getFormattedDateToBackEnd } from '../../helpers';\nimport { requiresPayment } from '../helpers';\nimport {\n ECivilities,\n ECustomerTypes,\n EEnergyTypes,\n TAddress,\n TContract,\n TCustomerContact,\n TOrder,\n ETimeslots,\n TThirdParty,\n ERebateCodeTypes,\n EPaymentModes,\n EBillingModes,\n EFirstPaymentCBStatuses,\n EEffectiveStartRanges,\n EtypePayment,\n} from '../types';\nimport { EProcessTypes } from '../../enums';\n\nfunction buildPendingOrder(\n client: {\n customerContact: TCustomerContact | null;\n customerType: ECustomerTypes;\n typePayment: EtypePayment;\n },\n offer: {\n contracts: TContract[];\n },\n situation: {\n billingAddress?: TAddress;\n coords?: {\n civility: ECivilities | null;\n firstName: string;\n lastName: string;\n };\n coholder?: Partial<TThirdParty>;\n effectiveStartRange?: EEffectiveStartRanges;\n energies: {\n EL?: {\n effectiveStartDate?: Date;\n express?: boolean;\n firstPaymentCB: boolean;\n timeslot?: ETimeslots;\n dueDate?: Date;\n };\n NG?: {\n effectiveStartDate?: Date;\n express?: boolean;\n firstPaymentCB: boolean;\n timeslot?: ETimeslots;\n dueDate?: Date;\n };\n };\n payment: {\n iban?: string;\n };\n processType: EProcessTypes | undefined;\n },\n options: {\n isSign: boolean;\n rebateCode?: {\n code: string;\n type: ERebateCodeTypes | null;\n };\n channel?: string;\n },\n): TOrder | null {\n const order: any = {\n customer: {\n contact: client.customerContact,\n type: client.customerType,\n typePayment: client.typePayment,\n },\n };\n let firstPaymentCBStatus: boolean = false;\n let electricityContract: TContract | null = null;\n let gasContract: TContract | null = null;\n _.forEach(offer.contracts, (contract: TContract) => {\n if (\n !electricityContract &&\n contract.energy === EEnergyTypes.ELECTRICTY\n ) {\n electricityContract = contract;\n } else if (!gasContract && contract.energy === EEnergyTypes.GAS) {\n gasContract = contract;\n } else {\n return false;\n }\n });\n\n if (!!electricityContract) {\n if (\n !!situation.energies.EL &&\n !!situation.energies.EL.effectiveStartDate\n ) {\n _.set(\n electricityContract,\n 'effectiveStartDate',\n getFormattedDateToBackEnd(\n situation.energies.EL.effectiveStartDate,\n ),\n );\n _.set(\n electricityContract,\n 'deliveryPoint.process.express',\n !!situation.energies.EL.express,\n );\n _.set(\n electricityContract,\n 'firstPaymentCB',\n situation.energies.EL.firstPaymentCB,\n );\n _.set(\n electricityContract,\n 'deliveryPoint.process.appointmentTimeslot',\n situation.energies.EL.timeslot,\n );\n\n if (\n situation.energies.EL.dueDate &&\n situation.processType === EProcessTypes.SWITCH\n ) {\n _.set(\n electricityContract,\n 'dueDate',\n getFormattedDateToBackEnd(situation.energies.EL.dueDate),\n );\n }\n }\n }\n if (!!gasContract) {\n if (\n !!situation.energies.NG &&\n !!situation.energies.NG.effectiveStartDate\n ) {\n _.set(\n gasContract,\n 'effectiveStartDate',\n getFormattedDateToBackEnd(\n situation.energies.NG.effectiveStartDate,\n ),\n );\n _.set(\n gasContract,\n 'deliveryPoint.process.express',\n !!situation.energies.NG.express,\n );\n _.set(\n gasContract,\n 'firstPaymentCB',\n situation.energies.NG.firstPaymentCB,\n );\n _.set(\n gasContract,\n 'deliveryPoint.process.appointmentTimeslot',\n situation.energies.NG.timeslot,\n );\n\n if (\n situation.energies.NG.dueDate &&\n situation.processType === EProcessTypes.SWITCH\n ) {\n _.set(\n gasContract,\n 'dueDate',\n getFormattedDateToBackEnd(situation.energies.NG.dueDate),\n );\n }\n }\n }\n order.contracts = [electricityContract, gasContract].filter(\n contract => contract !== null,\n );\n _.forEach(order.contracts, (contract: TContract) => {\n const billingMode: EBillingModes = _.get(\n contract,\n 'chosenProduct.billingModeCode',\n );\n if (requiresPayment(contract)) firstPaymentCBStatus = true;\n if (!!situation.processType) {\n _.set(\n contract,\n 'deliveryPoint.process.type',\n situation.processType,\n );\n }\n if (!!situation.effectiveStartRange) {\n _.set(\n contract,\n 'effectiveStartRange',\n situation.effectiveStartRange,\n );\n } else {\n delete contract.effectiveStartRange;\n }\n contract.thirdParties = [];\n if (!!options.rebateCode) {\n contract.thirdParties.push({\n code: options.rebateCode.code,\n role: options.rebateCode.type,\n });\n }\n\n if (options.isSign && options.channel && options.channel !== '') {\n contract.thirdParties.push({\n code: options.channel,\n role: 'PARTNER',\n });\n }\n\n if (\n !!situation.coholder &&\n !!situation.coholder.civility &&\n !!situation.coholder.firstName &&\n !!situation.coholder.lastName\n ) {\n contract.thirdParties.push({\n role: 'COHOLDER',\n civility: situation.coholder.civility,\n firstName: situation.coholder.firstName,\n lastName: situation.coholder.lastName,\n });\n }\n });\n _.set(order, 'customer.finance.paymentMode', EPaymentModes.DIRECT_DEBIT);\n\n if (situation.payment.iban && situation.payment.iban !== '') {\n _.set(order, 'customer.finance.ibanCode', situation.payment.iban);\n }\n\n if (firstPaymentCBStatus) {\n _.set(order, 'firstPaymentCBStatus', EFirstPaymentCBStatuses.PENDING);\n }\n _.set(\n order,\n 'customer.finance.accountOwnerFirstName',\n _.get(client, 'customerContact.firstName', ''),\n );\n _.set(\n order,\n 'customer.finance.accountOwnerLastName',\n _.get(client, 'customerContact.lastName', ''),\n );\n if (!!situation.billingAddress && !!situation.coords) {\n _.set(\n order,\n 'customer.finance.billingContact.address',\n situation.billingAddress,\n );\n _.set(\n order,\n 'customer.finance.billingContact.civility',\n situation.coords.civility,\n );\n _.set(\n order,\n 'customer.finance.billingContact.firstName',\n situation.coords.firstName,\n );\n _.set(\n order,\n 'customer.finance.billingContact.lastName',\n situation.coords.lastName,\n );\n _.set(\n order,\n 'customer.finance.accountOwnerFirstName',\n situation.coords.firstName,\n );\n _.set(\n order,\n 'customer.finance.accountOwnerLastName',\n situation.coords.lastName,\n );\n }\n\n _.set(order, 'origin', 'expertMode');\n\n return order;\n}\n\nexport { buildPendingOrder };\n","const expKey: string = 'expires';\n\nfunction hasExpiredSession(): boolean {\n const expires = Number(localStorage.getItem(expKey));\n const didExpired = isNaN(expires) || new Date().getTime() > expires;\n if (didExpired) localStorage.removeItem(expKey);\n return didExpired;\n}\n\nexport { hasExpiredSession };\n","import React, { Dispatch } from 'react';\nimport _ from 'lodash';\nimport { connect } from 'react-redux';\nimport { AsyncFunctionProxy, RootAction, RootState, TSchemaProps } from 'Types';\nimport { RouteComponentProps } from 'react-router-dom';\nimport AdminSubscriptionContainer from '../../../containers/admin/AdminSubscriptionContainer';\nimport { parseQueryParams } from '../../../utils/helpers';\nimport { hasExpiredSession } from '../../../utils/storage';\nimport {\n checkSponsor,\n getCalendarAppointment,\n getDeliveryPointPackages,\n getEstimatesPackages,\n getOffers,\n getOrder,\n getOrderStatus,\n getProducts,\n getSurveyPackages,\n paymentCB,\n saveOrder,\n searchAppointmentTimeslot,\n searchSiret,\n signOrder,\n getPackDynamic,\n} from '../../../utils/network/request';\nimport { refreshSessionExpirationStatus } from '../../../_actions/auth.actions';\nimport {\n SessionExpiredError,\n RequestError,\n} from '../../../utils/network/errors';\n\ntype StateProps = {\n group?: string;\n userId: string;\n groupList: string[];\n};\ntype DispatchProps = {\n dispatchCheckSessionExpiration: (expired: boolean) => void;\n};\n\ntype OwnProps = {\n schemaProps: TSchemaProps;\n} & (Pick<RouteComponentProps, 'location'> | {});\ntype NetworkProps = {\n checkSponsor: AsyncFunctionProxy<typeof checkSponsor>;\n getCalendarAppointment: AsyncFunctionProxy<typeof getCalendarAppointment>;\n getDeliveryPointPackages: AsyncFunctionProxy<\n typeof getDeliveryPointPackages\n >;\n getEstimatesPackages: AsyncFunctionProxy<typeof getEstimatesPackages>;\n getOffers: AsyncFunctionProxy<typeof getOffers>;\n getPackDynamic: AsyncFunctionProxy<typeof getPackDynamic>;\n getOrder: AsyncFunctionProxy<typeof getOrder>;\n getOrderStatus: AsyncFunctionProxy<typeof getOrderStatus>;\n getProducts: AsyncFunctionProxy<typeof getProducts>;\n getSurveyPackages: AsyncFunctionProxy<typeof getSurveyPackages>;\n paymentCB: AsyncFunctionProxy<typeof paymentCB>;\n saveOrder: AsyncFunctionProxy<typeof saveOrder>;\n searchAppointmentTimeslot: AsyncFunctionProxy<\n typeof searchAppointmentTimeslot\n >;\n searchSiret: AsyncFunctionProxy<typeof searchSiret>;\n signOrder: AsyncFunctionProxy<typeof signOrder>;\n};\ntype MergeProps = StateProps &\n NetworkProps & {\n orderNumber?: string | number;\n schemaProps: TSchemaProps;\n };\n\nconst mapStateToProps = (state: RootState): StateProps => ({\n group: state.authReducer.groupe,\n userId: state.authReducer.userId || '',\n groupList: state.userGroupReducer.groupList,\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch<RootAction>): DispatchProps => {\n return {\n dispatchCheckSessionExpiration: (expired: boolean) => {\n dispatch(refreshSessionExpirationStatus(expired));\n },\n };\n};\n\nconst mergeProps = (\n state: StateProps,\n dispatch: DispatchProps,\n own: OwnProps,\n): MergeProps => {\n const { dispatchCheckSessionExpiration } = dispatch;\n const withCheck = <\n R,\n F extends (...args: any[]) => Promise<R | RequestError>\n >(\n fn: F,\n ): (() => Promise<R | RequestError>) => {\n return async (\n ...args: Parameters<typeof fn>\n ): Promise<R | RequestError> => {\n const expired = hasExpiredSession();\n dispatchCheckSessionExpiration(expired);\n return !expired ? await fn(...args) : new SessionExpiredError();\n };\n };\n\n const nextProps: MergeProps = {\n ...state,\n checkSponsor: withCheck(checkSponsor),\n getCalendarAppointment: withCheck(getCalendarAppointment),\n getDeliveryPointPackages: withCheck(getDeliveryPointPackages),\n getEstimatesPackages: withCheck(getEstimatesPackages),\n getOffers: withCheck(getOffers),\n getPackDynamic: withCheck(getPackDynamic),\n getOrder: withCheck(getOrder),\n getOrderStatus: withCheck(getOrderStatus),\n getProducts: withCheck(getProducts),\n getSurveyPackages: withCheck(getSurveyPackages),\n paymentCB: withCheck(paymentCB),\n saveOrder: withCheck(saveOrder),\n searchAppointmentTimeslot: withCheck(searchAppointmentTimeslot),\n searchSiret: withCheck(searchSiret),\n signOrder: withCheck(signOrder),\n ...own,\n };\n const location = _.get(own, 'location');\n if (!!location) {\n const params = parseQueryParams(\n location,\n window.location.host,\n window.location.protocol,\n );\n const orderNumber: string | number | undefined = params.get(\n 'orderNumber',\n );\n nextProps.orderNumber = orderNumber;\n }\n\n return nextProps;\n};\n\nexport type ConnectedProps = MergeProps;\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps,\n mergeProps,\n)(AdminSubscriptionContainer);\n","import AdminSubscriptionPage from './AdminSubscriptionPage';\nexport default AdminSubscriptionPage;\n","import ErrorScreen from './ErrorScreen';\nexport default ErrorScreen;\n","import React from 'react';\n\ntype Params = {\n details: string;\n message: string;\n};\n\n// TODO Style the following\nconst ErrorScreen: React.FC<Params> = ({ details, message }) => {\n return (\n <div className=\"error-screen\">\n <h1>{message}</h1>\n <h3>{details}</h3>\n </div>\n );\n};\n\nexport default ErrorScreen;\n","import React from 'react';\n\nimport ErrorScreen from './../../../components/ErrorScreen';\n\nimport WordingConstant from '../../../utils/wording.json';\nconst Wording = WordingConstant.NotFoundPage;\n\nexport type Props = {};\n\nconst NotFoundContainer: React.FC<Props> = props => {\n return <ErrorScreen details={Wording.details} message={Wording.message} />;\n};\n\nexport default NotFoundContainer;\n","import NotFoundContainer from './NotFoundContainer';\nexport default NotFoundContainer;\n","import NotFoundPage from './NotFoundPage';\nexport default NotFoundPage;\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { RootState } from 'Types';\n\nimport NotFoundContainer from '../../../containers/defaults/NotFoundContainer';\n\nconst mapStateToProps = (state: RootState) => ({});\nconst dispatchProps = {};\n\nexport default connect(\n mapStateToProps,\n dispatchProps,\n)(NotFoundContainer);\n","import CustomDate from './CustomDate';\n\nexport default CustomDate;\n","import React from 'react';\n\nimport DayPickerInput from 'react-day-picker/DayPickerInput';\nimport 'react-day-picker/lib/style.css';\n\nimport MomentLocaleUtils, {\n parseDate,\n formatDate,\n} from 'react-day-picker/moment';\nimport 'moment/locale/fr';\n\ntype Props = {\n text?: string;\n error?: string;\n selectedDay?: Date;\n isOpen?: boolean;\n deleteButton?: boolean;\n handleDayChange?: (selectedDay: Date) => void;\n deleteButtonOnClick?: () => void;\n};\n\nconst CustomDate: React.FC<Props> = props => {\n const modifiers = {\n selectedDay: props.selectedDay,\n };\n const modifiersStyles = {\n selectedDay: {\n color: 'white',\n backgroundColor: '#7571f4',\n },\n };\n\n return (\n <div className=\"custom-date\">\n {props.text && (\n <label htmlFor={`id${props.text}`}>{props.text}</label>\n )}\n\n {props.deleteButton && props.selectedDay !== undefined && (\n <span\n className=\"custom-date__delete\"\n onClick={props.deleteButtonOnClick}\n >\n <span>X</span>\n </span>\n )}\n\n <DayPickerInput\n formatDate={formatDate}\n parseDate={parseDate}\n format=\"DD/MM/YYYY\"\n placeholder=\"JJ/MM/AAAA\"\n value={!props.selectedDay ? '' : props.selectedDay}\n onDayChange={props.handleDayChange}\n dayPickerProps={{\n modifiersStyles,\n modifiers,\n selectedDays: props.selectedDay,\n locale: 'fr',\n localeUtils: MomentLocaleUtils as any,\n }}\n />\n\n {props.error && props.error !== '' && (\n <p className=\"react-picker-error\">{props.error}</p>\n )}\n </div>\n );\n};\nexport default CustomDate;\n","import React from 'react';\n\ntype Props = {\n title?: string;\n disabled?: boolean;\n onChange?: any;\n isLoading?: boolean;\n accept?: any;\n};\n\nconst CustomUpload: React.FC<Props> = ({\n title,\n disabled,\n onChange,\n accept,\n isLoading,\n}) => {\n const handleChange = (event: any) => {\n if (event.target.files.length > 0) {\n onChange(event.target.files);\n }\n };\n\n return (\n <div className=\"custom-upload\">\n <input\n className=\"custom-upload__input\"\n id=\"upload-button\"\n type=\"file\"\n multiple\n accept={accept}\n onChange={handleChange}\n onClick={(event: any) => {\n event.target.value = null;\n }}\n />\n <label\n id=\"upload-btn-label\"\n htmlFor=\"upload-button\"\n className=\"custom-upload__button\"\n >\n <span>{title}</span>\n </label>\n </div>\n );\n};\n\nexport default CustomUpload;\n","import React, { useState } from 'react';\nimport { InputEvent, SelectOption, TSchemaProps } from 'Types';\nimport {\n CustomInput,\n CustomButton,\n CustomModal,\n Group,\n CustomSelect,\n} from '../../../components';\nimport CustomDate from '../../../components/admin/CustomDate';\nimport WordingConstant from '../../../utils/wording.json';\nimport {\n getDateFormatted,\n getHost,\n getSelectOptionValue,\n isHaveActionsPermission,\n isLimitedAuthorization,\n isMixedAuthorization,\n} from '../../../utils/helpers';\nimport _, { isObject } from 'lodash';\nimport { searchClientAsync } from '../../../_actions/searchOrder.actions';\nimport { useDispatch } from 'react-redux';\nimport CustomUpload from '../../../components/CustomUpload/CustomUpload';\n\nconst Wording = WordingConstant.SearchCaseContainer;\n\nconst situationStatus: Array<SelectOption<any>> = [\n { id: '0', label: 'CHF', value: 'SWITCH' },\n { id: '1', label: 'MES', value: 'MOVE_IN' },\n];\n\nexport type Props = {\n // fetchOrder: (props: TOrderPayload) => void;\n groupList: string[];\n schemaProps: TSchemaProps;\n userId: string | undefined;\n userLimited: string | undefined;\n handleShowModal: (f: any) => void;\n};\n\nconst mapStateToProps = () => ({});\nexport const dispatchProps = {\n searchClientRequest: searchClientAsync.request,\n searchClientSuccess: searchClientAsync.success,\n searchClientFailure: searchClientAsync.failure,\n};\n\nconst CustomerContracSearch: React.FC<Props> = ({\n groupList,\n schemaProps,\n userId,\n userLimited,\n handleShowModal,\n}) => {\n const dispatch = useDispatch();\n const isDisabledActionBtn = isLimitedAuthorization(schemaProps);\n const isMixed = isMixedAuthorization(schemaProps);\n const isLimited = userLimited ? userLimited === 'LIMITED' : false;\n const renderDefaultGroup = () => {\n const defaultVal = {\n id: 0,\n label: schemaProps.currentGroup,\n value: schemaProps.currentGroup,\n };\n\n if (isMixed) {\n return [defaultVal];\n }\n\n return isDisabledActionBtn ? defaultVal : '';\n };\n\n const [clientLastName, setclientLastName] = useState<string | null>('');\n const [clientFirstName, setClientFirstName] = useState<string | null>('');\n const [customerPhone, setCustomerPhone] = useState<string | null>('');\n const [customerEmail, setCustomerEmail] = useState<string | null>('');\n const [clientId, setClientId] = useState<string>('');\n const [fromDate, setFrom] = useState<undefined | Date>(undefined);\n const [showGroupErrorMesage, setShowErroGroup] = useState(false);\n const [toDate, setTo] = useState<undefined | Date>(undefined);\n const [showErrorModal, setShowErrorModal] = useState(false);\n const [caseId, setCaseId] = useState<string | null>(null);\n const [refExt, setRefExt] = useState<string | null>(null);\n const [createdBy, setCreatedBy] = useState<string | null>(\n isLimited ? userId || '' : null || '',\n );\n const [customerGroup, setCustomerGroup] = useState<\n '' | SelectOption<string> | Array<SelectOption<string>>\n >(renderDefaultGroup());\n\n const [customerSituation, setCustomerSituation] = useState<\n '' | SelectOption<string>\n >('');\n\n const renderValueGroup = () => {\n if (isDisabledActionBtn) {\n return (customerGroup as SelectOption<string>).value;\n }\n\n if (customerGroup !== '' && isObject(customerGroup)) {\n return (customerGroup as Array<SelectOption<string>>).map(\n (obj: SelectOption<string>) => obj.value,\n );\n }\n\n return '';\n };\n\n const groupeValue = renderValueGroup();\n\n const groupeCondition = groupeValue !== '' && groupeValue.length !== 0;\n\n const searchCondition =\n caseId !== '' ||\n clientFirstName !== '' ||\n clientLastName !== '' ||\n refExt !== '' ||\n createdBy !== '' ||\n fromDate !== undefined ||\n toDate !== undefined ||\n customerEmail !== '' ||\n customerSituation !== '' ||\n customerPhone !== '';\n\n const mainCondition = isMixed\n ? groupeCondition\n : searchCondition || groupeCondition;\n\n const elementMap = {\n caseId: {\n text: Wording.num_case,\n value: caseId || '',\n onInputChange: (e: InputEvent) => setCaseId(e.currentTarget.value),\n deleteButton: true,\n deleteButtonOnClick: () => setCaseId(''),\n },\n\n to: {\n text: '',\n selectedDay: toDate,\n handleDayChange: (date: Date) => setTo(date),\n deleteButton: true,\n deleteButtonOnClick: () => setTo(undefined),\n },\n\n from: {\n text: '',\n selectedDay: fromDate,\n handleDayChange: (date: Date) => setFrom(date),\n deleteButton: true,\n deleteButtonOnClick: () => setFrom(undefined),\n },\n\n customerGroup: {\n id: 'group',\n options: _.map(groupList, (group: string, id: number) => ({\n id,\n label: group,\n value: group,\n })),\n\n withSelectAll: true,\n\n handleChangeSelect: (group: any) => {\n setCustomerGroup(group);\n if (isMixed) setShowErroGroup(false);\n },\n error:\n isMixed && !groupeCondition && showGroupErrorMesage\n ? 'Veuillez sélectionner un Groupe'\n : undefined,\n value: customerGroup,\n text: Wording.group,\n placeholder: ' ',\n isMulti: true,\n schemaProps,\n },\n\n clientFirstName: {\n text: Wording.clientFirstName,\n value: clientFirstName,\n onInputChange: (e: InputEvent) =>\n setClientFirstName(e.currentTarget.value),\n deleteButton: true,\n deleteButtonOnClick: () => setClientFirstName(''),\n },\n\n clientLastName: {\n text: Wording.clientLastName,\n value: clientLastName,\n onInputChange: (e: InputEvent) =>\n setclientLastName(e.currentTarget.value),\n deleteButton: true,\n deleteButtonOnClick: () => setclientLastName(''),\n },\n\n customerSituation: {\n id: 'situation',\n defaultValue: '',\n placeholder: 'Sélectionner',\n options: situationStatus,\n handleChangeSelect: (situation: SelectOption<string>) => {\n setCustomerSituation(situation);\n },\n value: customerSituation,\n text: Wording.situation,\n },\n\n refExt: {\n text: Wording.client_ref,\n value: refExt || '',\n onInputChange: (e: InputEvent) => setRefExt(e.currentTarget.value),\n deleteButton: true,\n deleteButtonOnClick: () => setRefExt(''),\n },\n\n customerPhone: {\n text: Wording.clientPhoneNbr,\n value: customerPhone,\n onInputChange: (e: InputEvent) =>\n setCustomerPhone(e.currentTarget.value),\n deleteButton: true,\n deleteButtonOnClick: () => setCustomerPhone(''),\n },\n\n customerEmail: {\n text: Wording.email,\n value: customerEmail,\n onInputChange: (e: InputEvent) =>\n setCustomerEmail(e.currentTarget.value),\n deleteButton: true,\n deleteButtonOnClick: () => setCustomerEmail(''),\n },\n createdBy: {\n text: Wording.createdBy,\n value: createdBy,\n onInputChange: (e: InputEvent) =>\n setCreatedBy(e.currentTarget.value),\n isLocked: isLimited,\n deleteButton: !isLimited,\n deleteButtonOnClick: () => setCreatedBy(''),\n },\n\n btn_validate: {\n title: Wording.btn_validate,\n color: mainCondition ? 'orange' : 'gray',\n small: true,\n onClick: () => {\n if (mainCondition) {\n dispatch(\n dispatchProps.searchClientRequest({\n fromDate: getDateFormatted(fromDate),\n toDate: getDateFormatted(toDate),\n email: customerEmail,\n orderNumber: caseId,\n firstName: clientFirstName,\n lastName: clientLastName,\n externalReference: refExt,\n processType: getSelectOptionValue(\n customerSituation as SelectOption<string>,\n ),\n channel: groupeValue,\n phone: customerPhone,\n createdBy,\n }),\n );\n\n setShowErroGroup(false);\n return;\n }\n\n if (isMixed && !groupeCondition) {\n setShowErroGroup(true);\n }\n },\n },\n\n btn_reset: {\n title: Wording.button_reset,\n small: true,\n color: 'gray',\n onClick: () => {\n setCaseId('');\n setclientLastName('');\n setClientFirstName('');\n setRefExt('');\n setFrom(undefined);\n setTo(undefined);\n setCustomerPhone('');\n setCustomerEmail('');\n setCustomerSituation('');\n setCreatedBy('');\n setShowErroGroup(false);\n\n if (!isDisabledActionBtn) {\n setCustomerGroup('');\n }\n },\n },\n };\n\n const renderEndorsementGeneration = () => {\n const { upload_csv } = WordingConstant.CustomerContracSearch;\n\n return (\n <div className=\"upload-endorsements\">\n <p className=\"upload-endorsements__title\">\n {upload_csv.title}{' '}\n </p>\n\n <CustomUpload\n title={upload_csv.btn}\n onChange={(files: any) => {\n handleShowModal(files);\n }}\n accept=\".csv\"\n />\n </div>\n );\n };\n\n const clientAccessButton = {\n title: WordingConstant.CustomerContracSearch.inputs.buttonAccessClient,\n small: true,\n color: 'orange',\n onClick: () => {\n if (clientId !== '') {\n window.open(getHost(new Map([['client', clientId]])));\n }\n },\n };\n\n const clientAccessInput = {\n text: '',\n value: clientId,\n onInputChange: (e: InputEvent) => setClientId(e.currentTarget.value.trim()),\n };\n\n return (\n <div className=\"search-case-container\">\n <div className=\"top-row\">\n {isHaveActionsPermission(schemaProps) && (\n <div className=\"access-client\">\n <CustomInput {...clientAccessInput} />\n <CustomButton {...clientAccessButton} />\n </div>\n )}\n\n {renderEndorsementGeneration()}\n </div>\n\n <div className=\"search-case-container__container\">\n <div className=\"search-case-container__block\">\n <CustomInput {...elementMap.caseId} />\n <label>{Wording.from}</label>\n <CustomDate {...elementMap.from} />\n <Group {...elementMap.customerGroup} />\n </div>\n <div className=\"search-case-container__block\">\n <CustomInput {...elementMap.clientLastName} />\n <label>{Wording.to}</label>\n <CustomDate {...elementMap.to} />\n <CustomSelect {...elementMap.customerSituation} />\n </div>\n\n <div className=\"search-case-container__block\">\n <CustomInput {...elementMap.clientFirstName} />\n <CustomInput {...elementMap.refExt} />\n <CustomInput {...elementMap.createdBy} />\n </div>\n\n <div className=\"search-case-container__block\">\n <CustomInput {...elementMap.customerPhone} />\n <CustomInput {...elementMap.customerEmail} />\n <div className=\"search-rs-vl-btn\">\n <CustomButton {...elementMap.btn_reset} />\n\n <CustomButton {...elementMap.btn_validate} />\n </div>\n <CustomModal show={showErrorModal}>\n <span\n className=\"btn-close\"\n onClick={() => {\n setShowErrorModal(false);\n }}\n >\n {'X'}\n </span>\n <div className=\"modal-response\">\n <p className=\"code\">\n {WordingConstant.Errors.default}\n </p>\n\n <p className=\"message\">Veuillez reessayer</p>\n <div className=\"search-rs-vl-btn\">\n <CustomButton\n title={'Fermer'}\n onClick={() => {\n setShowErrorModal(false);\n }}\n color={'orange'}\n />\n </div>\n </div>\n </CustomModal>\n </div>\n </div>\n </div>\n );\n};\n\nexport default CustomerContracSearch;\n","import React, { CSSProperties } from 'react';\nimport { Subtract } from 'utility-types';\nimport { Modal } from '../components';\n\ntype PopupItem = {\n state: number;\n title: string;\n description: string;\n // customDescription?: string;\n};\n\nexport type ExternalProps = {\n updateResponse: {\n code: string;\n message: string;\n };\n modalMessage: {\n success: PopupItem;\n failure: PopupItem;\n request: PopupItem;\n };\n customDescription?: string;\n showLogo?: boolean;\n descriptionStyle?: CSSProperties;\n handleValidate(section: string): void;\n handleReset(): void;\n};\n\ntype Options = {\n debug?: boolean;\n};\n\nexport type InjectedProps = {\n handleShowModal(section: string): void;\n};\n\ntype State = {\n showModal: boolean;\n section: string;\n};\n\nconst withModal = ({ debug = false }: Options = {}) => <\n OwnProps extends InjectedProps\n>(\n WrappedComponent: React.ComponentType<OwnProps>,\n) => {\n type P = OwnProps & ExternalProps;\n type HocProps = Subtract<P, InjectedProps>;\n\n return class extends React.Component<HocProps, State> {\n state = {\n showModal: false,\n section: '',\n };\n\n handleConfirmValidate = () => {\n const { section } = this.state;\n const { handleValidate } = this.props;\n handleValidate(section);\n this.setState({ section: '' });\n };\n\n handleState = (): PopupItem => {\n const { updateResponse, modalMessage } = this.props;\n if (updateResponse === undefined) return modalMessage.failure;\n const code = Number(updateResponse.code);\n switch (code) {\n case 0:\n return modalMessage.request;\n case 200:\n return modalMessage.success;\n default:\n return modalMessage.failure;\n }\n };\n\n handleShowModal = (section: string) => {\n const { showModal } = this.state;\n this.setState({ showModal: !showModal, section });\n };\n\n handleHideModal = () => {\n this.setState({ showModal: false });\n const { handleReset } = this.props;\n handleReset();\n };\n\n render() {\n const { showModal } = this.state;\n const { title, description, state } = this.handleState();\n const {\n customDescription,\n descriptionStyle,\n showLogo,\n } = this.props;\n return (\n <React.Fragment>\n <Modal\n show={showModal}\n title={title}\n description={description}\n customDescription={customDescription}\n state={state}\n handleCancel={this.handleHideModal}\n handleValidate={this.handleConfirmValidate}\n descriptionStyle={descriptionStyle}\n showLogo={showLogo}\n />\n <WrappedComponent\n {...(this.props as OwnProps)}\n handleShowModal={this.handleShowModal}\n />\n </React.Fragment>\n );\n }\n };\n};\n\nexport default withModal;\n","import React from 'react';\nimport CustomerContracSearch, {\n Props as SearchProps,\n} from './CustomerContracSearch';\nimport {\n fetchCustomerContractAsync,\n uploadAmendmentsAsync,\n resetUploadAmendments,\n} from '../../../_actions/customerContract.actions';\nimport WordingConstant from '../../../utils/wording.json';\nimport { TSchemaProps, RootState } from 'Types';\nimport { compose } from 'recompose';\n\nimport withModal, {\n ExternalProps as ExternalPropsModal,\n InjectedProps as InjectedPropsModal,\n} from '../../../libraries/withModal';\nimport { Subtract } from 'utility-types';\nimport {\n isUserLimitedBySchema,\n parseUploadAmendments,\n} from '../../../utils/helpers';\nimport { EMenuLabels, ESubMenuCaseLabel } from '../../../utils/enums';\nimport { connect } from 'react-redux';\n\nconst Wording = WordingConstant.CustomerContracSearch;\n\nconst dispatchProps = {\n customerContractDispatch: fetchCustomerContractAsync.request,\n uploadAmendmentsDispatch: uploadAmendmentsAsync.request,\n resetUploadDispatch: resetUploadAmendments,\n};\n\nconst mapStateToProps = (state: RootState) => ({\n updateResponse: state.customersContractReducer.updateResponse,\n schema: state.authReducer.autorizationsScheme,\n userId: state.authReducer.userId,\n});\n\nconst WrappedSearchContainer = compose<\n SearchProps,\n Subtract<SearchProps, InjectedPropsModal> & ExternalPropsModal\n>(withModal())(CustomerContracSearch);\n\ntype Props = {\n schemaProps: TSchemaProps;\n groupList: string[];\n} & typeof dispatchProps &\n ReturnType<typeof mapStateToProps>;\n\nconst SearchContainer: React.FC<Props> = ({\n schemaProps,\n userId,\n groupList,\n schema,\n updateResponse,\n uploadAmendmentsDispatch,\n resetUploadDispatch,\n}) => {\n const handleUpdate = (files: any) => {\n if (files.length > 0) {\n parseUploadAmendments(files[0]).then(parsedAmendments => {\n uploadAmendmentsDispatch({\n riders: parsedAmendments,\n });\n });\n }\n };\n\n const userLimited = isUserLimitedBySchema(\n EMenuLabels.CASE,\n ESubMenuCaseLabel.SEARCH_CASE,\n schema,\n );\n\n const getDescriptionStyleByCode = () => {\n switch (updateResponse.code) {\n case '0':\n case '500':\n return { color: '#be2829', fontWeight: 800 };\n\n case '200':\n return { color: '#008000', fontWeight: 800 };\n\n default:\n return { color: '#be2829', fontWeight: 800 };\n }\n };\n\n return (\n <div className=\"search-container\">\n <WrappedSearchContainer\n groupList={groupList}\n userId={userId}\n userLimited={userLimited}\n schemaProps={schemaProps}\n // Modal\n modalMessage={Wording.popup}\n showLogo={updateResponse.code === '200'}\n customDescription={undefined}\n updateResponse={updateResponse}\n handleValidate={handleUpdate}\n handleReset={() => resetUploadDispatch()}\n descriptionStyle={getDescriptionStyleByCode()}\n />\n </div>\n );\n};\n\nexport default connect(mapStateToProps, dispatchProps)(SearchContainer);\n","import SearchContainer from './SearchContainer';\n\nexport default SearchContainer;\n","import ErrorElement from './ErrorElement';\n\nexport default ErrorElement;\n","import React from 'react';\nimport { ReducerError } from 'Types';\n\nexport type Prop = {\n error?: string;\n reducerError?: ReducerError;\n};\n\nconst ErrorElement: React.FC<Prop> = ({ error }) => {\n const renderError = ({ }: string) => (\n <div className=\"error-element\">\n <p>{error}</p>\n </div>\n );\n if (error) return renderError(error as string);\n return null;\n};\n\nexport default ErrorElement;\n","import React, { Component } from 'react';\nimport cs from 'classnames';\n\nconst defaultButton = (props: any) => (\n <button type=\"button\" {...props} className=\"-btn\">\n {props.children}\n </button>\n);\n\ntype State = {\n page: any;\n};\n\nconst defaultRowsNumber = [5, 10, 20, 50];\n\nclass TablePagination extends Component<any, State> {\n constructor(props: any) {\n super(props);\n\n this.state = {\n page: props.page,\n };\n }\n\n componentWillReceiveProps(nextProps: { page: any }) {\n this.setState({ page: nextProps.page });\n }\n\n getSafePage = (page: number) => {\n if (isNaN(page)) {\n // tslint:disable-next-line:no-parameter-reassignment\n page = this.props.page;\n }\n if (this.props.canNextFromData) return page;\n\n return Math.min(Math.max(page, 0), this.props.pages - 1);\n };\n\n changePage = (page: any) => {\n // tslint:disable-next-line:no-parameter-reassignment\n page = this.getSafePage(page);\n this.setState({ page });\n if (this.props.page !== page) {\n this.props.onPageChange(page);\n }\n };\n\n applyPage = (e?: any) => {\n if (e) {\n e.preventDefault();\n }\n const page = this.state.page;\n this.changePage(page === '' ? this.props.page : page);\n };\n\n render() {\n const {\n t,\n // Computed\n pages,\n // Props\n page,\n showPageSizeOptions,\n pageSize,\n data,\n showPageJump,\n canPrevious,\n onPageSizeChange,\n className,\n PreviousComponent = defaultButton,\n NextComponent = defaultButton,\n showTotalPages = true,\n } = this.props;\n const dataLength = data.length;\n\n const canNext = this.props.canNextFromData\n ? data && dataLength === pageSize\n : this.props.canNext;\n\n const dataLengthCheck = dataLength < 10;\n\n return (\n <div\n className={cs(\n 'table-pagination -pagination',\n { 'table-pagination-visibility': dataLengthCheck },\n className,\n )}\n style={this.props.style}\n >\n <div className=\"table-pagination-previous -previous\">\n <PreviousComponent\n onClick={() => {\n if (!canPrevious) return;\n this.changePage(page - 1);\n }}\n disabled={!canPrevious}\n >\n {'<'}\n </PreviousComponent>\n </div>\n\n <div className=\"center\">\n <span className=\"-pageInfo\">\n {this.props.pageText}{' '}\n {showPageJump ? (\n <div className=\"-pageJump\">\n <input\n type={\n this.state.page === ''\n ? 'text'\n : 'number'\n }\n onChange={e => {\n const val = e.target.value;\n const page = Number(val) - 1;\n if (val === '') {\n return this.setState({ page: val });\n }\n this.setState({\n page: this.getSafePage(page),\n });\n }}\n value={\n this.state.page === ''\n ? ''\n : this.state.page + 1\n }\n onBlur={this.applyPage}\n onKeyPress={e => {\n if (\n e.which === 13 ||\n e.keyCode === 13\n ) {\n this.applyPage();\n }\n }}\n />\n </div>\n ) : (\n <span className=\"-currentPage\">{page + 1}</span>\n )}{' '}\n {showTotalPages ? (\n <React.Fragment>\n {'sur'}{' '}\n <span className=\"-totalPages\">\n {pages || 1}\n </span>\n </React.Fragment>\n ) : null}\n </span>\n\n <div className=\"table-pagination-next -next\">\n <NextComponent\n onClick={() => {\n if (!canNext) return;\n this.changePage(page + 1);\n }}\n disabled={!canNext}\n >\n {'>'}\n </NextComponent>\n </div>\n {showPageSizeOptions && (\n <span className=\"select-wrap -pageSizeOptions\">\n <select\n onChange={e =>\n onPageSizeChange(Number(e.target.value))\n }\n value={pageSize}\n >\n {defaultRowsNumber.map((option, idx) => (\n <option key={idx} value={option}>\n {option}\n </option>\n ))}\n </select>\n </span>\n )}\n\n <span className=\"data-length\">\n <p>\n Résultat{dataLength > 1 ? 's' : ''} :{' '}\n <span>{dataLength}</span>\n </p>\n </span>\n </div>\n </div>\n );\n }\n}\n\nexport default TablePagination;\n","import TablePagination from './TablePagination';\n\nexport default TablePagination;\n","import React from 'react';\n\nimport { CSVLink } from 'react-csv';\nimport ReactTable from 'react-table';\nimport 'react-table/react-table.css';\n\nimport CustomButton from '../../CustomButton';\nimport TablePagination from '../../TablePagination';\nimport resources from '../../../utils/resources';\n\nexport const LoadingComponent: React.FC<{ loading: boolean }> = ({\n loading,\n}) => {\n if (loading) {\n return (\n <div className=\"custom-loading -loading -active\">\n <div className=\"custom-loading-inner -loading-inner\">\n Chargement en cours...\n </div>\n </div>\n );\n }\n return null;\n};\n\nexport type Props = {\n columns: object[];\n data: any;\n title?: string;\n loading?: boolean;\n noDataText?: string;\n sortable?: boolean;\n buttonTitle?: string;\n error?: string;\n SubComponent?: any;\n showPagination?: boolean;\n downloadData?: any;\n downloadHeaders?: any;\n getTrProps?: any;\n downloadFilename?: string;\n downloadButtonTitle?: string;\n className?: string;\n filterable?: boolean;\n collapseOnDataChange?: boolean;\n pageSize?: number;\n customElmTopAndBottom?: any;\n showPaginationTop?: boolean;\n ref?: any;\n TheadComponent?: any;\n customPageSIze?: any;\n\n handleButtonClick?(): void;\n};\n\nconst CustomTable: React.FC<Props> = ({\n columns,\n data,\n title,\n loading,\n noDataText,\n sortable,\n buttonTitle,\n handleButtonClick,\n error,\n SubComponent,\n showPagination,\n className,\n downloadHeaders,\n downloadData,\n getTrProps,\n downloadFilename,\n filterable,\n downloadButtonTitle,\n customElmTopAndBottom,\n collapseOnDataChange,\n customPageSIze,\n ref,\n TheadComponent,\n}) => {\n const renderCustomElement = (position: string) =>\n customElmTopAndBottom && (\n <div\n className={`custom-table__custom custom-table__custom-${position} `}\n >\n {customElmTopAndBottom}\n </div>\n );\n\n return (\n <div className=\"custom-table\">\n {title && <h3>{title}</h3>}\n {renderCustomElement('top')}\n <ReactTable\n className={`custom-table__table custom-table__table-border-none ${\n className ? className : ''\n }`}\n columns={columns}\n data={data}\n style={{ border: 'none' }}\n ref={ref}\n defaultPageSize={data.length < 10 ? data.length + 1 : 10}\n showPaginationBottom={showPagination}\n filterable={filterable}\n loading={loading}\n showPaginationTop={showPagination}\n LoadingComponent={LoadingComponent}\n TheadComponent={TheadComponent}\n PaginationComponent={TablePagination}\n noDataText={noDataText}\n collapseOnDataChange={\n collapseOnDataChange ? collapseOnDataChange : false\n }\n resizable={false}\n sortable={sortable}\n SubComponent={SubComponent}\n showPagination={showPagination}\n getTrProps={getTrProps}\n />\n {renderCustomElement('bottom')}\n\n {!error && buttonTitle && (\n <CustomButton\n title={buttonTitle}\n color=\"orange\"\n onClick={handleButtonClick}\n />\n )}\n {downloadButtonTitle && downloadData && (\n <CSVLink\n className=\"custom-table__downloadLink\"\n data={downloadData}\n headers={downloadHeaders}\n filename={downloadFilename}\n >\n {downloadButtonTitle}\n </CSVLink>\n )}\n </div>\n );\n};\n\nexport const withTriangle = (value: string | HTMLElement) => (\n <span className=\"with-triangle\">\n {value} <img src={resources['ic-triangle']} alt=\"ic-triangle\" />\n </span>\n);\n\nexport default CustomTable;\n","import CustomTable from './CustomTable';\n\nexport default CustomTable;\n","import { useEffect } from 'react';\n\nconst useOutsideClick = (\n ref: React.RefObject<HTMLElement>,\n callback: () => void,\n) => {\n const handleClick = (e: any) => {\n if (ref.current && !ref.current.contains(e.target)) {\n callback();\n }\n };\n\n useEffect(() => {\n document.addEventListener('click', handleClick);\n\n return () => {\n document.removeEventListener('click', handleClick);\n };\n });\n};\n\nexport default useOutsideClick;\n","import React from 'react';\nimport { getLabelByType } from '../../../utils/helpers';\n\nexport type StatusType =\n | 'contractStatus'\n | 'orderStatus'\n | 'firstPaymentCBStatus'\n | 'firstPaymentSlimCollectStatus'\n | 'paymentSDD';\n\nconst Status: React.FC<{ status: string; type: StatusType }> = ({\n status,\n type,\n}) => {\n return (\n <div className={`status status-${mappingStatus(status)}`}>\n <div className=\"circle\" />\n <span className=\"label\">{getLabelByType(status, type)}</span>\n </div>\n );\n};\n\nexport const mappingStatus = (status: string) => {\n switch (status) {\n case 'success':\n case 'overPayment':\n case 'effective':\n case 'processed':\n case 'validated':\n case 'lettered':\n case 'COMPLETED':\n case 'terminated':\n case 'allocated':\n case 'OK':\n case 'FINALIZED':\n case 'FINALIZED_WITHOUT_DOC':\n return 'success';\n\n case 'detectedAnomaly':\n case 'transferFailure':\n case 'recovery1':\n case 'recovery2':\n case 'latePayment':\n case 'incident':\n case 'transactionFailure':\n case 'errorDetected':\n case 'toBeLetter':\n case 'SUSPENDED':\n case 'IN_FAILURE':\n case 'inFaillure':\n case 'inFailure':\n case 'KO':\n case 'NOK':\n case 'PENDING':\n return 'danger';\n\n case 'transmitted':\n case 'notSettled':\n case 'externalRecovery':\n case 'toProcess':\n case 'initialized':\n case 'pending':\n case 'toAllocate':\n case 'waiting':\n case 'toBeQualified':\n case 'toValidate':\n case 'inProposal':\n case 'PENDING':\n case 'IN_PROGRESS':\n case 'suspended':\n case 'inProgress':\n case 'disputed':\n return 'warning';\n\n case 'dropped':\n case 'cancelled':\n case 'canceled':\n case 'CANCELLED':\n case 'CANCELED':\n case 'discarded':\n return 'secondary';\n\n case 'PAYMENT_SDD':\n return 'purple'\n\n default:\n return 'undefined';\n }\n};\n\nexport default Status;\n","import Status from './Status';\n\nexport default Status;\n","import React, { Fragment, useRef, useState } from 'react';\n\nimport { TCustomer } from '../../../constants/key-system';\n\nimport {\n getFormattedDate,\n getLabelByType,\n isHaveActionsPermission,\n isOdd,\n} from '../../../utils/helpers';\nimport WordingConstant from '../../../utils/wording.json';\nimport resources from '../../../utils/resources';\nimport { CustomButton, CustomInput, CustomModal } from '../../../components';\nimport { InputEvent, TSchemaProps } from 'Types';\n\nimport { TCustomerContractPayload } from '../../../_actions/customerContract.actions';\nimport ErrorElement from '../../../components/ErrorElement';\nimport CustomTable from '../../../components/admin/CustomTable';\nimport useOutsideClick from '../../../libraries/useOutsideClick';\nimport { ITransferContract } from '../../../_actions/transferContract.actions';\nimport Status from '../../../components/admin/Status';\nimport { TContract, TOrder } from 'Models';\n\nconst Wording = WordingConstant.SubComponent;\n\ntype Props = {\n customer: TCustomer;\n transferCustomerContract: (props: TCustomerContractPayload) => void;\n resetResponse: () => void;\n transferContract: TOrder[];\n error: string;\n transferContractDispatch: (props: ITransferContract) => void;\n userId: string;\n transferContractResponse: any;\n resetResponseTransfer: () => void;\n schemaProps: TSchemaProps;\n index: number;\n transferError?: string;\n};\n\nconst SubComponent: React.FC<Props> = ({\n customer,\n transferCustomerContract,\n transferContract,\n error,\n resetResponse,\n userId,\n schemaProps,\n transferContractDispatch,\n transferContractResponse,\n transferError,\n resetResponseTransfer,\n index,\n}) => {\n const [isOpen, setOpen] = useState<boolean>(false);\n const [currentItem, setCurrentItem] = useState<number>(-1);\n const [showModal, setModal] = useState<boolean>(false);\n const [clientId, setClientId] = useState<string>('');\n\n const [currentContract, setCurrentContract] = useState<\n TContract | undefined\n >(undefined);\n\n const divRef = useRef<HTMLDivElement>(null);\n\n useOutsideClick(divRef, () => {\n if (isOpen) setOpen(false);\n });\n\n const allContracts = customer.contracts;\n\n const renderTransferContractModal = () => {\n const elementMap = {\n input_client_id: {\n text: '',\n value: clientId,\n onInputChange: (e: InputEvent) =>\n setClientId(e.currentTarget.value),\n },\n\n btn_client_access: {\n title: 'Valider',\n small: true,\n color: 'gray',\n onClick: () => {\n if (clientId !== '') {\n setModal(false);\n transferCustomerContract({\n customerId: clientId,\n });\n }\n },\n },\n\n btn_cancel: {\n title: 'Retour',\n small: true,\n color: 'orange',\n onClick: () => {\n setModal(false);\n },\n },\n };\n return (\n <CustomModal show={showModal}>\n <span\n className=\"btn-close\"\n onClick={() => {\n setModal(false);\n }}\n >\n {'X'}\n </span>\n <div className=\"transfer-contract-modal\">\n <p className=\"title\">{Wording.modalTitle}</p>\n <p className=\"sub-title\">{Wording.subTitle}</p>\n <CustomInput {...elementMap.input_client_id} />\n\n <div className=\"transfer-contract-modal__buttons\">\n <CustomButton {...elementMap.btn_cancel} />\n <CustomButton {...elementMap.btn_client_access} />\n </div>\n </div>\n </CustomModal>\n );\n };\n\n const renderTransferContractErrorModal = () => {\n return (\n <CustomModal show={error === Wording.noResult}>\n <span\n className=\"btn-close\"\n onClick={() => {\n resetResponse();\n setClientId('');\n }}\n >\n {'X'}\n </span>\n\n <span className=\"error-component\">\n <p className=\"title\">\n {'Aucun résultat trouvé pour cette recherche'}\n </p>\n <ErrorElement error={error} />\n\n <div className=\"btn\">\n <CustomButton\n title={'Retour'}\n color=\"orange\"\n onClick={() => {\n setClientId('');\n resetResponse();\n setModal(true);\n }}\n />\n\n <CustomButton\n title={'Réessayer'}\n color=\"gray\"\n onClick={() => {\n setClientId('');\n resetResponse();\n setModal(true);\n }}\n />\n </div>\n </span>\n </CustomModal>\n );\n };\n\n const renderTranssferContractSuccessModal = () => {\n return (\n <CustomModal show={transferContract.length > 0}>\n <span\n className=\"btn-close\"\n onClick={() => {\n resetResponse();\n setClientId('');\n }}\n >\n {'X'}\n </span>\n\n <span className=\"success-component\">\n <p className=\"title\">\n {'Client cible correspondant à votre recherche'}\n </p>\n <CustomTable\n data={transferContract}\n showPagination={false}\n filterable={false}\n className=\"-striped -highlight\"\n columns={prepareColumns()}\n SubComponent={({ original }: any) => (\n <div>{transfertContractSubComponent(original)}</div>\n )}\n />\n </span>\n <div className=\"group-btn\">\n <CustomButton\n title={'Retour'}\n color=\"orange\"\n onClick={() => {\n resetResponse();\n setModal(true);\n }}\n />\n\n <CustomButton\n title={'Continuer'}\n color=\"gray\"\n onClick={() => {\n if (currentContract) {\n transferContractDispatch({\n customerNbrOutdated: customer.id,\n customerNbrTargeted: clientId,\n contractNbr: currentContract.contractNumber,\n userName: userId,\n });\n }\n }}\n />\n </div>\n </CustomModal>\n );\n };\n\n const prepareColumns = () => {\n return [\n {\n Header: Wording.transferContract.customerId,\n accessor: 'order.orderReference',\n filterable: false,\n },\n {\n Header: Wording.transferContract.companyName,\n accessor: 'order.customer.contact.companyName',\n filterable: false,\n },\n {\n Header: Wording.transferContract.clientFirstName,\n accessor: 'order.customer.contact',\n filterable: false,\n Cell: ({ original }: { original: { order: TOrder } }) => (\n <div>\n {`${original.order.customer.contact.firstName}\n ${original.order.customer.contact.lastName}`}\n </div>\n ),\n },\n {\n Header: Wording.transferContract.address,\n accessor: 'order.customer.contact.address.street',\n filterable: false,\n },\n {\n Header: Wording.transferContract.invoiceId,\n accessor: 'order.customer.contact.phone',\n filterable: false,\n },\n {\n Header: Wording.transferContract.email,\n accessor: 'order.customer.contact.email',\n filterable: false,\n },\n ];\n };\n\n const transfertContractSubComponent = (original: any) => {\n return (\n <div className=\"sub-component\">\n <table className=\"sub-component__table\">\n <thead>\n <tr>\n {[\n Wording.customerId,\n Wording.energie,\n Wording.to,\n Wording.status,\n ].map((el: string, index: number) => (\n <th key={index}>{el}</th>\n ))}\n <th />\n </tr>\n </thead>\n <tbody>\n {allContracts ? (\n allContracts.map((contract, index) => {\n return (\n <Fragment key={index}>\n <tr className=\"transaction-status\">\n <td>{contract.contractNumber}</td>\n <td>{contract.energy}</td>\n <td>\n {getFormattedDate(\n contract.subscriptionDate,\n )}\n </td>\n <td>{contract.status}</td>\n </tr>\n </Fragment>\n );\n })\n ) : (\n <tr>\n <td>{Wording.no_contract}</td>\n </tr>\n )}\n </tbody>\n </table>\n </div>\n );\n };\n\n const renderSuccessFailureModal = () => {\n return (\n <CustomModal\n show={\n transferContractResponse !== '' &&\n transferContractResponse !== undefined\n }\n >\n <>\n <div>\n {transferContractResponse === 'SUCCESS' && (\n <div className=\"transfer-modal\">\n <h3>{Wording.success}</h3>\n <p>{Wording.success_text}</p>\n </div>\n )}\n\n {transferContractResponse === 'ERROR' && (\n <div className=\"transfer-modal\">\n <h3>{Wording.error}</h3>\n <p>{transferError || Wording.error_text}</p>\n </div>\n )}\n </div>\n <div className=\"group-btn\">\n <CustomButton\n title={'Retour'}\n color=\"orange\"\n onClick={() => {\n setModal(false);\n resetResponseTransfer();\n setOpen(false);\n setCurrentContract(undefined);\n }}\n />\n </div>\n </>\n </CustomModal>\n );\n };\n\n return (\n <div className={`sub-component ${isOdd(index) ? '-odd' : ''}`}>\n <table className=\"sub-component__table\">\n <thead>\n <tr>\n {[\n Wording.customerId,\n Wording.energie,\n Wording.to,\n Wording.status,\n ].map((el: string, index: number) => (\n <th key={index}>{el}</th>\n ))}\n\n <th />\n </tr>\n </thead>\n <tbody>\n {allContracts ? (\n allContracts.map((contract, index) => {\n return (\n <Fragment key={index}>\n <tr className=\"transaction-status\">\n <td>{contract.contractNumber}</td>\n <td>\n {getLabelByType(\n contract.energy,\n 'energyTypes',\n )}\n </td>\n <td>\n {getFormattedDate(\n contract.subscriptionDate,\n )}\n </td>\n <td>\n <Status\n status={contract.status || ''}\n type=\"contractStatus\"\n />\n </td>\n <td>\n {isHaveActionsPermission(\n schemaProps,\n ) && (\n <img\n className=\"subcomponent-menu-style\"\n src={\n resources[\n 'ic-menu-orange-creu'\n ]\n }\n alt=\"ic-menu\"\n onClick={() => {\n setOpen(!isOpen);\n setCurrentItem(index);\n }}\n />\n )}\n {isOpen && currentItem === index && (\n <div\n ref={divRef}\n className=\"pop-up\"\n >\n <p\n onClick={() => {\n setCurrentContract(\n contract,\n );\n setModal(true);\n setOpen(false);\n }}\n >\n {\n 'Transférer le contrat'\n }\n </p>\n </div>\n )}\n </td>\n </tr>\n </Fragment>\n );\n })\n ) : (\n <tr>\n <td>{Wording.no_contract}</td>\n </tr>\n )}\n </tbody>\n </table>\n {showModal && renderTransferContractModal()}\n {renderTransferContractErrorModal()}\n {renderTranssferContractSuccessModal()}\n\n {renderSuccessFailureModal()}\n </div>\n );\n};\n\nexport default SubComponent;\n","import React, { useState } from 'react';\nimport { CustomModal, CustomButton } from '../../../components';\nimport WordingConstant from '../../../utils/wording.json';\n\nconst Wording = WordingConstant.CustomerContractContainer;\ninterface IPayload {\n user?: string;\n password?: string;\n email?: string;\n userId?: string;\n token?: string;\n accessToken?: string;\n error?: string;\n message?: string;\n}\n\ntype Props = {\n email: string;\n resetPasswordDispatch(props: IPayload): void;\n};\n\nconst ResetPasswordButton: React.FC<Props> = ({\n resetPasswordDispatch,\n email,\n}) => {\n const [isOpen, setOpen] = useState<boolean>(false);\n\n const renderModal = () => {\n return (\n <CustomModal show={isOpen}>\n <span\n className=\"btn-close\"\n onClick={() => {\n setOpen(false);\n }}\n >\n {'X'}\n </span>\n <div className=\"reset-modal\">\n <p className=\"warning-title\">\n {Wording.warningMessageTitle}\n </p>\n <p>{Wording.message}</p>\n <p className=\"reponse\">{Wording.confMessage}</p>\n\n <div className=\"reset-modal__buttons\">\n <CustomButton\n onClick={() => setOpen(false)}\n color=\"orange\"\n title=\"Retour\"\n />\n <CustomButton\n color=\"gray\"\n title=\"Continuer\"\n onClick={() => {\n resetPasswordDispatch({\n email,\n });\n }}\n />\n </div>\n </div>\n </CustomModal>\n );\n };\n\n return (\n <div className=\"reset-password\">\n <p\n onClick={() => {\n setOpen(true);\n }}\n >\n {Wording.labelTitle}\n </p>\n {renderModal()}\n </div>\n );\n};\n\nexport default ResetPasswordButton;\n","import React, { useState, ChangeEvent } from 'react';\nimport { CustomModal, CustomButton, CustomInput } from '../../../components';\nimport { isValidEmail, isValidString } from '../../../utils/helpers';\nimport WordingConstant from '../../../utils/wording.json';\n\nconst Wording = WordingConstant.CustomerContractContainer;\n\ninterface IPayloadReinitSubscription {\n id: string;\n email: string;\n message?: string;\n code?: string;\n}\n\ntype Props = {\n reinitSubscriptionEmailDispatch: (\n props: IPayloadReinitSubscription,\n ) => void;\n customerNbr: string;\n handleSubscriptionSendEmail: (e: string) => void;\n defaultEmail?: string;\n};\n\nconst ReinitSubscriptionEmailButton: React.FC<Props> = ({\n reinitSubscriptionEmailDispatch,\n customerNbr,\n handleSubscriptionSendEmail,\n defaultEmail = '',\n}) => {\n const [isOpen, setOpen] = useState<boolean>(false);\n const [currentEmail, setCurrentEmail] = useState<string>(defaultEmail);\n\n const getMailAddressError = (value: string): string => {\n let error = '';\n if (!isValidString(value)) error = Wording.emptyField;\n else if (!isValidEmail(value)) {\n error = Wording.addressValidity;\n }\n return error;\n };\n\n const sendCondition =\n currentEmail !== '' || getMailAddressError(currentEmail);\n\n const elementMap = {\n currentEmail: {\n value: currentEmail,\n onInputChange: (e: ChangeEvent<HTMLInputElement>) =>\n setCurrentEmail(e.currentTarget.value),\n error: getMailAddressError(currentEmail),\n },\n\n btn_validate: {\n title: 'Continuer',\n color: 'gray',\n small: true,\n onClick: () => {\n handleSubscriptionSendEmail(currentEmail);\n reinitSubscriptionEmailDispatch({\n id: customerNbr,\n email: currentEmail,\n });\n },\n },\n\n btn_cancel: {\n title: 'Retour',\n color: 'orange',\n small: true,\n onClick: () => {\n setOpen(false);\n },\n },\n };\n\n const renderModal = () => {\n return (\n <CustomModal show={isOpen}>\n <span\n className=\"btn-close\"\n onClick={() => {\n setOpen(false);\n }}\n >\n {'X'}\n </span>\n <div className=\"reinit-subscription-modal\">\n <p className=\"warning-title\">\n {Wording.warningMessageTitle}\n </p>\n <p>{Wording.reinit_message}</p>\n <p className=\"reponse\">{Wording.enter_email}</p>\n\n <CustomInput {...elementMap.currentEmail} />\n\n <p>{Wording.advice_message}</p>\n\n <div className=\"reinit-subscription-modal__buttons\">\n <CustomButton {...elementMap.btn_cancel} />\n {sendCondition && (\n <CustomButton {...elementMap.btn_validate} />\n )}\n </div>\n </div>\n </CustomModal>\n );\n };\n\n return (\n <div className=\"reinit-subscription\">\n <p\n onClick={() => {\n setOpen(true);\n }}\n >\n {Wording.sendEmail}\n </p>\n {renderModal()}\n </div>\n );\n};\n\nexport default ReinitSubscriptionEmailButton;\n","import React, { useState, useEffect } from 'react';\nimport { InputEvent, SelectOption, TSchemaProps } from 'Types';\nimport { TResponse } from 'Models';\n\nimport WordingConstant from '../../../utils/wording.json';\nimport {\n CustomInput,\n CustomButton,\n CustomSelect,\n CustomModal,\n CustomRadio,\n Group,\n} from '../../../components';\n\nimport {\n isValidName,\n isValidString,\n isValidEmail,\n isEmptySelectOption,\n getSelectOptionValue,\n formatFirstNameString,\n} from '../../../utils/helpers';\nimport { EResponseCode } from '../../../utils/enums';\nimport _ from 'lodash';\n\ninterface IPayloadUser {\n group: string;\n firstName: string;\n lastName: string;\n email: string;\n civility: string;\n userName?: string;\n}\n\nimport accents from 'remove-accents';\n\nconst Wording = WordingConstant.UserAdministrationResult;\n\nconst civilStatuses: Array<SelectOption<string>> = [\n {\n id: Wording.CreateUserModal.civilStatuses.mr,\n label: Wording.CreateUserModal.civilStatuses.mr,\n value: Wording.CreateUserModal.civilStatuses.mr,\n },\n {\n id: Wording.CreateUserModal.civilStatuses.mme,\n label: Wording.CreateUserModal.civilStatuses.mme,\n value: Wording.CreateUserModal.civilStatuses.mme,\n },\n {\n id: Wording.CreateUserModal.civilStatuses.ms,\n label: Wording.CreateUserModal.civilStatuses.ms,\n value: Wording.CreateUserModal.civilStatuses.ms,\n },\n];\n\ntype Props = {\n schemaProps: TSchemaProps;\n isOpen: boolean;\n createUserResponse: TResponse;\n setOpen: (value: boolean) => void;\n groupList: string[];\n createUser: (props: IPayloadUser) => void;\n resetCreateUserResponse: () => void;\n isCustomerAndContract: boolean;\n currentUser?: any;\n};\n\nfunction getFirstNameError(value: string): string {\n let error = '';\n if (!isValidString(value)) {\n error = Wording.CreateUserModal.errors.emptyField;\n } else if (!isValidName(value, true)) {\n error = Wording.CreateUserModal.errors.lastNameValidity;\n }\n return error;\n}\n\nfunction getLastNameError(value: string): string {\n let error = '';\n if (!isValidString(value)) {\n error = Wording.CreateUserModal.errors.emptyField;\n } else if (!isValidName(value, true)) {\n error = Wording.CreateUserModal.errors.lastNameValidity;\n }\n return error;\n}\n\nfunction getMailAddressError(value: string): string {\n let error = '';\n if (!isValidString(value)) {\n error = Wording.CreateUserModal.errors.emptyField;\n } else if (!isValidEmail(value)) {\n error = Wording.CreateUserModal.errors.mailAddressValidity;\n }\n return error;\n}\n\nfunction getCivilityError(value: string | SelectOption<any>): string {\n let error = '';\n if (!isEmptySelectOption(value)) {\n error = Wording.CreateUserModal.errors.emptyField;\n }\n return error;\n}\n\nfunction getGroupError(value: string | SelectOption<any>): string {\n let error = '';\n if (!isEmptySelectOption(value)) {\n error = Wording.CreateUserModal.errors.emptyField;\n }\n return error;\n}\n\nfunction getUserNameError(value: string): string {\n let error = '';\n if (!isValidString(value)) {\n error = Wording.CreateUserModal.errors.emptyField;\n } else if (!isValidName(value, true)) {\n error = Wording.CreateUserModal.errors.userNameValidity;\n }\n return error;\n}\n\nfunction getClientNumberError(value: string): string {\n let error = '';\n if (!isValidString(value)) {\n error = Wording.CreateUserModal.errors.clientNumberValidity;\n }\n return error;\n}\n\nconst CreateUserModal: React.FC<Props> = ({\n isOpen,\n setOpen,\n createUser,\n createUserResponse,\n resetCreateUserResponse,\n groupList,\n isCustomerAndContract,\n currentUser,\n schemaProps,\n}) => {\n const [clientLastName, setClientLastName] = useState<string>('');\n const [clientFirstName, setClientFirstName] = useState<string>('');\n const [clientEmail, setClientEmail] = useState<string>('');\n const [groupId, setGroupId] = useState<string | SelectOption<any>>('');\n const [civility, setCivility] = useState<string | SelectOption<any>>('');\n const [clientLastNameError, setClientLastNameError] = useState<string>('');\n const [clientFirstNameError, setClientFirstNameError] = useState<string>(\n '',\n );\n const [clientEmailError, setClientEmailError] = useState<string>('');\n const [civilityError, setCivilityError] = useState<\n string | SelectOption<string>\n >('');\n const [groupError, setGroupError] = useState<string | SelectOption<string>>(\n '',\n );\n const [username, setUsername] = useState<string>('');\n const [userNameError, setUserNameError] = useState<string>('');\n\n const [clientNumber, setClientNumber] = useState<string>('');\n const [clientNumberError, setClientNumberError] = useState<string>('');\n\n const [isCreatingUser, setCreatingUser] = useState<boolean>(\n !isCustomerAndContract ? true : false,\n );\n\n useEffect(() => {\n if (clientFirstName !== '' && clientLastName !== '') {\n setUsername(\n `${clientFirstName\n .charAt(0)\n .toLocaleLowerCase()}${clientLastName\n .toLocaleLowerCase()\n .replace(new RegExp('[_-]+'), '')}`,\n );\n }\n }, [clientFirstName, clientLastName]);\n\n const { code, message } = createUserResponse;\n\n const createUserCondition =\n getMailAddressError(clientEmail) === '' &&\n getFirstNameError(clientFirstName) === '' &&\n getLastNameError(clientLastName) === '' &&\n getCivilityError(civility) === '' &&\n getGroupError(groupId) === '' &&\n getUserNameError(username) === '';\n\n const createClientCondition =\n getMailAddressError(clientEmail) === '' &&\n getFirstNameError(clientFirstName) === '' &&\n getLastNameError(clientLastName) === '' &&\n getCivilityError(civility) === '' &&\n getClientNumberError(clientNumber) === '';\n\n const elementMap = {\n groupId: {\n id: 'groupe',\n options: _.map(groupList, (group: string, id: number) => ({\n id,\n label: group,\n value: group,\n })),\n handleChangeSelect: (situation: SelectOption<any>) => {\n setGroupId(situation);\n // setGroupError(getGroupError(situation));\n },\n value: groupId,\n text: Wording.group,\n error: groupError,\n schemaProps,\n },\n\n clientLastName: {\n text: 'Nom: ',\n value: clientLastName,\n onInputChange: (e: InputEvent) => {\n setClientLastName(formatFirstNameString(e.currentTarget.value));\n // setClientLastNameError(getLastNameError(clientLastName));\n },\n error: clientLastNameError,\n },\n\n clientEmail: {\n text: 'Email: ',\n value: isCustomerAndContract\n ? _.get(currentUser, 'original.contact.email', '')\n : clientEmail,\n onInputChange: (e: InputEvent) => {\n setClientEmail(accents.remove(e.currentTarget.value));\n // setClientEmailError(getMailAddressError(e.currentTarget.value));\n },\n error: isCustomerAndContract ? '' : clientEmailError,\n isLocked: isCustomerAndContract ? true : false,\n },\n\n clientFirstName: {\n text: 'Prénom: ',\n value: clientFirstName,\n onInputChange: (e: InputEvent) => {\n setClientFirstName(\n formatFirstNameString(e.currentTarget.value),\n );\n // setClientFirstNameError(\n // getFirstNameError(e.currentTarget.value),\n // );\n },\n error: clientFirstNameError,\n },\n\n civility: {\n id: 'Civilité: ',\n defaultValue: '',\n options: civilStatuses,\n handleChangeSelect: (situation: SelectOption<any>) => {\n setCivility(situation);\n // setCivilityError(getCivilityError(situation));\n },\n value: civility,\n text: Wording.civility,\n error: civilityError,\n },\n\n username: {\n id: 'username',\n text: \"Nom d'utilisateur :\",\n value: isCustomerAndContract\n ? _.get(currentUser, 'original.id', '')\n : username,\n onInputChange: (e: InputEvent) => {\n const inputValue = e.currentTarget.value;\n\n // Expression régulière : autorise lettres, chiffres, _ et -\n if (/^[a-zA-Z0-9]*$/.test(inputValue)) {\n setUsername(inputValue);\n setUserNameError('');\n } else {\n setUserNameError(\"les caractères spéciaux ne sont pas autorisés.\");\n }\n },\n error: isCustomerAndContract ? '' : userNameError,\n isLocked: isCustomerAndContract ? true : false,\n },\n\n clientNumber: {\n id: 'clientNumber: ',\n text: 'N° client :',\n value: isCustomerAndContract\n ? _.get(currentUser, 'original.id', '')\n : clientNumber,\n onInputChange: (e: InputEvent) => {\n if (new RegExp('^[0-9a-zA-Z]*$').test(e.currentTarget.value)) {\n setClientNumber(e.currentTarget.value);\n }\n // setClientNumberError(\n // getClientNumberError(e.currentTarget.value),\n // );\n },\n error: isCustomerAndContract ? '' : clientNumberError,\n isLocked: isCustomerAndContract ? true : false,\n },\n\n btn_validate: {\n title: Wording.btnValidate,\n color: 'gray',\n small: true,\n onClick: () => {\n setClientFirstNameError(getFirstNameError(clientFirstName));\n setClientEmailError(getMailAddressError(clientEmail));\n setClientLastNameError(getLastNameError(clientLastName));\n setCivilityError(getCivilityError(civility));\n setGroupError(getGroupError(groupId));\n setUserNameError(getUserNameError(username));\n setClientNumberError(getClientNumberError(clientNumber));\n if (\n createUserCondition &&\n !isCustomerAndContract &&\n isCreatingUser\n ) {\n createUser({\n group: getSelectOptionValue(\n groupId as SelectOption<string>,\n ),\n firstName: clientFirstName,\n lastName: clientLastName,\n email: clientEmail,\n civility: getSelectOptionValue(\n civility as SelectOption<string>,\n ),\n userName: username,\n });\n setOpen(false);\n } else if (\n createClientCondition &&\n !isCustomerAndContract &&\n !isCreatingUser\n ) {\n createUser({\n group: getSelectOptionValue(\n groupId as SelectOption<string>,\n ),\n firstName: clientFirstName,\n lastName: clientLastName,\n email: clientEmail,\n civility: getSelectOptionValue(\n civility as SelectOption<string>,\n ),\n userName: clientNumber,\n });\n setOpen(false);\n } else if (createClientCondition && isCustomerAndContract) {\n createUser({\n userName: _.get(currentUser, 'original.id', ''),\n group: '',\n firstName: clientFirstName,\n lastName: clientLastName,\n email: _.get(currentUser, 'original.contact.email', ''),\n civility: getSelectOptionValue(\n civility as SelectOption<string>,\n ),\n });\n setOpen(false);\n }\n },\n },\n\n btn_reset: {\n title: Wording.buttonReset,\n color: 'orange',\n small: true,\n onClick: () => {\n setClientLastName(''),\n setClientFirstName(''),\n setClientEmail(''),\n setGroupId(''),\n setCivility(''),\n setOpen(false),\n setClientLastNameError(''),\n setClientFirstNameError(''),\n setClientEmailError(''),\n setCivilityError('');\n },\n },\n\n btn_hide_modal: {\n title: Wording.hideModal,\n color: 'gray',\n small: true,\n onClick: () => {\n resetCreateUserResponse();\n setClientLastName(''),\n setClientFirstName(''),\n setClientEmail(''),\n setGroupId(''),\n setCivility(''),\n setOpen(false),\n setClientLastNameError(''),\n setClientFirstNameError(''),\n setClientEmailError(''),\n setCivilityError('');\n },\n },\n };\n\n const createUsermodalResponse = () => {\n const { code, message } = createUserResponse;\n return (\n <CustomModal\n show={code && message !== Wording.errorMessage ? true : false}\n >\n <span\n className=\"btn-close\"\n onClick={() => {\n resetCreateUserResponse();\n setClientLastName(''),\n setClientFirstName(''),\n setClientEmail(''),\n setGroupId(''),\n setCivility(''),\n setOpen(false),\n setClientLastNameError(''),\n setClientFirstNameError(''),\n setClientEmailError(''),\n setCivilityError('');\n }}\n >\n {'X'}\n </span>\n <div className=\"modal-response\">\n <p className=\"code\">\n {code === EResponseCode.SUCCESS\n ? Wording.CreateGroupModal.succesMessage\n : Wording.CreateGroupModal.failureMessage}\n </p>\n\n <p className=\"message\">{message}</p>\n\n <div className=\"search-rs-vl-btn\">\n <CustomButton {...elementMap.btn_hide_modal} />\n </div>\n </div>\n </CustomModal>\n );\n };\n\n return (\n <div>\n <CustomModal show={isOpen}>\n <span\n className=\"btn-close\"\n onClick={() => {\n setOpen(false);\n setClientLastName(''),\n setClientFirstName(''),\n setClientEmail(''),\n setGroupId(''),\n setCivility(''),\n setClientNumber(''),\n setOpen(false),\n setClientLastNameError(''),\n setClientFirstNameError(''),\n setClientEmailError(''),\n setCivilityError('');\n setClientNumberError('');\n }}\n >\n {'X'}\n </span>\n <div className=\"create-user-modal\">\n <p className=\"title\">{Wording.CreateUserModal.title}</p>\n\n {!isCustomerAndContract && (\n <div className=\"radio-buttons\">\n <CustomRadio\n text={'Créer un utilisateur'}\n value={'ind'}\n id={'ind'}\n checked={isCreatingUser}\n handleCheck={() => {\n setCreatingUser(!isCreatingUser);\n }}\n />\n\n <CustomRadio\n text={'Créer un client'}\n value={'ind'}\n id={'ind'}\n checked={!isCreatingUser}\n handleCheck={() => {\n setCreatingUser(!isCreatingUser);\n }}\n />\n </div>\n )}\n\n <div className=\"create-user-modal__container\">\n <div className=\"create-user-modal__block\">\n <CustomInput {...elementMap.clientFirstName} />\n <CustomInput {...elementMap.clientEmail} />\n\n {isCreatingUser ? (\n !isCustomerAndContract && (\n <Group {...elementMap.groupId} />\n )\n ) : (\n <CustomInput {...elementMap.clientNumber} />\n )}\n </div>\n\n <div className=\"create-user-modal__block\">\n <CustomInput {...elementMap.clientLastName} />\n <CustomSelect {...elementMap.civility} />\n\n {!isCustomerAndContract && isCreatingUser && (\n <CustomInput {...elementMap.username} />\n )}\n </div>\n </div>\n <p className=\"message\">{Wording.CreateUserModal.message}</p>\n <div className=\"search-rs-vl-btn\">\n <CustomButton {...elementMap.btn_reset} />\n <CustomButton {...elementMap.btn_validate} />\n </div>\n </div>\n </CustomModal>\n {code &&\n message !== Wording.errorMessage &&\n createUsermodalResponse()}\n </div>\n );\n};\n\nexport default CreateUserModal;\n","import React, { Fragment } from 'react';\nimport { TOrder } from 'Models';\nimport {\n getFormattedDate,\n getLabelByType,\n isOdd,\n} from '../../../utils/helpers';\nimport WordingConstant from '../../../utils/wording.json';\nimport _ from 'lodash';\n\nconst Wording = WordingConstant.Caseresult.SubComponent;\n\ntype Props = {\n order: TOrder;\n index: number;\n};\n\nenum EProcessType {\n MOVE_IN = 'MES',\n SWITCH = 'CHF',\n}\n\nconst SubComponent: React.FC<Props> = ({ order, index }) => {\n return (\n <div className={`sub-component ${isOdd(index) ? '-odd' : ''}`}>\n <table className=\"sub-component__table\">\n <thead>\n <tr>\n {[\n Wording.contractNbr,\n Wording.startCase,\n Wording.directDebitDate,\n // Wording.subscriptionDate,\n Wording.deliveryPoint,\n Wording.energyType,\n Wording.process,\n Wording.address,\n ].map((el: string, index: number) => (\n <th key={index}>{el}</th>\n ))}\n <th />\n </tr>\n </thead>\n <tbody>\n {_.get(order, 'order.contracts', '') ? (\n _.get(order, 'order.contracts', '').map(\n (contract: any, index: number) => {\n return (\n <Fragment key={index}>\n <tr className=\"transaction-status\">\n <td>\n {_.get(\n contract,\n 'contractNumber',\n '',\n )}\n </td>\n <td>\n {_.get(\n contract,\n 'effectiveStartDate',\n '',\n ) !== undefined\n ? getFormattedDate(\n _.get(\n contract,\n 'effectiveStartDate',\n '',\n ),\n )\n : ''}\n </td>\n <td>\n {_.get(\n contract,\n 'dueDate',\n '',\n ) !== undefined\n ? getFormattedDate(\n _.get(\n contract,\n 'dueDate',\n '',\n ),\n )\n : ''}\n </td>\n <td>\n {_.get(\n contract,\n 'deliveryPoint.pointOfDelivery',\n '',\n )}\n </td>\n <td>\n {getLabelByType(\n _.get(\n contract,\n 'energy',\n '',\n ),\n 'energyTypes',\n )}\n </td>\n <td>\n {_.get(\n contract,\n 'deliveryPoint.process.type',\n '',\n ) === 'MOVE_IN'\n ? EProcessType.MOVE_IN\n : EProcessType.SWITCH}\n </td>\n <td>\n {_.get(\n contract,\n 'deliveryPoint.address.number',\n '',\n )\n ? `${_.get(\n contract,\n 'deliveryPoint.address.number',\n '',\n )} `\n : ''}\n {_.get(\n contract,\n 'deliveryPoint.address.street',\n '',\n )}\n  \n {_.get(\n contract,\n 'deliveryPoint.address.postalCode',\n '',\n )}\n  \n {_.get(\n contract,\n 'deliveryPoint.address.townName',\n '',\n )}\n </td>\n </tr>\n </Fragment>\n );\n },\n )\n ) : (\n <tr>\n <td>{Wording.no_contract}</td>\n </tr>\n )}\n </tbody>\n </table>\n </div>\n );\n};\n\nexport default SubComponent;\n","import React, { useState } from 'react';\nimport { CustomModal, CustomButton } from '../../../components';\nimport WordingConstant from '../../../utils/wording.json';\nimport { EResponseCode, EMode } from '../../../utils/enums';\nimport { TResponse } from 'Models';\n\nimport _ from 'lodash';\n\nconst Wording = WordingConstant.UserAdministrationResult;\n\ninterface IPayloadManageUser {\n mode: string;\n firstName: string;\n lastName: string;\n userName: string;\n}\n\ntype Props = {\n manageUser: (props: IPayloadManageUser) => void;\n original: any;\n setAdminSuccessModal: (porps: boolean) => void;\n resetAdminClientSpaceResponse: () => void;\n resetManageUserResponse: () => void;\n manageUserResponse: TResponse;\n isAdminSpace: boolean;\n};\n\nconst RemoveUserButton: React.FC<Props> = ({\n manageUser,\n original,\n setAdminSuccessModal,\n resetAdminClientSpaceResponse,\n manageUserResponse,\n resetManageUserResponse,\n isAdminSpace,\n}) => {\n const [isOpen, setOpen] = useState<boolean>(false);\n const { code, message } = manageUserResponse;\n\n const renderModal = () => {\n return (\n <div>\n <CustomModal show={isOpen}>\n <span\n className=\"btn-close\"\n onClick={() => {\n setOpen(false);\n }}\n >\n {'X'}\n </span>\n <div className=\"remove-user-modal\">\n <p className=\"warning-title\">\n {Wording.RemoveUser.warningTitle}\n </p>\n <p>{Wording.RemoveUser.message}</p>\n <p className=\"response\">\n {Wording.RemoveUser.question}\n </p>\n\n <div className=\"remove-user-modal__buttons\">\n <CustomButton\n onClick={() => {\n setOpen(false);\n setAdminSuccessModal(true);\n }}\n color=\"orange\"\n title=\"Retour\"\n />\n <CustomButton\n color=\"gray\"\n title=\"Continuer\"\n onClick={() => {\n if (isAdminSpace) {\n resetAdminClientSpaceResponse();\n setAdminSuccessModal(false);\n }\n setOpen(false);\n manageUser({\n mode: EMode.DELETE,\n firstName: _.get(\n original.original,\n 'firstName',\n '',\n ),\n lastName: _.get(\n original.original,\n 'lastName',\n '',\n ),\n userName: _.get(\n original.original,\n 'userName',\n '',\n ),\n });\n }}\n />\n </div>\n </div>\n </CustomModal>\n </div>\n );\n };\n\n const deleteUserModal = () => {\n return (\n <CustomModal\n show={code && message !== Wording.errorMessage ? true : false}\n >\n <span\n className=\"btn-close\"\n onClick={() => {\n resetManageUserResponse();\n }}\n >\n {'X'}\n </span>\n <div className=\"enable-user-modal-response\">\n <p className=\"code\">\n {code === EResponseCode.SUCCESS\n ? Wording.CreateGroupModal.succesMessage\n : Wording.CreateGroupModal.failureMessage}\n </p>\n\n <p className=\"message\">{message}</p>\n\n <div className=\"search-rs-vl-btn\">\n <CustomButton\n title={'Fermer'}\n color={'orange'}\n onClick={() => {\n resetManageUserResponse();\n }}\n />\n </div>\n </div>\n </CustomModal>\n );\n };\n\n return (\n <div className=\"remove-user\">\n <p\n onClick={() => {\n setOpen(true);\n }}\n >\n {Wording.RemoveUser.removeUser}\n </p>\n {renderModal()}\n {code && message && deleteUserModal()}\n </div>\n );\n};\n\nexport default RemoveUserButton;\n","import React, { useState, useEffect } from 'react';\nimport { CustomModal, CustomButton } from '../../../components';\nimport _ from 'lodash';\nimport { EResponseCode, EMode } from '../../../utils/enums';\nimport WordingConstant from '../../../utils/wording.json';\nimport { TResponse } from 'Models';\nconst Wording = WordingConstant.UserAdministrationResult;\n\ninterface IPayloadManageUser {\n mode: string;\n firstName: string;\n lastName: string;\n userName: string;\n}\n\ntype Props = {\n status: string;\n manageUser: (props: IPayloadManageUser) => void;\n setAdminSuccessModal: (porps: boolean) => void;\n resetManageUserResponse: () => void;\n original: any;\n isAdminSpace: boolean;\n manageUserResponse: TResponse;\n resetAdminClientSpaceResponse: () => void;\n};\n\nconst EnableOrDesableuserButton: React.FC<Props> = ({\n status,\n manageUser,\n original,\n manageUserResponse,\n resetManageUserResponse,\n resetAdminClientSpaceResponse,\n setAdminSuccessModal,\n isAdminSpace,\n}) => {\n const [isOpen, setOpen] = useState<boolean>(false);\n const { code, message } = manageUserResponse;\n\n const enableOrDesableUserModal = () => {\n return (\n <CustomModal\n show={code && message !== Wording.errorMessage ? true : false}\n >\n <span\n className=\"btn-close\"\n onClick={() => {\n resetManageUserResponse();\n }}\n >\n {'X'}\n </span>\n <div className=\"enable-user-modal-response\">\n <p className=\"code\">\n {code === EResponseCode.SUCCESS\n ? Wording.CreateGroupModal.succesMessage\n : Wording.CreateGroupModal.failureMessage}\n </p>\n\n <p className=\"message\">{message}</p>\n\n <div className=\"search-rs-vl-btn\">\n <CustomButton\n title={'Fermer'}\n color={'orange'}\n onClick={() => {\n resetManageUserResponse();\n }}\n />\n </div>\n </div>\n </CustomModal>\n );\n };\n\n const renderModal = () => {\n return (\n <div>\n <CustomModal show={isOpen}>\n <span\n className=\"btn-close\"\n onClick={() => {\n setOpen(false);\n }}\n >\n {'X'}\n </span>\n {status === 'ENABLED' ? (\n <div className=\"desable-user\">\n <p className=\"warning-title\">\n {Wording.DesableUser.warningTitle}\n </p>\n <p className=\"message\">\n {Wording.DesableUser.message}\n </p>\n <p className=\"question\">\n {Wording.DesableUser.question}\n </p>\n\n <div className=\"desable-user__buttons\">\n <CustomButton\n onClick={() => setOpen(false)}\n color=\"orange\"\n title=\"Retour\"\n />\n <CustomButton\n color=\"gray\"\n title=\"Continuer\"\n onClick={() => {\n if (isAdminSpace) {\n resetAdminClientSpaceResponse();\n setAdminSuccessModal(false);\n }\n setOpen(false);\n manageUser({\n mode: EMode.DISABLE,\n firstName: _.get(\n original.original,\n 'firstName',\n '',\n ),\n lastName: _.get(\n original.original,\n 'lastName',\n '',\n ),\n userName: _.get(\n original.original,\n 'userName',\n '',\n ),\n });\n }}\n />\n </div>\n </div>\n ) : (\n <div className=\"enable-user\">\n <p className=\"warning-title\">\n {Wording.EnableUser.warningTitle}\n </p>\n <p className=\"message\">\n {Wording.EnableUser.message}\n </p>\n <p className=\"question\">\n {Wording.EnableUser.question}\n </p>\n\n <div className=\"enable-user__buttons\">\n <CustomButton\n onClick={() => setOpen(false)}\n color=\"orange\"\n title=\"Retour\"\n />\n\n <CustomButton\n color=\"gray\"\n title=\"Continuer\"\n onClick={() => {\n if (isAdminSpace) {\n resetAdminClientSpaceResponse();\n setAdminSuccessModal(false);\n }\n setOpen(false);\n manageUser({\n mode: EMode.ENABLE,\n firstName: _.get(\n original.original,\n 'firstName',\n '',\n ),\n lastName: _.get(\n original.original,\n 'lastName',\n '',\n ),\n userName: _.get(\n original.original,\n 'userName',\n '',\n ),\n });\n }}\n />\n </div>\n </div>\n )}\n </CustomModal>\n </div>\n );\n };\n\n return (\n <div className=\"enable-or-desable\">\n {status === 'ENABLED' ? (\n <p\n onClick={() => {\n setOpen(true);\n }}\n >\n {Wording.RemoveUser.desableUser}\n </p>\n ) : (\n <p\n onClick={() => {\n setOpen(true);\n }}\n >\n {Wording.RemoveUser.enableUser}\n </p>\n )}\n {renderModal()}\n {/*code && message && enableOrDesableUserModal()*/}\n </div>\n );\n};\n\nexport default EnableOrDesableuserButton;\n","import React, { useState, useEffect, useRef } from 'react';\nimport { CustomModal, CustomButton } from '../../../components';\nimport WordingConstant from '../../../utils/wording.json';\nimport _ from 'lodash';\nimport { TUser, TResponse } from 'Models';\nimport CreateUserModal from '../UserAdministrationContainer/CreateUserModal';\nimport CustomTable from '../../../components/admin/CustomTable';\nimport { isEmpty } from '../../../utils/helpers';\nimport resources from '../../../utils/resources';\nimport RemoveUserButton from '../UserAdministrationContainer/RemoveUserButton';\nimport EnableOrDesableuserButton from '../UserAdministrationContainer/EnableOrDesableUserButton';\nimport useOutsideClick from '../../../libraries/useOutsideClick';\nimport { TSchemaProps } from 'Types';\n\nconst Wording = WordingConstant.UserAdministrationResult;\n\ninterface IPayloadUser {\n group: string;\n firstName: string;\n lastName: string;\n email: string;\n civility: string;\n}\ninterface IPayloadManageUser {\n mode: string;\n firstName: string;\n lastName: string;\n userName: string;\n}\ninterface IPayload {\n group: string;\n}\n\ntype Props = {\n groupList: string[];\n createUser: (props: IPayloadUser) => void;\n createUserResponse: TResponse;\n resetCreateUserResponse: () => void;\n resetGroupListResponse: () => void;\n manageUser: (props: IPayloadManageUser) => void;\n administrationList: TUser[];\n resetAdminClientSpaceResponse: () => void;\n resetManageUserResponse: () => void;\n error: string;\n currentUser?: any;\n manageUserResponse: TResponse;\n schemaProps: TSchemaProps;\n};\n\nconst AdministrationClientSpace: React.FC<Props> = ({\n groupList,\n createUser,\n createUserResponse,\n resetCreateUserResponse,\n administrationList,\n resetAdminClientSpaceResponse,\n error,\n currentUser,\n manageUser,\n manageUserResponse,\n resetManageUserResponse,\n schemaProps,\n}) => {\n const [isOpen, setOpen] = useState<boolean>(false);\n const [openUserModal, setUserModal] = useState<boolean>(false);\n const [openAdminSuccessModal, setAdminSuccessModal] = useState<boolean>(\n false,\n );\n const [handleShowPopUp, setHandleShowPopUp] = useState<boolean>(false);\n\n useEffect(() => {\n administrationList.length === 0 ? setOpen(true) : setOpen(false);\n setAdminSuccessModal(administrationList.length > 0 ? true : false);\n }, [administrationList]);\n const divRef = useRef<HTMLDivElement>(null);\n\n useOutsideClick(divRef, () => {\n if (handleShowPopUp) setHandleShowPopUp(false);\n });\n\n const renderCreateUserModal = () => {\n return (\n <CustomModal show={isOpen}>\n <span\n className=\"btn-close\"\n onClick={() => {\n setOpen(false);\n resetAdminClientSpaceResponse();\n }}\n >\n {'X'}\n </span>\n\n <div className=\"administration-user-modal\">\n <p className=\"warning-title\">{Wording.modalTitle}</p>\n\n <div className=\"administration-user-modal__buttons\">\n <CustomButton\n onClick={() => {\n setOpen(false);\n resetAdminClientSpaceResponse();\n }}\n color=\"orange\"\n title=\"Retour\"\n />\n\n <CustomButton\n onClick={() => {\n setOpen(false);\n setUserModal(true);\n resetAdminClientSpaceResponse();\n }}\n color=\"gray\"\n title=\"Créer un utilisateur\"\n />\n </div>\n </div>\n </CustomModal>\n );\n };\n\n const prepareColumns = () => {\n return [\n {\n Header: Wording.group,\n accessor: 'userGroup',\n filterable: false,\n },\n {\n Header: Wording.userId,\n accessor: 'userName',\n filterable: false,\n },\n {\n Header: Wording.clientLastName,\n accessor: 'lastName',\n filterable: false,\n },\n {\n Header: Wording.clientFirstName,\n accessor: 'firstName',\n filterable: false,\n },\n {\n Header: Wording.clientEmail,\n accessor: 'email',\n filterable: false,\n },\n {\n Header: Wording.status,\n accessor: 'userStatus',\n filterable: false,\n },\n {\n Header: '',\n accessor: '',\n filterable: false,\n Cell: (original: any) => {\n return (\n <div>\n <img\n className=\"menu-style\"\n src={resources['ic-menu-h']}\n alt=\"ic-menu\"\n onClick={() => {\n setHandleShowPopUp(!handleShowPopUp);\n }}\n />\n\n {handleShowPopUp && (\n <div ref={divRef} className=\"pop-up\">\n <RemoveUserButton\n setAdminSuccessModal={\n setAdminSuccessModal\n }\n original={original}\n manageUser={manageUser}\n resetAdminClientSpaceResponse={\n resetAdminClientSpaceResponse\n }\n manageUserResponse={manageUserResponse}\n resetManageUserResponse={\n resetManageUserResponse\n }\n isAdminSpace={true}\n />\n\n <EnableOrDesableuserButton\n status={_.get(\n original.original,\n 'userStatus',\n '',\n )}\n original={original}\n manageUser={manageUser}\n setAdminSuccessModal={\n setAdminSuccessModal\n }\n isAdminSpace={true}\n manageUserResponse={manageUserResponse}\n resetManageUserResponse={\n resetManageUserResponse\n }\n resetAdminClientSpaceResponse={\n resetAdminClientSpaceResponse\n }\n />\n </div>\n )}\n </div>\n );\n },\n },\n ];\n };\n\n const administrationUserSuccess = () => {\n return (\n <CustomModal show={openAdminSuccessModal}>\n <span\n className=\"btn-close\"\n onClick={() => {\n setAdminSuccessModal(false);\n resetAdminClientSpaceResponse();\n }}\n >\n {'X'}\n </span>\n\n <div className=\"administration-user-success-modal\">\n <p className=\"warning-title\">\n {'Administrer espace client'}\n </p>\n {isEmpty(administrationList) && (\n <CustomTable\n columns={prepareColumns()}\n data={administrationList}\n className=\"-striped -highlight\"\n showPagination={false}\n filterable={false}\n downloadData={administrationList}\n downloadButtonTitle={''}\n />\n )}\n\n <div className=\"administration-user-success-modal__buttons\">\n <CustomButton\n onClick={() => {\n setAdminSuccessModal(false);\n resetAdminClientSpaceResponse();\n }}\n color=\"orange\"\n title=\"Retour\"\n />\n </div>\n </div>\n </CustomModal>\n );\n };\n\n return (\n <div className=\"admin-user\">\n {error === 'no matches found' && renderCreateUserModal()}\n {administrationList.length > 0 && administrationUserSuccess()}\n <CreateUserModal\n currentUser={currentUser}\n isCustomerAndContract={true}\n isOpen={openUserModal}\n setOpen={setUserModal}\n schemaProps={schemaProps}\n groupList={groupList}\n createUser={createUser}\n createUserResponse={createUserResponse}\n resetCreateUserResponse={resetCreateUserResponse}\n />\n </div>\n );\n};\n\nexport default AdministrationClientSpace;\n","import React, { Component } from 'react';\n\ntype Props = {\n callback: () => void;\n children: React.ReactNode;\n};\nexport default class OutsideClickClass extends Component<Props, {}> {\n wrapperRef: any;\n constructor(props: Props) {\n super(props);\n\n this.wrapperRef = null;\n }\n\n componentDidMount = () => {\n document.addEventListener('mousedown', this.handleClickOutside);\n };\n\n componentWillUnmount = () => {\n document.removeEventListener('mousedown', this.handleClickOutside);\n };\n\n setWrapperRef = (node: any) => {\n this.wrapperRef = node;\n };\n\n handleClickOutside = (event: any) => {\n const { callback } = this.props;\n if (this.wrapperRef && !this.wrapperRef.contains(event.target)) {\n callback();\n }\n };\n\n render() {\n return <div ref={this.setWrapperRef}>{this.props.children}</div>;\n }\n}\n","import CustomCollapse from './CustomCollapse';\n\nexport default CustomCollapse;\n","import React, { useState } from 'react';\nimport cs from 'classnames';\n\ntype Props = {\n hideFirst?: boolean;\n children?: React.ReactNode;\n firstElement: React.ReactNode;\n customClassName?: string;\n};\nconst CustomCollapse: React.FC<Props> = ({\n firstElement,\n hideFirst,\n children,\n customClassName,\n}) => {\n const [isOpen, setOpen] = useState<boolean>(false);\n const [height, setHeight] = useState<string>('0px');\n\n const childrenElm = !!children && (\n <div\n style={{ height: isOpen ? height : '0px' }}\n className={`custom-collapse__children-content `}\n >\n <div\n ref={(elm: any) =>\n elm !== undefined && elm !== null\n ? setHeight(elm.getBoundingClientRect().height)\n : null\n }\n className=\"custom-collapse__children-content-element\"\n >\n {children}\n </div>\n </div>\n );\n\n const showCollapse = () => {\n setHeight('0px');\n setOpen(!isOpen);\n };\n\n const handleClick = () => (isOpen ? showCollapse() : setOpen(!isOpen));\n\n return (\n <div\n className={cs('custom-collapse', {\n [`${customClassName}`]: customClassName,\n })}\n >\n <div className=\"custom-collapse__display-first-element\">\n {hideFirst ? !isOpen && firstElement : firstElement}\n\n {children && (\n <span\n className={`custom-collapse__display-first-element__btn ${\n isOpen\n ? 'custom-collapse__display-first-element__btn-open'\n : ''\n }`}\n onClick={handleClick}\n role=\"button\"\n >\n +\n </span>\n )}\n </div>\n\n {childrenElm}\n </div>\n );\n};\n\nexport default CustomCollapse;\n","import MessageCollapse from './MessageCollapse';\nexport default MessageCollapse;\n","import React from 'react';\nimport truncate from 'lodash/truncate';\n\nimport CustomCollapse from '../CustomCollapse';\n\nconst MessageCollapse: React.FC<{\n message: string;\n initialLength?: number;\n}> = ({ message, initialLength }) => {\n return (\n <CustomCollapse\n customClassName=\"message-collapse\"\n hideFirst\n firstElement={\n <p className=\"message-collapse-first-elm\">\n {truncate(message, {\n length: initialLength ? initialLength : 30,\n })}\n </p>\n }\n >\n <p className=\"message-collapse-message\">{message}</p>\n </CustomCollapse>\n );\n};\n\nexport default MessageCollapse;\n","import React, { Component, ChangeEvent } from 'react';\nimport { RootState, TSchemaProps } from 'Types';\nimport { connect } from 'react-redux';\nimport SubComponent from './SubComponent';\nimport {\n BackgroundElement,\n CustomButton,\n CustomModal,\n} from '../../../components';\nimport CustomTable from '../../../components/admin/CustomTable';\nimport {\n isEmpty,\n getHost,\n isHaveActionsPermission,\n} from '../../../utils/helpers';\nimport WordingConstant from '../../../utils/wording.json';\nimport resources from '../../../utils/resources';\nimport ResetPasswordButton from './ResetPasswordButton';\nimport ReinitSubscriptionEmailButton from './ReinitSubscriptionEmailButton';\nimport {\n resetPasswordAsync,\n removeError,\n reinitSubscriptionEmailAsync,\n removeReinitSubscriptionMessage,\n} from '../../../_actions/auth.actions';\nimport AdministrationClientSpace from './AdministrationClientSpace';\nimport { TUserPayload } from '../../../_actions/searchUserGroup.actions';\nimport { TUser, TResponse } from 'Models';\nimport {\n transferGetContractAsync,\n resetResponse,\n transferContractAsync,\n resetResponseTransfer,\n} from '../../../_actions/transferContract.actions';\nimport { resetGroupListResponse } from '../../../_actions/getGroup.actions';\nimport {\n adminClientSpaceAsync,\n resetAdminClientSpaceResponse,\n} from '../../../_actions/administrationClientSpace.actions';\nimport { resetManageUserResponse } from '../../../_actions/manageUser.actions';\nimport { EResponseCode, ECustomerStatus } from '../../../utils/enums';\nimport { resetCreateUserResponse } from '../../../_actions/createUser.actions';\n\nimport _ from 'lodash';\nimport ErrorElement from '../../../components/ErrorElement';\nimport OutsideClickClass from '../../../libraries/OutsideClickClass';\nimport { withTriangle } from '../../../components/admin/CustomTable/CustomTable';\n\nimport {\n TCustomer,\n TAddress,\n TCustomerIndividual,\n} from '../../../constants/key-system';\nimport MessageCollapse from '../../../components/admin/MessageCollapse';\n\nconst Wording = WordingConstant.CustomerContractContainer;\n\ninterface IPayloadUser {\n group: string;\n firstName: string;\n lastName: string;\n email: string;\n civility: string;\n}\n\nconst headers = [\n { label: 'N°client', key: 'id' },\n { label: 'Nom de société', key: 'company.companyName' },\n { label: 'Nom', key: 'individual.lastName' },\n { label: 'Prénom', key: 'individual.firstName' },\n { label: 'Adresse', key: 'address.street' },\n { label: 'N° Téléphone', key: 'contact.phone1' },\n { label: 'Email', key: 'contact.email' },\n { label: 'N° Contrat', key: 'contracts[0].contractNumber' },\n { label: 'Energie', key: 'contracts[0].energy' },\n { label: 'Date de début', key: 'contracts[0].effectiveStartDate' },\n { label: 'status', key: 'contracts[0].status' },\n];\n\nconst mapStateToProps = (state: RootState) => ({\n customerContractState: state.customersContractReducer,\n authState: state.authReducer,\n userList: state.userGroupReducer.userList,\n transferState: state.transferContractReducer,\n administrationList: state.userGroupReducer.administrationList,\n administrationError: state.userGroupReducer.error as string,\n manageUserState: state.userGroupReducer.manageUserResponse,\n orders: state.orderReducer.searchClient,\n});\n\nconst dispatchProps = {\n resetPasswordDispatch: resetPasswordAsync.request,\n removeErrorDispatch: removeError,\n reinitSubscriptionEmailDispatch: reinitSubscriptionEmailAsync.request,\n removeReinitSubscriptionMessageDispatch: removeReinitSubscriptionMessage,\n transferGetContractDispatch: transferGetContractAsync.request,\n transferContractDispatch: transferContractAsync.request,\n resetResponse,\n resetResponseTransfer,\n resetGroupListResponse,\n adminClientSpaceAsyncDispatch: adminClientSpaceAsync.request,\n resetAdminClientSpaceResponse,\n resetManageUserResponse,\n resetCreateUserResponse,\n};\n\ntype Props = {\n searchUserGroup: (props: TUserPayload) => void;\n manageUser: (props: IPayloadManageUser) => void;\n handleReset?: () => void;\n userList: TUser[];\n groupList: string[];\n createUser: (props: IPayloadUser) => void;\n createUserResponse: TResponse;\n resetCreateUserResponse: () => void;\n resetGroupResponse: () => void;\n resetGroupListResponse: () => void;\n adminClientSpaceAsyncDispatch: (props: TUserPayload) => void;\n administrationList: TUser[];\n resetAdminClientSpaceResponse: () => void;\n administrationError: string;\n schemaProps: TSchemaProps;\n} & ReturnType<typeof mapStateToProps> &\n typeof dispatchProps;\n\ntype State = {\n showDropdown: boolean;\n currentItem: number;\n currentEmail: string;\n idClient: string;\n currentUser: any;\n subscriptionSendEmail: string;\n};\n\ninterface IPayloadManageUser {\n mode: string;\n firstName: string;\n lastName: string;\n userName: string;\n}\n\nclass CustomerContractContainer extends Component<Props, State> {\n constructor(props: Props) {\n super(props);\n this.state = {\n showDropdown: false,\n currentItem: -1,\n currentEmail: '',\n idClient: '',\n currentUser: '',\n subscriptionSendEmail: '',\n };\n this.openClient = this.openClient.bind(this);\n }\n\n componentDidMount() {\n window.onscroll = () => onScroll();\n\n const header = document.getElementsByClassName('rt-thead')[0];\n\n const onScroll = () => {\n if (window.pageYOffset > 280) {\n if (header) header.classList.add('sticky');\n } else {\n if (header) header.classList.remove('sticky');\n }\n };\n }\n\n prepareColumns = () => {\n const { schemaProps } = this.props;\n return [\n {\n Header: withTriangle(Wording.customerId),\n accessor: 'id',\n filterable: false,\n width: 150,\n },\n {\n Header: withTriangle(Wording.companyName),\n accessor: 'company.companyName',\n filterable: false,\n },\n {\n Header: withTriangle(Wording.clientFirstName),\n accessor: 'individual',\n filterable: false,\n Cell: ({ value }: any) => {\n if (value) {\n const {\n firstName,\n lastName,\n } = value as TCustomerIndividual;\n return (\n <MessageCollapse\n message={`${firstName} ${lastName}`}\n initialLength={17}\n />\n );\n }\n return '';\n },\n },\n {\n Header: withTriangle(Wording.address),\n accessor: 'address',\n filterable: false,\n Cell: ({ value }: any) => {\n if (value) {\n const {\n // tslint:disable-next-line:variable-name\n number,\n street,\n city,\n } = value as TAddress;\n\n return (\n <MessageCollapse\n message={`${number} ${street} ${city}`}\n initialLength={19}\n />\n );\n }\n return '';\n },\n },\n {\n Header: withTriangle(Wording.invoiceId),\n accessor: 'contact.phone1',\n filterable: false,\n },\n {\n Header: withTriangle(Wording.email),\n accessor: 'contact.email',\n filterable: false,\n },\n {\n Header: Wording.see_customer,\n accessor: 'voir client',\n filterable: false,\n show: isHaveActionsPermission(schemaProps),\n width: 95,\n Cell: ({ original }: any) => (\n <CustomButton\n color=\"black\"\n title={Wording.see_customer}\n onClick={() => this.openClient(original)}\n />\n ),\n },\n {\n Header: '',\n accessor: '',\n filterable: false,\n show: isHaveActionsPermission(schemaProps),\n width: 40,\n Cell: (original: any) => {\n return (\n <div>\n <img\n className=\"menu-style\"\n src={resources['ic-menu-orange']}\n alt=\"ic-menu\"\n onClick={() => {\n this.setCurrentEmail(\n _.get(\n original.original,\n 'contact.email',\n '',\n ),\n );\n this.handleButtonDropdown(\n original.viewIndex,\n original,\n );\n }}\n />\n {this.state.showDropdown &&\n this.state.currentItem ===\n original.viewIndex && (\n <OutsideClickClass\n callback={() =>\n this.setState({\n showDropdown: false,\n })\n }\n >\n <div className=\"pop-up\">\n <ResetPasswordButton\n email={_.get(\n original.original,\n 'contact.email',\n '',\n )}\n resetPasswordDispatch={\n this.props\n .resetPasswordDispatch\n }\n />\n\n <ReinitSubscriptionEmailButton\n customerNbr={_.get(\n original,\n 'original.id',\n '',\n )}\n defaultEmail={_.get(\n original.original,\n 'contact.email',\n '',\n )}\n handleSubscriptionSendEmail={\n this\n .handleSubscriptionSendEmail\n }\n reinitSubscriptionEmailDispatch={\n this.props\n .reinitSubscriptionEmailDispatch\n }\n />\n <p\n onClick={() => {\n this.props.adminClientSpaceAsyncDispatch(\n {\n userName: _.get(\n original,\n 'original.id',\n '',\n ),\n email: '',\n firstName: '',\n lastName: '',\n group: '',\n userStatus: '',\n },\n );\n }}\n >\n {Wording.admin_client_space}\n </p>\n </div>\n </OutsideClickClass>\n )}\n </div>\n );\n },\n },\n ];\n };\n\n setCurrentEmail = (email: string) => {\n this.setState({ currentEmail: email });\n };\n\n openClient(original: { id: string } | string) {\n let clientId: string = '';\n if (typeof original === 'string') {\n clientId = original;\n } else {\n clientId = _.get(original, 'id', '');\n }\n const queryParams = new Map([['client', clientId]]);\n window.open(getHost(queryParams));\n }\n\n handleSubscriptionSendEmail = (subscriptionSendEmail: string) => {\n this.setState({ subscriptionSendEmail });\n };\n handleIdClientInput = (e: ChangeEvent<HTMLInputElement>) => {\n this.setState({ idClient: e.target.value });\n };\n\n renderResetPasswordModal = () => {\n const {\n authState: { error },\n } = this.props;\n if (error !== undefined && error !== Wording.no_error && error !== '') {\n return (\n <CustomModal\n show={error !== undefined && error !== Wording.no_error}\n >\n <span\n className=\"btn-close\"\n onClick={() => {\n this.props.removeErrorDispatch();\n }}\n >\n {'X'}\n </span>\n\n <div className=\"reset-modal\">\n <p className=\"warning-title\">{Wording.error_message}</p>\n <p className=\"message\">{Wording.try_again_message}</p>\n <div className=\"reset-modal__buttons\">\n <CustomButton\n onClick={() => {\n this.props.removeErrorDispatch();\n }}\n color=\"orange\"\n title=\"Retour\"\n />\n <CustomButton\n color=\"gray\"\n title=\"Réessayer\"\n onClick={() => {\n this.props.resetPasswordDispatch({\n email: this.state.currentEmail,\n });\n }}\n />\n </div>\n </div>\n </CustomModal>\n );\n }\n\n if (error === '') {\n return (\n <CustomModal show={error === ''}>\n <span\n className=\"btn-close\"\n onClick={() => {\n this.props.removeErrorDispatch();\n }}\n >\n {'X'}\n </span>\n <div className=\"reset-modal\">\n <div className=\"warning-title\">\n {'Réinitialisation de mot de passe'}\n </div>\n <span>\n <p>{Wording.success_message}</p>\n </span>\n\n <div className=\"reset-modal__buttons\">\n <CustomButton\n onClick={() => {\n this.props.removeErrorDispatch();\n }}\n color=\"orange\"\n title=\"Fermer\"\n />\n </div>\n </div>\n </CustomModal>\n );\n }\n };\n\n renderReinitSubscriptionEmailModal = () => {\n const {\n authState: { reinit, error },\n } = this.props;\n\n if (error === Wording.error_code) {\n return (\n <CustomModal show={error === Wording.error_code}>\n <div className=\"reinit-modal\">\n <p className=\"success_message\">{error}</p>\n <div className=\"reinit-modal__buttons\">\n <CustomButton\n onClick={() => {\n this.props.removeErrorDispatch();\n }}\n color=\"orange\"\n title=\"Fermer\"\n />\n </div>\n </div>\n </CustomModal>\n );\n }\n if (reinit === Wording.success_code) {\n return (\n <CustomModal show={reinit === Wording.success_code}>\n <span\n className=\"btn-close\"\n onClick={() => {\n this.props.removeReinitSubscriptionMessageDispatch();\n }}\n >\n {'X'}\n </span>\n\n <div className=\"reinit-modal\">\n <div className=\"warning-title\">\n {'Renvoyer un mail de bienvenue'}\n </div>\n <p className=\"success_message\">\n {Wording.reinit_success_message}\n </p>\n <p className=\"email\">\n {this.state.subscriptionSendEmail}\n </p>\n <p className=\"advice\">{Wording.advice_message}</p>\n <div className=\"reinit-modal__buttons\">\n <CustomButton\n onClick={() => {\n this.props.removeReinitSubscriptionMessageDispatch();\n }}\n color=\"orange\"\n title=\"Fermer\"\n />\n </div>\n </div>\n </CustomModal>\n );\n }\n };\n\n handleButtonDropdown = (original: number, currentUser: any) => {\n this.setState({\n showDropdown: !this.state.showDropdown,\n currentItem: original,\n currentUser,\n });\n };\n\n enableOrDessableUserResponseModal = (code: string, message: string) => {\n return (\n <CustomModal\n show={code && message !== Wording.errorMessage ? true : false}\n >\n <span\n className=\"btn-close\"\n onClick={() => {\n this.props.resetManageUserResponse();\n }}\n >\n {'X'}\n </span>\n <div className=\"enable-user-modal-response\">\n <p className=\"code\">\n {code === EResponseCode.SUCCESS\n ? Wording.succesMessage\n : Wording.failureMessage}\n </p>\n\n <p className=\"message\">{message}</p>\n\n <div className=\"search-rs-vl-btn\">\n <CustomButton\n title={'Fermer'}\n color={'orange'}\n onClick={() => {\n this.props.resetManageUserResponse();\n }}\n />\n </div>\n </div>\n </CustomModal>\n );\n };\n\n downloadDataTable = (allCustomerContract: any[]) => {\n const { schemaProps } = this.props;\n\n return isHaveActionsPermission(schemaProps)\n ? {\n downloadData: allCustomerContract,\n downloadHeaders: headers,\n downloadButtonTitle: Wording.download_csv,\n }\n : {};\n };\n\n render() {\n const {\n orders,\n transferState: { transferContract, transferContractResponse },\n transferContractDispatch,\n authState: { userId },\n resetResponseTransfer,\n schemaProps,\n } = this.props;\n const { code, message } = this.props.manageUserState;\n\n const customers: TCustomer[] = [\n ...orders.order.map(it => {\n const {\n order: { customer },\n } = it;\n return {\n address: {\n box: '',\n city: customer.contact.address.townName || '',\n countryIso: '',\n number: customer.contact.address.number || '',\n postalCode: Number(\n customer.contact.address.postalCode,\n ).toString(),\n street: customer.contact.address.street,\n },\n company: {\n companyName: customer.contact.companyName,\n id: '',\n identificationNumber: '',\n legalForme: '',\n naceCode: '',\n vatable: '',\n vatNumber: '',\n },\n contact: {\n email: customer.contact.email,\n fax: '',\n id: customer.customerNumber,\n phone1: customer.contact.phone,\n phone2: '',\n phone3: '',\n },\n customerCategory: '',\n customerType: customer.type,\n id: customer.customerNumber,\n individual: {\n civility: customer.contact.civility,\n dateOfBirth: customer.contact.birthdate,\n firstName: customer.contact.firstName,\n id: customer.customerNumber,\n lastName: customer.contact.lastName,\n placeOfBirth: customer.contact.birthTown\n ? {\n box: '',\n city: customer.contact.birthTown.townName,\n countryIso: '',\n number: customer.contact.birthTown.number,\n postalCode:\n customer.contact.birthTown.postalCode,\n street: customer.contact.birthTown.street,\n }\n : undefined,\n },\n language: '',\n perimeters: [],\n status: ECustomerStatus.CUSTOMER, // TODO not fetched data by order.\n contracts: it.order.contracts.map(itr => ({\n ...itr,\n status: it.order.orderStatus,\n })),\n } as TCustomer;\n }),\n ];\n\n return (\n <div className=\"customer-contract-container\">\n {this.renderResetPasswordModal()}\n\n <ErrorElement error={orders.message} />\n\n {this.renderReinitSubscriptionEmailModal()}\n {this.enableOrDessableUserResponseModal(code, message)}\n\n <AdministrationClientSpace\n groupList={this.props.groupList}\n schemaProps={schemaProps}\n createUser={this.props.createUser}\n createUserResponse={this.props.createUserResponse}\n resetCreateUserResponse={this.props.resetCreateUserResponse}\n resetGroupListResponse={this.props.resetGroupListResponse}\n manageUser={this.props.manageUser}\n administrationList={this.props.administrationList}\n resetAdminClientSpaceResponse={\n this.props.resetAdminClientSpaceResponse\n }\n error={this.props.administrationError}\n currentUser={this.state.currentUser}\n manageUserResponse={this.props.manageUserState}\n resetManageUserResponse={this.props.resetManageUserResponse}\n />\n\n {isEmpty(customers) && (\n <BackgroundElement>\n <CustomTable\n columns={this.prepareColumns()}\n data={customers}\n className=\"-striped -highlight\"\n showPagination={true}\n filterable={false}\n SubComponent={({ original, index }: any) => {\n return (\n <SubComponent\n customer={original as TCustomer}\n index={index}\n transferError={\n this.props.transferState.error\n }\n schemaProps={schemaProps}\n transferCustomerContract={\n this.props\n .transferGetContractDispatch\n }\n transferContract={transferContract}\n error={this.props.transferState.error!!}\n resetResponse={this.props.resetResponse}\n transferContractDispatch={\n transferContractDispatch\n }\n userId={userId || ''}\n transferContractResponse={\n transferContractResponse\n }\n resetResponseTransfer={\n resetResponseTransfer\n }\n />\n );\n }}\n {...this.downloadDataTable(customers)}\n />\n </BackgroundElement>\n )}\n </div>\n );\n }\n}\n\nexport default connect(\n mapStateToProps,\n dispatchProps,\n)(CustomerContractContainer);\n","import CustomerContractContainer from './CustomerContractContainer';\n\nexport default CustomerContractContainer;\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { RootState, TSchemaProps } from 'Types';\nimport SearchContainer from '../../../containers/admin/SearchContainer';\nimport CustomerContractContainer from '../../../containers/admin/CustomerContractContainer';\nimport { manageUserAsync } from '../../../_actions/manageUser.actions';\nimport { searchUserGroupAsync } from '../../../_actions/searchUserGroup.actions';\nimport { createUserAsync } from '../../../_actions/createUser.actions';\nimport { resetGroupResponse } from '../../../_actions/createGroup.actions';\nimport { getGroupAsync } from '../../../_actions/getGroup.actions';\n\nconst mapStateToProps = (state: RootState) => ({\n groupListState: state.userGroupReducer.groupList,\n manageUserState: state.userGroupReducer.createUserResponse,\n orders: state.orderReducer.searchClient.order,\n schema: state.authReducer.autorizationsScheme,\n});\n\nconst dispatchProps = {\n manageUserAsyncDispatch: manageUserAsync.request,\n searchUserGroupAsyncDispatch: searchUserGroupAsync.request,\n createUserAsyncDispatch: createUserAsync.request,\n getGroupAsyncDispatch: getGroupAsync.request,\n resetGroupResponse,\n};\n\ntype Props = {\n schemaProps: TSchemaProps;\n} & ReturnType<typeof mapStateToProps> &\n typeof dispatchProps;\n\nconst CustomerContracterPage: React.FC<Props> = ({\n groupListState,\n schemaProps,\n manageUserAsyncDispatch,\n searchUserGroupAsyncDispatch,\n createUserAsyncDispatch,\n manageUserState,\n}) => {\n return (\n <div className=\"search-container\">\n <SearchContainer\n schemaProps={schemaProps}\n groupList={groupListState}\n />\n\n <CustomerContractContainer\n manageUser={manageUserAsyncDispatch}\n searchUserGroup={searchUserGroupAsyncDispatch}\n groupList={groupListState}\n createUser={createUserAsyncDispatch}\n createUserResponse={manageUserState}\n schemaProps={schemaProps}\n resetGroupResponse={resetGroupResponse}\n />\n </div>\n );\n};\n\nexport default connect(mapStateToProps, dispatchProps)(CustomerContracterPage);\n","import CustomerContractPage from './CustomerContractPage';\n\nexport default CustomerContractPage;\n","import React, { useRef, useState } from 'react';\nimport { InputEvent, SelectOption, TSchemaProps } from 'Types';\nimport WordingConstant from '../../../utils/wording.json';\nimport {\n CustomInput,\n CustomButton,\n CustomSelect,\n Group,\n CustomModal,\n} from '../../../components';\nimport CustomDate from '../../../components/admin/CustomDate';\nimport {\n getDateFormatted,\n getSelectOptionValue,\n isLimitedAuthorization,\n isMixedAuthorization,\n} from '../../../utils/helpers';\nimport { TOrderPayload } from '../../../_actions/searchOrder.actions';\nimport _ from 'lodash';\nimport { isObject } from 'util';\nimport { CSVLink } from 'react-csv';\nimport { getCasesHistory } from '../../../utils/network/request';\nimport * as RequestErrors from '../../../utils/network/errors';\nimport Modal from '../../../components/Modal';\nimport { casesExtractAsync } from '../../../_actions/auth.actions';\nimport { connect } from 'react-redux';\n\nconst Wording = WordingConstant.SearchCaseContainer;\n\nconst situationStatus: Array<SelectOption<any>> = [\n { id: '0', label: 'CHF', value: 'SWITCH' },\n { id: '1', label: 'MES', value: 'MOVE_IN' },\n];\n\ntype Props = {\n fetchOrder: (props: TOrderPayload) => void;\n groupList: string[];\n schemaProps: TSchemaProps;\n userId: string | undefined;\n userLimited: string | undefined;\n} & typeof dispatchProps;\n\nconst mapStateToProps = () => ({});\nconst dispatchProps = {\n casesExtractRequestDispatch: casesExtractAsync.request,\n casesExtractSuccessDispatch: casesExtractAsync.success,\n casesExtractFailureDispatch: casesExtractAsync.failure,\n};\n\nconst SearchCaseContainer: React.FC<Props> = ({\n fetchOrder,\n userId,\n userLimited,\n groupList,\n schemaProps,\n casesExtractFailureDispatch,\n casesExtractRequestDispatch,\n casesExtractSuccessDispatch,\n}) => {\n const isDisabledActionBtn = isLimitedAuthorization(schemaProps);\n const isMixed = isMixedAuthorization(schemaProps);\n const csvLinkRef = useRef<\n CSVLink & HTMLAnchorElement & { link?: HTMLAnchorElement }\n >();\n\n const [showErrorModal, setShowErrorModal] = useState(false);\n const [CSVHeaders, setCSVHeaders] = useState<\n Array<{ label: string; key: string }>\n >([{ label: 'toto', key: 'key' }]);\n const [CSVData, setCSVData] = useState<any[]>([{ oui: 'oui', non: 'non' }]);\n\n const renderDefaultGroup = () => {\n const defaultVal = {\n id: 0,\n label: schemaProps.currentGroup,\n value: schemaProps.currentGroup,\n };\n\n if (isMixed) {\n return [defaultVal];\n }\n\n return isDisabledActionBtn ? defaultVal : '';\n };\n\n const isLimited = userLimited ? userLimited === 'LIMITED' : false;\n\n const [caseId, setCaseId] = useState<null | string>(null || '');\n const [clientLastName, setclientLastName] = useState<null | string>(\n null || '',\n );\n const [clientFirstName, setClientFirstName] = useState<null | string>(\n null || '',\n );\n const [refExt, setRefExt] = useState<null | string>(null || '');\n const [customerPhone, setCustomerPhone] = useState<null | string>(\n null || '',\n );\n const [customerEmail, setCustomerEmail] = useState<null | string>(\n null || '',\n );\n const [createdBy, setCreatedBy] = useState<null | string>(\n isLimited ? userId || '' : null || '',\n );\n\n const [customerGroup, setCustomerGroup] = useState<\n '' | SelectOption<string> | Array<SelectOption<string>>\n >(renderDefaultGroup());\n\n const [customerSituation, setCustomerSituation] = useState<\n '' | SelectOption<string>\n >('');\n\n const [fromDate, setFrom] = useState<undefined | Date>(undefined);\n const [toDate, setTo] = useState<undefined | Date>(undefined);\n\n const [showGroupErrorMesage, setShowErroGroup] = useState(false);\n\n const renderValueGroup = () => {\n if (isDisabledActionBtn) {\n return (customerGroup as SelectOption<string>).value;\n }\n\n if (customerGroup !== '' && isObject(customerGroup)) {\n return (customerGroup as Array<SelectOption<string>>).map(\n (obj: SelectOption<string>) => obj.value,\n );\n }\n\n return '';\n };\n\n const groupeValue = renderValueGroup();\n\n const groupeCondition = groupeValue !== '' && groupeValue.length !== 0;\n\n const searchCondition =\n caseId !== '' ||\n clientFirstName !== '' ||\n clientLastName !== '' ||\n refExt !== '' ||\n createdBy !== '' ||\n fromDate !== undefined ||\n toDate !== undefined ||\n customerEmail !== '' ||\n customerSituation !== '' ||\n customerPhone !== '';\n\n const mainCondition = isMixed\n ? groupeCondition\n : searchCondition || groupeCondition;\n\n const elementMap = {\n caseId: {\n text: Wording.num_case,\n value: caseId,\n onInputChange: (e: InputEvent) => setCaseId(e.currentTarget.value),\n deleteButton: true,\n deleteButtonOnClick: () => setCaseId(''),\n },\n\n to: {\n text: '',\n selectedDay: toDate,\n handleDayChange: (date: Date) => setTo(date),\n deleteButton: true,\n deleteButtonOnClick: () => setTo(undefined),\n },\n\n from: {\n text: '',\n selectedDay: fromDate,\n handleDayChange: (date: Date) => setFrom(date),\n deleteButton: true,\n deleteButtonOnClick: () => setFrom(undefined),\n },\n\n customerGroup: {\n id: 'group',\n options: _.map(groupList, (group: string, id: number) => ({\n id,\n label: group,\n value: group,\n })),\n\n withSelectAll: true,\n\n handleChangeSelect: (group: any) => {\n setCustomerGroup(group);\n if (isMixed) setShowErroGroup(false);\n },\n error:\n isMixed && !groupeCondition && showGroupErrorMesage\n ? 'Veuillez sélectionner un Groupe'\n : undefined,\n value: customerGroup,\n text: Wording.group,\n placeholder: ' ',\n isMulti: true,\n schemaProps,\n },\n\n clientFirstName: {\n text: Wording.clientFirstName,\n value: clientFirstName,\n onInputChange: (e: InputEvent) =>\n setClientFirstName(e.currentTarget.value),\n deleteButton: true,\n deleteButtonOnClick: () => setClientFirstName(''),\n },\n\n clientLastName: {\n text: Wording.clientLastName,\n value: clientLastName,\n onInputChange: (e: InputEvent) =>\n setclientLastName(e.currentTarget.value),\n deleteButton: true,\n deleteButtonOnClick: () => setclientLastName(''),\n },\n\n customerSituation: {\n id: 'situation',\n defaultValue: '',\n placeholder: 'Sélectionner',\n options: situationStatus,\n handleChangeSelect: (situation: SelectOption<string>) => {\n setCustomerSituation(situation);\n },\n value: customerSituation,\n text: Wording.situation,\n },\n\n refExt: {\n text: Wording.client_ref,\n value: refExt,\n onInputChange: (e: InputEvent) => setRefExt(e.currentTarget.value),\n deleteButton: true,\n deleteButtonOnClick: () => setRefExt(''),\n },\n\n customerPhone: {\n text: Wording.clientPhoneNbr,\n value: customerPhone,\n onInputChange: (e: InputEvent) =>\n setCustomerPhone(e.currentTarget.value),\n deleteButton: true,\n deleteButtonOnClick: () => setCustomerPhone(''),\n },\n\n customerEmail: {\n text: Wording.email,\n value: customerEmail,\n onInputChange: (e: InputEvent) =>\n setCustomerEmail(e.currentTarget.value),\n deleteButton: true,\n deleteButtonOnClick: () => setCustomerEmail(''),\n },\n createdBy: {\n text: Wording.createdBy,\n value: createdBy,\n onInputChange: (e: InputEvent) =>\n setCreatedBy(e.currentTarget.value),\n isLocked: isLimited,\n deleteButton: !isLimited,\n deleteButtonOnClick: () => setCreatedBy(''),\n },\n\n btn_validate: {\n title: Wording.btn_validate,\n color: mainCondition ? 'orange' : 'gray',\n small: true,\n onClick: () => {\n if (mainCondition) {\n fetchOrder({\n fromDate: getDateFormatted(fromDate),\n toDate: getDateFormatted(toDate),\n email: customerEmail,\n orderNumber: caseId,\n firstName: clientFirstName,\n lastName: clientLastName,\n externalReference: refExt,\n processType: getSelectOptionValue(\n customerSituation as SelectOption<string>,\n ),\n\n channel: groupeValue,\n phone: customerPhone,\n createdBy,\n });\n\n setShowErroGroup(false);\n return;\n }\n\n if (isMixed && !groupeCondition) {\n setShowErroGroup(true);\n }\n },\n },\n\n btn_reset: {\n title: Wording.button_reset,\n small: true,\n color: 'gray',\n onClick: () => {\n setCaseId('');\n setclientLastName('');\n setClientFirstName('');\n setRefExt('');\n setFrom(undefined);\n setTo(undefined);\n setCustomerPhone('');\n setCustomerEmail('');\n setCustomerSituation('');\n setCreatedBy('');\n setShowErroGroup(false);\n\n if (!isDisabledActionBtn) {\n setCustomerGroup('');\n }\n },\n },\n };\n\n const getHistoryCSVHeaders = (headersArray: [string]) => {\n const headers: Array<{ label: string; key: string }> = [];\n headersArray.map(header => {\n const newHeader = { label: '', key: '' };\n newHeader.label = header;\n newHeader.key = header;\n headers.push(newHeader);\n });\n return headers;\n };\n\n const getHistoryCSVData = (splittedData: string[]) => {\n const headers = splittedData[0].split(',');\n splittedData.shift();\n const data = splittedData.map(row => {\n const splittedRow = row.split(',');\n const newObject: any = {};\n splittedRow.map((elem, index) => {\n return (newObject[`${headers[index]}`] = elem);\n });\n return newObject;\n });\n return data;\n };\n\n const prepareHistoryDownload = async () => {\n casesExtractRequestDispatch(null);\n const rawData: any = await getCasesHistory();\n if (!rawData) {\n casesExtractFailureDispatch(null);\n setShowErrorModal(true);\n return null;\n }\n if (rawData instanceof RequestErrors.RequestError) {\n dispatchProps.casesExtractFailureDispatch(null);\n setShowErrorModal(true);\n return null;\n }\n const parsedData = JSON.parse(JSON.stringify(rawData));\n const splittedData = parsedData.data.split('\\n');\n\n const headers = getHistoryCSVHeaders(splittedData[0].split(','));\n const data = getHistoryCSVData(splittedData);\n\n setCSVData(data);\n setCSVHeaders(headers);\n if (csvLinkRef && csvLinkRef.current && csvLinkRef.current.link) {\n dispatchProps.casesExtractSuccessDispatch(null);\n csvLinkRef.current.link.click();\n }\n return { headers, data };\n };\n\n const className = 'custom-table__downloadLink';\n const filename = 'cases_history.csv';\n return (\n <div className=\"search-case-container\">\n <div className=\"search-case-container__container custom-size\">\n <div className=\"search-case-container__block\">\n <CustomInput {...elementMap.caseId} />\n <label>{Wording.from}</label>\n <CustomDate {...elementMap.from} />\n <Group {...elementMap.customerGroup} />\n {schemaProps.currentGroup === 'ADMIN' && (\n <div className={'download-button'}>\n <CustomButton\n title={\"Télécharger l'historique\"}\n color={'orange'}\n onClick={prepareHistoryDownload}\n />\n </div>\n )}\n </div>\n <div className=\"search-case-container__block\">\n <CustomInput {...elementMap.clientLastName} />\n <label>{Wording.to}</label>\n <CustomDate {...elementMap.to} />\n <CustomInput {...elementMap.createdBy} />\n </div>\n\n <div className=\"search-case-container__block\">\n <CustomInput {...elementMap.clientFirstName} />\n <CustomInput {...elementMap.customerPhone} />\n <CustomInput {...elementMap.customerEmail} />\n <div className=\"search-rs-vl-btn\">\n <CustomButton {...elementMap.btn_reset} />\n\n <CustomButton {...elementMap.btn_validate} />\n </div>\n <CSVLink\n ref={csvLinkRef as any}\n className={className}\n data={CSVData}\n filename={filename}\n separator={','}\n headers={CSVHeaders}\n asyncOnClick={true}\n ></CSVLink>\n <CustomModal show={showErrorModal}>\n <span\n className=\"btn-close\"\n onClick={() => {\n setShowErrorModal(false);\n }}\n >\n {'X'}\n </span>\n <div className=\"modal-response\">\n <p className=\"code\">\n {WordingConstant.Errors.default}\n </p>\n\n <p className=\"message\">Veuillez reessayer</p>\n <div className=\"search-rs-vl-btn\">\n <CustomButton\n title={'Fermer'}\n onClick={() => {\n setShowErrorModal(false);\n }}\n color={'orange'}\n />\n </div>\n </div>\n </CustomModal>\n </div>\n </div>\n </div>\n );\n};\n\nexport default connect(mapStateToProps, dispatchProps)(SearchCaseContainer);\n","import SearchCaseContainer from './SearchCaseContainer';\n\nexport default SearchCaseContainer;\n","import React from 'react';\nimport resources from '../../../utils/resources';\n\nexport type Props = {\n value?: string;\n onChange: any;\n allResultText: string;\n options: any[];\n};\n\nconst compareSortSelect = (a: any, b: any) =>\n a.label > b.label ? 1 : b.label > a.label ? -1 : 0;\n\nconst FilterSelect: React.FC<Props> = ({\n allResultText,\n value,\n onChange,\n options,\n}) => (\n <div className=\"filter-select\">\n <img src={resources['ic-filter-symbol']} alt=\"ic-filter-symbol\" />\n\n <select value={value} onChange={onChange}>\n <option value=\"all\">{allResultText}</option>\n {options\n .sort(compareSortSelect)\n .map(({ value, label }, index: number) => (\n <option key={index} value={value}>\n {label}\n </option>\n ))}\n </select>\n </div>\n);\n\nexport default FilterSelect;\n","import FilterSelect from './FilterSelect';\n\nexport default FilterSelect;\n","import React, { useState, useEffect } from 'react';\nimport { InputEvent, SelectOption, TSchemaProps } from 'Types';\nimport { TResponse } from 'Models';\n\nimport WordingConstant from '../../../utils/wording.json';\nimport {\n CustomInput,\n CustomButton,\n CustomSelect,\n CustomModal,\n CustomRadio,\n Group,\n} from '../../../components';\n\nimport {\n isValidName,\n isValidString,\n isValidEmail,\n isEmptySelectOption,\n getSelectOptionValue,\n formatFirstNameString,\n} from '../../../utils/helpers';\nimport { EResponseCode } from '../../../utils/enums';\nimport _ from 'lodash';\n\ninterface IPayloadUser {\n group: string;\n firstName: string;\n lastName: string;\n email: string;\n civility: string;\n userName?: string;\n}\n\nimport accents from 'remove-accents';\n\nconst Wording = WordingConstant.UserAdministrationResult;\n\ntype Props = {\n retryFirstPaymentResponse: TResponse;\n resetRetryFirstPaymentResponse: () => void;\n};\n\nfunction getFirstNameError(value: string): string {\n let error = '';\n if (!isValidString(value)) {\n error = Wording.CreateUserModal.errors.emptyField;\n } else if (!isValidName(value, true)) {\n error = Wording.CreateUserModal.errors.lastNameValidity;\n }\n return error;\n}\n\nfunction getLastNameError(value: string): string {\n let error = '';\n if (!isValidString(value)) {\n error = Wording.CreateUserModal.errors.emptyField;\n } else if (!isValidName(value, true)) {\n error = Wording.CreateUserModal.errors.lastNameValidity;\n }\n return error;\n}\n\nfunction getMailAddressError(value: string): string {\n let error = '';\n if (!isValidString(value)) {\n error = Wording.CreateUserModal.errors.emptyField;\n } else if (!isValidEmail(value)) {\n error = Wording.CreateUserModal.errors.mailAddressValidity;\n }\n return error;\n}\n\nfunction getCivilityError(value: string | SelectOption<any>): string {\n let error = '';\n if (!isEmptySelectOption(value)) {\n error = Wording.CreateUserModal.errors.emptyField;\n }\n return error;\n}\n\nfunction getGroupError(value: string | SelectOption<any>): string {\n let error = '';\n if (!isEmptySelectOption(value)) {\n error = Wording.CreateUserModal.errors.emptyField;\n }\n return error;\n}\n\nfunction getUserNameError(value: string): string {\n let error = '';\n if (!isValidString(value)) {\n error = Wording.CreateUserModal.errors.emptyField;\n } else if (!isValidName(value, true)) {\n error = Wording.CreateUserModal.errors.userNameValidity;\n }\n return error;\n}\n\nfunction getClientNumberError(value: string): string {\n let error = '';\n if (!isValidString(value)) {\n error = Wording.CreateUserModal.errors.clientNumberValidity;\n }\n return error;\n}\n\nconst RetryFirstPaymentModal: React.FC<Props> = ({\n retryFirstPaymentResponse,\n resetRetryFirstPaymentResponse,\n}) => {\n\n const { code, message } = retryFirstPaymentResponse;\n\n const elementMap = {\n\n btn_hide_modal: {\n title: Wording.hideModal,\n color: 'gray',\n small: true,\n onClick: () => {\n resetRetryFirstPaymentResponse();\n },\n },\n };\n\n const createUsermodalResponse = () => {\n const { code, message } = retryFirstPaymentResponse;\n\n return (\n <CustomModal\n show={code && message !== Wording.errorMessage ? true : false}\n >\n <span\n className=\"btn-close\"\n onClick={() => {\n resetRetryFirstPaymentResponse();\n }}\n >\n {'X'}\n </span>\n <div className=\"modal-response\">\n <p className=\"code\">\n {code === EResponseCode.SUCCESS\n ? Wording.CreateGroupModal.succesMessage\n : Wording.CreateGroupModal.failureMessage}\n </p>\n\n <p className=\"message\">{message}</p>\n\n <div className=\"search-rs-vl-btn\">\n <CustomButton {...elementMap.btn_hide_modal} />\n </div>\n </div>\n </CustomModal>\n );\n };\n\n return (\n <>\n {code &&\n message !== Wording.errorMessage &&\n createUsermodalResponse()}\n </>\n );\n};\n\nexport default RetryFirstPaymentModal;\n","import React, { Component } from 'react';\nimport { RootState, TSchemaProps } from 'Types';\nimport { connect } from 'react-redux';\nimport { BackgroundElement, CustomButton } from '../../../components';\nimport CustomTable from '../../../components/admin/CustomTable';\nimport WordingConstant from '../../../utils/wording.json';\nimport { TOrder, TResponse } from 'Models';\nimport {\n getHost,\n isEmpty,\n isHaveActionsPermission,\n getFormattedDate,\n} from '../../../utils/helpers';\nimport SubComponent from './SubComponent';\nimport _ from 'lodash';\nimport { resetGroupListResponse } from '../../../_actions/getGroup.actions';\nimport ErrorElement from '../../../components/ErrorElement';\nimport { withTriangle } from '../../../components/admin/CustomTable/CustomTable';\nimport Status from '../../../components/admin/Status';\nimport FilterSelect from '../../../components/admin/FilterSelect';\nimport MessageCollapse from '../../../components/admin/MessageCollapse';\nimport { EEnergy } from '../../../utils/enums';\nimport {\n TRetryPaymentPayload,\n retryFirstPayment,\n} from '../../../_actions/caseResult.action';\nimport RetryFirstPaymentModal from './RetryFirstPaymentModal';\nimport { saveOrder } from '../../../utils/network/request';\nimport { RequestError } from '../../../utils/network/errors';\n\nconst Wording = WordingConstant.Caseresult;\nconst WordingMapping = WordingConstant.mapping;\n\nconst mapStateToProps = (state: RootState) => ({\n authState: state.authReducer,\n errorMessage: state.orderReducer.message,\n});\n\nconst dispatchProps = { resetGroupListResponse };\n\ntype Props = {\n order: Array<{ channel: string; order: TOrder }>;\n schemaProps: TSchemaProps;\n resetGroupListResponse: () => void;\n getGroup: () => void;\n retryFirstPayment: (props: TRetryPaymentPayload) => void;\n retryFirstPaymentState: string;\n retryFirstPaymentResponse: TResponse;\n resetFirstPayment: any;\n} & ReturnType<typeof mapStateToProps> &\n typeof dispatchProps;\n\ntype State = {\n emailSubscriptionResent: boolean;\n message: string;\n orderNumber: string;\n};\n\nconst headers = [\n { label: 'Groupe', key: 'channel' },\n { label: 'N° de contrat', key: 'contractNumber' },\n { label: 'N° affaire', key: 'orderReference' },\n { label: 'code agent', key: 'createdBy' },\n { label: 'status', key: 'orderStatus' },\n { label: 'Paiement CB', key: 'firstPaymentCBStatus' },\n // { label: 'Code erreur', key: 'errorCode' },\n { label: 'Nom sociéte', key: 'companyName' },\n { label: 'Nom', key: 'lastName' },\n { label: 'Prénom', key: 'firstName' },\n { label: 'Mail', key: 'email' },\n { label: 'Rue', key: 'address.street' },\n { label: 'Ville', key: 'address.townName' },\n { label: 'Code postal', key: 'address.postalCode' },\n { label: 'N° téléphone', key: 'phone' },\n { label: 'Type de contrat', key: 'contractType' },\n { label: 'Date de soucription', key: 'subscriptionDate' },\n { label: 'Date théorique de contrat', key: 'effectiveStartDate' },\n { label: 'Situation', key: 'situation' },\n { label: 'Capacité', key: 'contractualCapacity' },\n { label: 'Puissance', key: 'contractualCapacityUnit' },\n { label: 'Catégorie Gaz', key: 'contractCategory' },\n];\n\nclass CaseResult extends Component<Props, State> {\n constructor(props: Props) {\n super(props);\n this.state = {\n emailSubscriptionResent: false,\n message: '',\n orderNumber: '',\n };\n }\n\n prepareColumns = (order: any) => {\n const { schemaProps } = this.props;\n const yourCondition = true;\n const selectedWording = yourCondition\n ? Wording.firstPaymentCBStatus\n : Wording.firstPaymentSlimCollectStatus;\n return [\n {\n Header: withTriangle(Wording.group),\n accessor: 'channel',\n\n filterMethod: (filter: any, row: any) => {\n return row.channel\n ? row.channel.includes(filter.value)\n : false;\n },\n },\n {\n Header: withTriangle(Wording.caseNbr),\n accessor: 'order.orderReference',\n filterable: false,\n },\n {\n Header: withTriangle(Wording.agentCode),\n accessor: 'order.createdBy',\n\n filterMethod: (filter: any, row: any) => {\n return row['order.createdBy']\n ? row['order.createdBy'].includes(filter.value)\n : false;\n },\n },\n {\n Header: withTriangle(Wording.souscriptionCode),\n accessor: 'order.contracts[0].subscriptionDate',\n Cell: ({ value }: any) => getFormattedDate(value),\n filterMethod: (filter: any, row: any) => {\n return row['order.contracts[0].subscriptionDate']\n ? row['order.contracts[0].subscriptionDate'].includes(\n filter.value,\n )\n : false;\n },\n },\n {\n Header: withTriangle(Wording.status),\n accessor: 'order.orderStatus',\n Cell: ({ value }: any) => {\n return value !== undefined && value !== '' ? (\n <Status status={value} type=\"orderStatus\" />\n ) : null;\n },\n\n filterMethod: (filter: any, row: any) => {\n if (filter.value === 'all') {\n return true;\n }\n return row['order.orderStatus'] === filter.value;\n },\n\n Filter: ({ filter, onChange }: any) => (\n <FilterSelect\n allResultText={'Tous'}\n onChange={(event: any) =>\n onChange(event.currentTarget.value)\n }\n value={filter ? filter.value : 'all'}\n options={WordingMapping.orderStatus}\n />\n ),\n },\n\n {\n Header: withTriangle(selectedWording),\n accessor: 'order',\n Cell: ({ value }: any) => {\n if (!value) {\n return null;\n }\n if (value.orderStatus !== 'FINALIZED') {\n return null;\n }\n if (value.customer.typePayment === 'SDD') {\n return <Status\n type={'paymentSDD'}\n status={'PAYMENT_SDD'}\n />\n }\n if (value.firstPaymentCBStatus) {\n return (\n <Status\n status={value.firstPaymentCBStatus}\n type={'firstPaymentCBStatus'}\n />\n );\n } else if (value.firstPaymentSlimCollectStatus) {\n return (\n <Status\n status={value.firstPaymentSlimCollectStatus}\n type={'firstPaymentSlimCollectStatus'}\n />\n );\n } else {\n return null;\n }\n },\n Filter: ({ filter, onChange }: any) => (\n <FilterSelect\n allResultText={'Tous'}\n onChange={(event: any) =>\n onChange(event.currentTarget.value)\n }\n value={filter ? filter.value : 'all'}\n options={WordingMapping.firstPaymentSlimCollectStatus}\n />\n ),\n },\n {\n Header: withTriangle(Wording.clientLastName),\n accessor: 'order.customer.contact.lastName',\n filterable: false,\n },\n {\n Header: withTriangle(Wording.clientFirstName),\n accessor: 'order.customer.contact.firstName',\n filterable: false,\n },\n // {\n // Header: withTriangle(Wording.address),\n // accessor: 'order.customer.contact.address',\n // filterable: false,\n // Cell: ({ value }: any) => {\n // return value !== undefined ? (\n // <MessageCollapse\n // initialLength={12}\n // message={`${value.street} ${value.postalCode} ${value.townName}`}\n // />\n // ) : null;\n // },\n // },\n {\n Header: withTriangle(Wording.clientPhoneNbr),\n accessor: 'order.customer.contact.phone',\n filterable: false,\n },\n {\n accessor: 'voir client',\n filterable: false,\n show: isHaveActionsPermission(schemaProps),\n width: 95,\n Cell: ({ original }: any) => (\n <CustomButton\n color={'black'}\n title={Wording.seeCustomer}\n onClick={() => {\n const orderNumber: string | undefined = _.get(\n original as TOrder,\n 'order.orderReference',\n );\n if (!!orderNumber) {\n const host = getHost(\n new Map([['orderNumber', orderNumber]]),\n ['case'],\n );\n window.open(host);\n }\n }}\n />\n ),\n },\n {\n Header: Wording.sendActivationTitle,\n filterable: false,\n filterMethod: (filter: any, row: any) => {\n this.hasFailedPayment(row);\n return row['order.firstPaymentCBStatus']\n ? row['order.firstPaymentCBStatus'].includes(\n filter.value,\n )\n : false;\n },\n width: 150,\n Cell: ({ original }: any) => {\n if (\n original.order.orderStatus === 'IN_PROGRESS' ||\n original.order.orderStatus === 'IN_FAILURE'\n ) {\n return (\n <>\n <CustomButton\n color={'black'}\n title={Wording.sendFinalizeOrder}\n onClick={async () => {\n const res = await saveOrder(\n original.channel,\n original.order,\n );\n if (res instanceof RequestError) {\n this.setState({\n message: res.message,\n emailSubscriptionResent: true,\n orderNumber:\n original.order\n .orderReference,\n });\n setTimeout(() => {\n this.setState({\n emailSubscriptionResent: false,\n });\n }, 10000);\n } else {\n this.setState({\n message: `mail envoyé de nouveau`,\n emailSubscriptionResent: true,\n orderNumber: res.orderNumber,\n });\n setTimeout(() => {\n this.setState({\n emailSubscriptionResent: false,\n });\n }, 10000);\n }\n }}\n />\n <br />\n {this.state.emailSubscriptionResent &&\n this.state.orderNumber ===\n original.order.orderReference && (\n <span\n style={{\n fontSize: '10px',\n wordWrap: 'normal',\n whiteSpace: 'normal',\n }}\n >\n {this.state.message}\n </span>\n )}\n </>\n );\n }\n if (\n original.order.orderStatus === 'FINALIZED' ||\n original.order.orderStatus === 'FINALIZED_WITHOUT_DOC'\n ) {\n if (!this.hasFailedPayment(original.order)) {\n return null;\n }\n if(original.order.customer.typePayment === 'SDD') {\n return null;\n }\n return (\n <CustomButton\n color={'black'}\n title={Wording.sendActivation}\n onClick={() => {\n const orderNumber:\n | string\n | undefined = _.get(\n original as TOrder,\n 'order.orderReference',\n );\n if (!!orderNumber) {\n const payload: TRetryPaymentPayload = {\n customerNbr: orderNumber,\n mode: 'EMAIL',\n };\n this.props.retryFirstPayment(payload);\n }\n }}\n />\n );\n }\n return null;\n },\n },\n ];\n };\n\n hasFailedPayment(order: any) {\n if (order) {\n if (\n !order.firstPaymentSlimCollectStatus &&\n !order.firstPaymentCBStatus\n ) {\n return false;\n }\n if (\n order.firstPaymentCBStatus === 'FINALIZED' ||\n order.firstPaymentSlimCollectStatus === 'FINALIZED'\n ) {\n return false;\n }\n if (\n order.firstPaymentCBStatus === 'PENDING' ||\n order.firstPaymentCBStatus === 'IN_FAILURE' ||\n order.firstPaymentCBStatus === 'IN_PROGRESS' ||\n order.firstPaymentSlimCollectStatus === 'IN_FAILURE' ||\n order.firstPaymentSlimCollectStatus === 'PENDING'\n ) {\n return true;\n }\n }\n return false;\n }\n\n prepareOrderToDownloadCSV = () => {\n const { order } = this.props;\n\n const parseEnergy = (energy: any) => (energy === 'EL' ? 'Elec' : 'Gaz');\n\n return order\n .map(({ channel, order }) => {\n const {\n contracts,\n customer: {\n contact: {\n companyName,\n firstName,\n lastName,\n address,\n phone,\n email,\n },\n },\n orderError,\n orderReference,\n orderStatus,\n createdBy,\n firstPaymentCBStatus,\n } = order;\n\n const prepare = {\n channel,\n orderReference,\n createdBy,\n orderStatus,\n firstPaymentCBStatus,\n companyName,\n firstName,\n lastName,\n address,\n phone,\n email,\n };\n\n if (!contracts) {\n return prepare;\n }\n\n return contracts.map(contract => {\n const {\n contractNumber,\n energy,\n subscriptionDate,\n effectiveStartDate,\n deliveryPoint: {\n process: { type: situation },\n contractualCapacity,\n contractualCapacityUnit,\n },\n contractCategory,\n } = contract;\n\n const contractType =\n energy === 'EL' ? 'Electricité' : 'Gaz';\n\n return {\n ...prepare,\n contractType,\n subscriptionDate,\n effectiveStartDate,\n situation,\n contractualCapacity,\n contractualCapacityUnit,\n contractCategory,\n contractNumber,\n };\n });\n })\n .flat();\n };\n\n downloadDataTable = () => {\n const { schemaProps } = this.props;\n return isHaveActionsPermission(schemaProps)\n ? {\n downloadData: this.prepareOrderToDownloadCSV(),\n downloadHeaders: headers,\n downloadButtonTitle: 'TÉLÉCHARGER CSV',\n downloadFilename: 'customer-contracts.csv',\n }\n : {};\n };\n\n render() {\n const { order } = this.props;\n return (\n <div className=\"search-case-result-container search-case-result-container__custom-table-size\">\n <ErrorElement error={this.props.errorMessage} />\n\n {isEmpty(order) && (\n <BackgroundElement>\n <CustomTable\n columns={this.prepareColumns(this.props.order)}\n data={order}\n className=\"-striped -highlight\"\n showPagination={true}\n filterable={true}\n SubComponent={({ original, index }: any) => (\n <SubComponent index={index} order={original} />\n )}\n {...this.downloadDataTable()}\n />\n </BackgroundElement>\n )}\n <RetryFirstPaymentModal\n retryFirstPaymentResponse={\n this.props.retryFirstPaymentResponse\n }\n resetRetryFirstPaymentResponse={\n this.props.resetFirstPayment\n }\n />\n </div>\n );\n }\n}\n\nexport default connect(mapStateToProps, dispatchProps)(CaseResult);\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { RootState, TSchemaProps } from 'Types';\nimport SearchCaseContainer from '../../../containers/admin/SearchCaseContainer';\nimport CaseResult from '../../../containers/admin/SearchCaseContainer/CaseResult';\nimport { fetchOrderAsync } from '../../../_actions/searchOrder.actions';\nimport { getGroupAsync } from '../../../_actions/getGroup.actions';\nimport {\n caseResultRetryFirstPaymentAsync,\n retryFirstPayment,\n} from '../../../_actions/caseResult.action';\nimport { isUserLimitedBySchema } from '../../../utils/helpers';\nimport { EMenuLabels, ESubMenuCaseLabel } from '../../../utils/enums';\n\nconst mapStateToProps = (state: RootState) => ({\n orderState: state.orderReducer.order,\n retryFirstPaymentState: state.retryFirstPaymentReducer.message,\n retryFirstPaymentResponse:\n state.retryFirstPaymentReducer.retryFirstPaymentResponse,\n groupListState: state.userGroupReducer.groupList,\n groupe: state.authReducer.groupe,\n schema: state.authReducer.autorizationsScheme,\n userId: state.authReducer.userId,\n});\n\nconst dispatchProps = {\n fetchOrderAsynDispatch: fetchOrderAsync.request,\n getGroupAsyncDispatch: getGroupAsync.request,\n getRetryFirstPaymentAsyncDispatch: caseResultRetryFirstPaymentAsync.request,\n retryFirstPayment,\n};\n\ntype Props = {\n schemaProps: TSchemaProps;\n} & ReturnType<typeof mapStateToProps> &\n typeof dispatchProps;\n\nconst CasesPage: React.FC<Props> = ({\n fetchOrderAsynDispatch,\n orderState,\n groupListState,\n getGroupAsyncDispatch,\n retryFirstPaymentState,\n retryFirstPaymentResponse,\n retryFirstPayment,\n schemaProps,\n userId,\n schema,\n getRetryFirstPaymentAsyncDispatch,\n}) => {\n const userLimited = isUserLimitedBySchema(\n EMenuLabels.CASE,\n ESubMenuCaseLabel.SEARCH_CASE,\n schema,\n );\n\n return (\n <div>\n <SearchCaseContainer\n fetchOrder={fetchOrderAsynDispatch}\n groupList={groupListState}\n userLimited={userLimited}\n userId={userId}\n schemaProps={schemaProps}\n />\n\n <CaseResult\n schemaProps={schemaProps}\n order={orderState as any}\n getGroup={getGroupAsyncDispatch}\n retryFirstPayment={getRetryFirstPaymentAsyncDispatch}\n retryFirstPaymentState={retryFirstPaymentState}\n retryFirstPaymentResponse={retryFirstPaymentResponse}\n resetFirstPayment={retryFirstPayment}\n />\n </div>\n );\n};\n\nexport default connect(mapStateToProps, dispatchProps)(CasesPage);\n","import CasesPage from './CasesPage';\n\nexport default CasesPage;\n","import React, { useState } from 'react';\nimport map from 'lodash/map';\nimport { InputEvent, TSchemaProps } from 'Types';\nimport { TResponse } from 'Models';\nimport WordingConstant from '../../../utils/wording.json';\nimport {\n CustomInput,\n CustomButton,\n CustomModal,\n CustomSelect,\n CustomRadio,\n Group,\n AuthorizationSchemaGroup,\n} from '../../../components';\nimport {\n isValidString,\n formatGroupString,\n formatGroupNameString,\n isFullAuthorization,\n getInitialGroup,\n getAllInitialGroups,\n} from '../../../utils/helpers';\nimport { EResponseCode, EGroups } from '../../../utils/enums';\nimport keys from 'lodash/keys';\nimport {\n TAuthorizationSchema,\n TGroupPayload,\n} from '../../../_actions/createGroup.actions';\n\nconst Wording = WordingConstant.UserAdministrationResult;\ntype ErrorTypeState = 'GROUP' | 'SUB_GROUP' | 'MENU' | 'SUB_MENU';\n\ntype Props = {\n isOpen: boolean;\n schemaProps: TSchemaProps;\n setOpen: (value: boolean) => void;\n createGroup: (prop: TGroupPayload) => void;\n createGroupResponse: TResponse;\n groupList: string[];\n\n resetGroupResponse: () => void;\n};\n\nfunction getGroupNameError(value: string): string {\n let error = '';\n if (!isValidString(value)) {\n error = Wording.CreateGroupModal.errors.emptyField;\n }\n return error;\n}\n\nconst getSchemaSubMenuError = (schema?: any[]) => {\n let error = '';\n\n if (schema) {\n const validationError = schema.reduce(\n (acc, curr) => acc && curr.subMenu.length > 0,\n true,\n );\n\n if (!validationError) {\n error = Wording.CreateGroupModal.errors.subMenuError;\n }\n }\n\n return error;\n};\n\nconst CreateGroupModal: React.FC<Props> = ({\n isOpen,\n setOpen,\n createGroup,\n createGroupResponse,\n groupList,\n schemaProps,\n resetGroupResponse,\n}) => {\n const isLimitedGroup = schemaProps.groupMode === EGroups.LIMITED;\n\n const [groupName, setGroupName] = useState<string>(\n isLimitedGroup ? getInitialGroup(schemaProps.currentGroup) : '',\n );\n const [subGroup, setSubGroup] = useState<string>('');\n const [errorsState, setErrorState] = useState<any>({});\n const [authorisationType, setType] = useState<boolean>(false);\n const [authorizationSchema, setSchema] = useState<\n undefined | TAuthorizationSchema[]\n >(undefined);\n\n const { code, message } = createGroupResponse;\n\n const setError = (type: ErrorTypeState, errorMessage: string) =>\n setErrorState({ ...errorsState, [type]: errorMessage });\n\n const renderFinalGroup = () =>\n subGroup !== '' ? `${groupName}_${subGroup}` : groupName;\n\n const manageErrors = () => {\n const prepareObject: any = {};\n\n const groupNameErr = getGroupNameError(groupName);\n const subGroupErr =\n isLimitedGroup && subGroup === ''\n ? Wording.CreateGroupModal.errors.emptySubGroup\n : '';\n\n const menuSchemaError =\n authorisationType && authorizationSchema === undefined\n ? Wording.CreateGroupModal.errors.menuError\n : '';\n const subMenuSchemaError = getSchemaSubMenuError(authorizationSchema);\n\n let isValidMenu = true;\n\n if (groupNameErr !== '') {\n prepareObject.GROUP = groupNameErr;\n }\n\n if (subGroupErr !== '') {\n prepareObject.SUB_GROUP = subGroupErr;\n }\n\n if (menuSchemaError !== '') {\n prepareObject.MENU = menuSchemaError;\n isValidMenu = false;\n }\n\n if (subMenuSchemaError !== '' && isValidMenu) {\n prepareObject.SUB_MENU = subMenuSchemaError;\n }\n\n setErrorState(prepareObject);\n\n return keys(prepareObject).length === 0;\n };\n\n const handleCloseModal = () => {\n if (isLimitedGroup) {\n setSubGroup('');\n } else {\n setSubGroup('');\n setGroupName('');\n }\n setErrorState(undefined);\n setOpen(false);\n setSchema(undefined);\n };\n\n const elementMap = {\n subGroup: {\n text: '',\n value: subGroup,\n onInputChange: (e: InputEvent) => {\n setSubGroup(e.currentTarget.value.toUpperCase());\n },\n error: errorsState ? errorsState.SUB_GROUP : undefined,\n },\n btn_validate: {\n title: Wording.btnValidate,\n color: 'gray',\n small: true,\n onClick: () => {\n const gn = renderFinalGroup();\n\n const createGroupCondition = manageErrors();\n\n if (createGroupCondition) {\n createGroup({\n group: gn.trim(),\n autorizationsScheme: authorisationType\n ? (authorizationSchema as TAuthorizationSchema[])\n : undefined,\n });\n handleCloseModal();\n }\n },\n },\n\n btn_reset: {\n title: Wording.buttonReset,\n color: 'orange',\n small: true,\n onClick: () => {\n handleCloseModal();\n },\n },\n\n btn_hide_modal: {\n title: Wording.hideModal,\n color: 'orange',\n small: true,\n onClick: () => {\n handleCloseModal();\n resetGroupResponse();\n },\n },\n };\n\n const createGroupModalResponse = () => {\n const { code, message } = createGroupResponse;\n return (\n <CustomModal show={true}>\n <span\n className=\"btn-close\"\n onClick={() => {\n handleCloseModal();\n resetGroupResponse();\n }}\n >\n {'X'}\n </span>\n <div className=\"modal-response\">\n <p className=\"code\">\n {code === EResponseCode.SUCCESS\n ? Wording.CreateGroupModal.succesMessage\n : Wording.CreateGroupModal.failureMessage}\n </p>\n\n <p className=\"message\">{message}</p>\n\n <div className=\"search-rs-vl-btn\">\n <CustomButton {...elementMap.btn_hide_modal} />\n </div>\n </div>\n </CustomModal>\n );\n };\n const isFull = isFullAuthorization(schemaProps);\n\n const renderAuthorizationSchema = () =>\n isFull && (\n <>\n <p className=\"title\">\n {Wording.CreateGroupModal.authtorisationTitle}\n </p>\n <div className=\"radio-buttons\">\n <CustomRadio\n text={'Par défaut'}\n value={'default'}\n id={'default'}\n checked={!authorisationType}\n handleCheck={() => {\n setType(!authorisationType);\n }}\n />\n\n <CustomRadio\n text={'Spécifique'}\n value={'specific'}\n id={'specific'}\n checked={authorisationType}\n handleCheck={() => {\n setType(!authorisationType);\n }}\n />\n </div>\n\n {authorisationType && (\n <AuthorizationSchemaGroup\n getAuthorizationSchema={setSchema}\n />\n )}\n </>\n );\n\n const renderErrors = () => {\n const errs: string[] = [];\n keys(errorsState).forEach(key => {\n if (key !== 'GROUP' && key !== 'SUB_GROUP') {\n errs.push(errorsState[key]);\n }\n });\n\n return (\n <>\n {errs.map((err, idx) => (\n <p key={idx} className=\"create-group-error\">\n {err}\n </p>\n ))}\n </>\n );\n };\n\n const renderSubGroup = () =>\n schemaProps.subGroupMode === EGroups.FULL && (\n <>\n <p>{Wording.CreateGroupModal.addSubGroup}</p>\n <CustomInput {...elementMap.subGroup} />\n </>\n );\n\n const renderTitleSelect = () =>\n isFull\n ? Wording.CreateGroupModal.addorselectGroup\n : Wording.CreateGroupModal.selectGroup;\n\n const fullName = renderFinalGroup();\n\n return (\n <div>\n <CustomModal\n customStyle={{\n height: authorisationType ? '90%' : '60%',\n width: authorisationType ? '65%' : '50%',\n zIndex: 1005,\n overflow: 'auto',\n }}\n className=\"create-group-modal\"\n show={isOpen}\n >\n <span\n className=\"btn-close\"\n onClick={() => {\n setOpen(false);\n }}\n >\n {'X'}\n </span>\n <div className=\"create-group-modal__content\">\n <p className=\"title\">{Wording.CreateGroupModal.title}</p>\n\n <div className=\"create-group-modal__content__group-selection\">\n <div>\n <p>{renderTitleSelect()}</p>\n <CustomSelect\n options={getAllInitialGroups(groupList)}\n placeholder=\" \"\n onInputChange={(value: string) =>\n value.toUpperCase()\n }\n handleChangeSelect={(props: any) => {\n if (props && props.value) {\n setGroupName(props.value.toUpperCase());\n }\n if (props === null) {\n setGroupName('');\n }\n }}\n isClearable={isFull}\n error={\n errorsState ? errorsState.GROUP : undefined\n }\n defaultValue={groupName}\n value={groupName}\n disabled={isLimitedGroup}\n />\n </div>\n\n <div>{renderSubGroup()}</div>\n </div>\n\n {fullName && <p>Votre groupe: {fullName}</p>}\n\n {renderAuthorizationSchema()}\n {renderErrors()}\n\n <div className=\"create-group-modal__content__buttons\">\n <CustomButton {...elementMap.btn_reset} />\n <CustomButton {...elementMap.btn_validate} />\n </div>\n </div>\n </CustomModal>\n {code &&\n message !== Wording.errorMessage &&\n createGroupModalResponse()}\n </div>\n );\n};\n\nexport default CreateGroupModal;\n","import React, { useState } from 'react';\nimport { InputEvent, SelectOption, TSchemaProps } from 'Types';\nimport WordingConstant from '../../../utils/wording.json';\nimport {\n CustomInput,\n CustomButton,\n CustomSelect,\n Group,\n} from '../../../components';\nimport { TUserPayload } from '../../../_actions/searchUserGroup.actions';\nimport {\n getSelectOptionValue,\n isLimitedAuthorization,\n} from '../../../utils/helpers';\nimport CreateUserModal from '../UserAdministrationContainer/CreateUserModal';\nimport CreateGroupModal from '../UserAdministrationContainer/CreateGroupModal';\nimport { TResponse } from 'Models';\n\nimport _ from 'lodash';\nimport { TGroupPayload } from '../../../_actions/createGroup.actions';\n\nconst Wording = WordingConstant.UserAdministrationContainer;\n\nconst statusOption: Array<SelectOption<string>> = [\n { id: '0', label: 'Actif', value: 'ENABLED' },\n { id: '1', label: 'Inactif', value: 'DISABLED' },\n];\ninterface IPayloadUser {\n group: string;\n firstName: string;\n lastName: string;\n email: string;\n civility: string;\n}\ntype Props = {\n schemaProps: TSchemaProps;\n groupList: string[];\n createGroupResponse: TResponse;\n createUserResponse: TResponse;\n currentUser?: any;\n checkCreateGroupPermission: boolean;\n checkCreateUserPermission: boolean;\n resetGroupResponse: () => void;\n resetCreateUserResponse: () => void;\n createGroup: (props: TGroupPayload) => void;\n createUser: (props: IPayloadUser) => void;\n resetAdminClientSpaceResponse: () => void;\n searchUserGroup: (props: TUserPayload) => void;\n};\n\nconst UserAdministrationContainer: React.FC<Props> = ({\n searchUserGroup,\n groupList,\n checkCreateGroupPermission,\n checkCreateUserPermission,\n createUser,\n createGroupResponse,\n createUserResponse,\n resetGroupResponse,\n resetCreateUserResponse,\n createGroup,\n currentUser,\n schemaProps,\n}) => {\n const isDisabledActionBtn = isLimitedAuthorization(schemaProps);\n\n const defaultGroup = isDisabledActionBtn\n ? {\n id: 0,\n label: schemaProps.currentGroup,\n value: schemaProps.currentGroup,\n }\n : '';\n\n const [groupId, setGroupId] = useState<string | SelectOption<string>>(\n defaultGroup,\n );\n const [userId, setUserId] = useState<string>('');\n const [clientLastName, setclientLastName] = useState<string>('');\n const [clientFirstName, setClientFirstName] = useState<string>('');\n const [customerPhone, setCustomerPhone] = useState<string>('');\n const [customerEmail, setCustomerEmail] = useState<string>('');\n const [status, setStatus] = useState<'' | SelectOption<string>>('');\n const [openUserModal, setUserModal] = useState<boolean>(false);\n const [openGroupModal, setGroupModal] = useState<boolean>(false);\n const [isLocked, setLocked] = useState<boolean>(!isDisabledActionBtn);\n\n const searchCondition =\n groupId !== '' ||\n userId !== '' ||\n clientFirstName !== '' ||\n clientLastName !== '' ||\n customerEmail !== '' ||\n status !== '' ||\n customerPhone !== '';\n const elementMap = {\n groupId: {\n id: 'groupe',\n options: _.map(groupList, (group: string, id: number) => ({\n id,\n label: group,\n value: group,\n })),\n handleChangeSelect: (situation: SelectOption<string>) => {\n setLocked(false);\n setGroupId(situation);\n },\n value: groupId,\n text: Wording.group,\n schemaProps,\n },\n customerPhone: {\n text: Wording.clientPhoneNbr,\n value: customerPhone,\n onInputChange: (e: InputEvent) =>\n setCustomerPhone(e.currentTarget.value),\n deleteButton: true,\n deleteButtonOnClick: () => setCustomerPhone(''),\n },\n\n userId: {\n text: Wording.userId,\n value: userId,\n onInputChange: (e: InputEvent) => setUserId(e.currentTarget.value),\n deleteButton: true,\n deleteButtonOnClick: () => setUserId(''),\n },\n customerEmail: {\n text: Wording.clientEmail,\n value: customerEmail,\n onInputChange: (e: InputEvent) =>\n setCustomerEmail(e.currentTarget.value),\n deleteButton: true,\n deleteButtonOnClick: () => setCustomerEmail(''),\n },\n\n clientFirstName: {\n text: Wording.clientFirstName,\n value: clientFirstName,\n onInputChange: (e: InputEvent) =>\n setClientFirstName(e.currentTarget.value),\n deleteButton: true,\n deleteButtonOnClick: () => setClientFirstName(''),\n isLocked,\n },\n\n clientLastName: {\n text: Wording.clientLastName,\n value: clientLastName,\n onInputChange: (e: InputEvent) =>\n setclientLastName(e.currentTarget.value),\n deleteButton: true,\n deleteButtonOnClick: () => setclientLastName(''),\n isLocked,\n },\n\n status: {\n id: 'statut',\n defaultValue: '',\n options: statusOption,\n handleChangeSelect: (status: SelectOption<string>) => {\n setStatus(status);\n },\n value: status,\n placeholder: 'Sélectionner',\n text: Wording.status,\n },\n\n btn_validate: {\n title: Wording.btnValidate,\n color: searchCondition ? 'orange' : 'gray',\n small: true,\n onClick: () => {\n if (searchCondition) {\n searchUserGroup({\n userName: userId.trim(),\n email: customerEmail.trim(),\n firstName: clientFirstName.trim(),\n lastName: clientLastName.trim(),\n group: getSelectOptionValue(\n groupId as SelectOption<string>,\n ),\n userStatus: getSelectOptionValue(\n status as SelectOption<string>,\n ),\n });\n }\n },\n },\n\n btn_reset: {\n title: Wording.buttonReset,\n small: true,\n color: 'gray',\n onClick: () => {\n setGroupId('');\n setUserId('');\n setclientLastName('');\n setClientFirstName('');\n setCustomerPhone('');\n setCustomerEmail('');\n setStatus('');\n setLocked(true);\n },\n },\n\n btn_create_group: {\n title: Wording.createGroup,\n small: true,\n color: 'orange',\n disabled: checkCreateGroupPermission,\n onClick: () => {\n setGroupModal(true);\n },\n },\n\n btn_create_user: {\n title: Wording.createUser,\n disabled: checkCreateUserPermission,\n small: true,\n color: 'orange',\n onClick: () => {\n setUserModal(true);\n },\n },\n };\n\n return (\n <div className=\"user-administration-container\">\n <div className=\"search-rs-vl-btn actions-btns\">\n <CustomButton {...elementMap.btn_create_group} />\n <CustomButton {...elementMap.btn_create_user} />\n </div>\n\n <div className=\"user-administration-container__container\">\n <div className=\"user-administration-container__container__row\">\n <div className=\"user-administration-container__container__row__block\">\n <CustomInput {...elementMap.userId} />\n <Group {...elementMap.groupId} />\n </div>\n\n <div className=\"user-administration-container__container__row__block\">\n <CustomSelect {...elementMap.status} />\n <CustomInput {...elementMap.clientFirstName} />\n <p className=\"search-group-text\">\n {\n 'La recherche par Prénom ou Nom nécessite de sélectionner au préalable un groupe'\n }\n </p>\n </div>\n\n <div className=\"user-administration-container__container__row__block\">\n <CustomInput {...elementMap.customerEmail} />\n <CustomInput {...elementMap.clientLastName} />\n </div>\n </div>\n\n <div className=\"search-rs-vl-btn \">\n <CustomButton {...elementMap.btn_reset} />\n <CustomButton {...elementMap.btn_validate} />\n </div>\n </div>\n\n <CreateUserModal\n currentUser={currentUser}\n isCustomerAndContract={false}\n isOpen={openUserModal}\n setOpen={setUserModal}\n groupList={groupList}\n schemaProps={schemaProps}\n createUser={createUser}\n createUserResponse={createUserResponse}\n resetCreateUserResponse={resetCreateUserResponse}\n />\n\n <CreateGroupModal\n isOpen={openGroupModal}\n setOpen={setGroupModal}\n schemaProps={schemaProps}\n createGroup={createGroup}\n groupList={groupList}\n createGroupResponse={createGroupResponse}\n resetGroupResponse={resetGroupResponse}\n />\n </div>\n );\n};\n\nexport default UserAdministrationContainer;\n","import React from 'react';\nimport { RootState, TSchemaProps } from 'Types';\nimport { connect } from 'react-redux';\nimport { BackgroundElement } from '../../../components';\nimport CustomTable from '../../../components/admin/CustomTable';\nimport WordingConstant from '../../../utils/wording.json';\nimport { isEmpty, getImgSrcByUserStatus } from '../../../utils/helpers';\nimport { TUser, TResponse } from 'Models';\nimport resources from '../../../utils/resources';\nimport RemoveUserButton from './RemoveUserButton';\nimport EnableOrDesableuserButton from './EnableOrDesableUserButton';\nimport _ from 'lodash';\nimport ErrorElement from '../../../components/ErrorElement';\nimport { resetManageUserResponse } from '../../../_actions/manageUser.actions';\nimport OutsideClickClass from '../../../libraries/OutsideClickClass';\nimport { withTriangle } from '../../../components/admin/CustomTable/CustomTable';\n\ninterface IPayloadManageUser {\n mode: string;\n firstName: string;\n lastName: string;\n userName: string;\n}\n\nconst Wording = WordingConstant.UserAdministrationResult;\nconst EMPTY_RESPONSE = 'EMPTY_RESPONSE';\n\nconst mapStateToProps = (state: RootState) => ({});\n\nconst dispatchProps = {\n resetManageUserResponse,\n};\n\ntype Props = {\n setOpen?: (value: boolean) => void;\n setOpenGroupModal?: (value: boolean) => void;\n userList: TUser[];\n manageUserResponse: TResponse;\n resetResponse: () => void;\n getGroup: () => void;\n groupList: string[];\n manageUser: (props: IPayloadManageUser) => void;\n setAdminSuccessModal: (props: boolean) => void;\n resetAdminClientSpaceResponse: () => void;\n isAdminSpace: boolean;\n checkUderAdministrationResultPermission: boolean;\n} & ReturnType<typeof mapStateToProps> &\n typeof dispatchProps;\n\ntype State = {\n isOpen: boolean;\n openGroupModal: boolean;\n showPopUp: boolean;\n currentItem: number;\n};\n\nclass UserAdministrationResult extends React.Component<Props, State> {\n constructor(props: Props) {\n super(props);\n this.state = {\n isOpen: false,\n openGroupModal: false,\n showPopUp: false,\n currentItem: -1,\n };\n }\n\n /*componentDidMount() {\n this.props.getGroup();\n }*/\n prepareColumns = () => {\n const { checkUderAdministrationResultPermission } = this.props;\n\n return [\n {\n Header: withTriangle(Wording.group),\n accessor: 'group',\n filterable: false,\n },\n {\n Header: withTriangle(Wording.userId),\n accessor: 'userName',\n filterable: false,\n },\n {\n Header: withTriangle(Wording.clientFirstName),\n accessor: 'firstName',\n filterable: false,\n },\n\n {\n Header: withTriangle(Wording.clientLastName),\n accessor: 'lastName',\n filterable: false,\n },\n {\n Header: withTriangle(Wording.clientEmail),\n accessor: 'email',\n filterable: false,\n },\n {\n Header: withTriangle(Wording.status),\n accessor: 'userStatus',\n filterable: false,\n width: 110,\n Cell: ({ value }: any) =>\n value !== undefined && value !== '' ? (\n <img src={getImgSrcByUserStatus(value)} alt=\"\" />\n ) : null,\n },\n {\n Header: '',\n accessor: '',\n show: checkUderAdministrationResultPermission,\n filterable: false,\n width: 40,\n Cell: (original: any) => {\n return (\n <div>\n <img\n className=\"menu-style\"\n src={resources['ic-menu-orange']}\n alt=\"ic-menu\"\n onClick={() => {\n this.handleshowPopUp(original.viewIndex);\n }}\n />\n\n {this.state.showPopUp &&\n this.state.currentItem ===\n original.viewIndex && (\n <OutsideClickClass\n callback={() =>\n this.setState({\n showPopUp: false,\n })\n }\n >\n <div className=\"pop-up\">\n <RemoveUserButton\n setAdminSuccessModal={\n this.props\n .setAdminSuccessModal\n }\n original={original}\n manageUser={\n this.props.manageUser\n }\n resetAdminClientSpaceResponse={\n this.props\n .resetAdminClientSpaceResponse\n }\n resetManageUserResponse={\n this.props\n .resetManageUserResponse\n }\n manageUserResponse={\n this.props\n .manageUserResponse\n }\n isAdminSpace={false}\n />\n\n <EnableOrDesableuserButton\n status={_.get(\n original.original,\n 'userStatus',\n '',\n )}\n original={original}\n manageUser={\n this.props.manageUser\n }\n manageUserResponse={\n this.props\n .manageUserResponse\n }\n setAdminSuccessModal={\n this.props\n .setAdminSuccessModal\n }\n isAdminSpace={false}\n resetManageUserResponse={\n this.props\n .resetManageUserResponse\n }\n resetAdminClientSpaceResponse={\n this.props\n .resetAdminClientSpaceResponse\n }\n />\n </div>\n </OutsideClickClass>\n )}\n </div>\n );\n },\n },\n ];\n };\n\n setOpen = (value: boolean) => {\n this.setState({ isOpen: value });\n };\n setOpenGroupModal = (value: boolean) => {\n this.setState({ openGroupModal: value });\n };\n handleshowPopUp = (original: number) => {\n this.setState({\n showPopUp: !this.state.showPopUp,\n currentItem: original,\n });\n };\n\n downloadDataTable = () => {\n const {\n userList,\n checkUderAdministrationResultPermission,\n } = this.props;\n\n return checkUderAdministrationResultPermission\n ? {\n downloadData: userList,\n downloadButtonTitle: 'TÉLÉCHARGER CSV',\n downloadFilename: 'list-users.csv',\n }\n : {};\n };\n\n render() {\n const { userList } = this.props;\n const { message, code } = this.props.manageUserResponse;\n return (\n <div className=\"user-administration-result\">\n {isEmpty(userList) && (\n <BackgroundElement>\n <CustomTable\n columns={this.prepareColumns()}\n data={userList}\n className=\"-striped -highlight\"\n showPagination={true}\n filterable={false}\n {...this.downloadDataTable()}\n />\n </BackgroundElement>\n )}\n {message && code === EMPTY_RESPONSE && (\n <ErrorElement error={message} />\n )}\n </div>\n );\n }\n}\n\nexport default connect(\n mapStateToProps,\n dispatchProps,\n)(UserAdministrationResult);\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { RootState, TSchemaProps } from 'Types';\nimport UserAdministrationContainer from '../../../containers/admin/UserAdministrationContainer/UserAdministrationContainer';\nimport UserAdministrationResult from '../../../containers/admin/UserAdministrationContainer/UserAdministrationResult';\nimport { searchUserGroupAsync } from '../../../_actions/searchUserGroup.actions';\nimport {\n createUserAsync,\n resetCreateUserResponse,\n} from '../../../_actions/createUser.actions';\nimport {\n createGroupAsync,\n resetGroupResponse,\n} from '../../../_actions/createGroup.actions';\nimport { getGroupAsync } from '../../../_actions/getGroup.actions';\nimport { manageUserAsync } from '../../../_actions/manageUser.actions';\n\nimport {\n isHaveActionsPermissionBySchema,\n isLimitedAuthorizationBySchema,\n} from '../../../utils/helpers';\nimport { EMenuLabels, ESubMenuAdministrationLabel } from '../../../utils/enums';\n\nconst mapStateToProps = (state: RootState) => ({\n userGroupState: state.userGroupReducer.userList,\n groupListState: state.userGroupReducer.groupList,\n manageUserState: state.userGroupReducer.createUserResponse,\n manageGroupState: state.userGroupReducer.createGroupResponse,\n searchState: state.userGroupReducer.manageUserResponse,\n autorizationsScheme: state.authReducer.autorizationsScheme,\n});\n\nconst dispatchProps = {\n searchUserGroupAsyncDispatch: searchUserGroupAsync.request,\n createGroupAsyncDispatch: createGroupAsync.request,\n resetGroupResponse,\n resetCreateUserResponse,\n getGroupAsyncDispatch: getGroupAsync.request,\n createUserAsyncDispatch: createUserAsync.request,\n manageUserAsyncDispatch: manageUserAsync.request,\n};\n\ntype Props = {\n setAdminSuccessModal: (props: boolean) => void;\n resetAdminClientSpaceResponse: () => void;\n isAdminSpace: boolean;\n schemaProps: TSchemaProps;\n} & ReturnType<typeof mapStateToProps> &\n typeof dispatchProps;\n\nconst UserAdministrationPage: React.FC<Props> = ({\n searchUserGroupAsyncDispatch,\n userGroupState,\n createGroupAsyncDispatch,\n resetGroupResponse,\n resetCreateUserResponse,\n getGroupAsyncDispatch,\n groupListState,\n createUserAsyncDispatch,\n manageUserAsyncDispatch,\n manageUserState,\n setAdminSuccessModal,\n resetAdminClientSpaceResponse,\n manageGroupState,\n searchState,\n isAdminSpace,\n schemaProps,\n autorizationsScheme,\n}) => {\n const checkUderAdministrationResultPermission = isHaveActionsPermissionBySchema(\n EMenuLabels.ADMINISTRATION,\n ESubMenuAdministrationLabel.MANAGE_USERS,\n autorizationsScheme,\n );\n\n const checkCreateGroupPermission = isLimitedAuthorizationBySchema(\n EMenuLabels.ADMINISTRATION,\n ESubMenuAdministrationLabel.CREATE_GROUP,\n autorizationsScheme,\n );\n\n const checkCreateUserPermission = isLimitedAuthorizationBySchema(\n EMenuLabels.ADMINISTRATION,\n ESubMenuAdministrationLabel.CREATE_USER,\n autorizationsScheme,\n );\n\n return (\n <div>\n <UserAdministrationContainer\n searchUserGroup={searchUserGroupAsyncDispatch}\n groupList={groupListState}\n schemaProps={schemaProps}\n createUser={createUserAsyncDispatch}\n createUserResponse={manageUserState}\n createGroupResponse={manageGroupState}\n resetGroupResponse={resetGroupResponse}\n checkCreateGroupPermission={checkCreateGroupPermission}\n checkCreateUserPermission={checkCreateUserPermission}\n createGroup={createGroupAsyncDispatch}\n resetCreateUserResponse={resetCreateUserResponse}\n resetAdminClientSpaceResponse={resetAdminClientSpaceResponse}\n />\n\n <UserAdministrationResult\n setAdminSuccessModal={setAdminSuccessModal}\n userList={userGroupState}\n checkUderAdministrationResultPermission={\n checkUderAdministrationResultPermission\n }\n resetResponse={resetGroupResponse}\n getGroup={getGroupAsyncDispatch}\n groupList={groupListState}\n manageUser={manageUserAsyncDispatch}\n manageUserResponse={searchState}\n resetAdminClientSpaceResponse={resetAdminClientSpaceResponse}\n isAdminSpace={isAdminSpace}\n />\n </div>\n );\n};\n\nexport default connect(mapStateToProps, dispatchProps)(UserAdministrationPage);\n","import UserAdministrationPage from './UserAdministrationPage';\n\nexport default UserAdministrationPage;\n","import React from 'react';\nimport { Route, Redirect, Switch } from 'react-router-dom';\nimport { connect } from 'react-redux';\n\nimport { RootState, RouteProps, SubRouteProps, TSchemaProps } from 'Types';\nimport { SideBar, Footer } from '../../components';\nimport { resetReduxStore } from '../../_actions/auth.actions';\nimport withLoader from '../../libraries/withLoader';\nimport AuthService from '../../services/auth-service';\nimport { TScheme } from 'Models';\n\nimport AdminHomePage from '../admin/AdminHomePage';\nimport AdminSubscriptionPage from '../admin/AdminSubscriptionPage';\nimport NotFoundPage from '../defaults/NotFoundPage';\nimport CustomerContractPage from '../admin/CustomerContractPage';\nimport CasesPage from '../admin/CasesPage';\nimport UserAdministrationPage from '../admin/UserAdministrationPage';\nimport _ from 'lodash';\n\ntype ContentProps = {\n autorizationsScheme: TScheme[];\n group: string;\n};\n\nfunction getComponent(root: string): any {\n switch (root) {\n case 'userAdmin':\n return UserAdministrationPage;\n case 'customerContract':\n return CustomerContractPage;\n case 'case':\n return AdminSubscriptionPage;\n case 'searchCase':\n return CasesPage;\n\n default:\n return NotFoundPage;\n }\n}\n\nfunction routingMap(props: ContentProps): RouteProps[] {\n const routes = props.autorizationsScheme!.map(category => {\n return {\n title: category.label!,\n path: '/',\n links: [\n ..._.uniqBy(category.subMenu, 'root').map(\n ({ root, label, ...schemaProps }) => {\n return {\n path: root,\n sidebar: () => <div>{label}</div>,\n main: getComponent(root),\n title: label,\n schemaProps: {\n ...schemaProps,\n currentGroup: props.group,\n },\n };\n },\n ),\n\n {\n path: '/',\n sidebar: () => <div>Home</div>,\n main: AdminHomePage,\n title: 'Home',\n schemaProps: {},\n } as any,\n ],\n };\n });\n\n return routes;\n}\n\nconst Content: React.FC<ContentProps> = (props: ContentProps) => {\n return (\n <div className=\"content\" id=\"content-admin\">\n <Switch>\n {routingMap(props).map((route: RouteProps | any) =>\n route.links.map(\n (subRoute: SubRouteProps, index: number) => {\n const Component: React.ComponentType<{\n schemaProps: TSchemaProps | undefined;\n }> = subRoute.main;\n return (\n <Route\n key={index}\n path={route.path + subRoute.path}\n exact\n // component={subRoute.main}\n >\n <Component\n schemaProps={subRoute.schemaProps}\n />\n </Route>\n );\n },\n ),\n )}\n </Switch>\n </div>\n );\n};\n\nconst WrappedContent = withLoader()(Content);\n\nconst mapStateToProps = (state: RootState) => ({\n authState: state.authReducer,\n profileState: state.profileReducer,\n});\n\nconst dispatchProps = {\n resetReduxStoreDispatch: resetReduxStore,\n};\n\ntype Props = ReturnType<typeof mapStateToProps> & typeof dispatchProps;\n\nclass Main extends React.PureComponent<Props, {}> {\n render() {\n const {\n profileState: { contact, customerNumber },\n authState: {\n loading,\n unauthorized,\n autorizationsScheme,\n userId,\n groupe,\n },\n resetReduxStoreDispatch,\n }: Props = this.props;\n\n const routes = autorizationsScheme.map(category => {\n return {\n title: category.label,\n path: '/',\n links: category.subMenu!.map(\n ({ root, label, ...schemaProps }) => {\n return {\n path: root,\n sidebar: () => <div>{label}</div>,\n main: () => getComponent(root) as JSX.Element,\n title: label,\n schemaProps: {\n ...schemaProps,\n currentGroup: groupe || '',\n },\n };\n },\n ),\n };\n });\n const props = {\n routes,\n firstName: contact.customerFullName.firstName,\n lastName: contact.customerFullName.lastName,\n customerNbr: customerNumber,\n userId,\n groupe,\n isAdmin: true,\n handleLogout: () => resetReduxStoreDispatch(),\n };\n const isSignIn = AuthService.isAuthenticated();\n if (!isSignIn) {\n return <Redirect to={{ pathname: '/login' }} />;\n }\n return (\n <div className=\"main-page\">\n <div className=\"main-page__content\">\n <SideBar {...props} />\n <WrappedContent\n autorizationsScheme={autorizationsScheme}\n group={groupe || ''}\n loading={loading}\n unauthorized={unauthorized}\n handleCloseModal={() => {\n AuthService.logout();\n props.handleLogout();\n }}\n />\n </div>\n <Footer />\n </div>\n );\n }\n}\n\nexport default connect(mapStateToProps, dispatchProps)(Main);\n","import React from 'react';\nimport { TContract, TContact } from 'Models';\nimport { ECustomerType } from '../utils/enums';\nimport { Banner, Modal } from '../components';\n\nimport WordingConstant from '../utils/wording.json';\n\nconst CommonWording = WordingConstant.Common;\n\nexport type ExternalProps = {\n title?: string;\n bannerError?: string;\n contracts: TContract[];\n contact: TContact;\n customerType: ECustomerType;\n selectedContractNumber: string;\n handleChangeBanner: (contractNumber: string) => void;\n handleCloseModalBanner?: () => void;\n};\n\nexport type InjectedProps = {\n clickCount?: number;\n};\n\ntype Options = {\n debug?: boolean;\n};\n\nconst withBanner = ({ debug = false }: Options = {}) => <OwnProps extends {}>(\n WrappedComponent: React.ComponentType<OwnProps & InjectedProps>,\n) => {\n type HocProps = OwnProps & ExternalProps;\n\n return class extends React.Component<HocProps, {}> {\n handleChange = (contractNumber: string) => {\n const { handleChangeBanner } = this.props;\n handleChangeBanner(contractNumber);\n };\n\n render() {\n const {\n contracts,\n contact,\n customerType,\n title,\n selectedContractNumber,\n handleCloseModalBanner,\n bannerError,\n } = this.props;\n const contract =\n contracts.find(\n (c: TContract) =>\n c.contractNumber === selectedContractNumber,\n ) || contracts[0];\n return (\n <div className=\"banner-container\">\n {title && (\n <h1 className=\"banner-container__title\">{title}</h1>\n )}\n\n <Modal\n show={bannerError !== undefined}\n title={CommonWording.contractError.title}\n description={CommonWording.contractError.description}\n state={1}\n handleCancel={handleCloseModalBanner}\n />\n\n <Banner\n currentContract={contract}\n contracts={contracts}\n contact={contact}\n customerType={customerType}\n handleChange={this.handleChange}\n />\n <WrappedComponent {...this.props} />\n </div>\n );\n }\n };\n};\n\nexport default withBanner;\n","import ArticleVideoContainer from './ArticleVideoContainer';\n\nexport default ArticleVideoContainer;\n","import React from 'react';\n\nimport { CustomModal } from '../../components';\nimport { getFormattedDate, getYoutubeId } from '../../utils/helpers';\n\ntype LinkItem = {\n link: string;\n title: string;\n date?: string;\n};\n\ntype Props = {\n articles: LinkItem[];\n videos: LinkItem[];\n};\n\ntype State = {\n showModal: boolean;\n videoId: string;\n title: string;\n};\nclass ArticleVideoContainer extends React.Component<Props, State> {\n state = {\n showModal: false,\n videoId: '',\n title: '',\n };\n\n displayVideo = () => {\n const { showModal, videoId, title } = this.state;\n\n if (!showModal) {\n return null;\n }\n\n return (\n <CustomModal\n show={showModal}\n handleClick={() => this.handleShowModal('', '')}\n >\n <iframe\n src={`https://www.youtube.com/embed/${videoId}?autoplay=1`}\n frameBorder=\"0\"\n allowFullScreen\n title={title}\n width=\"100%\"\n height=\"100%\"\n />\n </CustomModal>\n );\n };\n\n stopVideo = () => {\n const iframe = document.querySelector('iframe');\n const video = document.querySelector('video');\n if (iframe !== null) {\n const iframeSrc = iframe.src;\n iframe.src = iframeSrc;\n }\n if (video !== null) {\n video.pause();\n }\n };\n\n handleShowModal = (videoId: string, title: string) => {\n const { showModal } = this.state;\n this.setState({ showModal: !showModal, videoId, title });\n if (showModal) {\n this.stopVideo();\n }\n };\n\n render() {\n const { articles, videos } = this.props;\n\n return (\n <div className=\"article-video-container\">\n {this.displayVideo()}\n <div className=\"article-video-container__videos\">\n {videos.map((item: LinkItem, index: number) => {\n const videoId = getYoutubeId(item.link);\n return (\n <div\n key={index}\n className=\"article-video-container__videos__section\"\n >\n <div\n className=\"article-video-container__videos__section__iframe\"\n role=\"button\"\n onClick={() =>\n this.handleShowModal(\n videoId,\n item.title,\n )\n }\n >\n <img\n src={`https://img.youtube.com/vi/${videoId}/0.jpg`}\n width=\"100%\"\n height=\"100%\"\n />\n </div>\n <p>{item.title}</p>\n </div>\n );\n })}\n </div>\n <div className=\"article-video-container__articles\">\n {articles.map((item: LinkItem, index: number) => {\n return (\n <div\n key={index}\n className=\"article-video-container__articles__section\"\n >\n <a\n href={item.link}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {item.title}\n </a>\n <p>le {getFormattedDate(item.date || '')}</p>\n </div>\n );\n })}\n </div>\n </div>\n );\n }\n}\n\nexport default ArticleVideoContainer;\n","import React from 'react';\n\nimport { TPiece, TInvoice, TPrepayment, TAdhoc, TEPInvoice } from 'Models';\n\nimport { getFormattedDate, findNextAndLastPieces } from '../../utils/helpers';\nimport WordingConstant from '../../utils/wording.json';\n\nconst Wording = WordingConstant.PaymentStatusContainer;\n\ntype Props = {\n pieces: TEPInvoice[];\n};\n\nconst PaymentStatusContainer: React.FC<Props> = ({ pieces }) => {\n if (pieces && pieces.length === 0) {\n return null;\n }\n const data = findNextAndLastPieces(pieces);\n\n return (\n <div className=\"payment-status-container\">\n <div className=\"payment-status-container__block\">\n <p>{Wording.lastPayment}</p>\n <div className=\"payment-status-container__block__data\">\n {data && data.last ? (\n <React.Fragment>\n <h3>{`${(data.last as TEPInvoice).amount ||\n (data.last as TEPInvoice).amount} €`}</h3>\n <p className=\"payment-status-container__block__data__date\">\n le {data.last.date}\n </p>\n </React.Fragment>\n ) : (\n <p className=\"payment-status-container__block__data__none\">\n {Wording.noneData}\n </p>\n )}\n </div>\n </div>\n <div className=\"payment-status-container__block\">\n <p>{Wording.nextPayment}</p>\n <div className=\"payment-status-container__block__data\">\n {data && data.next ? (\n <React.Fragment>\n <h3>{`${data.next.amount} €`}</h3>\n <p className=\"payment-status-container__block__data__date\">{`le ${getFormattedDate(\n data.next.date,\n )}`}</p>\n </React.Fragment>\n ) : (\n <p className=\"payment-status-container__block__data__none\">\n {Wording.noneData}\n </p>\n )}\n </div>\n </div>\n </div>\n );\n};\n\nexport default PaymentStatusContainer;\n","import PaymentStatusContainer from './PaymentStatusContainer';\n\nexport default PaymentStatusContainer;\n","import React, { useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { RootState } from 'Types';\nimport WordingConstant from '../../utils/wording.json';\n\nimport Icon from '../../assets/icons/ic-wekiwi-popup-orange.png';\n\nconst Wording = WordingConstant.PaymentCBModal;\n\nimport { LoadingSpinner } from '../../libraries/withLoader';\nimport { CustomButton, CustomModal } from '../../components';\nimport {\n createPaymentCBAsync,\n resetModal,\n} from '../../_actions/paymentCB.actions';\nimport { TEPInvoice } from 'Models';\nimport StripeContainer from '../StripeFormContainer/StripeFormContainer';\nimport { fetchFilesListAsync } from '../../_actions/file.actions';\n\ntype PaymentCBModalProps = {\n targetPiece?: TEPInvoice;\n show: boolean;\n closeModal: () => void;\n};\n\n/**\n * stepIframeLoad => 0 -> mount / 1 -> display iframe / 2 -> finish modal\n */\n\nconst PaymentCBModal: React.FC<PaymentCBModalProps> = ({\n targetPiece,\n show,\n closeModal,\n}: PaymentCBModalProps) => {\n const dispatch = useDispatch();\n const [stripeState, setStripeState] = useState({ err: '', success: false });\n const { error } = useSelector((state: RootState) => ({\n error: state.paymentCBReducer.error,\n }));\n\n const { stripe, selectedContractNumber, customerNumber } = useSelector(\n (state: RootState) => ({\n stripe: state.paymentCBReducer.stripe,\n selectedContractNumber:\n state.contractReducer.selectedContractNumber,\n customerNumber: state.profileReducer.customerNumber,\n }),\n );\n\n const handleClose = () => {\n dispatch(resetModal());\n closeModal();\n dispatch(\n fetchFilesListAsync.request({\n contractNbr: selectedContractNumber,\n customerNbr: customerNumber,\n mode: 'PAYMENT',\n }),\n );\n };\n\n const handleRetry = () => {\n if (targetPiece) {\n dispatch(resetModal());\n setStripeState({ err: '', success: false });\n dispatch(\n createPaymentCBAsync.request({\n dueDate: new Date().toString(),\n payment: targetPiece,\n }),\n );\n }\n };\n\n const renderError = (err: string) => (\n <div className=\"payment-cb-modal__error\">\n <img\n src={Icon}\n alt=\"error-icon\"\n style={{ width: '6rem', height: '6rem' }}\n />\n\n <p>{err}</p>\n <div className=\"errorContainer\"></div>\n <CustomButton\n color={'orange'}\n onClick={handleRetry}\n title={Wording.retry}\n />\n </div>\n );\n\n const renderSuccess = () => (\n <div className=\"payment-cb-modal__success\">\n <img\n src={Icon}\n alt=\"success-icon\"\n style={{ width: '6rem', height: '6rem' }}\n />\n <p>{Wording.financialPieces.success}</p>\n <CustomButton\n color={'orange'}\n onClick={handleClose}\n title={Wording.button_validate}\n />\n </div>\n );\n\n const renderStripe = () => (\n <StripeContainer\n stripeInformations={stripe!}\n handleClose={handleClose}\n onFormValidate={(success, err) => {\n if (success) setStripeState({ err: '', success: true });\n else setStripeState({ err: err!, success: false });\n }}\n />\n );\n\n const renderContent = () => {\n if (!stripe && !error) {\n return (\n <div className=\"payment-cb-modal__loading\">\n <LoadingSpinner />\n </div>\n );\n }\n if (error || stripeState.err) {\n return renderError(error ? error : stripeState.err);\n }\n\n if (stripeState.success) {\n return renderSuccess();\n }\n\n return renderStripe();\n };\n\n return (\n <CustomModal\n className=\"payment-cb-modal\"\n showCloseButton\n show={show}\n handleClick={handleClose}\n >\n <div>\n <h3>{Wording.title}</h3>\n\n {renderContent()}\n </div>\n </CustomModal>\n );\n};\n\nexport default PaymentCBModal;\n","import PaymentCBModal from './PaymentCBModal';\n\nexport default PaymentCBModal;\n","import React, { useState } from 'react';\nimport { TContract, TEPInvoice } from 'Models';\n\nimport { CustomButton, CustomDayPicker } from '../../components';\nimport { isWeekend } from '../../utils/helpers';\nimport WordingConstant from '../../utils/wording.json';\n\nimport PaymentCBModal from '../PaymentCBModal';\nimport { useDispatch } from 'react-redux';\nimport { createPaymentCBAsync } from '../../_actions/paymentCB.actions';\n\nconst Wording = WordingConstant.FailPieceContainer;\n\nexport type ChangePiece = {\n piece: TEPInvoice;\n dueDate: string;\n};\n\nexport type BaseProps = {\n handleChangeFailPiece: (piece: TEPInvoice, dueDate: string) => void;\n handleShowModal: (section: string) => void;\n};\n\ntype FailPieceProps = {\n piece: TEPInvoice;\n handleOpenModal: (piece: TEPInvoice, dueDate: string) => void;\n} & BaseProps;\n\nconst DISABLED = [\n { before: new Date(new Date().setDate(new Date().getDate() + 1)) },\n { after: new Date(new Date().setDate(new Date().getDate() + 15)) },\n {\n daysOfWeek: [0, 6],\n },\n];\n\nexport const FailPiece = ({\n piece,\n handleChangeFailPiece,\n handleShowModal,\n handleOpenModal,\n}: FailPieceProps) => {\n const [calendarOpen, setCalendarOpen] = useState<boolean>(false);\n const [selectedDay, setSelectedDay] = useState<any>(undefined);\n\n const handleChangeDay = (date: Date) => {\n if (date.toLocaleDateString() < new Date(new Date().setDate(new Date().getDate() + 1)).toLocaleDateString() && date.toLocaleDateString() > new Date(new Date().setDate(new Date().getDate() + 15)).toLocaleDateString()) {\n return;\n }\n if (date.getTime() > new Date().getTime() && !isWeekend(date)) {\n setSelectedDay(date);\n }\n handleChangeFailPiece(piece, date.toLocaleDateString());\n };\n\n return (\n <div className=\"fail-piece-container\">\n <div className=\"fail-piece-container__title\">\n <span className=\"fail-piece-container__title__exclamation-point\">\n !\n </span>\n <p>\n Votre prélèvement {piece.communication} du {piece.date} d’un{' '}\n montant de {piece.amount}€ a été refusé\n </p>\n </div>\n\n <p>{Wording.title2}</p>\n\n {(calendarOpen && (\n <div className=\"fail-piece-container__calendar\">\n <CustomDayPicker\n dateHighlighted={selectedDay}\n handleChangeDay={handleChangeDay}\n disabledDays={DISABLED}\n />\n\n <CustomButton\n color=\"gray\"\n title={Wording.buttonClose}\n onClick={() => setCalendarOpen(false)}\n />\n <CustomButton\n color={selectedDay !== undefined ? 'orange' : 'gray'}\n title={Wording.buttonSave}\n onClick={\n selectedDay !== undefined\n ? () => handleShowModal('')\n : () => {}\n }\n />\n </div>\n )) || (\n <div>\n {\n // piece.enableDirectDebit && (\n <CustomButton\n color=\"orange\"\n title={Wording.buttonChoice}\n onClick={() => setCalendarOpen(true)}\n />\n // )\n }\n {\n // piece.enableDebitCard && (\n <CustomButton\n color=\"orange\"\n title={Wording.buttonPaymentCB}\n onClick={() => handleOpenModal(piece, '')}\n />\n // )\n }\n </div>\n )}\n </div>\n );\n};\n\nexport type ContainerProps = BaseProps & {\n pieces: TEPInvoice[];\n customerNumber: string;\n contract: TContract;\n};\n\ntype FailPieceType = {\n piece: TEPInvoice;\n enableDebitCard: boolean;\n enableDirectDebit: boolean;\n};\n\nconst FailPieceContainer = ({\n pieces,\n handleChangeFailPiece,\n handleShowModal,\n}: ContainerProps) => {\n const dispatch = useDispatch();\n const [targetPiece, setTargetPiece] = useState<TEPInvoice>();\n const [isModalOpen, setIsModalOpen] = useState(false);\n\n const handleCreatePaymentCB = (piece: TEPInvoice) => {\n setIsModalOpen(true);\n setTargetPiece(piece);\n dispatch(\n createPaymentCBAsync.request({\n dueDate: new Date().toString(),\n payment: piece,\n }),\n );\n };\n\n if (pieces && pieces.length > 0) {\n const failPieces: FailPieceType[] = [];\n pieces.forEach((p: TEPInvoice) => {\n // ('sent-cancelled' || 'sent-rejected') status payment déclenchant l'affichage de l'encart de paiement\n if (p.status !== 'sent-cancelled') {\n return;\n } else {\n if (\n (p.replacing_payment_count &&\n parseInt(p.replacing_payment_count, 10) > 0) ||\n (p.energy_paid_number_replays &&\n parseInt(p.energy_paid_number_replays, 10) > 0)\n ) {\n return;\n }\n }\n const enableDebitCard: boolean = true;\n const enableDirectDebit: boolean = true;\n\n if (p && (enableDebitCard || enableDirectDebit)) {\n failPieces.push({\n piece: p,\n enableDirectDebit,\n enableDebitCard,\n });\n }\n });\n\n return (\n <>\n {failPieces && failPieces.length > 0 && (\n <h2>{Wording.incidentPaymentText}</h2>\n )}\n {failPieces.map((fp: FailPieceType, index: number) => {\n return (\n <FailPiece\n key={index}\n piece={fp.piece}\n handleChangeFailPiece={handleChangeFailPiece}\n handleShowModal={handleShowModal}\n handleOpenModal={handleCreatePaymentCB}\n />\n );\n })}\n\n <PaymentCBModal\n closeModal={() => setIsModalOpen(false)}\n show={isModalOpen}\n targetPiece={targetPiece}\n />\n </>\n );\n }\n return null;\n};\n\nexport default FailPieceContainer;\n","import React from 'react';\nimport { CustomModal } from '../../components';\nimport WordingConstant from '../../utils/wording.json';\nimport resources from '../../utils/resources';\n\nconst Wording = WordingConstant.ConsumptionPage.SelfWithdrawalModal;\n\ntype Props = {\n energy: 'EL' | 'NG';\n open: boolean;\n handleModal: () => void;\n};\n\nconst SelfWithdrawalModal: React.FC<Props> = ({\n open,\n handleModal,\n energy,\n}) => {\n const WordingCounters = Wording.counters[energy];\n const WordingData = Wording.data[energy];\n const WordingBottom = Wording.bottom[energy];\n\n const imgSrc =\n energy === 'EL'\n ? resources['ic-elec-counters']\n : resources['ic-gas-counters'];\n\n const span = (i: number) => (\n <span className={i === 0 ? 'first-span' : ''}>{i + 1}.</span>\n );\n\n if (!open) {\n return null;\n }\n return (\n <CustomModal\n className=\"self-withdrawal-modal\"\n show={open}\n showCloseButton\n handleClick={handleModal}\n >\n <>\n <h3 className=\"self-withdrawal-modal__title\">\n {Wording.titles[energy]}\n </h3>\n\n <div className=\"self-withdrawal-modal__counters\">\n <p>{WordingCounters.title}</p>\n\n <ul>\n {WordingCounters.list.map((p, i) => (\n <li key={i}>\n {span(i)}\n {p}\n </li>\n ))}\n </ul>\n\n <img src={imgSrc} alt=\"counters\" />\n </div>\n\n <div className=\"self-withdrawal-modal__data\">\n <ul>\n {WordingData.map(({ title, list }, iMain) => (\n <li key={iMain}>\n <p>\n {span(iMain)} {title}\n </p>\n <ul>\n {list.map((t, idx) => (\n <li key={idx}>{t}</li>\n ))}\n </ul>\n </li>\n ))}\n </ul>\n </div>\n\n <div className=\"self-withdrawal-modal__bottom\">\n <p>\n {WordingBottom.main}{' '}\n <a href={WordingBottom.link}>\n {WordingBottom.linkText}\n </a>{' '}\n {WordingBottom.end}\n </p>\n </div>\n </>\n </CustomModal>\n );\n};\n\nexport default SelfWithdrawalModal;\n","import React, { useState } from 'react';\n\nimport { InputEvent } from 'Types';\nimport {\n CustomTable,\n CustomTransfer,\n CustomProgressbar,\n StackedBar,\n Pagination,\n} from '../../components';\nimport { InputItem } from '../../components/CustomTransfer/CustomTransfer';\nimport {\n getFormattedDate,\n displayTimeframe,\n getEnergyConsumption,\n getEnergyPercentage,\n getConsumptionDownloadData,\n sortMeters,\n} from '../../utils/helpers';\nimport resources from '../../utils/resources';\nimport { TMeterRead, TContract } from 'Models';\nimport { ETimeframe, EReadingFrequency } from '../../utils/enums';\n\nimport WordingConstant from '../../utils/wording.json';\nimport SelfWithdrawalModal from './SelfWithdrawalModal';\n\nconst Wording = WordingConstant.ConsumptionPage;\nconst HeaderWording = WordingConstant.TableHeader.consumption;\n\nconst columns = [\n {\n Header: HeaderWording.date,\n accessor: 'meterReadDate',\n Cell: (props: any) => <span>{getFormattedDate(props.value)}</span>,\n width: 100,\n },\n {\n Header: HeaderWording.context,\n accessor: 'consumptionContext',\n width: 230,\n },\n {\n Header: HeaderWording.startDate,\n accessor: 'startDate',\n Cell: (props: any) => <span>{getFormattedDate(props.value)}</span>,\n width: 160,\n },\n {\n Header: HeaderWording.endDate,\n accessor: 'endDate',\n Cell: (props: any) => <span>{getFormattedDate(props.value)}</span>,\n width: 160,\n },\n {\n Header: HeaderWording.quantity,\n accessor: 'quantity',\n Cell: (props: any) => <span>{props.value}</span>,\n width: 180,\n },\n {\n Header: HeaderWording.timeframe,\n accessor: 'timeframe',\n Cell: (props: any) => <span>{props.value}</span>,\n width: 170,\n },\n];\n\nexport type Props = {\n meters: TMeterRead[];\n inputs: InputItem[];\n contract: TContract;\n errorMeterConfig?: string;\n errorMeterReading?: string;\n handleInputError(): boolean;\n handleInputChange(e: InputEvent, index: number): void;\n handleShowModal(section: string): void;\n};\n\ntype MeterConsumption = {\n index: number;\n consumption: number;\n timeframe: ETimeframe;\n};\n\nconst renderSubComponent = (meters: MeterConsumption[]) => {\n return (\n <div className=\"consumption-container__subtable\">\n {meters.map((m: MeterConsumption, index: number) => (\n <div\n key={index}\n className=\"consumption-container__subtable__row\"\n >\n <span className=\"consumption-container__subtable__row__date\" />\n <span className=\"consumption-container__subtable__row__context\" />\n <span className=\"consumption-container__subtable__row__startDate\" />\n <span className=\"consumption-container__subtable__row__startDate\" />\n <span className=\"consumption-container__subtable__row__consumption\">\n {m.consumption}\n </span>\n <span className=\"consumption-container__subtable__row__timeframe\">\n {displayTimeframe(m.timeframe)}\n </span>\n </div>\n ))}\n </div>\n );\n};\n\n/**\n * Function to render last month consumption in percentage\n * compared to current month package quantity\n * Formula : consumption / package\n * The last month is the month which appears as the latest endDate\n * and is always displayed at the last bar ====> month = 11\n *\n * This graph is displayed only if readingFrequency = MONTHLY\n * @param contract The current contract\n * @param consumptions The consumption list within 12 months\n * @param packages The package quantity list within 12 months\n */\nconst renderProgressBar = (\n contract: TContract,\n consumptions: number[],\n packages: number[],\n) => {\n if (contract.deliveryPoint.readingFrequency !== EReadingFrequency.MONTHLY) {\n return null;\n }\n const progress = getEnergyPercentage(consumptions, packages, 11);\n const energyPath =\n contract.energy === 'EL'\n ? resources['ic-elec-on']\n : resources['ic-gas-on'];\n return (\n <CustomProgressbar\n steps={100}\n progress={progress}\n pathImg={energyPath}\n />\n );\n};\n\n/**\n * FC to render the plotted graph\n * packages: we calculate the data list according to the chosen packages\n * consumptions: the calculation is based on startDate and endDate in meterReads\n * 1st case: only 1 package in contract ===> 12 months share the same quantity\n * 2nd case: 2 packages in contract ===> winter 5 months (November-March) and summer 7 months (April-October)\n * @param contract The current contract\n * @param meters List of meter response\n * @param showProgressBar Display the last month consumption in percentage\n */\ntype GraphProps = {\n contract: TContract;\n meters: TMeterRead[];\n showProgressBar: boolean;\n};\n\nexport const Graph = React.memo(\n ({ contract, meters, showProgressBar }: GraphProps) => {\n const nextMeters = sortMeters(meters);\n\n const energyConsumption = getEnergyConsumption(\n nextMeters,\n contract.chosenPackages,\n );\n const consumptions = energyConsumption.consumptions.map(x =>\n Math.round(x),\n );\n\n const highs = energyConsumption.highs.map(x => Math.round(x));\n const lows = energyConsumption.lows.map(x => Math.round(x));\n const totalhours = energyConsumption.totalhours.map(x => Math.round(x));\n const labels = energyConsumption.labels;\n const packages = energyConsumption.packages;\n\n if (nextMeters.length === 0) {\n return null;\n }\n\n return (\n <>\n <StackedBar\n packages={packages}\n consumptions={consumptions}\n highs={highs}\n lows={lows}\n totalhours={totalhours}\n labels={labels}\n />\n {showProgressBar &&\n renderProgressBar(contract, consumptions, packages)}\n </>\n );\n },\n);\n\nconst ConsumptionContainer: React.FC<Props> = ({\n meters,\n inputs,\n contract,\n errorMeterConfig,\n errorMeterReading,\n handleInputError,\n handleInputChange,\n handleShowModal,\n}) => {\n const [isOpen, setOpen] = useState(false);\n const handleModal = () => setOpen(v => !v);\n\n const description = `${Wording.autoTransfer.description1} ${\n inputs[0].maxLength\n } ${\n Wording.autoTransfer[\n `description2-${contract.energy}` as\n | 'description2-NG'\n | 'description2-EL'\n ]\n }`;\n\n const downloadData = getConsumptionDownloadData(meters);\n const downloadFileName = Wording.history.downloadFilename;\n const downloadHeaders = Wording.history.downloadHeaders;\n const showPagination = meters.length > 12;\n\n return (\n <div className=\"consumption-container\">\n <Graph contract={contract} meters={meters} showProgressBar={true} />\n\n <CustomTransfer\n title={Wording.autoTransfer.title}\n modalTitle={\n Wording.SelfWithdrawalModal.titles[\n contract.energy as 'EL' | 'NG'\n ]\n }\n description={description}\n buttonTitle={Wording.autoTransfer.buttonTitle}\n inputs={inputs}\n handleInputChange={handleInputChange}\n handleButtonClick={() => {\n if (handleInputError()) {\n handleShowModal('');\n }\n }}\n error={errorMeterConfig}\n handleModal={handleModal}\n />\n <CustomTable\n data={meters}\n columns={columns}\n defaultPageSize={12}\n pageSize={meters.length}\n sortable={true}\n showPagination={showPagination}\n showPaginationBottom={showPagination}\n title={Wording.history.title}\n downloadButtonTitle={\n meters.length > 0 ? Wording.history.buttonTitle : undefined\n }\n downloadHeaders={downloadHeaders}\n downloadData={downloadData}\n downloadFilename={downloadFileName}\n noDataText={Wording.noDataText}\n error={errorMeterReading}\n className={meters.length > 0 ? '-striped' : ''}\n PaginationComponent={showPagination ? Pagination : undefined}\n SubComponent={(row: any) => {\n return renderSubComponent(meters[row.index].meterRead);\n }}\n />\n\n <SelfWithdrawalModal\n open={isOpen}\n handleModal={handleModal}\n energy={contract.energy}\n />\n </div>\n );\n};\n\nexport default ConsumptionContainer;\n","import React from 'react';\n\nimport ArticleVideoContainer from '../../containers/ArticleVideoContainer';\nimport PaymentStatusContainer from '../../containers/PaymentStatusContainer';\nimport { TimelineStatus } from '../../components';\nimport FailPieceContainer, {\n ContainerProps,\n} from '../FailPieceContainer/FailPieceContainer';\nimport articles from '../../assets/articles.json';\nimport WordingConstant from '../../utils/wording.json';\nimport { TMeterRead, TContract, TAdhoc, TEPInvoice } from 'Models';\nimport { Graph } from '../ConsumptionContainer/ConsumptionContainer';\nimport {\n ECustomerType,\n EPAYInvoiceStatus,\n EPieceType,\n} from '../../utils/enums';\nimport { controlPieces } from '../../utils/helpers/payment-functions';\n\nconst Wording = WordingConstant.HomePage;\n\nexport type Props = ContainerProps & {\n customerNumber: string;\n meters: TMeterRead[];\n contract: TContract;\n customerType: ECustomerType;\n pieces: TEPInvoice[];\n};\n\nconst HomeContainer: React.FC<Props> = ({\n meters,\n contract,\n pieces,\n handleChangeFailPiece,\n handleShowModal,\n customerType,\n customerNumber,\n}) => {\n const currentPieceForTimeline =\n pieces &&\n pieces.find(\n p =>\n p.internal_invoice_nature_code === 'instalment' &&\n p.status === 'reconcilied',\n );\n\n // const piecesToDisplay = controlPieces(pieces);\n\n return (\n <div className=\"home-container\">\n <h2 className=\"home-container__subTitle\">{Wording.subTitle}</h2>\n\n <TimelineStatus\n contract={contract}\n customerType={customerType}\n piece={currentPieceForTimeline as TEPInvoice | undefined}\n />\n\n <PaymentStatusContainer pieces={pieces} />\n\n <FailPieceContainer\n customerNumber={customerNumber}\n pieces={pieces}\n contract={contract}\n handleChangeFailPiece={handleChangeFailPiece}\n handleShowModal={handleShowModal}\n />\n\n <Graph\n contract={contract}\n meters={meters}\n showProgressBar={false}\n />\n\n <h2>{Wording.articleVideoText}</h2>\n <ArticleVideoContainer\n articles={articles.articles}\n videos={articles.videos}\n />\n </div>\n );\n};\n\nexport default HomeContainer;\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { RootState } from 'Types';\nimport { compose } from 'recompose';\nimport { Subtract } from 'utility-types';\nimport { TEPInvoice } from 'Models';\nimport {\n fetchContractAsync,\n resetContractState,\n setContract,\n} from '../../_actions/contract.actions';\nimport {\n fetchPiecesAsync,\n fetchEPInvoicesAsync,\n createPaymentAsync,\n resetUpdate,\n} from '../../_actions/payment.actions';\nimport { fetchMeterReadingAsync } from '../../_actions/consumption.actions';\nimport withBanner, {\n ExternalProps as ExternalPropsBanner,\n} from '../../libraries/withBanner';\nimport withModal, {\n ExternalProps as ExternalPropsModal,\n InjectedProps as InjectedPropsModal,\n} from '../../libraries/withModal';\nimport HomeContainer, {\n Props as ContainerProps,\n} from '../../containers/HomeContainer/HomeContainer';\nimport { ChangePiece } from '../../containers/FailPieceContainer/FailPieceContainer';\nimport { fetchContextAsync } from '../../_actions/profile.actions';\nimport {\n findContractByNumber,\n sortedConsumptionList,\n getTodayDate,\n} from '../../utils/helpers';\n\nimport WordingConstant from '../../utils/wording.json';\nimport { fetchFilesListAsync } from '../../_actions/file.actions';\nimport { initialEPInvoice } from '../../utils/initialState';\n\nconst Wording = WordingConstant.HomePage;\n\nconst WrappedHome = compose<\n ContainerProps,\n Subtract<ContainerProps, InjectedPropsModal> &\n ExternalPropsBanner &\n ExternalPropsModal\n>(\n withBanner(),\n withModal(),\n)(HomeContainer);\n\nconst mapStateToProps = (state: RootState) => ({\n profileState: state.profileReducer,\n contractState: state.contractReducer,\n paymentState: state.paymentReducer,\n consumptionState: state.consumptionReducer,\n fileState: state.fileReducer,\n});\n\nconst dispatchProps = {\n contractDispatch: fetchContractAsync.request,\n filesListDispatch: fetchFilesListAsync.request,\n createPaymentDispatch: createPaymentAsync.request,\n fetchMeterReadingDispatch: fetchMeterReadingAsync.request,\n resetCreatePaymentDispatch: resetUpdate,\n resetContractDispatch: resetContractState,\n setContractDispatch: setContract,\n fetchContextDispatch: fetchContextAsync.request,\n};\n\ntype Props = ReturnType<typeof mapStateToProps> & typeof dispatchProps;\n\ntype State = {\n fields: ChangePiece;\n};\n\nclass HomePage extends React.Component<Props, State> {\n constructor(props: Props) {\n super(props);\n this.state = {\n fields: {\n dueDate: '',\n piece: initialEPInvoice,\n },\n };\n }\n\n componentDidMount() {\n const url = new URL(window.location.href);\n const userId = url.searchParams.get('client');\n if (userId) {\n sessionStorage.setItem('currentClient', userId);\n const { fetchContextDispatch } = this.props;\n fetchContextDispatch({ customerNbr: userId });\n }\n }\n\n componentDidUpdate(prevProps: Props) {\n if (\n prevProps.contractState.selectedContractNumber !==\n this.props.contractState.selectedContractNumber\n ) {\n const {\n contractState: { selectedContractNumber, contracts },\n profileState: { customerNumber },\n // fetchPiecesDispatch,\n fetchMeterReadingDispatch,\n filesListDispatch,\n }: Props = this.props;\n\n const contract = findContractByNumber(\n selectedContractNumber,\n contracts,\n );\n\n // fetchPiecesDispatch({\n // contractNbr: selectedContractNumber,\n // });\n fetchMeterReadingDispatch({\n contractNbr: selectedContractNumber,\n pointOfDelivery: contract.deliveryPoint.pointOfDelivery,\n readingDate: getTodayDate(),\n energyType: contract.energy,\n });\n filesListDispatch({\n contractNbr: selectedContractNumber,\n customerNbr: customerNumber,\n mode: 'PAYMENT',\n });\n }\n }\n\n handleChangeBanner = (contractNumber: string) => {\n const {\n contractState: { contracts },\n contractDispatch,\n profileState: { customerNumber },\n setContractDispatch,\n filesListDispatch,\n } = this.props;\n const payload = {\n customerNbr: customerNumber,\n contractNbr: contractNumber,\n };\n const contract = findContractByNumber(contractNumber, contracts);\n if (contract.isFetched) {\n setContractDispatch({ contract });\n } else {\n contractDispatch(payload);\n }\n filesListDispatch({\n contractNbr: contractNumber,\n customerNbr: customerNumber,\n mode: 'PAYMENT',\n });\n };\n\n handleChangeFailPiece = (ff: TEPInvoice, dd: string) => {\n const { fields } = this.state;\n fields.dueDate = dd;\n fields.piece = ff;\n this.setState({ fields });\n };\n\n handleUpdate = () => {\n const { fields } = this.state;\n const { createPaymentDispatch } = this.props;\n createPaymentDispatch(fields);\n fields.dueDate = '';\n this.setState({ fields });\n };\n\n handleReset = () => {\n const {\n filesListDispatch,\n resetCreatePaymentDispatch,\n profileState: { customerNumber },\n contractState: { selectedContractNumber },\n } = this.props;\n\n resetCreatePaymentDispatch();\n filesListDispatch({\n contractNbr: selectedContractNumber,\n customerNbr: customerNumber,\n mode: 'PAYMENT',\n });\n };\n\n render() {\n const {\n profileState: { contact, customerType, customerNumber },\n contractState: { contracts, selectedContractNumber, error },\n paymentState: { updateResponse },\n fileState: { payments },\n consumptionState: { meters },\n resetContractDispatch,\n }: Props = this.props;\n\n const contract = findContractByNumber(\n selectedContractNumber,\n contracts,\n );\n\n return (\n <WrappedHome\n contract={contract}\n customerNumber={customerNumber}\n meters={sortedConsumptionList(meters)}\n pieces={payments}\n handleChangeFailPiece={this.handleChangeFailPiece}\n // Banner\n title={Wording.title}\n bannerError={error}\n handleCloseModalBanner={() => resetContractDispatch()}\n selectedContractNumber={selectedContractNumber}\n contracts={contracts}\n contact={contact}\n customerType={customerType}\n handleChangeBanner={this.handleChangeBanner}\n // Modal\n modalMessage={Wording.popup}\n updateResponse={updateResponse}\n handleValidate={this.handleUpdate}\n handleReset={this.handleReset}\n />\n );\n }\n}\n\nexport default connect(mapStateToProps, dispatchProps)(HomePage);\n","import HomePage from './HomePage';\n\nexport default HomePage;\n","import React, {useEffect} from \"react\";\n\ninterface IHubspot {\n portalId: string,\n formId: string,\n}\n\nconst HubspotContactForm = (props: IHubspot) => {\n const { portalId, formId } = props;\n useEffect(() => {\n const script = document.createElement('script');\n script.src='//js-eu1.hsforms.net/forms/embed/v2.js';\n document.body.appendChild(script);\n\n script.addEventListener('load', () => {\n // @TS-ignore\n if (window.hbspt) {\n // @TS-ignore\n window.hbspt.forms.create({\n portalId: portalId,\n formId: formId,\n target: '#hubspotForm'\n })\n }\n });\n }, []);\n\n return (\n <div>\n <div id=\"hubspotForm\"></div>\n </div>\n );\n};\n\ndeclare global {\n interface Window {\n hbspt: any;\n }\n}\n\nexport default HubspotContactForm;","import React, { useState } from 'react';\n\nimport { TWordingItem } from 'Models';\nimport { CustomSelect, CustomTextarea, CustomButton } from '../../components';\n\nimport WordingConstant from '../../utils/wording.json';\nimport HubspotContactForm from './HubspotContactForm';\nimport Config from '../../utils/config';\n\nconst Wording: { [key: string]: any } = WordingConstant.FormPage;\n\nexport type Props = {\n fields: {\n category: string;\n subCategory: string;\n message: string;\n };\n handleChangeTextarea: any;\n handleChangeSelect(item: TWordingItem, type: string): void;\n handleShowModal(section: string): void;\n};\n\nconst FormContainer = ({\n fields,\n handleChangeSelect,\n handleChangeTextarea,\n handleShowModal,\n}: Props) => {\n const [error, setError] = useState<boolean>(false);\n\n const canSend: boolean =\n fields.category !== '' &&\n fields.subCategory !== '' &&\n fields.message !== '';\n\n const categoryOption = Wording.categories.find(\n (c: TWordingItem) => c.value === fields.category,\n );\n const subCategoryOption =\n fields.subCategory !== '' &&\n Wording.subCategory[fields.category] &&\n Wording.subCategory[fields.category].find(\n (c: TWordingItem) => c.value === fields.subCategory,\n );\n\n return (\n <div className=\"form-container\">\n <div className=\"form-container__cart\">\n <h2>{Wording.cart.question}</h2>\n <h3>{Wording.cart.question_2}</h3>\n <h3>{Wording.cart.question_3}</h3>\n <p>{Wording.cart.number}</p>\n <span>{Wording.cart.priceCall}</span>\n <p>{Wording.cart.hours}</p>\n <p>{Wording.cart.email}</p>\n </div>\n\n <h2>{Wording.applicationFormText}</h2>\n\n {/* <h4 className=\"form-container__statusText\">\n {Wording.statusText} <span>{Wording.statusText_span}</span>\n </h4>*/}\n <HubspotContactForm\n portalId={Config.HubspotPortalId as string}\n formId={Config.HubspotFormId as string}\n />\n\n {/*<p>{Wording.categoryTitle}</p>*/}\n {/*<CustomSelect\n id=\"idCategory\"\n value={fields.category !== '' ? categoryOption : ''}\n handleChangeSelect={(val: TWordingItem) =>\n handleChangeSelect(val, 'category')\n }\n options={Wording.categories}\n placeholder={Wording.placeholder}\n error={\n error && fields.category === ''\n ? Wording.error.category\n : null\n }\n />\n <p>{Wording.subCategoryTitle}</p>\n\n <CustomSelect\n id=\"idSubCategory\"\n value={subCategoryOption}\n handleChangeSelect={(val: TWordingItem) =>\n handleChangeSelect(val, 'subCategory')\n }\n options={Wording.subCategory[fields.category]}\n placeholder={Wording.placeholder}\n error={\n error && fields.subCategory === ''\n ? Wording.error.subCategory\n : null\n }\n />\n\n <CustomTextarea\n id=\"idTextarea\"\n placeholder={Wording.placeholderTextarea}\n text={Wording.message}\n onChange={handleChangeTextarea}\n value={fields.message}\n error={\n error && fields.message === ''\n ? Wording.error.message\n : null\n }\n />\n\n <CustomButton\n onClick={() => {\n if (canSend) {\n handleShowModal('');\n } else {\n setError(true);\n }\n }}\n color={canSend ? 'orange' : 'gray'}\n title={Wording.button}\n />*/}\n </div>\n );\n};\n\nexport default FormContainer;\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { compose } from 'recompose';\nimport { Subtract } from 'utility-types';\n\nimport { RootState, InputEvent } from 'Types';\nimport { TWordingItem } from 'Models';\n\nimport withBanner, {\n ExternalProps as ExternalPropsBanner,\n} from '../../libraries/withBanner';\nimport withModal, {\n ExternalProps as ExternalPropsModal,\n InjectedProps as InjectedPropsModal,\n} from '../../libraries/withModal';\nimport FormContainer, {\n Props as ContainerProps,\n} from '../../containers/FormContainer/FormContainer';\nimport { createEventAsync, resetUpdate } from '../../_actions/event.actions';\nimport {\n fetchContractAsync,\n setContract,\n} from '../../_actions/contract.actions';\nimport { getTodayDate, findContractByNumber } from '../../utils/helpers';\n\nimport WordingConstant from '../../utils/wording.json';\n\nconst Wording = WordingConstant.FormPage;\n\nconst mapStateToProps = (state: RootState) => ({\n profileState: state.profileReducer,\n contractState: state.contractReducer,\n eventState: state.eventReducer,\n});\n\nconst dispatchProps = {\n createEventDispatch: createEventAsync.request,\n contractDispatch: fetchContractAsync.request,\n resetCreateEventDispatch: resetUpdate,\n setContractDispatch: setContract,\n};\n\ntype Props = ReturnType<typeof mapStateToProps> & typeof dispatchProps;\n\nexport const WrappedForm = compose<\n ContainerProps,\n Subtract<ContainerProps, InjectedPropsModal> &\n ExternalPropsBanner &\n ExternalPropsModal\n>(\n withBanner(),\n withModal(),\n)(FormContainer);\n\ntype State = {\n fields: {\n category: string;\n subCategory: string;\n message: string;\n [key: string]: any;\n };\n};\n\nexport class FormPage extends React.Component<Props, State> {\n constructor(props: Props) {\n super(props);\n this.state = {\n fields: {\n category: '',\n subCategory: '',\n message: '',\n },\n };\n }\n\n handleChangeSelect = (item: TWordingItem, type: string) => {\n const { fields } = this.state;\n fields[type] = item.value;\n if (type === 'category') {\n fields.subCategory = '';\n }\n this.setState({ fields });\n };\n\n handleChangeTextarea = (e: InputEvent) => {\n const { fields } = this.state;\n fields.message = e.currentTarget.value;\n this.setState({ fields });\n };\n\n handleChangeBanner = (contractNumber: string) => {\n const {\n contractState: { contracts },\n contractDispatch,\n profileState: { customerNumber },\n setContractDispatch,\n } = this.props;\n const contract = findContractByNumber(contractNumber, contracts);\n if (contract.isFetched) {\n setContractDispatch({ contract });\n } else {\n contractDispatch({\n customerNbr: customerNumber,\n contractNbr: contractNumber,\n });\n }\n };\n\n handleUpdate = (section: string) => {\n const { fields } = this.state;\n const {\n profileState,\n contractState,\n createEventDispatch,\n }: Props = this.props;\n\n createEventDispatch({\n contractNbr: contractState.selectedContractNumber,\n customerNbr: profileState.customerNumber,\n date: getTodayDate(),\n category: fields.category,\n subCategory: fields.subCategory,\n message: fields.message,\n });\n\n fields.subCategory = '';\n fields.category = '';\n fields.message = '';\n this.setState({ fields });\n };\n\n render() {\n const { fields } = this.state;\n const {\n profileState: { contact, customerType },\n contractState: { contracts, selectedContractNumber },\n eventState: { updateResponse },\n resetCreateEventDispatch,\n }: Props = this.props;\n return (\n <WrappedForm\n fields={fields}\n handleChangeSelect={this.handleChangeSelect}\n handleChangeTextarea={this.handleChangeTextarea}\n // Banner\n title={Wording.title}\n selectedContractNumber={selectedContractNumber}\n contracts={contracts}\n contact={contact}\n customerType={customerType}\n handleChangeBanner={this.handleChangeBanner}\n // Modal\n modalMessage={Wording.popup}\n updateResponse={updateResponse}\n handleValidate={this.handleUpdate}\n handleReset={resetCreateEventDispatch}\n />\n );\n }\n}\n\nexport default connect(\n mapStateToProps,\n dispatchProps,\n)(FormPage);\n","import FormPage from './FormPage';\n\nexport default FormPage;\n","import React from 'react';\n\nimport { CustomButton } from '../../components';\n\nimport WordingConstant from '../../utils/wording.json';\n\nconst Wording = WordingConstant.ProfilePage;\n\nconst ModificationButtons: React.FC<{\n showButton: boolean;\n condition: boolean;\n disabledValidate?: boolean;\n handleButtonClick(section: string, option?: boolean): void;\n handleButtonCancel(section: string): void;\n handleButtonValidate(): void;\n}> = ({\n showButton,\n condition,\n handleButtonClick,\n handleButtonCancel,\n handleButtonValidate,\n disabledValidate,\n}) => (\n <>\n {showButton ? (\n <CustomButton\n color=\"orange\"\n title={Wording.buttons.update}\n onClick={handleButtonClick}\n />\n ) : (\n <div className=\"profile-container__buttons\">\n <CustomButton\n title={Wording.buttons.cancel}\n onClick={handleButtonCancel}\n color={'gray'}\n />\n\n {!disabledValidate && (\n <CustomButton\n title={Wording.buttons.validate}\n onClick={handleButtonValidate}\n color={condition ? 'orange' : 'gray'}\n />\n )}\n </div>\n )}\n </>\n);\n\nexport default ModificationButtons;\n","import React, { useState } from 'react';\n\nimport ModificationButtons from '../../containers/ProfileContainer/ModificationButtons';\n\nimport { TInvoice, TContract, TEPInvoice } from 'Models';\nimport { CustomTable, CustomSelect } from '../../components';\nimport {\n getFormattedDate,\n getLabelByValue,\n getLabelInvoiceRouting,\n} from '../../utils/helpers';\nimport WordingConstant from '../../utils/wording.json';\nimport { IFinance } from '../ProfileContainer/types';\nimport { EInvoiceRoutingMode } from '../../utils/enums';\n\nconst Wording = WordingConstant.BillPage;\nconst HeaderWording = WordingConstant.TableHeader.bill;\n\nexport type Props = {\n // data: TInvoice[];\n data: TEPInvoice[];\n finance: IFinance;\n contract: TContract;\n handleRoutingMode: any;\n handleDownloadBill: (key: string) => Promise<void>;\n setCheckUpdateInvoiceRouting: any;\n handleShowModal(section: string): void;\n};\n\nconst BillContainer: React.FC<Props> = ({\n data,\n finance,\n contract,\n handleRoutingMode,\n handleDownloadBill,\n handleShowModal,\n setCheckUpdateInvoiceRouting,\n}) => {\n const columnsTable = [\n {\n Header: HeaderWording.id,\n accessor: 'invoice_number',\n Cell: (propsCell: any) => <span>{propsCell.value}</span>,\n width: 150,\n },\n {\n Header: HeaderWording.date,\n accessor: 'invoice_date',\n Cell: (propsCell: any) => <span>{propsCell.value}</span>,\n width: 100,\n },\n {\n Header: HeaderWording.dueDate,\n accessor: 'invoice_date_due',\n Cell: (propsCell: any) => <span>{propsCell.value}</span>,\n width: 200,\n },\n {\n Header: HeaderWording.type,\n accessor: 'hgz_internal_invoice_nature_text',\n Cell: (propsCell: any) => <span>{propsCell.value}</span>,\n width: 120,\n },\n {\n Header: HeaderWording.totalAmount,\n accessor: 'invoice_amount_total_signed',\n Cell: ({ original }: any) => {\n if (original.invoice_type === \"out_refund\") {\n return (<span>- {original.invoice_amount_total_signed} €</span>)\n }\n return (<span>{original.invoice_amount_total_signed} €</span>)\n },\n width: 180,\n },\n {\n Header: HeaderWording.totalAmountDu,\n accessor: 'invoice_amount_residual_signed',\n Cell: (propsCell: any) => <span>{propsCell.value} €</span>,\n width: 180,\n },\n {\n Header: HeaderWording.status,\n accessor: 'invoice_amount_residual_signed',\n // Cell: ({ value }: any) => (\n // <span>\n // {value && getLabelByValue(value, Wording.invoiceStatus)}\n // </span>\n // ),\n Cell: (propsCell: any) => {\n if (parseInt(propsCell.value, 10) === 0) {\n return <span>Payée</span>;\n }\n if (parseInt(propsCell.value, 10) > 0) {\n return <span>À payer</span>;\n }\n if (parseInt(propsCell.value, 10) < 0) {\n return <span>Trop perçu</span>;\n }\n },\n\n width: 150,\n },\n {\n Header: HeaderWording.download,\n accessor: 'invoice_number',\n Cell: (propsCell: any) => {\n return (\n <a\n href={'#'}\n onClick={() => handleDownloadBill(propsCell.value)}\n >\n Fichier\n </a>\n );\n },\n width: 150,\n },\n ];\n\n return (\n <div className=\"bill-container\">\n <h2 className=\"bill-container__amount\">{Wording.amount}</h2>\n <CustomTable\n columns={columnsTable}\n data={data}\n defaultPageSize={data && data.length}\n sortable={true}\n noDataText={Wording.noDataText}\n />\n\n <div className=\"invoice-routing\">\n <h2 className=\"invoice-routing__title\">\n {Wording.routingMode.title}\n </h2>\n <div\n className={`invoice-routing__bloc ${\n !finance.checkUpdateInvoiceRouting\n ? 'inactive'\n : 'active'\n }`}\n >\n <span className=\"invoice-routing__label\">\n {Wording.routingMode.label}\n </span>\n\n {!finance.checkUpdateInvoiceRouting ? (\n <p className=\"invoice-routing__value\">\n {getLabelInvoiceRouting(\n contract.finance\n .invoiceRoutingMode as EInvoiceRoutingMode,\n )}\n </p>\n ) : (\n <CustomSelect\n id=\"invoice-routing\"\n defaultValue={finance.invoiceRoutingMode}\n options={Wording.routingMode.values}\n handleChangeSelect={(e: any) =>\n handleRoutingMode(e.value)\n }\n value={finance.invoiceRoutingMode}\n />\n )}\n\n <ModificationButtons\n showButton={!finance.checkUpdateInvoiceRouting}\n condition={true}\n disabledValidate={false}\n handleButtonClick={() =>\n setCheckUpdateInvoiceRouting(true)\n }\n handleButtonCancel={() =>\n setCheckUpdateInvoiceRouting(false)\n }\n handleButtonValidate={() => {\n handleShowModal('billing');\n }}\n />\n </div>\n </div>\n </div>\n );\n};\nexport default BillContainer;\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { RootState } from 'Types';\n\nimport { fetchApiRequestBlob } from '../../services/api-service';\nimport {\n fetchContractAsync,\n setContract,\n} from '../../_actions/contract.actions';\nimport {\n fetchEPInvoicesAsync,\n fetchPiecesAsync,\n} from '../../_actions/payment.actions';\n\nimport BillContainer, {\n Props as ContainerProps,\n} from '../../containers/BillContainer/BillContainer';\nimport withBanner, {\n ExternalProps as ExternalPropsBanner,\n} from '../../libraries/withBanner';\nimport withModal, {\n ExternalProps as ExternalPropsModal,\n InjectedProps as InjectedPropsModal,\n} from '../../libraries/withModal';\n\nimport { findContractByNumber, getTodayDate } from '../../utils/helpers';\nimport WordingConstant from '../../utils/wording.json';\nimport {\n EInvoiceRoutingMode,\n EModeUpdateBilling,\n EPieceType,\n} from '../../utils/enums';\nimport { TEPInvoice, TInvoice } from 'Models';\nimport {\n IRequestUpdateBillingEvent,\n resetUpdate,\n updateBillingAsync,\n} from '../../_actions/profile.actions';\nimport { compose } from 'recompose';\nimport { Subtract } from 'utility-types';\nimport { fetchFilesListAsync } from '../../_actions/file.actions';\n\nconst Wording = WordingConstant.BillPage;\n\nconst mapStateToProps = (state: RootState) => ({\n profileState: state.profileReducer,\n contractState: state.contractReducer,\n fileState: state.fileReducer,\n});\n\nconst dispatchProps = {\n contractDispatch: fetchContractAsync.request,\n // fetchPiecesDispatch: fetchPiecesAsync.request,\n filesListDispatch: fetchFilesListAsync.request,\n setContractDispatch: setContract,\n updateBillingDispatch: updateBillingAsync.request,\n resetBillingUpdateDispatch: resetUpdate,\n};\n\nimport { IFinance } from '../../containers/ProfileContainer/types';\n\ntype State = {\n finance: IFinance;\n};\n\ntype Props = ReturnType<typeof mapStateToProps> & typeof dispatchProps;\n\nconst WrappedBill = compose<\n ContainerProps,\n Subtract<ContainerProps, InjectedPropsModal> &\n ExternalPropsBanner &\n ExternalPropsModal\n>(\n withModal(),\n withBanner(),\n)(BillContainer);\n\nclass BillPage extends React.Component<Props, State, {}> {\n constructor(props: Props) {\n super(props);\n const { contractState } = this.props;\n const contract = findContractByNumber(\n contractState.selectedContractNumber,\n contractState.contracts,\n );\n const finance = {\n invoiceRoutingMode:\n contract.finance.invoiceRoutingMode ||\n EInvoiceRoutingMode.EMAIL,\n checkUpdateInvoiceRouting: false,\n };\n\n this.state = {\n finance,\n };\n }\n\n componentDidMount() {\n const {\n contractState: { selectedContractNumber },\n profileState: { customerNumber },\n // fetchPiecesDispatch,\n filesListDispatch,\n }: Props = this.props;\n\n // fetchPiecesDispatch({\n // contractNbr: selectedContractNumber,\n // });\n filesListDispatch({\n contractNbr: selectedContractNumber,\n customerNbr: customerNumber,\n mode: 'INVOICE',\n });\n }\n\n handleChangeBanner = (contractNumber: string) => {\n const {\n contractState: { contracts },\n contractDispatch,\n profileState: { customerNumber },\n // fetchPiecesDispatch,\n setContractDispatch,\n filesListDispatch,\n } = this.props;\n const contract = findContractByNumber(contractNumber, contracts);\n if (contract.isFetched) {\n setContractDispatch({ contract });\n } else {\n contractDispatch({\n customerNbr: customerNumber,\n contractNbr: contractNumber,\n });\n }\n // fetchPiecesDispatch({\n // contractNbr: contractNumber,\n // });\n filesListDispatch({\n contractNbr: contractNumber,\n customerNbr: customerNumber,\n mode: 'INVOICE',\n });\n };\n\n handleDownloadBill = async (key: string) => {\n const payload = {\n documentId: key,\n documentType: EPieceType.INVOICE,\n };\n const path = '/getInvoicePdf';\n const blob = await fetchApiRequestBlob(payload, path);\n if (blob) {\n const fileURL = URL.createObjectURL(blob);\n window.open(fileURL);\n }\n };\n\n handleUpdate = () => {\n const {\n profileState,\n updateBillingDispatch,\n contractState,\n }: Props = this.props;\n const { finance } = this.state;\n const payload: IRequestUpdateBillingEvent = {\n paymentMode: {\n mode: EModeUpdateBilling.ROUTING_MODE,\n contractNbr: contractState.selectedContractNumber,\n routingMode: finance.invoiceRoutingMode,\n },\n event: {\n customerNbr: profileState.customerNumber,\n contractNbr: contractState.selectedContractNumber,\n category: 'PERSONAL_DATA',\n date: getTodayDate(),\n subCategory: 'INVOICE_CONTACT_CHANGE',\n message: Wording.routingMode.invoiceRoutingChange.label,\n },\n };\n updateBillingDispatch(payload);\n };\n\n handleRoutingMode = (value: string) => {\n const { finance } = this.state;\n finance.invoiceRoutingMode = value as EInvoiceRoutingMode;\n this.setState({ finance });\n };\n\n getContract = () => {\n const {\n contractState: { contracts, selectedContractNumber },\n }: Props = this.props;\n return findContractByNumber(selectedContractNumber, contracts);\n };\n\n render() {\n const {\n profileState: { contact, customerType, updateResponse },\n contractState: { contracts, selectedContractNumber },\n fileState: { files },\n resetBillingUpdateDispatch,\n }: Props = this.props;\n const { finance } = this.state;\n const invoices = files.financialPieces\n ? files.financialPieces.result.invoice_list\n : [];\n const setCheckUpdateInvoiceRouting = (value: boolean) => {\n this.setState(prevState => ({\n finance: {\n ...prevState.finance,\n checkUpdateInvoiceRouting: value,\n },\n }));\n };\n\n const handleReset = () => {\n resetBillingUpdateDispatch();\n this.setState(prevState => ({\n finance: {\n ...prevState.finance,\n checkUpdateInvoiceRouting: false,\n },\n }));\n };\n\n return (\n <WrappedBill\n data={invoices as TEPInvoice[]}\n handleDownloadBill={this.handleDownloadBill}\n handleRoutingMode={this.handleRoutingMode}\n finance={finance}\n contract={this.getContract()}\n setCheckUpdateInvoiceRouting={setCheckUpdateInvoiceRouting}\n // Banner\n title={Wording.title}\n contracts={contracts}\n contact={contact}\n customerType={customerType}\n handleChangeBanner={this.handleChangeBanner}\n selectedContractNumber={selectedContractNumber}\n // Modal\n modalMessage={Wording.routingMode.popup}\n updateResponse={updateResponse}\n handleValidate={this.handleUpdate}\n handleReset={handleReset}\n />\n );\n }\n}\n\nexport default connect(mapStateToProps, dispatchProps)(BillPage);\n","import BillPage from './BillPage';\n\nexport default BillPage;\n","import React from 'react';\n\nimport { TFile, TFiles } from 'Models';\nimport { CustomTable, CustomButton } from '../../components';\n\nimport { getLabelByValue, getFormattedDate } from '../../utils/helpers';\nimport WordingConstant from '../../utils/wording.json';\n\nconst Wording = WordingConstant.FilePage;\nconst HeaderWording = WordingConstant.TableHeader.file;\n\ntype Props = {\n data: TFiles[];\n isLoading: boolean;\n handleDownloadProofOfResidence(): void;\n handleDownloadFile(key: string, name: string): any;\n};\n\nconst FileContainer: React.FC<Props> = props => {\n const columnsTable = [\n /*{\n Header: HeaderWording.date,\n accessor: 'documentDate',\n Cell: (propsCell: any) => getFormattedDate(propsCell.value),\n width: 150,\n },*/\n {\n Header: HeaderWording.type,\n accessor: 'documentName',\n Cell: (propsCell: any) =>\n getLabelByValue(propsCell.value, Wording.fileNameMapping) ||\n 'Document',\n\n width: 200,\n },\n {\n Header: HeaderWording.contractNbr,\n accessor: 'contractNbr',\n width: 200,\n },\n {\n Header: HeaderWording.energy,\n accessor: 'energyType',\n width: 180,\n },\n {\n Header: HeaderWording.download,\n accessor: 'documentKey',\n Cell: (propsCell: any) => {\n const { value, original } = propsCell;\n\n const name = getLabelByValue(\n original.documentName,\n Wording.fileNameMapping,\n );\n\n return (\n <a\n href={`#telechargement:${name\n .toLocaleLowerCase()\n .replace(' ', '_')}`}\n onClick={() =>\n props.handleDownloadFile(\n value,\n original.documentName,\n )\n }\n >\n Fichier\n </a>\n );\n },\n width: 200,\n },\n ];\n\n return (\n <div className=\"file-container\">\n <h2 className=\"file-container__file\">{Wording.file}</h2>\n <CustomTable\n columns={columnsTable}\n data={props.data}\n defaultPageSize={props.data && props.data.length}\n noDataText={Wording.noDataText}\n sortable={true}\n />\n\n <p className=\"file-container__paragraph\">\n {Wording.description.generalCondition}{' '}\n <a\n href={WordingConstant.Common.wekiwi}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {Wording.description.wekiwiLink}\n </a>\n {Wording.description.section}\n <b>\n {' '}\n <a\n href={Wording.CGVLink}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {Wording.description.CGV}\n </a>\n </b>\n .\n </p>\n <CustomButton\n color=\"orange\"\n title={Wording.buttons.ProofOfResidence}\n isLoading={props.isLoading}\n onClick={\n !props.isLoading\n ? props.handleDownloadProofOfResidence\n : null\n }\n />\n </div>\n );\n};\n\n// ReactPDF.render(<ProofOfPayment />, `${__dirname}/output.pdf`);\n\nexport default FileContainer;\n","import FileContainer from './FileContainer';\n\nexport default FileContainer;\n","const base64ToArrayBuffer = (_base64Str: string) => {\n const binaryString = window.atob(_base64Str);\n const binaryLen = binaryString.length;\n const bytes = new Uint8Array(binaryLen);\n // tslint:disable-next-line:no-increment-decrement\n for (let i = 0; i < binaryLen; i++) {\n const ascii = binaryString.charCodeAt(i);\n bytes[i] = ascii;\n }\n return bytes;\n};\n\nconst showDocument = (_base64Str: string, _contentType: string) => {\n const byte = base64ToArrayBuffer(_base64Str);\n const blob = new Blob([byte], { type: _contentType });\n window.open(URL.createObjectURL(blob), '_blank');\n};\n\nexport { showDocument };\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { RootState } from 'Types';\n\nimport FileContainer from '../../containers/FileContainer';\nimport withBanner from '../../libraries/withBanner';\n\nimport {\n fetchContractAsync,\n resetContractState,\n setContract,\n} from '../../_actions/contract.actions';\nimport { fetchFilesListAsync } from '../../_actions/file.actions';\n\nimport { initialCustomerFullName } from '../../utils/initialState';\n\nimport apiRequest, { fetchApiRequestBlob } from '../../services/api-service';\nimport { findContractByNumber } from '../../utils/helpers';\nimport WordingConstant from '../../utils/wording.json';\nimport { TFile, TFiles } from 'Models';\nimport { EEnergy, EFileName } from '../../utils/enums';\nimport { includes } from 'lodash';\n\nimport { GetSupportingDocumentsRequest } from '../../_actions/payment.actions';\nimport { showDocument } from '../../utils/helpers/pdf';\n\nconst Wording = WordingConstant.FilePage;\n\nconst mapStateToProps = (state: RootState) => ({\n profileState: state.profileReducer,\n contractState: state.contractReducer,\n fileState: state.fileReducer,\n});\n\nconst dispatchProps = {\n contractDispatch: fetchContractAsync.request,\n filesListDispatch: fetchFilesListAsync.request,\n resetContractDispatch: resetContractState,\n setContractDispatch: setContract,\n};\n\ntype Props = ReturnType<typeof mapStateToProps> & typeof dispatchProps;\n\nexport const WrappedFile = withBanner()(FileContainer);\n\ntype State = {\n isLoading: boolean;\n};\n\nexport class FilePage extends React.Component<Props, State> {\n constructor(props: Props) {\n super(props);\n this.state = {\n isLoading: false,\n };\n }\n\n componentDidMount() {\n const {\n contractState: { selectedContractNumber },\n filesListDispatch,\n profileState: { customerNumber },\n }: Props = this.props;\n\n filesListDispatch({\n contractNbr: selectedContractNumber,\n customerNbr: customerNumber,\n mode: 'DOCUMENT',\n });\n }\n\n handleChangeBanner = (contractNumber: string) => {\n const {\n contractState: { contracts },\n contractDispatch,\n profileState: { customerNumber },\n setContractDispatch,\n filesListDispatch,\n } = this.props;\n const payload = {\n customerNbr: customerNumber,\n contractNbr: contractNumber,\n mode: 'DOCUMENT',\n };\n const contract = findContractByNumber(contractNumber, contracts);\n if (contract.isFetched) {\n setContractDispatch({ contract });\n } else {\n contractDispatch({\n customerNbr: customerNumber,\n contractNbr: contractNumber,\n });\n }\n filesListDispatch(payload);\n };\n\n handleDownloadFile = (key: string, name: string) => {\n this.responseFetchPDF(\n {\n documentKey: key,\n },\n '/getDocument',\n name,\n );\n };\n\n handleDownloadProofOfResidence = (): void => {\n const {\n contractState: { selectedContractNumber, contracts },\n profileState: {\n customerNumber,\n customerType,\n contact: { customerFullName, address },\n },\n } = this.props;\n\n const contract = findContractByNumber(\n selectedContractNumber,\n contracts,\n );\n const thirdParties = contract.thirdParties;\n const coholderName = {\n civility: 'MR',\n firstName: '',\n lastName: '',\n };\n if (thirdParties) {\n const coholder = thirdParties.find(p => p.role === 'COHOLDER');\n if (coholder && coholder.civility && coholder.firstName) {\n coholderName.civility = coholder.civility;\n coholderName.firstName = coholder.firstName;\n coholderName.lastName = coholder.lastName || '';\n }\n }\n\n const payload: GetSupportingDocumentsRequest = {\n mode: 'proofOfResidence',\n contractNbr: selectedContractNumber,\n customerNbr: customerNumber,\n customerType,\n cunstomerName: customerFullName || { ...initialCustomerFullName },\n coholderName,\n energyType: contract.energy,\n subscriptionDate: contract.subscriptionDate,\n residenceAdress: {\n number: contract.deliveryPoint.address.number,\n street: contract.deliveryPoint.address.street,\n netArea: contract.deliveryPoint.address.netArea,\n postalCode: contract.deliveryPoint.address.postalCode,\n townName: contract.deliveryPoint.address.townName,\n country: contract.deliveryPoint.address.country,\n },\n pointOfDelivery: contract.deliveryPoint.pointOfDelivery,\n };\n\n this.handleSupportingDocuments(payload);\n\n this.setState({ isLoading: true });\n };\n\n handleSupportingDocuments = (payload: any) =>\n apiRequest({\n path: '/getSupportingDocuments',\n method: 'POST',\n body: payload,\n })\n .toPromise()\n .then((res: any) => {\n this.setState({ isLoading: false });\n showDocument(res, 'application/pdf');\n });\n\n responseFetchPDF = async (payload: any, path: string, pdfName: string) => {\n if (pdfName === EFileName.EXPLANATIONS_OFFER_CAPACITY) {\n await this.handleOpenLocalFile(payload.documentKey);\n return this.setState({ isLoading: false });\n }\n\n const blob = await fetchApiRequestBlob(payload, path);\n\n if (blob) {\n const fileURL = URL.createObjectURL(blob);\n\n window.open(fileURL);\n }\n this.setState({ isLoading: false });\n };\n\n handleOpenLocalFile = async (key: string) =>\n import(`../../assets/documents/${key}`).then(file => {\n window.open(file.default);\n });\n\n checkIsCAPA = () => {\n const {\n contractState: { contracts, selectedContractNumber },\n }: Props = this.props;\n\n const currentContract = contracts.find(\n ct => ct.contractNumber === selectedContractNumber,\n );\n\n if (currentContract && currentContract.energy === EEnergy.EL) {\n return includes(currentContract.chosenProduct.productCode, 'CAPA')\n ? currentContract\n : undefined;\n }\n\n return undefined;\n };\n\n injectExplanationsOfferCapacityFile = (files?: TFiles[]): TFiles[] => {\n const capaContract = this.checkIsCAPA();\n\n if (capaContract !== undefined) {\n const prepare: any = {\n documentName: EFileName.EXPLANATIONS_OFFER_CAPACITY,\n documentKey: Wording.EXPLANATIONS_OFFER_CAPACITY_key,\n contractNbr: capaContract.contractNumber,\n energyType: capaContract.energy,\n };\n if (!files) return [prepare];\n return [prepare, ...files];\n }\n if (!files) return [];\n return files;\n };\n\n sortFiles = (file: TFiles[]) => {\n if (file) {\n return file.sort((a: TFiles, b: TFiles) => {\n if (a.documentDate > b.documentDate) {\n return -1;\n }\n if (a.documentDate < b.documentDate) {\n return 1;\n }\n return 0;\n });\n }\n return [];\n };\n\n filesToContainer = (docs: TFiles[]) => {\n return this.sortFiles(this.injectExplanationsOfferCapacityFile(docs));\n };\n\n render() {\n const {\n profileState: { contact, customerType },\n contractState: { contracts, selectedContractNumber, error },\n fileState: { files },\n resetContractDispatch,\n }: Props = this.props;\n const tab = files.documentsList;\n const { isLoading } = this.state;\n return (\n <WrappedFile\n data={this.filesToContainer(files.documentsList)}\n isLoading={isLoading}\n handleDownloadProofOfResidence={\n this.handleDownloadProofOfResidence\n }\n handleDownloadFile={this.handleDownloadFile}\n // Banner\n title={Wording.title}\n bannerError={error}\n handleCloseModalBanner={() => resetContractDispatch()}\n contracts={contracts}\n contact={contact}\n customerType={customerType}\n handleChangeBanner={this.handleChangeBanner}\n selectedContractNumber={selectedContractNumber}\n />\n );\n }\n}\n\nexport default connect(mapStateToProps, dispatchProps)(FilePage);\n","import FilePage from './FilePage';\n\nexport default FilePage;\n","import React, { FC, useCallback } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { Modal } from '../../components';\nimport { resetSupportingDocumentError } from '../../_actions/payment.actions';\n\ntype Props = {\n errorMessage?: string;\n};\n\nconst SupportingDocumentErrorModal: FC<Props> = ({ errorMessage }) => {\n const dispatch = useDispatch();\n\n const handleClose = useCallback(() => {\n dispatch(resetSupportingDocumentError());\n }, []);\n\n return (\n <Modal\n state={1}\n show={errorMessage !== undefined}\n title={'Votre justificatif n’est pas disponible'}\n description={errorMessage || ''}\n showCloseButton\n handleCancel={handleClose}\n />\n );\n};\n\nexport default SupportingDocumentErrorModal;\n","import React, { useMemo } from 'react';\n\nimport { TPiece, TAdhoc, TContract, TEPInvoice } from 'Models';\n\nimport FailPieceContainer, {\n BaseProps,\n} from '../FailPieceContainer/FailPieceContainer';\nimport PaymentStatusContainer from '../PaymentStatusContainer';\n\nimport { getLabelByValue } from '../../utils/helpers';\nimport { CustomTable, Balance, CustomButton } from '../../components';\n\nimport { EPieceType } from '../../utils/enums';\nimport WordingConstant from '../../utils/wording.json';\nimport {\n GenerateProofProps,\n GenerateTimelineProps,\n} from '../../pages/PaymentPage/PaymentPage';\nimport { PaymentSupportingDocuments } from '../../_reducers/payment.reducer';\nimport resources from '../../utils/resources';\n\nimport SupportingDocumentErrorModal from './SupportingDocumentErrorModal';\n\nconst Wording = WordingConstant.PaymentPage;\nconst HeaderWording = WordingConstant.TableHeader.payment;\n\nconst humanizeLabel = (piece: TEPInvoice) => {\n const status = piece.status;\n\n let isInvoiceRunNumberMIGR = false;\n if (piece.invoicing_run_number) {\n const value = piece.invoicing_run_number.slice(0, 4);\n isInvoiceRunNumberMIGR = value === 'MIGR';\n }\n\n switch (status) {\n case 'sent':\n return 'Transmis';\n case 'reconciled':\n return 'Soldé';\n case 'sent-cancelled':\n return 'Rejeté';\n case 'posted':\n if (piece.payment_type === 'outbound') return 'Remboursé';\n if (isInvoiceRunNumberMIGR) return 'Soldé';\n if (piece.payment_method_code === 'sdd') return 'Transmis';\n return 'Soldé';\n default:\n return '';\n }\n};\n\nexport type Props = BaseProps & {\n pieces: TEPInvoice[];\n contract: TContract;\n customerNumber: string;\n supportingDocument: PaymentSupportingDocuments;\n generateProof: (props: GenerateProofProps) => void;\n generateTimeline: (props: GenerateTimelineProps) => void;\n};\n\nconst PaymentContainer: React.FC<Props> = ({\n pieces,\n contract,\n handleChangeFailPiece,\n handleShowModal,\n customerNumber,\n supportingDocument,\n generateProof,\n generateTimeline,\n}) => {\n const filteredPieces = useMemo(() => {\n if (!pieces) return [];\n return (\n pieces.filter(el => {\n return (\n humanizeLabel(el) !== '' &&\n !(\n (el.replacing_payment_count &&\n parseInt(el.replacing_payment_count, 10) > 0) ||\n (el.energy_paid_number_replays &&\n parseInt(el.energy_paid_number_replays, 10) > 0)\n )\n );\n }) || []\n );\n }, [pieces]);\n\n const columnsTable = [\n {\n Header: HeaderWording.date,\n accessor: 'date',\n // Cell: (propsCell: any) => getFormattedDate(propsCell.value),\n Cell: ({ value }: any) => <span>{value}</span>,\n width: 150,\n },\n {\n Header: HeaderWording.id,\n accessor: 'communication',\n Cell: ({ value }: any) => <span>{value}</span>,\n width: 200,\n },\n {\n Header: HeaderWording.type,\n accessor: 'internal_invoice_nature_text',\n Cell: ({ value }: any) => (\n // getLabelByValue(value, Wording.typePieces),\n <span>{value}</span>\n ),\n width: 150,\n },\n /*{\n Header: HeaderWording.dueDate,\n accessor: 'dueDate',\n Cell: (propsCell: any) => getFormattedDate(propsCell.value),\n width: 180,\n },\n */\n {\n Header: HeaderWording.totalAmount,\n accessor: 'amount',\n Cell: ({ original }: any) => {\n if (original.payment_type === \"outbound\") {\n return (<span>- {original.amount} €</span>)\n }\n return (<span>{original.amount} €</span>)\n },\n width: 150,\n },\n /*{\n Header: HeaderWording.amountToPay,\n accessor: 'amountToPay',\n width: 250,\n Cell: (propsCell: any) => <span>{propsCell.value} €</span>,\n },*/\n {\n Header: HeaderWording.status,\n accessor: 'status',\n Cell: (propsCell: { original: any }) =>\n humanizeLabel(propsCell.original),\n // Cell: ({ value }: any) =>\n // <span>{value}</span>,\n\n width: 200,\n },\n\n {\n Header: () => {\n return (\n <div className=\"proof-header\">\n {HeaderWording.proof}{' '}\n {supportingDocument.loading && (\n <img\n className=\"proof-header-loader\"\n src={resources['ic-loader']}\n />\n )}\n </div>\n );\n },\n accessor: 'status',\n Cell: ({ original }: any) => {\n const invoice: TEPInvoice = original;\n if (humanizeLabel(invoice) === 'Soldé') {\n return (\n <CustomButton\n color=\"orange\"\n title=\"Générer le justificatif\"\n disabled={supportingDocument.loading}\n onClick={() =>\n generateProof({\n contract,\n piece: invoice,\n })\n }\n />\n );\n }\n\n return null;\n },\n\n width: 200,\n },\n ];\n\n // const getBalanceValue = (pieces: TPiece[]) => {\n // const filteredPieces = pieces.filter(\n // (p: TPiece) => p.type === EPieceType.INVOICE,\n // );\n // const reducer = (acc: number, current: TPiece) =>\n // acc + parseFloat((current as any).amountToPay);\n\n // return filteredPieces.reduce(reducer, 0).toFixed(2);\n // };\n\n const isDataAvailableForTimeline = () => {\n // if (!findLastValidPiece(pieces).lastValid) return false;\n // const data = findLastValidPiece(pieces);\n // const dataTrans = findLastValidTransaction(\n // (data.lastValid as TPiece).processusList[0].transactions,\n // );\n // if (!!dataTrans) return false;\n // else\n if (contract && !contract.installmentFrequency) return false;\n return contract && contract.chosenPackages ? true : false;\n };\n\n // const contractBalance = getBalanceValue(pieces);\n // const piecesToDisplay = controlPieces(pieces);\n\n return (\n <div className=\"payment-container\">\n <div className=\"balanceTimeline\">\n <div className=\"balance\">\n <h2>{Wording.balanceTitle}</h2>\n <Balance>Non disponible</Balance>\n </div>\n <div className=\"timeline\">\n <CustomButton\n title={Wording.timeline.title}\n color=\"orange\"\n disabled={!isDataAvailableForTimeline()}\n onClick={() => {\n generateTimeline({\n contract,\n pieces: filteredPieces,\n });\n }}\n ></CustomButton>\n </div>\n </div>\n\n <h2> {Wording.title} </h2>\n <CustomTable\n columns={columnsTable}\n data={filteredPieces}\n defaultPageSize={filteredPieces ? filteredPieces.length : 0}\n sortable={true}\n noDataText={Wording.noDataText}\n />\n\n <PaymentStatusContainer pieces={filteredPieces} />\n\n <FailPieceContainer\n contract={contract}\n customerNumber={customerNumber}\n pieces={filteredPieces}\n handleChangeFailPiece={handleChangeFailPiece}\n handleShowModal={handleShowModal}\n />\n\n <SupportingDocumentErrorModal\n errorMessage={supportingDocument.errorMessage}\n />\n </div>\n );\n};\n\nexport default PaymentContainer;\n","import { Font } from '@react-pdf/renderer';\n\nimport Montserrat400 from '../../../assets/fonts/Montserrat/Montserrat-Thin.ttf';\nimport Montserrat800 from '../../../assets/fonts/Montserrat/Montserrat-ExtraBold.ttf';\nimport Montserrat100 from '../../../assets/fonts/Montserrat/Montserrat-Light.ttf';\n\nFont.register({\n family: 'Montserrat',\n fonts: [\n {\n fontWeight: 400,\n src: Montserrat400,\n },\n {\n fontWeight: 800,\n src: Montserrat800,\n },\n {\n fontWeight: 100,\n src: Montserrat100,\n },\n ],\n});\n","import React from 'react';\n\nimport { Image, View, StyleSheet, Text } from '@react-pdf/renderer';\n\nimport Logo from '../../../../assets/icons/PDFs/ProofOfPayment/ic-logo-sidebar.png';\n\nimport Wording from '../wording.json';\n\nconst styles = StyleSheet.create({\n container: {\n flexDirection: 'row',\n backgroundColor: '#ffb40a',\n alignItems: 'center',\n display: 'flex',\n justifyContent: 'space-around',\n flex: 0,\n },\n img: {\n width: '110px',\n height: '55px',\n padding: '10px 0px',\n },\n text: {\n textTransform: 'uppercase',\n fontWeight: 'ultrabold',\n fontFamily: 'Montserrat',\n },\n});\n\nconst headerWording = Wording.header;\n\nexport default () => (\n <View style={styles.container}>\n <Text style={styles.text}>{headerWording.title}</Text>\n <Image style={styles.img} src={Logo} />\n </View>\n);\n","import { createContext } from 'react';\nimport { TimelineProps } from '../type';\n\nconst context = createContext<TimelineProps>({} as any);\n\nexport const TimelineProvider = context.Provider;\n\nexport default context;\n","import { useContext } from 'react';\n\nimport TimelineContext from './TimelineContext';\n\nimport { TimelineProps } from '../type';\n\nexport default function useTimeline(): TimelineProps {\n return useContext(TimelineContext);\n}\n","import React, { Fragment } from 'react';\n\nimport ElecIcon from '../../../../assets/icons/PDFs/ProofOfPayment/ic-elec.png';\n\nimport { View, StyleSheet, Text, Image } from '@react-pdf/renderer';\nimport { useTimeline } from '../lib';\n\nimport WordingConstant from '../wording.json';\n\nconst Wording = WordingConstant;\n\nconst styles = StyleSheet.create({\n container: {\n flexDirection: 'column',\n display: 'flex',\n borderWidth: 2,\n borderColor: '#000000',\n borderRadius: '25',\n width: '80%',\n marginTop: 15,\n marginLeft: '10%',\n padding: 5,\n },\n subContainerImage: {\n width: '20%',\n display: 'flex',\n alignItems: 'center',\n },\n subContainerLeft: {\n flexDirection: 'column',\n alignItems: 'flex-end',\n width: '35%',\n fontFamily: 'Montserrat',\n marginRight: 0,\n fontSize: 11,\n fontWeight: 'bold',\n },\n subContainerRight: {\n flexDirection: 'column',\n alignItems: 'flex-start',\n width: '40%',\n marginLeft: 25,\n fontFamily: 'Montserrat',\n fontSize: 11,\n fontWeight: 100,\n },\n whiteBloc: {\n flexDirection: 'row',\n },\n energyImg: {\n width: 40,\n height: 60,\n marginTop: 20,\n },\n lastText: {\n marginTop: 15,\n },\n});\n\nconst CustomerContainer = () => {\n const { customer, address, contract } = useTimeline();\n\n return (\n <Fragment>\n <View style={styles.container}>\n <View style={styles.whiteBloc}>\n <View style={styles.subContainerImage}>\n <Image style={styles.energyImg} src={ElecIcon} />\n </View>\n <View style={styles.subContainerLeft}>\n <Text>{Wording.customerContainer.address}</Text>\n <Text>{Wording.customerContainer.postalCode}</Text>\n <Text>{Wording.customerContainer.townName}</Text>\n <Text>{Wording.customerContainer.clientName}</Text>\n <Text>{Wording.customerContainer.clientNumber}</Text>\n <Text style={styles.lastText}>\n {Wording.customerContainer.contractNumber}\n </Text>\n </View>\n <View style={styles.subContainerRight}>\n <Text>\n {address.number} {address.street}\n </Text>\n <Text>{address.postalCode}</Text>\n <Text>{address.townName}</Text>\n <Text>\n {customer.name.lastName} {customer.name.firstName}\n </Text>\n <Text>{customer.customerNbr}</Text>\n <Text style={styles.lastText}>\n {contract.contractNumber}\n </Text>\n </View>\n </View>\n </View>\n </Fragment>\n );\n};\n\nexport default CustomerContainer;\n","import React, { Fragment } from 'react';\n\nimport { View, StyleSheet, Text, Image } from '@react-pdf/renderer';\nimport { useTimeline } from '../lib';\n\nimport WordingConstant from '../wording.json';\nimport { TPiece, TTransaction, TEPInvoice } from 'Models';\nimport {\n findLastValidPiece,\n findLastValidTransaction,\n} from '../../../../utils/helpers';\nimport { isSameYear, parse } from 'date-fns';\n\nconst W = WordingConstant.contractContainer;\n\nconst styles = StyleSheet.create({\n container: {\n display: 'flex',\n alignItems: 'center',\n },\n subContainer: {\n display: 'flex',\n alignItems: 'center',\n },\n text: {\n fontFamily: 'Montserrat',\n fontWeight: 'bold',\n fontSize: 11,\n marginTop: 15,\n },\n containerDate: {\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n },\n containerDateMarginTop: {\n marginTop: 15,\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n },\n date: {\n fontFamily: 'Montserrat',\n fontWeight: 'thin',\n fontSize: 11,\n marginLeft: 50,\n },\n dateBold: {\n fontFamily: 'Montserrat',\n fontWeight: 'bold',\n fontSize: 11,\n },\n});\n\nconst ContractContainer = () => {\n const { payments, contract } = useTimeline();\n const data = findLastValidPiece(payments);\n const subscriptionDate = new Date(contract.subscriptionDate);\n const effectiveStartDate = new Date(contract.effectiveStartDate);\n // const dataTransaction = findLastValidTransaction(\n // (data.lastValid as TEPInvoice).processusList[0].transactions,\n // ).lastValidTransaction;\n const dueDate = data.lastValid\n ? parse(\n data.lastValid.invoicing_period_end_date,\n 'dd/MM/yyyy',\n new Date(),\n )\n : contract.lastRenewDate\n ? new Date(contract.lastRenewDate)\n : effectiveStartDate;\n\n const nextYearDate = contract.lastRenewDate\n ? new Date(contract.lastRenewDate)\n : new Date(effectiveStartDate);\n\n if (contract.lastRenewDate) {\n if (\n isSameYear(\n parse(contract.lastRenewDate, 'yyyy-MM-dd', new Date()),\n dueDate,\n )\n ) {\n nextYearDate.setFullYear(dueDate.getFullYear() + 1);\n } else {\n nextYearDate.setFullYear(dueDate.getFullYear());\n }\n } else {\n if (isSameYear(effectiveStartDate, dueDate)) {\n nextYearDate.setFullYear(dueDate.getFullYear() + 1);\n } else {\n nextYearDate.setFullYear(dueDate.getFullYear());\n }\n }\n\n const sentence = `${W.timelineFrom} ${dueDate.toLocaleString('default', {\n month: 'long',\n year: 'numeric',\n })} ${W.to} ${nextYearDate.toLocaleString('default', {\n month: 'long',\n year: 'numeric',\n })} / ${W.kiwi}`;\n\n return (\n <View style={styles.container}>\n <Text style={styles.text}>{sentence}</Text>\n <View style={styles.subContainer}>\n <View>\n <View style={styles.containerDateMarginTop}>\n <Text style={styles.dateBold}>\n {W.subscriptionDate} :\n </Text>\n <Text style={styles.date}>\n {subscriptionDate.toLocaleDateString()}\n </Text>\n </View>\n <View style={styles.containerDate}>\n <Text style={styles.dateBold}>\n {W.contractStartDate} :\n </Text>\n <Text style={styles.date}>\n {effectiveStartDate.toLocaleDateString()}\n </Text>\n </View>\n {contract.lastRenewDate && (\n <View style={styles.containerDate}>\n <Text style={styles.dateBold}>\n Date de renouvellement :\n </Text>\n <Text style={styles.date}>\n {new Date(\n contract.lastRenewDate,\n ).toLocaleDateString()}\n </Text>\n </View>\n )}\n </View>\n </View>\n </View>\n );\n};\n\nexport default ContractContainer;\n","import { View, StyleSheet, Text } from '@react-pdf/renderer';\nimport React from 'react';\n\nimport { useTimeline } from '../lib';\n\nimport Wording from '../wording.json';\n\nimport {\n getDateFormatted,\n findLastValidPiece,\n findLastValidTransaction,\n} from '../../../../utils/helpers';\n\nimport {\n Table,\n Header,\n Cell,\n DataCell,\n Body,\n} from '../../ProofOfPayment/components/Table';\nimport { TPiece, TTransaction, TEPInvoice } from 'Models';\nimport { ETimeframe } from '../../../../utils/enums';\nimport { differenceInMonths, parse } from 'date-fns';\n\ntype Frequencies =\n | 'MONTHLY'\n | 'BIMONTHLY'\n | 'QUARTERLY'\n | 'FOURMONTHLY'\n | 'BIANNUAL'\n | 'UNKNOWN';\n\nconst { frequencyMapping, timelineTable } = Wording;\n\nconst styles = StyleSheet.create({\n container: {\n width: '80%',\n marginLeft: '10%',\n marginTop: 25,\n },\n header: {\n backgroundColor: '#EFEFEF',\n padding: '5px 0',\n fontFamily: 'Montserrat',\n fontWeight: 800,\n fontSize: 11,\n },\n body: {\n padding: '3px 10px',\n },\n rowStyle: {\n backgroundColor: '#000000',\n fontFamily: 'Montserrat',\n fontWeight: 800,\n },\n total: {\n width: '100%',\n display: 'flex',\n flexDirection: 'row',\n border: '1pt solid black',\n justifyContent: 'flex-start',\n alignItems: 'center',\n height: 20,\n marginTop: 10,\n backgroundColor: '#EFEFEF',\n },\n totalTitle: {\n width: '80%',\n padding: '2px',\n justifyContent: 'flex-start',\n alignItems: 'flex-start',\n fontFamily: 'Montserrat',\n fontWeight: 800,\n fontSize: 11,\n height: '100%',\n },\n totalValue: {\n width: '20%',\n justifyContent: 'center',\n alignItems: 'center',\n fontFamily: 'Montserrat',\n fontWeight: 100,\n fontSize: 11,\n height: '100%',\n borderLeft: '1pt solid black',\n backgroundColor: '#FFFFFF',\n },\n info: {\n display: 'flex',\n justifyContent: 'center',\n marginTop: 5,\n fontFamily: 'Montserrat',\n flexDirection: 'row',\n fontSize: 6,\n width: '100%',\n },\n infoNB: {\n fontWeight: 800,\n },\n infoText: {\n fontWeight: 100,\n },\n});\n\nconst TimelineTable = () => {\n const { payments, contract } = useTimeline();\n const lastValidPiece = findLastValidPiece(payments).lastValid as any;\n const dueDate = lastValidPiece\n ? (lastValidPiece as TEPInvoice).invoicing_period_start_date\n : contract.effectiveStartDate;\n // console.log('dueDate:', dueDate);\n // const dataTransaction = findLastValidTransaction(\n // (lastValidPiece as TPiece).processusList[0].transactions,\n // );\n const chosenPackage =\n contract.chosenPackages && (contract.chosenPackages[0] as any);\n const rate = chosenPackage ? chosenPackage.amount : 0;\n // console.log('rate:', rate);\n const dataToDisplay = new Array();\n let globalAmount = 0;\n\n const frequency = () => {\n switch (contract.installmentFrequency) {\n case 'MONTHLY':\n return 1; // 12\n case 'BIMONTHLY':\n return 2; // 6\n case 'QUARTERLY':\n return 3; // 4\n case 'FOURMONTHLY':\n return 4; // 3\n default:\n return 0; // Error\n }\n };\n\n const getMonthDifference = (start: any, end: any) => {\n const startDate: Date = parse(start, 'dd/MM/yyyy', new Date());\n const endDate: Date = parse(end, 'dd/MM/yyyy', new Date());\n const timeDiff: number = Math.abs(\n endDate.getTime() - startDate.getTime(),\n );\n return Math.round(timeDiff / (1000 * 60 * 60 * 24) / 30) as number;\n };\n\n const energyType = (type: string) => {\n return 'EL' === type ? 'Electricité' : 'Gaz';\n };\n\n const frequencyWording = (value: number) => {\n switch (value) {\n case 1:\n return 'MONTHLY';\n case 2:\n return 'BIMONTHLY';\n case 3:\n return 'QUARTERLY';\n case 4:\n return 'FOURMONTHLY';\n default:\n return 'Inconnue';\n }\n };\n\n const dataObject = (\n energy: string,\n rate: number,\n installmentFrequency: string,\n date: string,\n amount: number,\n ) => {\n return {\n energyType: energyType(energy),\n rate,\n installmentFrequency:\n frequencyMapping[installmentFrequency as Frequencies],\n date,\n amountToPay: amount,\n };\n };\n\n const getPricePerMonth = (month: number) => {\n if (contract.chosenPackages && !contract.chosenPackages[1]) {\n return parseInt(rate, 10);\n }\n const secondChosenPackage =\n contract.chosenPackages && (contract.chosenPackages[1] as any);\n const summerPrice: number =\n chosenPackage.timeframe === ETimeframe.SUMMER\n ? chosenPackage.amount\n : secondChosenPackage.amount;\n const winterPrice: number =\n chosenPackage.timeframe === ETimeframe.WINTER\n ? chosenPackage.amount\n : secondChosenPackage.amount;\n return month <= 9 && month >= 3 ? summerPrice : winterPrice;\n };\n\n const getAmountPerFrequency = (month: number) => {\n let amount: number = 0;\n let i: number = month;\n while (i < month + frequency()) {\n amount = Number(amount) + Number(getPricePerMonth(i % 12));\n i = Number(i) + 1;\n }\n globalAmount = Number(globalAmount) + Number(amount);\n return amount;\n };\n\n const buildData = () => {\n let monthDiff = frequency();\n let date = new Date();\n date = parse(dueDate, 'dd/MM/yyyy', new Date());\n if (lastValidPiece) {\n // console.log('start', lastValidPiece.invoicing_period_start_date);\n // console.log('end', lastValidPiece.invoicing_period_end_date);\n monthDiff = getMonthDifference(\n lastValidPiece.invoicing_period_start_date,\n lastValidPiece.invoicing_period_end_date,\n );\n monthDiff = monthDiff === 0 ? 1 : monthDiff;\n globalAmount = Number(globalAmount) + Number(lastValidPiece.amount);\n dataToDisplay.push(\n dataObject(\n contract.energy,\n Number.isInteger(lastValidPiece.amount / monthDiff)\n ? lastValidPiece.amount / monthDiff\n : parseFloat(\n (lastValidPiece.amount / monthDiff).toFixed(2),\n ),\n frequencyWording(monthDiff),\n lastValidPiece.date,\n lastValidPiece.amount.split('.')[0],\n ),\n );\n } else {\n dataToDisplay.push(\n dataObject(\n contract.energy,\n getPricePerMonth(date.getMonth()),\n contract.installmentFrequency,\n date.toLocaleDateString(),\n getAmountPerFrequency(date.getMonth()),\n ),\n );\n // console.log('dataToDisplay', dataToDisplay);\n }\n const endDate = new Date(\n contract.lastRenewDate\n ? contract.lastRenewDate\n : contract.effectiveStartDate,\n );\n endDate.setFullYear(endDate.getFullYear() + 1);\n const remainingMonth = differenceInMonths(endDate, date) + 1;\n\n date.setDate(date.getDate() + 1);\n date = new Date(\n date.getFullYear(),\n date.getMonth() + monthDiff,\n parseInt(contract.finance.debitDay, 10),\n );\n dataToDisplay.push(\n dataObject(\n contract.energy,\n getPricePerMonth(date.getMonth()),\n contract.installmentFrequency,\n date.toLocaleDateString(),\n getAmountPerFrequency(date.getMonth()),\n ),\n );\n let i: number = 2;\n while (i < remainingMonth / frequency()) {\n date = new Date(\n date.getFullYear(),\n date.getMonth() + frequency(),\n parseInt(contract.finance.debitDay, 10),\n );\n dataToDisplay.push(\n dataObject(\n contract.energy,\n getPricePerMonth(date.getMonth()),\n contract.installmentFrequency,\n date.toLocaleDateString(),\n getAmountPerFrequency(date.getMonth()),\n ),\n );\n i = Number(i) + 1;\n }\n // console.log('dataToDisplay', dataToDisplay);\n };\n\n if (chosenPackage && contract) {\n buildData();\n }\n\n return (\n <View style={styles.container}>\n <Table data={dataToDisplay}>\n <Header textAlign=\"center\" style={styles.header}>\n <Cell>Energie</Cell>\n <Cell>Forfait</Cell>\n <Cell>Fréquence de prélèvement</Cell>\n <Cell>Date de prélèvement</Cell>\n <Cell>Montant à régler</Cell>\n </Header>\n <Body style={styles.body}>\n <DataCell textAlign=\"center\" Cell={r => r.energyType} />\n <DataCell textAlign=\"center\" Cell={r => r.rate} />\n <DataCell\n textAlign=\"center\"\n Cell={r => r.installmentFrequency}\n />\n <DataCell textAlign=\"center\" Cell={r => r.date} />\n\n <DataCell textAlign=\"center\" Cell={r => r.amountToPay} />\n </Body>\n </Table>\n <View style={styles.total}>\n <View style={styles.totalTitle}>\n <Text>{timelineTable.total}</Text>\n </View>\n <View style={styles.totalValue}>\n <Text>{globalAmount}</Text>\n </View>\n </View>\n <View style={styles.info}>\n <Text style={styles.infoNB}>NB : </Text>\n <View style={styles.infoText}>\n <Text>\n Les mensualités indiquées correspondant au forfait et à\n la fréquence sélectionnée par le client. Ces prix\n prennent en compte les remises auxquelles le\n </Text>\n <Text>\n client est éligible. En cas de non-respect des\n conditions d’égibilité, le prix du kWh sera facturé au\n prix brut\n </Text>\n </View>\n </View>\n </View>\n );\n};\n\nexport default TimelineTable;\n","import React, { FC, Fragment } from 'react';\n\nimport MailIcon from '../../../../assets/icons/PDFs/ProofOfPayment/ic-email.png';\nimport FacebookIcon from '../../../../assets/icons/PDFs/ProofOfPayment/Facebook.png';\nimport PhoneIcon from '../../../../assets/icons/PDFs/ProofOfPayment/ic-phone.png';\n\nimport { Image, View, StyleSheet, Text } from '@react-pdf/renderer';\n\nimport Wording from '../wording.json';\n\nconst styles = StyleSheet.create({\n container: {\n borderWidth: 2,\n borderColor: '#000000',\n borderRadius: '25',\n width: '35%',\n padding: 15,\n marginTop: 15,\n },\n imgTextContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n padding: '2px 0px',\n },\n phoneText: {\n width: 120,\n },\n img: {\n width: 18,\n height: 18,\n marginRight: 5,\n },\n text: {\n fontSize: 9,\n },\n sentence: {\n fontSize: 12,\n justifyContent: 'center',\n marginLeft: 20,\n },\n sentenceTop: {\n fontSize: 12,\n justifyContent: 'center',\n marginLeft: 20,\n marginTop: 10,\n },\n margin: {\n fontSize: 9,\n padding: '6px 0px',\n },\n moreText: {\n marginTop: 5,\n padding: '5px 0px',\n fontSize: 9,\n },\n mainContainer: {\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-around',\n },\n bloc: {\n position: 'absolute',\n bottom: 45,\n left: 0,\n right: 0,\n },\n});\n\nconst ImageText: FC<{ src: any; text?: string; elm?: any }> = ({\n src,\n text,\n children,\n}) => (\n <View style={styles.imgTextContainer}>\n <Image src={src} style={styles.img} />\n {children && children}\n {text && <Text style={styles.text}>{text}</Text>}\n </View>\n);\n\nconst infoWording = Wording.Informations;\n\nexport default () => (\n <View style={styles.bloc}>\n <View>\n <Text style={styles.sentenceTop}>{infoWording.text_1}</Text>\n <Text style={styles.sentence}>{infoWording.text_2}</Text>\n <Text style={styles.sentence}>{infoWording.text_3}</Text>\n </View>\n <View style={styles.mainContainer}>\n <View style={styles.container}>\n <ImageText src={MailIcon} text={infoWording.mail} />\n <ImageText src={FacebookIcon} text={infoWording.facebook} />\n <ImageText src={PhoneIcon}>\n <View>\n <Text style={styles.text}>{infoWording.phone}</Text>\n <Text style={{ ...styles.text, ...styles.phoneText }}>\n {infoWording.phoneDescription}\n </Text>\n </View>\n </ImageText>\n </View>\n </View>\n </View>\n);\n","import React from 'react';\n\nimport { Image, View, StyleSheet, Text } from '@react-pdf/renderer';\n\nimport Logo from '../../../../assets/icons/PDFs/ProofOfPayment/ic-logo-sidebar.png';\n\nconst styles = StyleSheet.create({\n container: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n position: 'absolute',\n bottom: 0,\n left: 0,\n right: 0,\n height: '35px',\n backgroundColor: '#ffb40a',\n padding: 2,\n },\n img: {\n width: '110px',\n height: '55px',\n padding: '10px 0px',\n },\n text: {\n fontSize: 15,\n fontWeight: 'bold',\n fontFamily: 'Montserrat',\n },\n smallText: {\n fontSize: 9,\n },\n});\n\nexport default () => (\n <View fixed style={styles.container}>\n <Text style={styles.text}>www.espace-clients.wekiwi.fr</Text>\n <Text style={styles.smallText}>\n L'énergie est notre avenir, économisons la.\n </Text>\n </View>\n);\n","import React, { FC } from 'react';\n\nimport { Document, Page, StyleSheet } from '@react-pdf/renderer';\n\nimport './fonts';\n\nimport Header from './components/Header';\nimport CustomerContainer from './components/CustomerContainer';\nimport ContractContainer from './components/ContractContainer';\nimport TimelineTable from './components/TimelineTable';\nimport Informations from './components/Informations';\nimport Footer from './components/Footer';\n\nimport { TimelineProps } from './type';\nimport { TimelineProvider } from './lib';\n\nconst media: any = {\n '@media max-width: 400': {\n flexDirection: 'column',\n },\n};\n\nconst styles = StyleSheet.create({\n page: {},\n});\n\nconst Timeline: FC<TimelineProps> = props => {\n return (\n <TimelineProvider value={{ ...props }}>\n <Document author=\"Wekiwi SAS\" title=\"ECHEANCIER\">\n <Page size=\"A4\" style={styles.page}>\n <Header />\n <CustomerContainer />\n <ContractContainer />\n <TimelineTable />\n <Informations />\n <Footer />\n </Page>\n </Document>\n </TimelineProvider>\n );\n};\n\nexport default Timeline;\n","import { pdf } from '@react-pdf/renderer';\nimport React from 'react';\nimport Timeline from './Timeline';\nimport { TimelineProps } from './type';\n\nexport default function(props: TimelineProps) {\n pdf(<Timeline {...props} />)\n .toBlob()\n .then(blob => {\n window.open(URL.createObjectURL(blob));\n });\n}\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { RootState } from 'Types';\nimport { compose } from 'recompose';\nimport { Subtract } from 'utility-types';\n\nimport PaymentContainer, {\n Props as ContainerProps,\n} from '../../containers/PaymentContainer/PaymentContainer';\nimport { ChangePiece } from '../../containers/FailPieceContainer/FailPieceContainer';\nimport withBanner, {\n ExternalProps as ExternalPropsBanner,\n} from '../../libraries/withBanner';\nimport withModal, {\n ExternalProps as ExternalPropsModal,\n InjectedProps as InjectedPropsModal,\n} from '../../libraries/withModal';\n\nimport {\n fetchContractAsync,\n resetContractState,\n setContract,\n} from '../../_actions/contract.actions';\nimport {\n fetchPiecesAsync,\n createPaymentAsync,\n resetUpdate,\n getSupportingDocumentsAsync,\n} from '../../_actions/payment.actions';\nimport {\n findContractByNumber,\n transformPieceType,\n findNextAndLastPieces,\n} from '../../utils/helpers';\nimport WordingConstant from '../../utils/wording.json';\n\nimport { TContract, TPiece, TEPInvoice } from 'Models';\n\nimport { generateTimelinePDF } from '../../components/PDFs/Timeline';\nimport { fetchFilesListAsync } from '../../_actions/file.actions';\nimport { initialEPInvoice } from '../../utils/initialState';\n\nconst Wording = WordingConstant.PaymentPage;\n\nconst mapStateToProps = (state: RootState) => ({\n profileState: state.profileReducer,\n contractState: state.contractReducer,\n paymentState: state.paymentReducer,\n fileState: state.fileReducer,\n});\n\nconst dispatchProps = {\n contractDispatch: fetchContractAsync.request,\n // fetchPiecesDispatch: fetchPiecesAsync.request,\n filesListDispatch: fetchFilesListAsync.request,\n createPaymentDispatch: createPaymentAsync.request,\n resetCreatePaymentDispatch: resetUpdate,\n resetContractDispatch: resetContractState,\n setContractDispatch: setContract,\n getSupportingDocumentsDispatch: getSupportingDocumentsAsync.request,\n};\n\ntype Props = ReturnType<typeof mapStateToProps> & typeof dispatchProps;\n\nconst WrappedPayment = compose<\n ContainerProps,\n Subtract<ContainerProps, InjectedPropsModal> &\n ExternalPropsBanner &\n ExternalPropsModal\n>(\n withBanner(),\n withModal(),\n)(PaymentContainer);\n\ntype State = {\n fields: ChangePiece;\n};\n\nexport type GenerateProofProps = {\n contract: TContract;\n piece: TEPInvoice;\n};\n\nexport type GenerateTimelineProps = {\n contract: TContract;\n pieces: TEPInvoice[];\n};\n\nclass PaymentPage extends React.Component<Props, State> {\n constructor(props: Props) {\n super(props);\n\n this.state = {\n fields: {\n dueDate: '',\n piece: initialEPInvoice,\n },\n };\n }\n\n componentDidMount = () => {\n const {\n contractState: { selectedContractNumber },\n // fetchPiecesDispatch,\n filesListDispatch,\n profileState: { customerNumber },\n }: Props = this.props;\n\n const payload = {\n contractNbr: selectedContractNumber,\n customerNbr: customerNumber,\n mode: 'PAYMENT',\n };\n // fetchPiecesDispatch(payload);\n filesListDispatch({\n contractNbr: selectedContractNumber,\n customerNbr: customerNumber,\n mode: 'PAYMENT',\n });\n };\n\n handleChangeBanner = (contractNumber: string) => {\n const {\n contractState: { contracts },\n profileState: { customerNumber },\n contractDispatch,\n // fetchPiecesDispatch,\n setContractDispatch,\n filesListDispatch,\n } = this.props;\n const payload = {\n contractNbr: contractNumber,\n customerNbr: customerNumber,\n };\n const contract = findContractByNumber(contractNumber, contracts);\n if (contract.isFetched) {\n setContractDispatch({ contract });\n } else {\n contractDispatch(payload);\n }\n filesListDispatch({\n contractNbr: contractNumber,\n customerNbr: customerNumber,\n mode: 'PAYMENT',\n });\n };\n\n handleChangeFailPiece = (ff: TEPInvoice, dd: string) => {\n const { fields } = this.state;\n fields.dueDate = dd;\n fields.piece = ff;\n this.setState({ fields });\n };\n\n handleUpdate = () => {\n const { fields } = this.state;\n const { createPaymentDispatch } = this.props;\n createPaymentDispatch(fields);\n fields.dueDate = '';\n // fields.piece = '';\n this.setState({ fields });\n };\n\n generateProof = (props: GenerateProofProps) => {\n const { getSupportingDocumentsDispatch, profileState } = this.props;\n const {\n contact: { customerFullName, address, email, phone },\n customerType,\n customerNumber,\n } = profileState;\n\n const { contract, piece } = props;\n\n if (!piece) return;\n\n getSupportingDocumentsDispatch({\n mode: 'proofOfPayment',\n contractNbr: contract.contractNumber,\n cunstomerName: customerFullName,\n customerType,\n energyType: contract.energy,\n pieceReference: piece.id,\n pieceType: transformPieceType(piece.internal_invoice_nature_code),\n customerNbr: customerNumber,\n residenceAdress: address,\n subscriptionDate: contract.subscriptionDate,\n coholderName: contract.thirdParties.find(\n tp => tp.role === 'COHOLDER',\n ) as any,\n actionProps: {\n contract: props.contract,\n piece: props.piece,\n customer: {\n name: customerFullName,\n customerNbr: customerNumber,\n email,\n phone,\n },\n address,\n },\n });\n };\n\n generateTimeline = (props: GenerateTimelineProps) => {\n const { profileState, fileState } = this.props;\n\n const {\n contact: { customerFullName, address },\n customerType,\n customerNumber,\n } = profileState;\n const { payments } = fileState;\n const { contract } = props;\n\n generateTimelinePDF({\n contract,\n payments,\n customer: {\n name: {\n firstName: customerFullName.firstName,\n lastName: customerFullName.lastName,\n },\n customerNbr: customerNumber,\n },\n address: {\n number: address.number,\n street: address.street,\n netArea: address.netArea,\n postalCode: address.postalCode,\n country: address.country,\n townName: address.townName,\n },\n });\n };\n\n handleReset = () => {\n const {\n filesListDispatch,\n resetCreatePaymentDispatch,\n profileState: { customerNumber },\n contractState: { selectedContractNumber },\n } = this.props;\n\n resetCreatePaymentDispatch();\n filesListDispatch({\n contractNbr: selectedContractNumber,\n customerNbr: customerNumber,\n mode: 'PAYMENT',\n });\n };\n\n render() {\n const {\n profileState: { contact, customerType, customerNumber },\n contractState: { contracts, selectedContractNumber, error },\n paymentState: { updateResponse, supportingDocument },\n fileState: { payments },\n resetCreatePaymentDispatch,\n resetContractDispatch,\n }: Props = this.props;\n\n const contract = findContractByNumber(\n selectedContractNumber,\n contracts,\n );\n\n return (\n <WrappedPayment\n pieces={payments}\n customerNumber={customerNumber}\n contract={contract}\n handleChangeFailPiece={this.handleChangeFailPiece}\n supportingDocument={supportingDocument}\n generateProof={this.generateProof}\n generateTimeline={this.generateTimeline}\n // Banner\n title={Wording.title}\n bannerError={error}\n handleCloseModalBanner={() => resetContractDispatch()}\n contracts={contracts}\n contact={contact}\n customerType={customerType}\n handleChangeBanner={this.handleChangeBanner}\n selectedContractNumber={selectedContractNumber}\n // Modal\n modalMessage={Wording.popup}\n updateResponse={updateResponse}\n handleValidate={this.handleUpdate}\n handleReset={this.handleReset}\n />\n );\n }\n}\n\nexport default connect(mapStateToProps, dispatchProps)(PaymentPage);\n","import PaymentPage from './PaymentPage';\n\nexport default PaymentPage;\n","import React from 'react';\n\nimport { TAddress, TWordingItem } from 'Models';\nimport { IContact, IBilling } from './types';\nimport { ECivility, ECustomerType } from '../../utils/enums';\nimport { getLabelCivility } from '../../utils/helpers';\n\nimport WordingConstant from '../../utils/wording.json';\nconst Wording = WordingConstant.ProfilePage;\n\nconst array_pro: TWordingItem[] = [\n {\n id: '1',\n label: Wording.pro.companyName,\n value: 'companyName',\n },\n {\n id: '2',\n label: Wording.pro.companyLegalFormCode,\n value: 'companyType',\n },\n {\n id: '3',\n label: Wording.pro.activityCode,\n value: 'activityCode',\n },\n {\n id: '4',\n label: Wording.pro.identificationNumber,\n value: 'identificationNumber',\n },\n];\n\nconst CustomerContact: React.FC<{\n contact: IContact;\n billing: IBilling;\n contractNumber: string;\n type: string;\n customerType?: string;\n}> = ({ contact, billing, contractNumber, type, customerType }) => {\n const renderProData = (cnt: any) => {\n return array_pro.map((pro: TWordingItem, index: number) => (\n <React.Fragment key={index}>\n {cnt[pro.value] && (\n <p className=\"margin\">\n {pro.label} {cnt[pro.value]}\n </p>\n )}\n </React.Fragment>\n ));\n };\n let c: {\n civility: ECivility;\n firstName: string;\n lastName: string;\n email: string;\n phone?: string;\n birthdate?: string;\n address: TAddress;\n } = {\n civility: contact.civility,\n firstName: contact.firstName,\n lastName: contact.lastName,\n email: contact.email,\n phone: contact.phone,\n birthdate: contact.birthdate,\n address: contact.address,\n };\n if (type === 'billing') {\n c = {\n civility: billing.civility,\n firstName: billing.firstName,\n lastName: billing.lastName,\n email: billing.email,\n address: billing.address,\n };\n }\n\n return (\n <div className=\"profile-container__information\">\n <div className=\"profile-container__information__consumption\">\n {type === 'contact' ? (\n <h3>{Wording.consumption.title}</h3>\n ) : (\n <h3>{Wording.billing.title}</h3>\n )}\n {c.firstName && (\n <p>{`${getLabelCivility(c.civility)} ${c.firstName} ${\n c.lastName\n }`}</p>\n )}\n {type === 'contact' ? (\n <p className=\"margin\">{Wording.consumption.email}</p>\n ) : (\n <p className=\"margin\">{Wording.billing.email}</p>\n )}\n {c.email && <p>{c.email}</p>}\n {c.phone && (\n <p className=\"margin\">\n {Wording.phone} {c.phone}\n </p>\n )}\n {c.birthdate !== '' && c.birthdate !== undefined && (\n <p className=\"margin\">Date de naissance : {c.birthdate}</p>\n )}\n {customerType === ECustomerType.PROFESSIONAL &&\n renderProData(contact)}\n {customerType === ECustomerType.INDIVIDUAL &&\n contact.coholderCivility &&\n contact.coholderFirstName &&\n contact.coholderFirstName !== '' && (\n <p className=\"margin\">\n Co-titulaire :{' '}\n {getLabelCivility(contact.coholderCivility)}{' '}\n {contact.coholderFirstName}\n </p>\n )}\n </div>\n <div className=\"profile-container__information__address\">\n {type === 'contact' ? (\n <h3>{Wording.consumption.addressTitle}</h3>\n ) : (\n <h3>{Wording.billing.contact.address}</h3>\n )}\n {contractNumber && (\n <p className=\"contract\">{`Contrat n° ${contractNumber}`}</p>\n )}\n <p className=\"street\">\n {c.address.number} {c.address.street}\n </p>\n <p className=\"townName\">\n {c.address.postalCode} {c.address.townName}\n </p>\n </div>\n </div>\n );\n};\n\nexport default CustomerContact;\n","import React from 'react';\n\nimport { TFinance } from 'Models';\nimport { getLabelPaymentMode } from '../../utils/helpers';\n\nimport WordingConstant from '../../utils/wording.json';\n\nconst Wording = WordingConstant.ProfilePage;\n\nconst Payment: React.FC<{\n finance: TFinance;\n}> = ({ finance }) => {\n const f = finance || {};\n return (\n <React.Fragment>\n <h3 className=\"profile-container__payment-method__title\">\n {Wording.paymentMethod.title}\n </h3>\n <div className=\"profile-container__payment-method\">\n <div className=\"profile-container__payment-method__texts\">\n <p>{Wording.paymentMethod.paymentMode}</p>\n <p>{Wording.paymentMethod.samplingDate}</p>\n <p>{Wording.paymentMethod.IBAN}</p>\n </div>\n <div className=\"profile-container__payment-method__data\">\n <p>{getLabelPaymentMode(f.paymentMode)}</p>\n <p>\n {' '}\n {f.debitDay} {WordingConstant.Common.debitDaySuffix}\n </p>\n <p>{f.ibanCode}</p>\n </div>\n </div>\n </React.Fragment>\n );\n};\n\nexport default Payment;\n","import React from 'react';\n\nimport { InputEvent } from 'Types';\nimport { IFields, ISetting } from './types';\nimport { CustomInput, CustomSelect, CustomToggle } from '../../components';\n\nimport { isValidName } from '../../utils/helpers';\nimport WordingConstant from '../../utils/wording.json';\n\nconst Wording = WordingConstant.ProfilePage;\n\nconst ModificationCoholder: React.FC<{\n fields: IFields;\n setting: ISetting;\n showError: boolean;\n handleChangeCivility(section: string, value: string): void;\n handleInputChange(e: InputEvent, section: string, type: string): void;\n handleResetCoholder(civility?: string, firstName?: string): void;\n}> = ({\n fields: {\n contact: { coholderCivility, coholderFirstName },\n },\n setting: { checkCoholder },\n showError,\n handleChangeCivility,\n handleInputChange,\n handleResetCoholder,\n}) => {\n return (\n <div className=\"profile-container__coholder\">\n <CustomToggle\n id={Wording.addOwner}\n text={Wording.addOwner}\n checked={checkCoholder}\n handleCheck={() => {\n handleResetCoholder(coholderCivility, coholderFirstName);\n }}\n />\n {checkCoholder && (\n <div className=\"profile-container__coholder__content\">\n <div className=\"profile-container__coholder__content__inputs\">\n <CustomSelect\n id=\"civility\"\n defaultValue={\n coholderCivility ? coholderCivility : 'MR'\n }\n options={Wording.civility.values}\n handleChangeSelect={(e: any) =>\n handleChangeCivility('contact', e.value)\n }\n value={coholderCivility}\n />\n <CustomInput\n placeholder={Wording.coholder.firstName}\n value={coholderFirstName || ''}\n onInputChange={(e: InputEvent) =>\n handleInputChange(\n e,\n 'contact',\n 'coholderFirstName',\n )\n }\n error={\n showError && !isValidName(coholderFirstName)\n ? Wording.error.contact.firstName\n : undefined\n }\n />\n </div>\n <div className=\"profile-container__coholder__content__right\" />\n </div>\n )}\n </div>\n );\n};\n\nexport default ModificationCoholder;\n","import React, { useState } from 'react';\nimport { InputEvent } from 'Types';\nimport replace from 'lodash/replace';\n\nimport {\n CustomInput,\n CustomRadio,\n CustomButton,\n CustomToggle,\n} from '../../components';\nimport { IFields, TPaymentMethodSection } from './types';\n\nimport { displayIban, isValidIban } from '../../utils/helpers';\n\nimport WordingConstant from '../../utils/wording.json';\n\nconst Wording = WordingConstant.ProfilePage;\nconst ModificationPayment: React.FC<{\n fields: IFields;\n showError: boolean;\n paymentMethodSection: TPaymentMethodSection;\n validateItems: {\n isValidIbanCode: boolean;\n isValidDebitDay: boolean;\n };\n handleCheckUpdate(section: string, value: boolean): void;\n handleInputChange(e: InputEvent, section: string, type: string): void;\n handleDebitDay(value: string): void;\n handlePaymentSection(section: TPaymentMethodSection): void;\n handleShowErrorMessage(section: string): void;\n handleShowModal(section: string): void;\n}> = ({\n fields,\n showError,\n handleInputChange,\n handleDebitDay,\n handlePaymentSection,\n paymentMethodSection,\n handleShowErrorMessage,\n handleShowModal,\n validateItems,\n handleCheckUpdate,\n}) => {\n const ibanCondition = paymentMethodSection === 'IBAN';\n const debitDayCondition = paymentMethodSection === 'DEBIT_DAY';\n return (\n <>\n <div className=\"profile-container__update-payment-method\">\n <div\n className={`profile-container__update-payment-method__iban ${\n !ibanCondition ? '--off' : ''\n }`}\n >\n <div\n className=\"tg-block\"\n onClick={() => handlePaymentSection('IBAN')}\n >\n <CustomToggle\n checked={ibanCondition}\n handleCheck={() => {}}\n text={Wording.paymentMethod.IBAN}\n />\n </div>\n\n <CustomInput\n placeholder={Wording.paymentMethod.inputs.IBAN}\n value={displayIban(fields.billing.iban)}\n onInputChange={(e: InputEvent) =>\n handleInputChange(e, 'billing', 'iban')\n }\n error={\n !isValidIban(fields.billing.iban) &&\n fields.billing.iban.length >= 15\n ? Wording.error.billing.iban\n : ''\n }\n disabled={!ibanCondition}\n />\n {ibanCondition && (\n <CustomButton\n title={Wording.buttons.validate}\n disabled={!validateItems.isValidIbanCode}\n onClick={() => {\n if (validateItems.isValidIbanCode) {\n handleShowErrorMessage('iban');\n handleShowModal('iban');\n handleCheckUpdate('iban', false);\n }\n }}\n color={\n validateItems.isValidIbanCode\n ? 'orange'\n : 'gray'\n }\n />\n )}\n </div>\n <div\n className={`profile-container__update-payment-method__debit-day \n ${!debitDayCondition ? '--off' : ''}\n \n `}\n >\n <div\n className=\"tg-block\"\n onClick={() => handlePaymentSection('DEBIT_DAY')}\n >\n <CustomToggle\n checked={debitDayCondition}\n handleCheck={() => {}}\n text={Wording.paymentMethod.titleDebitDay}\n />\n </div>\n\n <div className=\"profile-container__update-payment-method__debit-day__container\">\n {Wording.paymentMethod.debitDaysEnum.map(dd => (\n <CustomRadio\n key={dd}\n checked={dd === fields.debitDay}\n text={replace(\n Wording.paymentMethod.debitDayLabel,\n '{{ddValue}}',\n dd,\n )}\n value={dd}\n handleCheck={() =>\n debitDayCondition && handleDebitDay(dd)\n }\n />\n ))}\n </div>\n\n {debitDayCondition && (\n <CustomButton\n title={Wording.buttons.validate}\n onClick={() => {\n if (validateItems.isValidDebitDay) {\n handleShowErrorMessage('debitDay');\n handleShowModal('debitDay');\n }\n }}\n color={\n validateItems.isValidDebitDay\n ? 'orange'\n : 'gray'\n }\n />\n )}\n </div>\n </div>\n </>\n );\n};\n\nexport default ModificationPayment;\n","import React from 'react';\n\nimport { InputEvent } from 'Types';\nimport { IFields } from './types';\nimport { CustomInput } from '../../components';\nimport {\n isValidEmail,\n isValidPhone,\n displayPhoneWithoutPrefix,\n} from '../../utils/helpers';\n\nimport WordingConstant from '../../utils/wording.json';\n\nconst Wording = WordingConstant.ProfilePage;\n\nconst ModificationContact: React.FC<{\n fields: IFields;\n showError: boolean;\n handleInputChange(e: InputEvent, section: string, type: string): void;\n}> = props => {\n const {\n fields: {\n contact: { email, phone },\n },\n handleInputChange,\n showError,\n } = props;\n\n const phoneUpdated = displayPhoneWithoutPrefix(phone);\n return (\n <div className=\"profile-container__inputs\">\n <div className=\"profile-container__inputs__content\">\n <h3>{Wording.consumption.title}</h3>\n <CustomInput\n placeholder={Wording.consumption.inputs.email}\n onInputChange={(e: InputEvent) =>\n handleInputChange(e, 'contact', 'email')\n }\n value={email}\n error={\n !isValidEmail(email) && showError\n ? Wording.error.email\n : undefined\n }\n />\n <CustomInput\n placeholder={Wording.consumption.inputs.phone}\n onInputChange={(e: InputEvent) =>\n handleInputChange(e, 'contact', 'phone')\n }\n minLength={10}\n maxLength={10}\n value={phoneUpdated}\n error={\n !isValidPhone(phoneUpdated) && showError\n ? Wording.error.phone\n : undefined\n }\n />\n </div>\n <div className=\"profile-container__inputs__right\" />\n </div>\n );\n};\n\nexport default ModificationContact;\n","import React from 'react';\nimport Select from 'react-select';\n\nimport { InputEvent } from 'Types';\nimport { IFields, ISetting } from './types';\nimport { CustomInput, CustomSelect } from '../../components';\nimport { isValidEmail, getLabelCivility } from '../../utils/helpers';\n\nimport WordingConstant from '../../utils/wording.json';\n\nconst Wording = WordingConstant.ProfilePage;\n\ntype InfoInput = {\n placeholder: string;\n value: string;\n label: string;\n error?: string;\n};\n\nconst ModificationBilling: React.FC<{\n handleChangeCivility: any;\n fields: IFields;\n setting: ISetting;\n handleChangeDropdown: any;\n handleAddressChange: any;\n onFocusDropdown: any;\n handleInputChange(e: InputEvent, section: string, type: string): void;\n}> = ({\n fields,\n setting,\n handleInputChange,\n handleAddressChange,\n handleChangeDropdown,\n handleChangeCivility,\n onFocusDropdown,\n}) => {\n const { billing } = fields;\n const { showErrorBilling } = setting;\n\n const infoInputs: InfoInput[] = [\n {\n placeholder: Wording.billing.contact.lastName,\n value: billing.lastName,\n label: 'lastName',\n error:\n billing.lastName === '' && showErrorBilling\n ? Wording.error.billing.lastName\n : undefined,\n },\n {\n placeholder: Wording.billing.contact.firstName,\n value: billing.firstName,\n label: 'firstName',\n error:\n billing.firstName === '' && showErrorBilling\n ? Wording.error.billing.firstName\n : undefined,\n },\n {\n placeholder: Wording.billing.contact.email,\n value: billing.email,\n label: 'email',\n error:\n showErrorBilling && !isValidEmail(billing.email)\n ? Wording.error.billing.email\n : undefined,\n },\n ];\n return (\n <div className=\"profile-container__update-billing\">\n <div className=\"profile-container__update-billing__contact\">\n <h3>{Wording.billing.title}</h3>\n <CustomSelect\n id=\"civility\"\n defaultValue={billing.civility}\n options={Wording.civility.values}\n handleChangeSelect={(e: any) =>\n handleChangeCivility('billing', e.value)\n }\n value={billing.civility}\n error={\n getLabelCivility(billing.civility) === '' &&\n showErrorBilling\n ? Wording.error.mainText\n : undefined\n }\n />\n {infoInputs.map((info: InfoInput, index: number) => (\n <CustomInput\n key={index}\n placeholder={info.placeholder}\n value={info.value}\n onInputChange={(e: InputEvent) =>\n handleInputChange(e, 'billing', info.label)\n }\n maxLength={info.label === 'phone' ? 10 : 200}\n error={info.error}\n />\n ))}\n </div>\n <div className=\"profile-container__update-billing__address\">\n <h3>{Wording.billing.contact.address}</h3>\n <CustomInput\n value={setting.addressVal || ''}\n placeholder={Wording.billing.contact.address}\n onInputChange={(e: InputEvent) =>\n handleAddressChange(e.currentTarget.value, 'address')\n }\n error={\n setting.addressVal === '' && showErrorBilling\n ? Wording.error.billing.address\n : undefined\n }\n />\n\n <Select\n className=\"select\"\n classNamePrefix=\"react-select\"\n placeholder={Wording.billing.contact.postalCode}\n onInputChange={(val: string) => {\n handleAddressChange(val, 'postalCode');\n }}\n onChange={handleChangeDropdown}\n inputValue={setting.pc}\n onFocus={onFocusDropdown}\n options={setting.postalCodes}\n value={billing.currentPostalCode}\n defaultValue={billing.currentPostalCode}\n styles={{\n placeholder: () => ({\n color:\n billing.address.postalCode !== ''\n ? 'black'\n : '#746d6d',\n }),\n }}\n />\n {billing.address.postalCode === '' && showErrorBilling && (\n <p className=\"profile-container__update-billing__address__errorPostalCode\">\n {Wording.error.billing.postalCode}\n </p>\n )}\n\n <CustomInput\n value={billing.address.townName || ''}\n isLocked={true}\n placeholder={Wording.billing.contact.city}\n onInputChange={() => {}}\n />\n </div>\n </div>\n );\n};\n\nexport default ModificationBilling;\n","import React, { useState } from 'react';\nimport { InputEvent } from 'Types';\nimport { TContract } from 'Models';\nimport {\n IFields,\n ISetting,\n IContact,\n IBilling,\n TPaymentMethodSection,\n} from './types';\nimport { ECustomerType } from '../../utils/enums';\n\nimport CustomerContact from './CustomerContact';\nimport Payment from './Payment';\nimport ModificationCoholder from './ModificationCoholder';\nimport ModificationPayment from './ModificationPayment';\nimport ModificationContact from './ModificationContact';\nimport ModificationBilling from './ModificationBilling';\nimport ModificationButtons from './ModificationButtons';\n\nimport {\n isValidEmail,\n isValidPhone,\n isValidIban,\n isValidString,\n isValidName,\n displayPhoneWithoutPrefix,\n} from '../../utils/helpers';\n\nimport WordingConstant from '../../utils/wording.json';\n\nconst Wording = WordingConstant.ProfilePage;\n\nexport type Props = {\n selectedContractNumber: string;\n contracts: TContract[];\n customerType: string;\n setting: ISetting;\n fields: IFields;\n currentContact: IContact;\n billing: IBilling;\n handleChangeDropdown?: any;\n handleAddressChange?: any;\n onFocusDropdown?: any;\n checkUpdateProfile: any;\n handleResetCoholder(civility?: string, firstName?: string): void;\n handleInputChange(e: InputEvent, section: string, type: string): void;\n handleChangeCivility(section: string, value: string): void;\n handleShowErrorMessage(section: string): void;\n handleShowModal(section: string): void;\n handleDebitDay(value: string): void;\n handlePaymentSection(section: TPaymentMethodSection): void;\n handleCheckUpdate(section: string, value: boolean): void;\n};\n\n/**\n * Display the only container for profile\n * @param currentContact is fixed data containing contact info\n * @param billing is fixed data containing billing info\n * @param fields is variable data containing contact info and billing info\n * @param setting is variable data containing error and address info\n */\nconst ProfileContainer: React.FC<Props> = ({\n selectedContractNumber,\n contracts,\n customerType,\n currentContact,\n billing,\n fields,\n setting,\n handleChangeDropdown,\n onFocusDropdown,\n handleAddressChange,\n handleResetCoholder,\n handleShowModal,\n handleShowErrorMessage,\n handleInputChange,\n handleChangeCivility,\n handleDebitDay,\n handlePaymentSection,\n handleCheckUpdate,\n checkUpdateProfile,\n}) => {\n const handleValidateContact = (): boolean => {\n const {\n contact: { email, phone, coholderCivility, coholderFirstName },\n } = fields;\n const coholderCondition =\n coholderCivility && coholderFirstName\n ? isValidName(coholderFirstName)\n : !setting.checkCoholder;\n return (\n isValidEmail(email) &&\n isValidPhone(displayPhoneWithoutPrefix(phone)) &&\n coholderCondition\n );\n };\n\n const handleValidateBilling = (): boolean => {\n const {\n email,\n firstName,\n lastName,\n address: { postalCode, street, townName },\n } = fields.billing;\n return (\n isValidString(firstName) &&\n isValidString(lastName) &&\n isValidEmail(email) &&\n postalCode !== '' &&\n street !== '' &&\n townName !== ''\n );\n };\n\n const handleValidateIban = (): boolean => {\n const {\n billing: { iban },\n } = fields;\n return isValidIban(iban);\n };\n\n const handleValidateDebitDay = () => {\n const { debitDay } = fields;\n\n return debitDay !== contract.finance.debitDay;\n };\n\n const contract =\n contracts.find(\n (c: TContract) => c.contractNumber === selectedContractNumber,\n ) || contracts[0];\n\n const isValidContact = handleValidateContact();\n const isValidBilling = handleValidateBilling();\n const isValidIbanCode = handleValidateIban();\n const isValidDebitDay = handleValidateDebitDay();\n\n return (\n <div className=\"profile-container\">\n <h1 className=\"profile-container__subtitle\">{Wording.subtitle}</h1>\n {!checkUpdateProfile.checkUpdateContact ? (\n <CustomerContact\n type=\"contact\"\n contractNumber={contract.contractNumber}\n contact={currentContact}\n billing={billing}\n customerType={customerType}\n />\n ) : (\n <>\n <ModificationContact\n fields={fields}\n handleInputChange={handleInputChange}\n showError={setting.showErrorCustomer}\n />\n {customerType === ECustomerType.INDIVIDUAL && (\n <ModificationCoholder\n fields={fields}\n setting={setting}\n showError={setting.showErrorCustomer}\n handleChangeCivility={handleChangeCivility}\n handleInputChange={handleInputChange}\n handleResetCoholder={handleResetCoholder}\n />\n )}\n </>\n )}\n <ModificationButtons\n showButton={!checkUpdateProfile.checkUpdateContact}\n condition={isValidContact}\n handleButtonClick={() => handleCheckUpdate('contact', true)}\n handleButtonCancel={() => handleCheckUpdate('contact', false)}\n handleButtonValidate={\n isValidContact\n ? () => handleShowModal('contact')\n : () => handleShowErrorMessage('contact')\n }\n />\n <span className=\"profile-container__line\" />\n {!checkUpdateProfile.checkUpdateBilling ? (\n <React.Fragment>\n <CustomerContact\n type=\"billing\"\n contact={currentContact}\n billing={billing}\n contractNumber={contract.contractNumber}\n />\n </React.Fragment>\n ) : (\n <ModificationBilling\n fields={fields}\n setting={setting}\n handleChangeCivility={handleChangeCivility}\n handleChangeDropdown={handleChangeDropdown}\n handleAddressChange={handleAddressChange}\n handleInputChange={handleInputChange}\n onFocusDropdown={onFocusDropdown}\n />\n )}\n <ModificationButtons\n showButton={!checkUpdateProfile.checkUpdateBilling}\n condition={isValidBilling}\n handleButtonClick={() => handleCheckUpdate('billing', true)}\n handleButtonCancel={() => handleCheckUpdate('billing', false)}\n handleButtonValidate={\n isValidBilling\n ? () => handleShowModal('billing')\n : () => handleShowErrorMessage('billing')\n }\n />\n <span className=\"profile-container__line\" />\n {!checkUpdateProfile.checkUpdateIban ? (\n <Payment finance={contract.finance} />\n ) : (\n <ModificationPayment\n fields={fields}\n handleCheckUpdate={handleCheckUpdate}\n showError={setting.showErrorIban}\n handleInputChange={handleInputChange}\n handleDebitDay={handleDebitDay}\n paymentMethodSection={setting.paymentMethodSection}\n handlePaymentSection={handlePaymentSection}\n validateItems={{\n isValidIbanCode,\n isValidDebitDay,\n }}\n handleShowModal={handleShowModal}\n handleShowErrorMessage={handleShowErrorMessage}\n />\n )}\n <ModificationButtons\n showButton={!checkUpdateProfile.checkUpdateIban}\n condition={isValidIbanCode}\n disabledValidate={true}\n handleButtonClick={() => handleCheckUpdate('iban', true)}\n handleButtonCancel={() => {\n handleCheckUpdate('iban', false);\n handlePaymentSection('IBAN');\n }}\n handleButtonValidate={() => {}}\n />\n </div>\n );\n};\n\nexport default ProfileContainer;\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { compose } from 'recompose';\nimport { Subtract } from 'utility-types';\nimport { RootState, InputEvent } from 'Types';\nimport { TContract } from 'Models';\nimport { ECivility, EModeUpdateBilling } from '../../utils/enums';\nimport withBanner, {\n ExternalProps as ExternalPropsBanner,\n} from '../../libraries/withBanner';\nimport withModal, {\n ExternalProps as ExternalPropsModal,\n InjectedProps as InjectedPropsModal,\n} from '../../libraries/withModal';\nimport SearchService from '../../utils/search';\n\nimport {\n findContractByNumber,\n findCoholder,\n getTodayDate,\n getPhoneWithPrefix,\n} from '../../utils/helpers';\nimport { initialAddress } from '../../utils/initialState';\n\nimport {\n fetchContractAsync,\n resetContractState,\n setContract,\n} from '../../_actions/contract.actions';\n\nimport {\n updateCustomerAsync,\n resetUpdate,\n updateBillingAsync,\n IRequestUpdateCustomerCoholderEvent,\n IRequestUpdateBillingEvent,\n} from '../../_actions/profile.actions';\nimport ProfileContainer, {\n Props as ContainerProps,\n} from '../../containers/ProfileContainer/ProfileContainer';\nimport {\n IFields,\n ISetting,\n IBilling,\n IContact,\n IPostalCode,\n TPaymentMethodSection,\n} from '../../containers/ProfileContainer/types';\n\nimport WordingConstant from '../../utils/wording.json';\n\nconst Wording = WordingConstant.ProfilePage;\n\nconst mapStateToProps = (state: RootState) => ({\n profileState: state.profileReducer,\n contractState: state.contractReducer,\n});\n\nconst dispatchProps = {\n contractDispatch: fetchContractAsync.request,\n updateCustomerDispatch: updateCustomerAsync.request,\n resetUpdateDispatch: resetUpdate,\n updateBillingDispatch: updateBillingAsync.request,\n resetContractDispatch: resetContractState,\n setContractDispatch: setContract,\n};\n\ntype State = {\n fields: IFields;\n setting: ISetting;\n checkUpdateProfile: {\n checkUpdateContact: boolean;\n checkUpdateBilling: boolean;\n checkUpdateIban: boolean;\n };\n};\n\ntype Props = ReturnType<typeof mapStateToProps> & typeof dispatchProps;\n\nconst WrappedProfile = compose<\n ContainerProps,\n Subtract<ContainerProps, InjectedPropsModal> &\n ExternalPropsBanner &\n ExternalPropsModal\n>(\n withBanner(),\n withModal(),\n)(ProfileContainer);\n\nclass ProfilePage extends React.Component<Props, State> {\n searchService: any;\n\n constructor(props: Props) {\n super(props);\n\n const { profileState, contractState } = this.props;\n const contract = findContractByNumber(\n contractState.selectedContractNumber,\n contractState.contracts,\n );\n const contact: IContact = {\n civility: profileState.contact.customerFullName.civility,\n firstName: profileState.contact.customerFullName.firstName,\n lastName: profileState.contact.customerFullName.lastName,\n birthdate: profileState.contact.birthdate,\n address: profileState.contact.address,\n email: profileState.contact.email,\n phone: profileState.contact.phone,\n };\n const coholder = findCoholder(contract);\n if (coholder) {\n contact.coholderCivility = coholder.civility as ECivility;\n contact.coholderFirstName = coholder.firstName;\n } else {\n contact.coholderCivility = ECivility.MR;\n }\n const { billingContact } = contract.finance;\n const billing = {\n civility: contact.civility || ECivility.MR,\n firstName: contact.firstName || '',\n lastName: contact.lastName || '',\n email: contact.email || '',\n iban: '',\n address: Object.assign({}, contact.address) || {\n ...initialAddress,\n },\n currentPostalCode: {\n label: contact.address.postalCode || '',\n value: contact.address.postalCode || '',\n codeValue: contact.address.postalCode || '',\n cityValue: contact.address.townName || '',\n netAreaValue: contact.address.netArea || '',\n },\n };\n billing.iban = contract.finance.ibanCode || '';\n if (billingContact && billingContact.customerFullName) {\n billing.civility =\n billingContact.customerFullName.civility || billing.civility;\n billing.firstName = billingContact.customerFullName.firstName;\n billing.lastName = billingContact.customerFullName.lastName;\n }\n if (billingContact && billingContact.address) {\n billing.address = billingContact.address;\n const currentPostalCode = {\n label: billingContact.address.postalCode,\n value: billingContact.address.postalCode,\n codeValue: billingContact.address.postalCode,\n cityValue: billingContact.address.townName,\n netAreaValue: billingContact.address.netArea,\n };\n billing.currentPostalCode = currentPostalCode;\n }\n if (contract.finance.billingContact) {\n billing.email = contract.finance.billingContact.email;\n }\n const checkCoholder =\n coholder !== undefined &&\n coholder.civility !== undefined &&\n coholder.firstName !== undefined;\n this.state = {\n fields: {\n contractNumber: '',\n customerNumber: '',\n contact,\n billing,\n debitDay:\n contract.finance.debitDay ||\n Wording.paymentMethod.debitDaysEnum[0],\n },\n setting: {\n loadingPostalCode: false,\n addressVal: `${billing.address.number} ${billing.address.street}`,\n postalCodes: [],\n pc: '',\n showErrorBilling: false,\n showErrorCustomer: false,\n showErrorIban: false,\n checkCoholder,\n paymentMethodSection: 'IBAN',\n },\n checkUpdateProfile: {\n checkUpdateContact: false,\n checkUpdateBilling: false,\n checkUpdateIban: false,\n },\n };\n\n this.searchService = new SearchService();\n }\n\n componentDidMount() {\n this.searchService.getResults().subscribe((res: any) => {\n const { setting } = this.state;\n setting.postalCodes = res.map((dt: any) => ({\n label: `${dt.code} - - - ${dt.city}`,\n value: `${dt.code}__${dt.city}`,\n codeValue: dt.code,\n cityValue: dt.city,\n netAreaValue: dt.netArea,\n }));\n setting.loadingPostalCode = false;\n this.setState({ setting });\n });\n }\n\n componentWillUnmount() {\n this.searchService.unsubscribe();\n }\n\n handleAddressChange = (value: string, type: string) => {\n const { setting, fields } = this.state;\n if (type === 'postalCode') {\n setting.pc = value.replace(/[^\\d ]/g, '');\n setting.loadingPostalCode = true;\n this.searchService.search(value);\n this.setState({ setting });\n } else {\n setting.addressVal = value;\n const splitArr = value.split(' ');\n if (splitArr[0] === '') {\n splitArr.shift();\n }\n fields.billing.address.number = splitArr[0];\n splitArr.shift();\n fields.billing.address.street = splitArr.join(' ').trim();\n this.setState({ fields, setting });\n }\n };\n\n handleChangeDropdown = ({\n value,\n codeValue,\n cityValue,\n netAreaValue,\n }: IPostalCode) => {\n const { fields, setting } = this.state;\n fields.billing.address.netArea = netAreaValue;\n fields.billing.address.postalCode = codeValue;\n fields.billing.address.townName = cityValue;\n fields.billing.currentPostalCode = {\n value,\n label: `${codeValue}`,\n codeValue,\n cityValue,\n netAreaValue,\n };\n setting.postalCodes = [];\n this.setState({ fields, setting });\n };\n\n onFocusDropdown = () => {\n const { setting, fields } = this.state;\n if (fields.billing.address.postalCode !== '') {\n setting.pc = fields.billing.address.postalCode;\n }\n this.setState({ setting });\n };\n\n handleInputChange = (e: InputEvent, section: string, type: string) => {\n const { fields } = this.state;\n const s = section === 'iban' ? 'billing' : section;\n fields[s][type] = e.currentTarget.value;\n this.setState({ fields });\n };\n\n handleDebitDay = (value: string) => {\n const { fields } = this.state;\n\n fields.debitDay = value;\n this.setState({ fields });\n };\n\n handlePaymentSection = (section: TPaymentMethodSection) => {\n const { setting, fields } = this.state;\n setting.paymentMethodSection = section;\n\n const { contractState } = this.props;\n const contract = findContractByNumber(\n contractState.selectedContractNumber,\n contractState.contracts,\n );\n\n if (\n section === 'IBAN' &&\n fields.debitDay !== contract.finance.debitDay\n ) {\n fields.debitDay = contract.finance.debitDay;\n }\n\n this.setState({ setting, fields });\n };\n\n handleChangeCivility = (section: string, value: string) => {\n const { fields } = this.state;\n if (section === 'contact') {\n fields[section].coholderCivility = value as ECivility;\n } else {\n fields[section].civility = value as ECivility;\n }\n this.setState({ fields });\n };\n\n handleResetCoholder = (civility?: string, firstName?: string) => {\n const { fields, setting } = this.state;\n if (!setting.checkCoholder) {\n fields.contact.coholderCivility = civility as ECivility;\n fields.contact.coholderFirstName = firstName;\n } else {\n fields.contact.coholderCivility = ECivility.MR;\n fields.contact.coholderFirstName = undefined;\n }\n setting.checkCoholder = !setting.checkCoholder;\n this.setState({ fields, setting });\n };\n\n handleChangeBanner = (contractNumber: string) => {\n const {\n contractState: { contracts },\n contractDispatch,\n profileState: { customerNumber },\n setContractDispatch,\n } = this.props;\n const contract = findContractByNumber(contractNumber, contracts);\n if (contract.isFetched) {\n setContractDispatch({ contract });\n } else {\n contractDispatch({\n customerNbr: customerNumber,\n contractNbr: contractNumber,\n });\n }\n };\n\n handleUpdate = (section: string) => {\n const { fields, setting } = this.state;\n const {\n updateCustomerDispatch,\n profileState,\n updateBillingDispatch,\n contractState,\n }: Props = this.props;\n switch (section) {\n case 'contact': {\n const payload: IRequestUpdateCustomerCoholderEvent = {\n customer: {\n customerNbr: profileState.customerNumber,\n email: fields.contact.email,\n phone: getPhoneWithPrefix(fields.contact.phone),\n marketing: profileState.contact.marketing,\n newsletter: profileState.contact.newsletter,\n },\n coholder: undefined,\n event: {\n customerNbr: profileState.customerNumber,\n contractNbr: contractState.selectedContractNumber,\n category: Wording.categoryToSend,\n date: getTodayDate(),\n subCategory:\n Wording.subCategories.consumptionContactChange\n .value,\n message:\n Wording.subCategories.consumptionContactChange\n .label,\n },\n };\n if (\n fields.contact.coholderCivility &&\n fields.contact.coholderFirstName &&\n fields.contact.coholderFirstName !== '' &&\n profileState.customerType !== 'PROFESSIONAL'\n ) {\n payload.coholder = {\n mode: 'insertOrUpdate',\n //customerNbr: contractState.selectedContractNumber,\n contractNbr: contractState.selectedContractNumber,\n civility: fields.contact.coholderCivility,\n firstName: fields.contact.coholderFirstName,\n };\n payload.event.message =\n Wording.subCategories.consumptionContactChange.addCoholder;\n } else {\n const contract = findContractByNumber(\n contractState.selectedContractNumber,\n contractState.contracts,\n );\n const coholder = findCoholder(contract);\n if (coholder && coholder.firstName) {\n payload.coholder = {\n mode: 'delete',\n contractNbr: contractState.selectedContractNumber,\n //customerNbr: contractState.selectedContractNumber,\n civility: coholder.civility as ECivility,\n firstName: coholder.firstName || '',\n };\n payload.event.message =\n Wording.subCategories.consumptionContactChange.deleteCoholder;\n setting.checkCoholder = false;\n this.setState({ setting });\n }\n }\n updateCustomerDispatch(payload);\n break;\n }\n\n case 'billing': {\n const payload: IRequestUpdateBillingEvent = {\n paymentMode: {\n mode: EModeUpdateBilling.BILLING_ADDRESS,\n customerNbr: profileState.customerNumber,\n contractNbr: contractState.selectedContractNumber,\n billingAddress: fields.billing.address,\n customerFullName: {\n civility: fields.billing.civility,\n firstName: fields.billing.firstName,\n lastName: fields.billing.lastName,\n },\n email: fields.billing.email,\n },\n event: {\n customerNbr: profileState.customerNumber,\n contractNbr: contractState.selectedContractNumber,\n category: Wording.categoryToSend,\n date: getTodayDate(),\n subCategory:\n Wording.subCategories.invoicingContactChange.value,\n message:\n Wording.subCategories.invoicingContactChange.label,\n },\n };\n updateBillingDispatch(payload);\n break;\n }\n\n case 'iban': {\n const { contracts, selectedContractNumber } = contractState;\n const contract = findContractByNumber(\n selectedContractNumber,\n contracts,\n );\n\n const payload: IRequestUpdateBillingEvent = {\n paymentMode: {\n mode: EModeUpdateBilling.IBAN,\n customerNbr: profileState.customerNumber,\n ibanCode: fields.billing.iban,\n rumCode: contract.finance.rumCode,\n },\n event: {\n customerNbr: profileState.customerNumber,\n contractNbr: contractState.selectedContractNumber,\n category: Wording.categoryToSend,\n date: getTodayDate(),\n subCategory:\n Wording.subCategories.paymentModeChange.value,\n message: Wording.subCategories.paymentModeChange.label,\n },\n };\n updateBillingDispatch(payload);\n break;\n }\n case 'debitDay': {\n const payload: IRequestUpdateBillingEvent = {\n paymentMode: {\n mode: EModeUpdateBilling.DEBIT_DAY,\n customerNbr: contractState.selectedContractNumber,\n debitDay: fields.debitDay,\n contractNbr: contractState.selectedContractNumber,\n },\n event: {\n customerNbr: profileState.customerNumber,\n contractNbr: contractState.selectedContractNumber,\n category: Wording.categoryToSend,\n date: getTodayDate(),\n subCategory:\n Wording.subCategories.paymentModeChange.value,\n message:\n Wording.subCategories.paymentModeChange\n .label_debitDay,\n },\n };\n updateBillingDispatch(payload);\n break;\n }\n\n default:\n break;\n }\n };\n\n handleShowErrorMessage = (section: string): void => {\n const { setting } = this.state;\n if (section === 'billing') {\n setting.showErrorBilling = true;\n } else if (section === 'contact') {\n setting.showErrorCustomer = true;\n } else {\n setting.showErrorIban = true;\n }\n this.setState({ setting });\n };\n\n /**\n * By default, use the contact information to be displayed on billing section\n * These params cannot be modified using state\n */\n getBilling = (contract: TContract): IBilling => {\n const {\n profileState: { contact },\n } = this.props;\n const finance = contract.finance;\n const billing = {\n civility: contact.customerFullName.civility,\n firstName: contact.customerFullName.firstName,\n lastName: contact.customerFullName.lastName,\n email: contact.email,\n phone: contact.phone,\n iban: '',\n address: contact.address,\n };\n if (finance) {\n billing.iban = finance.ibanCode;\n if (finance.billingContact) {\n billing.email = finance.billingContact.email;\n billing.phone = finance.billingContact.phone;\n if (finance.billingContact.customerFullName) {\n billing.civility =\n finance.billingContact.customerFullName.civility ||\n billing.civility;\n billing.firstName =\n finance.billingContact.customerFullName.firstName;\n billing.lastName =\n finance.billingContact.customerFullName.lastName;\n }\n if (finance.billingContact.address) {\n billing.address = finance.billingContact.address;\n }\n }\n }\n return billing;\n };\n\n /**\n * Load all contact info necessary to be displayed on contact section\n * These params cannot be modified using state\n */\n getContact = (contract: TContract): IContact => {\n const {\n profileState: { contact },\n } = this.props;\n const thirdParties = contract.thirdParties;\n const currentContact: IContact = {\n civility: contact.customerFullName.civility,\n firstName: contact.customerFullName.firstName,\n lastName: contact.customerFullName.lastName,\n email: contact.email,\n phone: contact.phone,\n birthdate: contact.birthdate,\n address: contact.address,\n companyName: contact.companyName,\n companyType: contact.companyType,\n activityCode: contact.activityCode,\n identificationNumber: contact.identificationNumber,\n };\n if (thirdParties) {\n const coholder = thirdParties.find(p => p.role === 'COHOLDER') || {\n civility: ECivility.MR,\n firstName: undefined,\n };\n currentContact.coholderCivility = coholder.civility as ECivility;\n currentContact.coholderFirstName = coholder.firstName;\n }\n return currentContact;\n };\n handleCheckUpdate = (section: string, value: boolean) => {\n if (section === 'contact') {\n this.setState(prevState => ({\n checkUpdateProfile: {\n ...prevState.checkUpdateProfile,\n checkUpdateContact: value,\n },\n }));\n } else if (section === 'billing') {\n this.setState(prevState => ({\n checkUpdateProfile: {\n ...prevState.checkUpdateProfile,\n checkUpdateBilling: value,\n },\n }));\n } else if (section === 'iban') {\n this.setState(prevState => ({\n checkUpdateProfile: {\n ...prevState.checkUpdateProfile,\n checkUpdateIban: value,\n },\n }));\n }\n };\n\n render() {\n const {\n profileState: { contact, updateResponse, customerType },\n contractState: { contracts, selectedContractNumber, error },\n resetUpdateDispatch,\n resetContractDispatch,\n }: Props = this.props;\n\n const { setting, fields, checkUpdateProfile } = this.state;\n const contract = findContractByNumber(\n selectedContractNumber,\n contracts,\n );\n const billing = this.getBilling(contract);\n const currentContact = this.getContact(contract);\n\n const handleReset = () => {\n resetUpdateDispatch();\n this.setState(prevState => ({\n checkUpdateProfile: {\n ...prevState.checkUpdateProfile,\n checkUpdateContact: false,\n checkUpdateBilling: false,\n checkUpdateIban: false,\n },\n }));\n };\n\n return (\n <WrappedProfile\n setting={setting}\n fields={fields}\n currentContact={currentContact}\n billing={billing}\n handleCheckUpdate={this.handleCheckUpdate}\n handleInputChange={this.handleInputChange}\n handleChangeCivility={this.handleChangeCivility}\n handleResetCoholder={this.handleResetCoholder}\n handleChangeDropdown={this.handleChangeDropdown}\n handleAddressChange={this.handleAddressChange}\n onFocusDropdown={this.onFocusDropdown}\n handleShowErrorMessage={this.handleShowErrorMessage}\n handleDebitDay={this.handleDebitDay}\n handlePaymentSection={this.handlePaymentSection}\n checkUpdateProfile={checkUpdateProfile}\n // Banner\n title={Wording.title}\n bannerError={error}\n handleCloseModalBanner={() => resetContractDispatch()}\n selectedContractNumber={selectedContractNumber}\n contracts={contracts}\n contact={contact}\n customerType={customerType}\n handleChangeBanner={this.handleChangeBanner}\n // Modal\n modalMessage={Wording.popup}\n updateResponse={updateResponse}\n handleValidate={this.handleUpdate}\n handleReset={handleReset}\n />\n );\n }\n}\n\nexport default connect(mapStateToProps, dispatchProps)(ProfilePage);\n","import ProfilePage from './ProfilePage';\n\nexport default ProfilePage;\n","import React, { useState } from 'react';\n\nimport { InputEvent } from 'Types';\nimport { CustomInput, CustomButton, CustomModal } from '../../components/index';\nimport { isValidEmail } from '../../utils/helpers';\n\nimport WordingConstant from '../../utils/wording.json';\nconst Wording = WordingConstant.ParentingPage;\n\nexport type Props = {\n fields: {\n email: string;\n error?: string;\n };\n handleInputChange(e: InputEvent, type: string): void;\n handleInputError(): boolean;\n handleShowModal(section: string): void;\n};\n\nconst SponsorContainer: React.FC<Props> = ({\n fields: { email, error },\n handleInputChange,\n handleInputError,\n handleShowModal,\n}) => {\n const isEmail = isValidEmail(email);\n\n return (\n <div className=\"sponsor-container\">\n <h2 className=\"sponsor-container__subtitle\">{Wording.subTitle}</h2>\n <p className=\"sponsor-container__subtitle2\">\n {Wording.textParenting}\n </p>\n <p className=\"sponsor-container__inputTitle\">\n {Wording.inputTitle}\n </p>\n <CustomInput\n placeholder={Wording.placholderInput}\n value={email}\n error={error}\n onInputChange={(e: InputEvent) => handleInputChange(e, 'email')}\n />\n <a\n className=\"sponsor-container__rule\"\n href=\" https://www.wekiwi.fr/conditions-parrainage\"\n target=\"_blank\"\n >\n {Wording.ruleDescription}\n </a>\n <CustomButton\n title={Wording.buttonValue}\n color={isEmail ? 'orange' : 'gray'}\n onClick={() => {\n if (handleInputError()) {\n handleShowModal('');\n }\n }}\n />\n </div>\n );\n};\n\nexport default SponsorContainer;\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { compose } from 'recompose';\nimport { Subtract } from 'utility-types';\n\nimport { RootState, InputEvent } from 'Types';\nimport withBanner, {\n ExternalProps as ExternalPropsBanner,\n} from '../../libraries/withBanner';\nimport withModal, {\n ExternalProps as ExternalPropsModal,\n InjectedProps as InjectedPropsModal,\n} from '../../libraries/withModal';\nimport ParentingContainer, {\n Props as ContainerProps,\n} from '../../containers/SponsorContainer/SponsorContainer';\n\nimport {\n fetchContractAsync,\n setContract,\n} from '../../_actions/contract.actions';\nimport { isValidEmail, findContractByNumber } from '../../utils/helpers';\nimport {\n createSponsorAsync,\n resetUpdate,\n} from '../../_actions/profile.actions';\nimport WordingConstant from '../../utils/wording.json';\n\nconst Wording = WordingConstant.ParentingPage;\n\nconst mapStateToProps = (state: RootState) => ({\n profileState: state.profileReducer,\n contractState: state.contractReducer,\n});\n\nconst dispatchProps = {\n contractDispatch: fetchContractAsync.request,\n createSponsorDispatch: createSponsorAsync.request,\n resetDispatch: resetUpdate,\n setContractDispatch: setContract,\n};\n\ntype Props = ReturnType<typeof mapStateToProps> & typeof dispatchProps;\n\nconst WrappedParenting = compose<\n ContainerProps,\n Subtract<ContainerProps, InjectedPropsModal> &\n ExternalPropsBanner &\n ExternalPropsModal\n>(\n withBanner(),\n withModal(),\n)(ParentingContainer);\n\ntype State = {\n fields: {\n email: string;\n error?: string;\n [key: string]: string | undefined;\n };\n};\n\nclass SponsorPage extends React.Component<Props, State> {\n constructor(props: Props) {\n super(props);\n\n this.state = {\n fields: {\n email: '',\n error: undefined,\n },\n };\n }\n\n handleInputChange = (e: InputEvent, type: string) => {\n const { fields } = this.state;\n fields[type] = e.currentTarget.value;\n this.setState({ fields });\n };\n\n handleInputError = (): boolean => {\n const { fields } = this.state;\n\n if (isValidEmail(fields.email)) {\n fields.error = undefined;\n this.setState({ fields });\n return true;\n }\n fields.error = Wording.errorInput;\n this.setState({ fields });\n return false;\n };\n\n handleChangeBanner = (contractNumber: string) => {\n const {\n contractState: { contracts },\n contractDispatch,\n profileState: { customerNumber },\n setContractDispatch,\n } = this.props;\n const contract = findContractByNumber(contractNumber, contracts);\n if (contract.isFetched) {\n setContractDispatch({ contract });\n } else {\n contractDispatch({\n customerNbr: customerNumber,\n contractNbr: contractNumber,\n });\n }\n };\n\n handleUpdate = () => {\n const { fields } = this.state;\n const {\n profileState: {\n customerNumber,\n contact: {\n customerFullName: { firstName, lastName },\n },\n },\n createSponsorDispatch,\n } = this.props;\n createSponsorDispatch({\n sponsorId: customerNumber,\n sponsorFirstName: firstName,\n sponsorLastName: lastName,\n targetEmail: fields.email,\n });\n fields.email = '';\n this.setState({ fields });\n };\n\n render() {\n const { fields } = this.state;\n const {\n profileState: { contact, updateResponse, customerType },\n contractState: { contracts, selectedContractNumber },\n resetDispatch,\n }: Props = this.props;\n return (\n <WrappedParenting\n fields={fields}\n handleInputChange={this.handleInputChange}\n handleInputError={this.handleInputError}\n // Banner\n title={Wording.title}\n selectedContractNumber={selectedContractNumber}\n contracts={contracts}\n contact={contact}\n customerType={customerType}\n handleChangeBanner={this.handleChangeBanner}\n // Modal\n modalMessage={Wording.popup}\n updateResponse={updateResponse}\n handleValidate={this.handleUpdate}\n handleReset={resetDispatch}\n />\n );\n }\n}\n\nexport default connect(\n mapStateToProps,\n dispatchProps,\n)(SponsorPage);\n","import SponsorPage from './SponsorPage';\n\nexport default SponsorPage;\n","import React, { Fragment } from 'react';\n\nimport { CustomTable } from '../../components';\n\nimport WordingConstant from '../../utils/wording.json';\nconst Wording = WordingConstant.RequestPage;\n\nimport * as helpers from '../../utils/helpers';\n\nexport const findLabel = (Arr: any[], categ: string) => {\n return Arr.find(x => x.value === categ)\n ? Arr.find(x => x.value === categ).label\n : '';\n};\n\ninterface ISelect {\n id: string;\n value: string;\n label: string;\n}\n\nconst compare = (a: any, b: any) =>\n a.label > b.label ? 1 : b.label > a.label ? -1 : 0;\n\nconst renderDataInOption = (tab: ISelect[]) =>\n tab\n .sort(compare)\n .map(\n (\n {\n label,\n value,\n }: {\n id: string;\n value: string;\n label: string;\n },\n key: number,\n ) => (\n <option key={key} value={value}>\n {label}\n </option>\n ),\n );\n\nconst columnsTable = [\n {\n Header: 'RÉFÉRENCE',\n accessor: 'eventNbr',\n width: 120,\n },\n {\n Header: 'CATÉGORIE',\n accessor: 'eventCategory',\n Cell: (props: any) => {\n return findLabel(Wording.categories, props.value);\n },\n filterMethod: (filter: any, row: any) => {\n if (filter.value === 'all') {\n return true;\n }\n return row.eventCategory === filter.value;\n },\n Filter: ({ filter, onChange }: any) => (\n <select\n onChange={event => onChange(event.target.value)}\n style={{ width: '100%' }}\n value={filter ? filter.value : 'all'}\n >\n <option value=\"all\">Toutes les catégories</option>\n {renderDataInOption(Wording.categories)}\n </select>\n ),\n },\n {\n Header: 'SOUS-CATÉGORIE',\n accessor: 'eventSubcategory',\n Cell: (props: any) => {\n return findLabel(Wording.subCategories, props.value);\n },\n\n filterMethod: (filter: any, row: any) => {\n if (filter.value === 'all') {\n return true;\n }\n return row.eventSubcategory === filter.value;\n },\n Filter: ({ filter, onChange }: any) => (\n <select\n onChange={event => onChange(event.target.value)}\n style={{ width: '100%' }}\n value={filter ? filter.value : 'all'}\n >\n <option value=\"all\">Toutes les sous-catégories</option>\n {renderDataInOption(Wording.subCategories)}\n </select>\n ),\n },\n {\n Header: 'DATE',\n accessor: 'referenceDate',\n filterable: false,\n Cell: (props: any) => {\n return helpers.getFormattedDate(props.value);\n },\n width: 125,\n },\n {\n Header: 'STATUT',\n accessor: 'eventStatusCode',\n Cell: (props: any) => {\n return findLabel(Wording.statusEvent, props.value);\n },\n filterMethod: (filter: any, row: any) => {\n if (filter.value === 'all') {\n return true;\n }\n return row.eventStatusCode === filter.value;\n },\n Filter: ({ filter, onChange }: any) => (\n <select\n onChange={event => onChange(event.target.value)}\n style={{ width: '100%' }}\n value={filter ? filter.value : 'all'}\n >\n <option value=\"all\">Tout les statuts</option>\n {renderDataInOption(Wording.statusEvent)}\n </select>\n ),\n width: 200,\n },\n];\n\nconst EventContainer: React.FC<{\n data: object[];\n}> = ({ data }) => {\n return (\n <div className=\"request-container\">\n <h2 className=\"request-container__sub-title\">{Wording.subTitle}</h2>\n\n <CustomTable\n columns={columnsTable}\n filterable={true}\n data={data}\n defaultPageSize={data.length > 10 ? 10 : data.length}\n noDataText={Wording.noDataText}\n sortable={true}\n className=\"-striped -highlight\"\n SubComponent={(row: any) => {\n return (\n <div className=\"sub-component\">\n {row.original.message}\n <span className=\"line\" />\n </div>\n );\n }}\n />\n </div>\n );\n};\n\nexport default EventContainer;\n","import EventContainer from './EventContainer';\n\nexport default EventContainer;\n","import React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport { RootState } from 'Types';\n\nimport EventContainer from '../../containers/EventContainer/';\nimport { fetchEventAsync } from '../../_actions/event.actions';\nimport {\n fetchContractAsync,\n setContract,\n} from '../../_actions/contract.actions';\nimport withBanner from '../../libraries/withBanner';\nimport { findContractByNumber } from '../../utils/helpers';\nimport WordingConstant from '../../utils/wording.json';\n\nconst Wording = WordingConstant.RequestPage;\n\nconst mapStateToProps = (state: RootState) => ({\n eventState: state.eventReducer,\n profileState: state.profileReducer,\n contractState: state.contractReducer,\n});\n\nconst dispatchProps = {\n eventDispatch: fetchEventAsync.request,\n contractDispatch: fetchContractAsync.request,\n setContractDispatch: setContract,\n};\n\ntype Props = ReturnType<typeof mapStateToProps> & typeof dispatchProps;\n\nexport const WrappedEvent = withBanner()(EventContainer);\n\nexport class EventPage extends Component<Props, {}> {\n componentDidMount() {\n const {\n profileState,\n contractState,\n eventDispatch,\n }: Props = this.props;\n\n eventDispatch({\n contractNbr: contractState.selectedContractNumber,\n customerNbr: profileState.customerNumber,\n });\n }\n\n handleChangeBanner = (contractNumber: string) => {\n const {\n contractState: { contracts },\n contractDispatch,\n profileState: { customerNumber },\n eventDispatch,\n setContractDispatch,\n } = this.props;\n const payload = {\n customerNbr: customerNumber,\n contractNbr: contractNumber,\n };\n const contract = findContractByNumber(contractNumber, contracts);\n if (contract.isFetched) {\n setContractDispatch({ contract });\n } else {\n contractDispatch(payload);\n }\n eventDispatch(payload);\n };\n\n render() {\n const {\n eventState: { events },\n profileState: { contact, customerType },\n contractState: { contracts, selectedContractNumber },\n }: Props = this.props;\n const data = events && events.length > 0 ? events : [];\n return (\n <WrappedEvent\n data={data}\n // Banner\n title={Wording.title}\n contracts={contracts}\n contact={contact}\n customerType={customerType}\n handleChangeBanner={this.handleChangeBanner}\n selectedContractNumber={selectedContractNumber}\n />\n );\n }\n}\n\nexport default connect(\n mapStateToProps,\n dispatchProps,\n)(EventPage);\n","import EventPage from './EventPage';\nexport default EventPage;\n","import React from 'react';\n\nimport { CustomButton } from '../../components';\n\nimport WordingConstant from '../../utils/wording.json';\nconst Wording = WordingConstant.MovePage;\n\ntype Props = {\n handleClick: () => void;\n};\n\nconst MoveContainer: React.FC<Props> = props => {\n return (\n <div className=\"move-container\">\n <h1 className=\"move-container__title\">{Wording.title}</h1>\n <h1 className=\"move-container__sub-title\">{Wording.subTitle}</h1>\n\n <p className=\"move-container__content\">{Wording.content}</p>\n\n <CustomButton\n onClick={() => props.handleClick()}\n color=\"orange\"\n title={Wording.buttonValue}\n />\n <br />\n\n <p className=\"move-container__content\">\n {`${Wording.textWithLink1} ${Wording.textLink} `}\n <a\n href={`${Wording.link}`}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {Wording.textWithLink2}\n </a>\n .\n </p>\n </div>\n );\n};\n\nexport default MoveContainer;\n","import MoveContainer from './MoveContainer';\n\nexport default MoveContainer;\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { RootState } from 'Types';\n\nimport MoveContainer from '../../containers/MoveContainer';\nimport { TCustomer } from 'Models';\nimport { ECustomerStatus } from '../../utils/enums';\nimport { concatUrl } from '../../utils/helpers';\n\nconst mapStateToProps = (state: RootState) => ({\n profileState: state.profileReducer,\n contractState: state.contractReducer,\n});\n\ntype Props = ReturnType<typeof mapStateToProps>;\n\nclass MovePage extends React.Component<Props> {\n handleClick = () => {\n const {\n profileState: {\n contact,\n customerCategoryCode,\n customerNumber,\n customerType,\n },\n contractState: { contracts },\n } = this.props;\n const customer: TCustomer = {\n customerCategoryCode,\n contact,\n customerNumber,\n customerStatus: ECustomerStatus.CUSTOMER,\n type: customerType,\n };\n const thirdParties = contracts[0].thirdParties;\n const link = concatUrl(customer, thirdParties);\n window.open(link);\n };\n\n render() {\n return <MoveContainer handleClick={this.handleClick} />;\n }\n}\n\nexport default connect(mapStateToProps)(MovePage);\n","import MovePage from './MovePage';\n\nexport default MovePage;\n","import React from 'react';\n\nimport { TPrepaymentFrequency } from 'Models';\n\nimport { CustomRadio } from '../../components';\n\nimport WordingConstant from '../../utils/wording.json';\n\nconst Wording = WordingConstant.PackagePage;\nconst CommonWording = WordingConstant.Common;\n\nexport type Props = {\n loading: boolean;\n chosenFrequency: string;\n prepaymentFrequencies: TPrepaymentFrequency[];\n onChange: any;\n};\n\nconst frequencyWording: { [key: string]: string } = CommonWording.frequency;\n\nconst FrequencyContainer: React.FC<Props> = ({\n loading,\n chosenFrequency,\n prepaymentFrequencies,\n onChange,\n}) => {\n return (\n <div className=\"frequency-container\">\n <p className=\"frequency-container__title\">\n {Wording.plan.frequency.title}\n </p>\n\n <div className=\"frequency-container__frequency\">\n <p className=\"frequency-container__frequency__title\">\n {Wording.plan.frequency.subtitle}\n </p>\n <div className=\"frequency-container__frequency__radios\">\n {prepaymentFrequencies ? (\n prepaymentFrequencies.map(\n ({ frequency, fee, currency }, index) => {\n const label = frequencyWording[frequency];\n return (\n <CustomRadio\n key={index}\n text={label}\n value={frequency}\n id={`id__${index}__${frequency}`}\n description={`${fee}${currency}`}\n checked={chosenFrequency === frequency}\n handleCheck={onChange}\n />\n );\n },\n )\n ) : (\n <p>\n {loading\n ? CommonWording.isLoading\n : CommonWording.noData}\n </p>\n )}\n </div>\n </div>\n </div>\n );\n};\n\nexport default FrequencyContainer;\n","import FrequencyContainer from './FrequencyContainer';\n\nexport default FrequencyContainer;\n","import React from 'react';\nimport Slider from 'react-slick';\n\nimport { TPackage } from 'Models';\n\nimport resources from '../../utils/resources';\n\nimport { PackageElement, EnergyGauge, CustomSelect } from '../../components';\n\nimport WordingConstant from '../../utils/wording.json';\nimport {\n buildPackagesForSlider,\n canSelectAllPackage,\n} from '../../utils/helpers';\n\nconst Wording = WordingConstant.PackagePage;\nconst CommonWording = WordingConstant.Common;\n\nexport type Props = {\n loading: boolean;\n packages?: TPackage[];\n ranges: number[][];\n showGaugeTab: boolean;\n prices: number[];\n packageID: string;\n handleSetAdminChosenPackages: (pkg: TPackage[]) => void;\n handleToggleGauge(gauge: boolean): void;\n handleChangePackageID(packageID: string): void;\n handleChangePrices(prices: number[]): void;\n};\n\nconst SlickButtonFix = ({\n currentSlide,\n slideCount,\n children,\n ...props\n}: any) => <span {...props}>{children}</span>;\n\nconst NextArrow = () => (\n <img src={resources['ic-arrow-next']} alt=\"ic-arrow-next\" />\n);\nconst BackArrow = () => (\n <img src={resources['ic-arrow-back']} alt=\"ic-arrow-back\" />\n);\n\nconst GaugeContainer: React.FC<Props> = ({\n loading,\n packages,\n ranges,\n prices,\n packageID,\n showGaugeTab,\n handleToggleGauge,\n handleChangePackageID,\n handleChangePrices,\n handleSetAdminChosenPackages,\n}: Props) => {\n let initialProgress = 0;\n if (prices && prices.length > 1) {\n initialProgress = ranges.findIndex(\n r => r[0] === prices[0] && r[1] === prices[1],\n );\n initialProgress = initialProgress === -1 ? 0 : initialProgress;\n }\n const reducer = (accumulator: any, current: any) => {\n const max = current[0] > current[1] ? current[0] : current[1];\n return accumulator > max ? accumulator : max;\n };\n const gaugeMaxValue = ranges.reduce(reducer, 0);\n\n const isMultiple = packages && packages.length > 5;\n\n return (\n <div className=\"gauge-container\">\n <p className=\"gauge-container__title\">{Wording.plan.gauge.title}</p>\n\n <div className=\"gauge-container__gauge\">\n <input\n id=\"tab1\"\n type=\"radio\"\n checked={!showGaugeTab}\n onChange={() => handleToggleGauge(false)}\n />\n <input\n id=\"tab2\"\n type=\"radio\"\n checked={showGaugeTab}\n onChange={() => handleToggleGauge(true)}\n />\n\n <ul>\n <li className=\"tab1\">\n <label htmlFor=\"tab1\">{Wording.plan.gauge.tab1}</label>\n </li>\n <li className=\"tab2\">\n <label htmlFor=\"tab2\">{Wording.plan.gauge.tab2}</label>\n </li>\n </ul>\n\n <section>\n {!showGaugeTab ? (\n <React.Fragment>\n <div className=\"tab1\">\n {packages ? (\n <div className={`package-slider-carousel`}>\n <Slider\n speed={500}\n slidesToShow={\n isMultiple\n ? 4\n : (packages as any).length\n }\n slidesToScroll={4}\n arrows={isMultiple}\n nextArrow={\n <SlickButtonFix>\n <NextArrow />\n </SlickButtonFix>\n }\n prevArrow={\n <SlickButtonFix>\n <BackArrow />\n </SlickButtonFix>\n }\n >\n {(isMultiple\n ? buildPackagesForSlider(\n packages as any,\n )\n : packages\n ).map(\n (\n { amount, id, recommended },\n index,\n ) => (\n <PackageElement\n key={index}\n price={amount}\n chosen={\n id === packageID\n }\n recommended={\n recommended\n }\n onClick={() => {\n handleChangePackageID(\n id,\n );\n }}\n />\n ),\n )}\n </Slider>\n </div>\n ) : (\n <p>\n {loading\n ? CommonWording.isLoading\n : CommonWording.noData}\n </p>\n )}\n </div>\n\n <div\n className=\"modal\"\n onClick={() =>\n // handleToggle('modalPackage', !modalPackage)\n {}\n }\n tabIndex={0}\n role=\"button\"\n >\n {Wording.plan.popupChoosePackage}\n </div>\n </React.Fragment>\n ) : (\n <div className=\"tab2\">\n {packages && canSelectAllPackage() && (\n <CustomSelect\n options={packages.map(pkg => ({\n id: `${pkg.id}`,\n label: `${pkg.id}${\n pkg.recommended\n ? ' (Recommandé)'\n : ''\n }`,\n value: pkg,\n }))}\n handleChangeSelect={(props: any) => {\n handleSetAdminChosenPackages([\n props.value,\n ] as TPackage[]);\n }}\n />\n )}\n {ranges.length > 0 && ranges[0].length > 0 ? (\n <>\n <EnergyGauge\n initial={initialProgress}\n maxValue={gaugeMaxValue}\n ranges={ranges}\n onChange={(p: number[]) => {\n handleChangePrices(p);\n }}\n />\n </>\n ) : (\n <p>{CommonWording.noData}</p>\n )}\n </div>\n )}\n </section>\n </div>\n </div>\n );\n};\n\nexport default GaugeContainer;\n","import GaugeContainer from './GaugeContainer';\n\nexport default GaugeContainer;\n","import React, { useState } from 'react';\n\nimport { InputEvent } from 'Types';\nimport { TPackage, TPrepaymentFrequency } from 'Models';\nimport { EFrequency, EModeManageOffer } from '../../utils/enums';\nimport { CustomButton } from '../../components';\nimport FrequencyContainer from '../FrequencyContainer';\nimport GaugeContainer from '../GaugeContainer';\nimport { IPayloadUpdatePackage as PackagePayload } from '../../_actions/package.actions';\n\nimport WordingConstant from '../../utils/wording.json';\nimport { findPackagesByRange, findPackageById } from '../../utils/helpers';\n\nconst Wording = WordingConstant.PackagePage;\n\n/**\n * Props current contains 4 params to be only displayed by default\n */\ntype Props = {\n current: {\n currentPackages?: TPackage[];\n frequency: EFrequency;\n packageID: string;\n prices: number[];\n };\n loading: boolean;\n packages?: TPackage[];\n ranges: number[][];\n prepaymentFrequencies?: TPrepaymentFrequency[];\n adminChosenPackages?: TPackage[];\n handleSetAdminChosenPackages: (pkg: TPackage[]) => void;\n handleFetchPackage(): void;\n handleSetShowOption(showOption: boolean): void;\n handleValidate(section: string, payload: PackagePayload): void;\n};\n\nconst PackageSettingContainer: React.FC<Props> = ({\n current,\n loading,\n packages,\n ranges,\n prepaymentFrequencies,\n handleSetShowOption,\n handleFetchPackage,\n handleValidate,\n handleSetAdminChosenPackages,\n adminChosenPackages,\n}) => {\n const [showFrequency, setShowFrequency] = useState<boolean>(false);\n const [showGauge, setShowGauge] = useState<boolean>(false);\n const [showGaugeTab, setShowGaugeTab] = useState<boolean>(false);\n const [frequency, setFrequency] = useState<string>(current.frequency);\n const [packageID, setPackageID] = useState<string>(current.packageID);\n const [prices, setPrices] = useState<number[]>(current.prices);\n\n if (!showGauge && !showFrequency) {\n return (\n <div className=\"package-container__body__right__button\">\n <CustomButton\n title={Wording.plan.gauge.buttonTitle}\n color=\"orange\"\n onClick={() => {\n setShowGauge(true);\n setPackageID(current.packageID);\n handleSetShowOption(false);\n handleFetchPackage();\n }}\n />\n <CustomButton\n title={Wording.plan.frequency.buttonTitle}\n color=\"orange\"\n onClick={() => {\n setShowFrequency(true);\n setFrequency(current.frequency);\n handleSetShowOption(false);\n }}\n />\n </div>\n );\n }\n\n const handleValidateClick = () => {\n let section = '';\n\n let payload: PackagePayload = {\n mode: EModeManageOffer.INSTALLMENT_FREQUENCY,\n };\n if (showFrequency) {\n section = 'frequency';\n // The frequency is currently chosen from state\n payload = {\n frequency: frequency as EFrequency,\n mode: EModeManageOffer.INSTALLMENT_FREQUENCY,\n };\n } else if (showGaugeTab) {\n section = 'prices';\n // The price ranges are based on current chosenPackage\n // If the winter-summer prices are already chosen and no packageID found\n // choose the recommended package\n\n let authorizedPackages: TPackage[][] | undefined = [];\n let currentPackage: TPackage | undefined;\n\n if (adminChosenPackages) {\n currentPackage = findPackageById(\n adminChosenPackages[0].id,\n packages,\n );\n } else {\n currentPackage = findPackageById(\n current.packageID,\n packages,\n true,\n );\n }\n\n if (!currentPackage && current.currentPackages) {\n const curr = current.currentPackages.find(\n pk => pk.id === current.packageID,\n );\n\n authorizedPackages = curr ? curr.authorizedPackages : undefined;\n } else {\n authorizedPackages = currentPackage\n ? currentPackage.authorizedPackages\n : undefined;\n }\n\n const chosenPackages = findPackagesByRange(\n prices,\n authorizedPackages,\n );\n payload = {\n chosenPackages,\n mode: EModeManageOffer.PACKAGE,\n };\n } else {\n section = 'packageID';\n // The packageID is currently chosen from state\n const currentPackage = findPackageById(packageID, packages, false);\n const chosenPackages = currentPackage\n ? [currentPackage]\n : undefined;\n payload = {\n chosenPackages,\n mode: EModeManageOffer.PACKAGE,\n };\n }\n\n handleValidate(section, payload);\n };\n\n return (\n <div className=\"package-container__body__right__setting\">\n {showFrequency ? (\n <FrequencyContainer\n loading={loading}\n chosenFrequency={frequency}\n prepaymentFrequencies={prepaymentFrequencies || []}\n onChange={(freq: InputEvent) => {\n setFrequency(freq.currentTarget.value);\n }}\n />\n ) : (\n <GaugeContainer\n loading={loading}\n packages={packages}\n ranges={ranges}\n prices={prices}\n packageID={packageID}\n showGaugeTab={showGaugeTab}\n handleToggleGauge={gauge => {\n setShowGaugeTab(gauge);\n if (gauge && current.prices.length < 2) {\n setPrices(ranges[0]);\n }\n }}\n handleChangePackageID={(value: string) =>\n setPackageID(value)\n }\n handleChangePrices={(value: number[]) => setPrices(value)}\n handleSetAdminChosenPackages={handleSetAdminChosenPackages}\n />\n )}\n\n <div className=\"package-container__body__right__setting__button\">\n <CustomButton\n title={Wording.plan.gauge.cancelButton}\n color=\"gray\"\n onClick={() => {\n setShowGauge(false);\n setShowFrequency(false);\n handleSetShowOption(true);\n }}\n />\n <CustomButton\n title={Wording.plan.gauge.validateButton}\n color=\"orange\"\n onClick={() => {\n setShowGauge(false);\n setShowFrequency(false);\n handleSetShowOption(true);\n handleValidateClick();\n }}\n />\n </div>\n </div>\n );\n};\n\nexport default PackageSettingContainer;\n","import React, { useState, useEffect } from 'react';\n\nimport Config from '../../utils/config';\n\nimport {\n TContract,\n TProduct,\n TOffer,\n TPackage,\n TPrepaymentFrequency,\n TAdditionalRate,\n} from 'Models';\nimport {\n EEnergy,\n EFrequency,\n EContractStatus,\n EAmountType,\n EBillingMode,\n} from '../../utils/enums';\nimport { IPayloadUpdatePackage as PackagePayload } from '../../_actions/package.actions';\nimport { PlanElement, EnergyDetail, OptionElement } from '../../components';\nimport PackageSettingContainer from './PackageSettingContainer';\n\nimport {\n getFormattedDate,\n displayRateOption,\n displayFrequency,\n transformAuthorizedPackages,\n findBillingModeCode,\n} from '../../utils/helpers';\n\nimport WordingConstant from '../../utils/wording.json';\nimport { TCurrentActionMode } from '../../pages/PackagePage/PackagePage';\n\nconst Wording = WordingConstant.PackagePage;\n\nexport type Props = {\n loadingPackage: boolean;\n loadingOffer: boolean;\n contract: TContract;\n packages?: TPackage[];\n products: TProduct[];\n offer: TOffer;\n groupe?: string;\n prepaymentFrequencies: TPrepaymentFrequency[];\n handleFetchPackage(): void;\n handleSetPayload(payload: PackagePayload): void;\n handleShowModal(section: string): void;\n handleWordingModalMyMode(section: TCurrentActionMode): void;\n};\n\nconst PackageContainer: React.FC<Props> = ({\n loadingPackage,\n loadingOffer,\n contract,\n products,\n offer,\n packages,\n prepaymentFrequencies,\n handleFetchPackage,\n groupe,\n handleSetPayload,\n handleShowModal,\n handleWordingModalMyMode,\n}) => {\n const [localUserGroup, setLocalUserGroup] = useState<null | string>(null);\n\n const [adminChosenPackages, setAdminChosenPackages] = useState<\n TPackage[] | undefined\n >(undefined);\n const [showOption, setShowOption] = useState<boolean>(true);\n const options: TAdditionalRate[] = contract.chosenProduct.additionalRates\n ? contract.chosenProduct.additionalRates.filter(\n r => r.type === EAmountType.OPTION,\n )\n : [];\n const currentAdditionalOptions: string[] = options\n .filter(r => r.active)\n .map(r => r.label);\n\n const currentProductCodes: string[] = products\n .filter(p => p.productCode === contract.chosenProduct.productCode)\n .map(p => p.productCode);\n\n const chosenPackages = contract.chosenPackages;\n const packageID: string =\n chosenPackages && chosenPackages.length === 1\n ? chosenPackages[0].id\n : '';\n const prices: number[] = chosenPackages\n ? chosenPackages.map(p => Number(p.amount))\n : [];\n let ranges: number[][] = [[]];\n\n if (adminChosenPackages && adminChosenPackages.length === 1) {\n ranges = transformAuthorizedPackages(\n adminChosenPackages[0].authorizedPackages,\n );\n } else if (chosenPackages && chosenPackages.length === 1) {\n ranges = transformAuthorizedPackages(\n chosenPackages[0].authorizedPackages,\n );\n } else {\n if (packages) {\n const recommendPackage = packages.find(p => p.recommended);\n ranges = recommendPackage\n ? transformAuthorizedPackages(\n recommendPackage.authorizedPackages,\n )\n : [[]];\n }\n }\n\n useEffect(() => {\n const localGrp = localStorage.getItem('userGroup');\n setLocalUserGroup(localGrp);\n }, []);\n\n const current = {\n currentPackages: chosenPackages,\n packageID,\n prices,\n frequency: contract.installmentFrequency as EFrequency,\n };\n\n const renderDetail = () => {\n const deliveryPoint = contract.deliveryPoint;\n const details = [];\n let separateDetails = [];\n if (contract.energy === EEnergy.EL) {\n details.push({\n title: Wording.detailDescription.PDL,\n value: deliveryPoint.pointOfDelivery,\n });\n } else {\n details.push({\n title: Wording.detailDescription.PCE,\n value: deliveryPoint.pointOfDelivery,\n });\n }\n details.push({\n title: Wording.detailDescription.beginDate,\n value: getFormattedDate(contract.effectiveStartDate) || '',\n });\n if (contract.energy === EEnergy.EL) {\n const rateOption = displayRateOption(contract.rateOption);\n separateDetails = [\n {\n title: Wording.detailDescription.contractualCapacityEL,\n value: `${deliveryPoint.contractualCapacity} ${deliveryPoint.contractualCapacityUnit}`,\n },\n {\n title: Wording.detailDescription.meterReading,\n value: deliveryPoint.meterNumber,\n },\n {\n title: Wording.detailDescription.priceOption,\n value: rateOption,\n },\n ];\n } else {\n separateDetails = [\n {\n title: Wording.detailDescription.profile,\n value: deliveryPoint.profile,\n },\n {\n title: Wording.detailDescription.meterReading,\n value: deliveryPoint.meterNumber,\n },\n {\n title: Wording.detailDescription.priceOption,\n value: deliveryPoint.gridRate,\n },\n ];\n if (contract.estimates && contract.estimates.length > 0) {\n separateDetails.unshift({\n title: Wording.detailDescription.contractualCapacityNG,\n value: `${contract.estimates[0].quantity} ${Wording.detailDescription.contractualCapacityUnitNG}`,\n });\n }\n }\n const readingFrequency = displayFrequency(\n deliveryPoint.readingFrequency as EFrequency,\n );\n\n const installmentFrequency = displayFrequency(\n contract.installmentFrequency as EFrequency,\n );\n const settlementFrequency = displayFrequency(\n contract.settlementFrequency as EFrequency,\n );\n\n details.push(\n ...separateDetails,\n ...[\n {\n title: Wording.detailDescription.readingFrequency,\n value: readingFrequency,\n },\n {\n title: Wording.detailDescription.installmentFrequency,\n value: installmentFrequency,\n },\n {\n title: Wording.detailDescription.settlementFrequency,\n value: settlementFrequency,\n },\n ],\n );\n\n return <EnergyDetail details={details} />;\n };\n\n const handleSetAdminChosenPackages = (pkg: TPackage[]) => {\n setAdminChosenPackages(pkg);\n };\n\n const handleValidate = (section: string, payload: PackagePayload) => {\n handleWordingModalMyMode(section as TCurrentActionMode);\n handleShowModal(section);\n handleSetPayload(payload);\n };\n\n const renderContents = () => (\n <>\n <h1 className=\"package-container__subtitle\">{Wording.subtitle}</h1>\n\n <div className=\"package-container__body\">\n <PlanElement\n loading={loadingOffer}\n prices={prices}\n offer={offer}\n products={products}\n additionalOptions={options}\n currentProductCodes={currentProductCodes}\n currentAdditionalOptions={currentAdditionalOptions}\n loadingOption={false}\n handleToggle={handleValidate}\n contractProduct={contract.chosenProduct}\n />\n <div className=\"package-container__body__right\">\n {renderDetail()}\n {showOption && options && options.length > 0 && (\n <OptionElement\n idToggle={contract.energy}\n options={options}\n currentOptions={currentAdditionalOptions}\n handleToggle={handleValidate}\n />\n )}\n {findBillingModeCode(contract) !==\n EBillingMode.CYCLICAL_BILLING && (\n <PackageSettingContainer\n current={current}\n loading={loadingPackage}\n packages={packages}\n ranges={ranges}\n prepaymentFrequencies={prepaymentFrequencies}\n handleSetShowOption={(value: boolean) => {\n setShowOption(value);\n }}\n handleFetchPackage={handleFetchPackage}\n handleValidate={handleValidate}\n handleSetAdminChosenPackages={\n handleSetAdminChosenPackages\n }\n adminChosenPackages={adminChosenPackages}\n />\n )}\n </div>\n </div>\n </>\n );\n\n /**\n * TODO: uncomment the block to reuse the contractStatus\n * If the contract is not yet activated, should only display messages\n */\n return (\n <div className=\"package-container\">\n {contract.contractStatus !== EContractStatus.EFFECTIVE &&\n (localUserGroup === null || localUserGroup === '') ? (\n <div className=\"package-container__contractStatus\">\n <p>\n {contract.contractStatus ===\n EContractStatus.WAITING_FOURTEEN_DAY ||\n contract.contractStatus === EContractStatus.RECOVERY ||\n contract.contractStatus ===\n EContractStatus.INITIALIZED ||\n contract.contractStatus ===\n EContractStatus.SENT_TO_MARKET\n ? Wording.contractStatus.inProgress\n : Wording.contractStatus.notAccessible}\n </p>\n </div>\n ) : (\n renderContents()\n )}\n </div>\n );\n};\n\nexport default PackageContainer;\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { compose } from 'recompose';\nimport { Subtract } from 'utility-types';\nimport { RootState } from 'Types';\nimport { EEnergy, ECustomerType, EModeManageOffer } from '../../utils/enums';\n\nimport withBanner, {\n ExternalProps as ExternalPropsBanner,\n} from '../../libraries/withBanner';\nimport withModal, {\n ExternalProps as ExternalPropsModal,\n InjectedProps as InjectedPropsModal,\n} from '../../libraries/withModal';\n\nimport PackageContainer, {\n Props as ContainerProps,\n} from '../../containers/PackageContainer/PackageContainer';\nimport {\n fetchContractAsync,\n resetContractState,\n setContract,\n} from '../../_actions/contract.actions';\nimport {\n fetchPackageAsync,\n fetchProductAsync,\n updatePackageAsync,\n resetUpdate,\n IPayloadUpdatePackage as PackagePayload,\n} from '../../_actions/package.actions';\n\nimport { findContractByNumber, getTodayDate } from '../../utils/helpers';\n\nimport WordingConstant from '../../utils/wording.json';\nimport { TEstimate } from 'Models';\n\nconst Wording = WordingConstant.PackagePage;\n\nconst mapStateToProps = (state: RootState) => ({\n authState: state.authReducer,\n profileState: state.profileReducer,\n contractState: state.contractReducer,\n packageState: state.packageReducer,\n});\n\nconst dispatchProps = {\n contractDispatch: fetchContractAsync.request,\n fetchPackageDispatch: fetchPackageAsync.request,\n fetchProductDispatch: fetchProductAsync.request,\n updatePackageDispatch: updatePackageAsync.request,\n resetContractDispatch: resetContractState,\n resetUpdateDispatch: resetUpdate,\n setContractDispatch: setContract,\n};\n\ntype Props = ReturnType<typeof mapStateToProps> & typeof dispatchProps;\n\nconst WrappedPackage = compose<\n ContainerProps,\n Subtract<ContainerProps, InjectedPropsModal> &\n ExternalPropsBanner &\n ExternalPropsModal\n>(\n withBanner(),\n withModal(),\n)(PackageContainer);\n\nexport type TCurrentActionMode = 'packageID' | 'option' | 'frequency';\ntype State = {\n options: [];\n additionalOptions: [];\n payload?: PackagePayload;\n modalMode: TCurrentActionMode;\n};\n\nclass PackagePage extends React.Component<Props, State> {\n constructor(props: Props) {\n super(props);\n this.state = {\n options: [],\n additionalOptions: [],\n payload: undefined,\n modalMode: 'packageID',\n };\n }\n\n componentDidMount() {\n const {\n fetchProductDispatch,\n profileState: { customerType },\n contractState: { contracts, selectedContractNumber },\n } = this.props;\n const contract = findContractByNumber(\n selectedContractNumber,\n contracts,\n );\n\n fetchProductDispatch({\n customerType: customerType as ECustomerType,\n contracts: [contract],\n });\n }\n\n componentDidUpdate(prevProps: Props) {\n const { contractState } = prevProps;\n const {\n fetchProductDispatch,\n profileState: { customerType },\n contractState: { contracts, selectedContractNumber },\n } = this.props;\n if (selectedContractNumber !== contractState.selectedContractNumber) {\n const contract = findContractByNumber(\n selectedContractNumber,\n contracts,\n );\n fetchProductDispatch({\n customerType,\n contracts: [contract],\n });\n }\n }\n\n handleFetchPackage = () => {\n const {\n fetchPackageDispatch,\n profileState: { customerType },\n contractState: { contracts, selectedContractNumber },\n } = this.props;\n const contract = findContractByNumber(\n selectedContractNumber,\n contracts,\n );\n\n const newEstimates =\n contract.estimates &&\n contract.estimates.map((e: TEstimate) => {\n return {\n ...e,\n energy: contract.energy,\n };\n });\n\n fetchPackageDispatch({\n contract: contract,\n customerType: customerType as ECustomerType,\n contractNbr: selectedContractNumber,\n estimates: newEstimates as TEstimate[],\n energy: contract.energy as EEnergy,\n reference: contract.deliveryPoint.pointOfDelivery,\n productCode: contract.chosenProduct,\n });\n };\n\n prepareEvent = () => {\n const { payload } = this.state;\n const {\n profileState: { customerNumber },\n contractState: { selectedContractNumber },\n } = this.props;\n\n let subCategory = '';\n let message = '';\n\n if (payload) {\n switch (payload.mode) {\n case EModeManageOffer.INSTALLMENT_FREQUENCY: {\n subCategory =\n Wording.subCategories.prepaymentFrequency.value;\n message = Wording.subCategories.prepaymentFrequency.label;\n break;\n }\n\n case EModeManageOffer.PACKAGE: {\n if (\n payload.chosenPackages &&\n payload.chosenPackages.length === 2\n ) {\n subCategory =\n Wording.subCategories.seasonalityThreshold.value;\n message =\n Wording.subCategories.seasonalityThreshold.label;\n } else {\n subCategory = Wording.subCategories.packageChange.value;\n message = Wording.subCategories.packageChange.label;\n }\n\n break;\n }\n\n case EModeManageOffer.OPTIONS: {\n if (payload.option) {\n switch (payload.option.label) {\n case Wording.eventCheckOptions.saveTree:\n subCategory = payload.option.active\n ? Wording.subCategories.saveTreeAdd.value\n : Wording.subCategories.saveTreeSupp.value;\n\n message = payload.option.active\n ? Wording.subCategories.saveTreeAdd.label\n : Wording.subCategories.saveTreeSupp.label;\n break;\n\n case Wording.eventCheckOptions.green:\n subCategory = payload.option.active\n ? Wording.subCategories.greenAdd.value\n : Wording.subCategories.greenSupp.value;\n\n message = payload.option.active\n ? Wording.subCategories.greenAdd.label\n : Wording.subCategories.greenSupp.label;\n break;\n\n case Wording.eventCheckOptions.plastic:\n subCategory = payload.option.active\n ? Wording.subCategories.plasticAdd.value\n : Wording.subCategories.plasticSupp.value;\n\n message = payload.option.active\n ? Wording.subCategories.plasticAdd.label\n : Wording.subCategories.plasticSupp.label;\n break;\n\n default:\n message = Wording.subCategories.default.label;\n subCategory = '';\n break;\n }\n }\n break;\n }\n case EModeManageOffer.PRODUCT: {\n subCategory = Wording.subCategories.changeOffer.value;\n message = Wording.subCategories.changeOffer.label;\n }\n\n default:\n break;\n }\n }\n\n return {\n customerNbr: customerNumber,\n contractNbr: selectedContractNumber,\n category: Wording.categoryToSend,\n date: getTodayDate(),\n subCategory,\n message,\n };\n };\n\n handleUpdate = () => {\n const { payload } = this.state;\n if (payload) {\n const {\n profileState: { customerNumber },\n contractState: { contracts, selectedContractNumber },\n updatePackageDispatch,\n } = this.props;\n const contract = findContractByNumber(\n selectedContractNumber,\n contracts,\n );\n\n const event = this.prepareEvent();\n\n updatePackageDispatch({\n customerNbr: customerNumber,\n contract,\n event,\n ...payload,\n });\n }\n };\n\n handleChangeBanner = (contractNumber: string) => {\n const {\n contractState: { contracts },\n contractDispatch,\n profileState: { customerNumber },\n setContractDispatch,\n } = this.props;\n const contract = findContractByNumber(contractNumber, contracts);\n if (contract.isFetched) {\n setContractDispatch({ contract });\n } else {\n contractDispatch({\n customerNbr: customerNumber,\n contractNbr: contractNumber,\n });\n }\n };\n\n renderWordingModalByMode = () => {\n const { modalMode } = this.state;\n return modalMode === 'option' ? Wording.popup_option : Wording.popup;\n };\n\n handleWordingModalMyMode = (mode: TCurrentActionMode) => {\n this.setState({ modalMode: mode });\n };\n\n render() {\n const {\n profileState: { contact, customerType },\n contractState: { contracts, selectedContractNumber, error },\n authState: { groupe },\n packageState: {\n loadingPackage,\n loadingOffer,\n pkg,\n products,\n offer,\n prepaymentFrequencies,\n updateResponse,\n description,\n },\n resetUpdateDispatch,\n resetContractDispatch,\n }: Props = this.props;\n\n const contract = findContractByNumber(\n selectedContractNumber,\n contracts,\n );\n\n const packages = pkg[selectedContractNumber];\n const currentOffer = contract.offer || offer[selectedContractNumber];\n const pf = prepaymentFrequencies[selectedContractNumber];\n\n return (\n <WrappedPackage\n handleWordingModalMyMode={this.handleWordingModalMyMode}\n loadingPackage={loadingPackage}\n loadingOffer={loadingOffer}\n contract={contract}\n packages={packages}\n products={products}\n groupe={groupe}\n prepaymentFrequencies={pf}\n offer={currentOffer}\n handleFetchPackage={this.handleFetchPackage}\n handleSetPayload={(payload: PackagePayload) =>\n this.setState({\n payload: {\n ...payload,\n customerType,\n },\n })\n }\n // Banner\n title={Wording.title}\n bannerError={error}\n handleCloseModalBanner={() => resetContractDispatch()}\n selectedContractNumber={selectedContractNumber}\n contracts={contracts}\n contact={contact}\n customerType={customerType}\n handleChangeBanner={this.handleChangeBanner}\n // Modal\n modalMessage={this.renderWordingModalByMode()}\n customDescription={description}\n updateResponse={updateResponse}\n handleValidate={this.handleUpdate}\n handleReset={() => resetUpdateDispatch()}\n />\n );\n }\n}\n\nexport default connect(mapStateToProps, dispatchProps)(PackagePage);\n","import PackagePage from './PackagePage';\n\nexport default PackagePage;\n","import React from 'react';\n\nimport { InputEvent } from 'Types';\n\nimport { CustomCheckbox, CustomInput, CustomButton } from '../../components';\nimport { isValidPassword } from '../../utils/helpers';\nimport WordingConstant from '../../utils/wording.json';\nconst Wording = WordingConstant.SettingPage;\n\ninterface IFields {\n toggles: IToggles;\n password: IPassword;\n}\n\ninterface IPassword {\n old: string;\n new: string;\n confirm: string;\n}\n\ninterface IToggles {\n isReceiveNews: boolean;\n isAuthorizeData: boolean;\n}\ninterface IErrors {\n showNewPass: boolean;\n showConfirmPass: boolean;\n}\n\nexport type Props = {\n fields: IFields;\n errors: IErrors;\n handleToggle: any;\n handleInput: any;\n handleError: any;\n handleShowModal(section: string): void;\n};\n\nconst SettingContainer: React.FC<Props> = props => {\n const isNewValid = isValidPassword(props.fields.password.new);\n const isConfirmValid =\n props.fields.password.new === props.fields.password.confirm;\n\n const isValid =\n // props.fields.password.confirm !== '' &&\n // props.fields.password.new !== '' &&\n props.fields.password.old !== '' && isNewValid && isConfirmValid;\n\n return (\n <div className=\"setting-container\">\n <h2 className=\"setting-container__subTitle\">{Wording.subTitle}</h2>\n <p className=\"setting-container__toggle-title\">\n {Wording.toggle.title}\n </p>\n <CustomCheckbox\n checked={props.fields.toggles.isReceiveNews}\n text={Wording.toggle.isReceiveNews}\n handleCheck={() => props.handleToggle('isReceiveNews')}\n />\n <CustomCheckbox\n text={Wording.toggle.isAuthorizeData}\n checked={props.fields.toggles.isAuthorizeData}\n handleCheck={() => props.handleToggle('isAuthorizeData')}\n />\n\n <CustomButton\n title={Wording.buttonValue}\n color={'orange'}\n onClick={() => props.handleShowModal('customer')}\n />\n <h2 className=\"setting-container__password-title\">\n {Wording.password.title}\n </h2>\n <p className=\"setting-container__password-subTitle\">\n {Wording.password.subTitle}\n </p>\n <div className=\"setting-container__password-inputs\">\n <span className=\"setting-container__password-inputs__title\">\n {Wording.password.old}\n </span>\n <CustomInput\n type=\"password\"\n value={props.fields.password.old}\n onInputChange={(e: InputEvent) =>\n props.handleInput(e, 'old')\n }\n placeholder={Wording.password.placeholder}\n />\n <span className=\"setting-container__password-inputs__title\">\n {Wording.password.new}\n </span>\n <CustomInput\n type=\"password\"\n value={props.fields.password.new}\n onInputChange={(e: InputEvent) =>\n props.handleInput(e, 'new')\n }\n placeholder={Wording.password.placeholder}\n onBlur={() => props.handleError('showNewPass', !isNewValid)}\n error={\n props.errors.showNewPass\n ? Wording.password.error.new\n : undefined\n }\n />\n <span className=\"setting-container__password-inputs__title\">\n {Wording.password.confirm}\n </span>\n <CustomInput\n type=\"password\"\n value={props.fields.password.confirm}\n onInputChange={(e: InputEvent) =>\n props.handleInput(e, 'confirm')\n }\n placeholder={Wording.password.placeholder}\n onBlur={() =>\n props.handleError('showConfirmPass', !isConfirmValid)\n }\n error={\n props.errors.showConfirmPass\n ? Wording.password.error.confirm\n : undefined\n }\n />\n </div>\n <CustomButton\n title={Wording.buttonValue1}\n color={isValid ? 'orange' : 'gray'}\n onClick={() =>\n isValid ? props.handleShowModal('password') : null\n }\n />\n </div>\n );\n};\n\nexport default SettingContainer;\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { compose } from 'recompose';\nimport { Subtract } from 'utility-types';\n\nimport { RootState, InputEvent } from 'Types';\nimport withBanner, {\n ExternalProps as ExternalPropsBanner,\n} from '../../libraries/withBanner';\nimport withModal, {\n ExternalProps as ExternalPropsModal,\n InjectedProps as InjectedPropsModal,\n} from '../../libraries/withModal';\nimport SettingContainer, {\n Props as ContainerProps,\n} from '../../containers/SettingContainer/SettingContainer';\n\nimport {\n fetchContractAsync,\n resetContractState,\n setContract,\n} from '../../_actions/contract.actions';\nimport {\n updateCustomerAsync,\n updatePasswordAsync,\n resetUpdate,\n} from '../../_actions/profile.actions';\n\nimport WordingConstant from '../../utils/wording.json';\nimport { getTodayDate, findContractByNumber } from '../../utils/helpers';\n\nconst Wording = WordingConstant.SettingPage;\n\ninterface IFields {\n toggles: {\n isReceiveNews: boolean;\n isAuthorizeData: boolean;\n [key: string]: boolean;\n };\n password: {\n old: string;\n new: string;\n confirm: string;\n [key: string]: string;\n };\n}\n\nconst mapStateToProps = (state: RootState) => ({\n profileState: state.profileReducer,\n contractState: state.contractReducer,\n});\n\nconst dispatchProps = {\n contractDispatch: fetchContractAsync.request,\n updateCustomerDispatch: updateCustomerAsync.request,\n updatePasswordDispatch: updatePasswordAsync.request,\n resetUpdateDispatch: resetUpdate,\n resetContractDispatch: resetContractState,\n setContractDispatch: setContract,\n};\n\ntype Props = ReturnType<typeof mapStateToProps> & typeof dispatchProps;\n\nexport const WrappedSetting = compose<\n ContainerProps,\n Subtract<ContainerProps, InjectedPropsModal> &\n ExternalPropsBanner &\n ExternalPropsModal\n>(\n withBanner(),\n withModal(),\n)(SettingContainer);\n\ntype State = {\n fields: IFields;\n errors: {\n showNewPass: boolean;\n showConfirmPass: boolean;\n [key: string]: boolean;\n };\n};\n\nexport class SettingPage extends React.Component<Props, State> {\n constructor(props: any) {\n super(props);\n\n const { profileState }: Props = this.props;\n\n this.state = {\n fields: {\n password: {\n old: '',\n new: '',\n confirm: '',\n },\n toggles: {\n isAuthorizeData: profileState.contact.marketing,\n isReceiveNews: profileState.contact.newsletter,\n },\n },\n errors: {\n showNewPass: false,\n showConfirmPass: false,\n },\n };\n }\n\n handleToggle = (type: string) => {\n const { fields } = this.state;\n fields.toggles[type] = !fields.toggles[type];\n this.setState({ fields });\n };\n\n handleInput = (e: InputEvent, type: string) => {\n const { fields } = this.state;\n const { value } = e.currentTarget;\n fields.password[type] = value;\n this.setState({ fields });\n };\n\n handleError = (type: string, val: boolean) => {\n const { errors } = this.state;\n errors[type] = val;\n this.setState({ errors });\n };\n\n handleChangeBanner = (contractNumber: string) => {\n const {\n contractState: { contracts },\n contractDispatch,\n profileState: { customerNumber },\n setContractDispatch,\n } = this.props;\n const contract = findContractByNumber(contractNumber, contracts);\n if (contract.isFetched) {\n setContractDispatch({ contract });\n } else {\n contractDispatch({\n customerNbr: customerNumber,\n contractNbr: contractNumber,\n });\n }\n };\n\n handleUpdate = (section: string) => {\n const { fields } = this.state;\n const {\n updateCustomerDispatch,\n profileState,\n updatePasswordDispatch,\n contractState,\n } = this.props;\n\n if (section === 'customer') {\n updateCustomerDispatch({\n customer: {\n customerNbr: profileState.customerNumber,\n email: profileState.contact.email,\n phone: profileState.contact.phone,\n marketing: fields.toggles.isAuthorizeData,\n newsletter: fields.toggles.isReceiveNews,\n },\n\n event: {\n customerNbr: profileState.customerNumber,\n contractNbr: contractState.selectedContractNumber,\n category: WordingConstant.ProfilePage.categoryToSend,\n date: getTodayDate(),\n subCategory:\n WordingConstant.ProfilePage.subCategories\n .consumptionContactChange.value,\n message:\n WordingConstant.ProfilePage.subCategories\n .consumptionContactChange.label,\n },\n });\n } else {\n const token = localStorage.getItem('accessToken');\n if (token) {\n updatePasswordDispatch({\n token,\n user: profileState.customerNumber,\n oldPassword: fields.password.old,\n newPassword: fields.password.new,\n });\n }\n\n fields.password.confirm = '';\n fields.password.new = '';\n fields.password.old = '';\n }\n this.setState({ fields });\n };\n\n render() {\n const { fields, errors } = this.state;\n const {\n profileState: { contact, updateResponse, customerType },\n contractState: { contracts, selectedContractNumber, error },\n resetUpdateDispatch,\n resetContractDispatch,\n }: Props = this.props;\n return (\n <WrappedSetting\n fields={fields}\n errors={errors}\n handleToggle={this.handleToggle}\n handleInput={this.handleInput}\n handleError={this.handleError}\n // Banner\n title={Wording.title}\n bannerError={error}\n handleCloseModalBanner={() => resetContractDispatch()}\n selectedContractNumber={selectedContractNumber}\n contracts={contracts}\n contact={contact}\n customerType={customerType}\n handleChangeBanner={this.handleChangeBanner}\n // Modal\n modalMessage={Wording.popup}\n updateResponse={updateResponse}\n handleValidate={this.handleUpdate}\n handleReset={resetUpdateDispatch}\n />\n );\n }\n}\n\nexport default connect(\n mapStateToProps,\n dispatchProps,\n)(SettingPage);\n","import SettingPage from './SettingPage';\n\nexport default SettingPage;\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { compose } from 'recompose';\nimport { Subtract } from 'utility-types';\n\nimport { RootState, InputEvent } from 'Types';\nimport { ERateOption } from '../../utils/enums';\n\nimport withBanner, {\n ExternalProps as ExternalPropsBanner,\n} from '../../libraries/withBanner';\nimport withModal, {\n ExternalProps as ExternalPropsModal,\n InjectedProps as InjectedPropsModal,\n} from '../../libraries/withModal';\nimport ConsumptionContainer, {\n Props as ContainerProps,\n} from '../../containers/ConsumptionContainer/ConsumptionContainer';\nimport { InputItem } from '../../components/CustomTransfer/CustomTransfer';\n\nimport {\n fetchContractAsync,\n resetContractState,\n setContract,\n} from '../../_actions/contract.actions';\nimport {\n fetchMeterConfigAsync,\n createIndexAsync,\n resetCreateIndex,\n} from '../../_actions/consumption.actions';\nimport {\n displayPlaceholder,\n getTodayDate,\n findContractByNumber,\n getTimeframeFromLabel,\n sortedConsumptionList,\n} from '../../utils/helpers';\nimport WordingConstant from '../../utils/wording.json';\n\nconst Wording = WordingConstant.ConsumptionPage;\n\nconst mapStateToProps = (state: RootState) => ({\n profileState: state.profileReducer,\n contractState: state.contractReducer,\n consumptionState: state.consumptionReducer,\n});\n\nconst dispatchProps = {\n contractDispatch: fetchContractAsync.request,\n fetchMeterDispatch: fetchMeterConfigAsync.request,\n createIndexDispatch: createIndexAsync.request,\n resetContractDispatch: resetContractState,\n resetCreateIndexDispatch: resetCreateIndex,\n setContractDispatch: setContract,\n};\n\ntype Props = ReturnType<typeof mapStateToProps> & typeof dispatchProps;\n\nconst WrappedConsumption = compose<\n ContainerProps,\n Subtract<ContainerProps, InjectedPropsModal> &\n ExternalPropsBanner &\n ExternalPropsModal\n>(\n withBanner(),\n withModal(),\n)(ConsumptionContainer);\n\ntype State = {\n fields: {\n inputs: InputItem[];\n };\n};\n\nclass ConsumptionPage extends React.Component<Props, State> {\n // TODO: Should move fields input to corresponding container\n // to avoid rerendering graph\n state = {\n fields: {\n inputs: [\n {\n label: '',\n value: '',\n maxLength: 0,\n onChange: (e: InputEvent) => {},\n },\n ],\n },\n };\n\n componentDidMount() {\n const {\n contractState: { selectedContractNumber, contracts },\n fetchMeterDispatch,\n } = this.props;\n const {\n consumptionState: { rateOption },\n } = this.props;\n if (rateOption !== ERateOption.UNKNOWN) {\n this.setInitialState();\n }\n if (selectedContractNumber === '') {\n return;\n }\n const contract = findContractByNumber(\n selectedContractNumber,\n contracts,\n );\n if (contract) {\n fetchMeterDispatch({\n contractNbr: selectedContractNumber,\n pointOfDelivery: contract.deliveryPoint.pointOfDelivery,\n readingDate: getTodayDate(),\n energyType: contract.energy,\n });\n }\n }\n\n componentDidUpdate(prevProps: Props, prevState: State) {\n // Typical usage (don't forget to compare props):\n const {\n fetchMeterDispatch,\n contractState: { contracts, selectedContractNumber },\n consumptionState: { rateOption },\n } = this.props;\n\n if (\n prevState.fields.inputs[0].label === '' &&\n rateOption !== prevProps.consumptionState.rateOption\n ) {\n this.setInitialState();\n }\n const { contractState } = prevProps;\n if (selectedContractNumber !== contractState.selectedContractNumber) {\n const contract = findContractByNumber(\n selectedContractNumber,\n contracts,\n );\n if (contract) {\n fetchMeterDispatch({\n contractNbr: selectedContractNumber,\n pointOfDelivery: contract.deliveryPoint.pointOfDelivery,\n readingDate: getTodayDate(),\n energyType: contract.energy,\n });\n }\n }\n }\n\n setInitialState = () => {\n const { fields } = this.state;\n const {\n consumptionState: { rateOption, digitSize },\n } = this.props;\n\n let list: Array<{ label: string; placeholder?: string }> = [];\n if (rateOption === ERateOption.HIGH_LOW) {\n list = Wording.autoTransfer.input.highlow;\n } else if (rateOption === ERateOption.TOTAL_HOUR) {\n list = Wording.autoTransfer.input.totalhour;\n } else {\n list = [\n {\n label: '',\n },\n ];\n }\n const inputs = list.map((input, index) => {\n const onChange = (e: InputEvent) =>\n this.handleInputChange(e, index);\n const placeholder = displayPlaceholder(digitSize);\n return {\n ...input,\n onChange,\n placeholder,\n value: '',\n maxLength: digitSize,\n };\n });\n fields.inputs = inputs;\n\n this.setState({ fields });\n };\n\n handleInputChange = (e: InputEvent, idx: number) => {\n const { fields } = this.state;\n fields.inputs[idx].value = e.currentTarget.value.replace(/[^\\d]/, '');\n this.setState({ fields });\n };\n\n handleChangeBanner = (contractNumber: string) => {\n const {\n contractState: { contracts },\n contractDispatch,\n profileState: { customerNumber },\n setContractDispatch,\n } = this.props;\n const contract = findContractByNumber(contractNumber, contracts);\n if (contract.isFetched) {\n setContractDispatch({ contract });\n } else {\n contractDispatch({\n customerNbr: customerNumber,\n contractNbr: contractNumber,\n });\n }\n };\n\n handleUpdate = (section: string) => {\n const {\n contractState: { selectedContractNumber, contracts },\n consumptionState: { meterNumber },\n createIndexDispatch,\n } = this.props;\n if (selectedContractNumber === '') {\n return;\n }\n const contract = findContractByNumber(\n selectedContractNumber,\n contracts,\n );\n if (contract) {\n const { fields } = this.state;\n const meterReads = fields.inputs.map(input => {\n return {\n meterNumber,\n registerName: '',\n value: input.value,\n timeframeCode: getTimeframeFromLabel(input.label),\n };\n });\n createIndexDispatch({\n meterReads,\n contractNbr: selectedContractNumber,\n pointOfDelivery: contract.deliveryPoint.pointOfDelivery,\n readingDate: getTodayDate(),\n energyType: contract.energy,\n });\n }\n };\n\n handleInputError = (): boolean => {\n const { fields } = this.state;\n const reducer = (acc: boolean, current: InputItem) =>\n acc && current.value.length === current.maxLength;\n const condition = fields.inputs.reduce(reducer, true);\n if (!condition) {\n fields.inputs = fields.inputs.map(input => {\n const error =\n input.value.length !== input.maxLength\n ? `Veuillez saisir les ${input.maxLength} derniers chiffres`\n : undefined;\n return {\n ...input,\n error,\n };\n });\n this.setState({ fields });\n return false;\n }\n fields.inputs = fields.inputs.map(input => {\n return {\n ...input,\n error: undefined,\n };\n });\n\n this.setState({ fields });\n return true;\n };\n\n render() {\n const {\n profileState: { contact, customerType },\n contractState: { contracts, selectedContractNumber, error },\n consumptionState: {\n meters,\n updateResponse,\n errorMeterConfig,\n errorMeterReading,\n },\n resetCreateIndexDispatch,\n resetContractDispatch,\n }: Props = this.props;\n\n const {\n fields: { inputs },\n } = this.state;\n\n const contract = findContractByNumber(\n selectedContractNumber,\n contracts,\n );\n\n return (\n <WrappedConsumption\n meters={sortedConsumptionList(meters)}\n inputs={inputs}\n contract={contract}\n handleInputChange={this.handleInputChange}\n handleInputError={this.handleInputError}\n errorMeterConfig={errorMeterConfig}\n errorMeterReading={errorMeterReading}\n // Banner\n title={Wording.title}\n selectedContractNumber={selectedContractNumber}\n bannerError={error}\n handleCloseModalBanner={() => resetContractDispatch()}\n contracts={contracts}\n contact={contact}\n customerType={customerType}\n handleChangeBanner={this.handleChangeBanner}\n // Modal\n modalMessage={Wording.popup}\n updateResponse={updateResponse}\n handleValidate={this.handleUpdate}\n handleReset={resetCreateIndexDispatch}\n customDescription={updateResponse.message}\n />\n );\n }\n}\n\nexport default connect(mapStateToProps, dispatchProps)(ConsumptionPage);\n","import ConsumptionPage from './ConsumptionPage';\n\nexport default ConsumptionPage;\n","import React from 'react';\n\nimport HomePage from './HomePage';\nimport ApplicationFormPage from './FormPage';\nimport BillPage from './BillPage';\nimport FilePage from './FilePage';\nimport PaymentPage from './PaymentPage';\nimport ProfilePage from './ProfilePage';\nimport SponsorPage from './SponsorPage';\nimport EventPage from './EventPage';\nimport MovePage from './MovePage';\nimport PackagePage from './PackagePage';\nimport SettingPage from './SettingPage';\nimport ConsumptionPage from './ConsumptionPage';\nimport NotFoundPage from './defaults/NotFoundPage';\n\nimport WordingConstant from '../utils/wording.json';\nconst WordingRoutes = WordingConstant.MainPage.SideBar.routes;\n\nexport default [\n {\n title: WordingRoutes.home.title,\n path: WordingRoutes.home.path,\n links: [\n {\n path: WordingRoutes.home.links.path,\n exact: true,\n sidebar: () => <div>Mon dashboard</div>,\n main: () => <HomePage />,\n title: WordingRoutes.home.links.title,\n },\n ],\n },\n {\n title: WordingRoutes.consumption.title,\n path: WordingRoutes.consumption.path,\n links: [\n {\n path: WordingRoutes.consumption.links.history.path,\n sidebar: () => <div>Historique de ma consommation</div>,\n main: () => <ConsumptionPage />,\n title: WordingRoutes.consumption.links.history.title,\n },\n // {\n // path: WordingRoutes.consumption.links.lastMonth.path,\n // sidebar: () => <div>Consommation du mois passé</div>,\n // main: () => <ConsumptionPage />,\n // title: WordingRoutes.consumption.links.lastMonth.title,\n // },\n // {\n // path: WordingRoutes.consumption.links.selfRelief.path,\n // sidebar: () => <div>Mon auto-relève</div>,\n // main: () => <ConsumptionPage />,\n // title: WordingRoutes.consumption.links.selfRelief.title,\n // },\n ],\n },\n {\n title: WordingRoutes.offer.title,\n path: WordingRoutes.offer.path,\n links: [\n {\n path: WordingRoutes.offer.links.package.path,\n sidebar: () => <div>Mon forfait</div>,\n main: () => <PackagePage />,\n title: WordingRoutes.offer.links.package.title,\n },\n // {\n // path: WordingRoutes.offer.links.options.path,\n // sidebar: () => <div>Mes options</div>,\n // main: () => <PackagePage />,\n // title: WordingRoutes.offer.links.options.title,\n // },\n // {\n // path: WordingRoutes.offer.links.changePackege.path,\n // sidebar: () => <div>Changer de forfait</div>,\n // main: () => <PackagePage />,\n // title: WordingRoutes.offer.links.changePackege.title,\n // },\n ],\n },\n {\n title: WordingRoutes.profile.title,\n path: WordingRoutes.profile.path,\n links: [\n {\n path: WordingRoutes.profile.links.information.path,\n sidebar: () => (\n <div>Informations personnelles et bancaires</div>\n ),\n main: () => <ProfilePage />,\n title: WordingRoutes.profile.links.information.title,\n },\n {\n path: WordingRoutes.profile.links.setting.path,\n sidebar: () => <div>Paramètres</div>,\n main: () => <SettingPage />,\n title: WordingRoutes.profile.links.setting.title,\n },\n {\n path: WordingRoutes.profile.links.sponsorship.path,\n sidebar: () => <div>Parrainage</div>,\n main: () => <SponsorPage />,\n title: WordingRoutes.profile.links.sponsorship.title,\n },\n {\n path: WordingRoutes.profile.links.move.path,\n sidebar: () => <div>Je déménage</div>,\n main: () => <MovePage />,\n title: WordingRoutes.profile.links.move.title,\n },\n ],\n },\n {\n title: WordingRoutes.document.title,\n path: WordingRoutes.document.path,\n links: [\n {\n path: WordingRoutes.document.links.files.path,\n sidebar: () => <div>Mes fichiers</div>,\n main: () => <FilePage />,\n title: WordingRoutes.document.links.files.title,\n },\n {\n path: WordingRoutes.document.links.bills.path,\n sidebar: () => <div>Mes factures</div>,\n main: () => <BillPage />,\n title: WordingRoutes.document.links.bills.title,\n },\n {\n path: WordingRoutes.document.links.payments.path,\n sidebar: () => <div>Mes paiements</div>,\n main: () => <PaymentPage />,\n title: WordingRoutes.document.links.payments.title,\n },\n ],\n },\n {\n title: WordingRoutes.contact.title,\n path: WordingRoutes.contact.path,\n links: [\n {\n path: WordingRoutes.contact.links.applicationForms.path,\n sidebar: () => <div>Formulaires de demandes</div>,\n main: () => <ApplicationFormPage />,\n title: WordingRoutes.contact.links.applicationForms.title,\n },\n {\n path: WordingRoutes.contact.links.requests.path,\n sidebar: () => <div>Mes demandes</div>,\n main: () => <EventPage />,\n title: WordingRoutes.contact.links.requests.title,\n },\n {\n path: WordingRoutes.contact.links.FAQ.path,\n title: WordingRoutes.contact.links.FAQ.title,\n sidebar: () => <div>FAQ</div>,\n main: () => <div />,\n },\n ],\n },\n {\n title: WordingRoutes.notFound.title,\n path: WordingRoutes.notFound.path,\n hidden: true,\n links: [\n {\n path: WordingRoutes.notFound.links.default.path,\n sidebar: () => <div>Page non trouvée</div>,\n main: () => <NotFoundPage />,\n title: WordingRoutes.notFound.links.default.title,\n },\n ],\n },\n];\n","/**\n * @author Ivan Naluzhnyi | Nawin Kim\n * @email [ivan.naluzhnyi@gmail.com]\n * @email [nawin.kim@uppli.fr]\n * @create date 2019-09-16 16:44:55\n * @modify date 2019-09-16 16:50:47\n * @desc [client-space | Uppli]\n */\n\nimport React from 'react';\nimport { Route, Redirect } from 'react-router-dom';\nimport { connect } from 'react-redux';\n\nimport { RootState, RouteProps, SubRouteProps } from 'Types';\nimport { SideBar, Footer, Modal } from '../components';\nimport routes from './routes';\nimport { resetReduxStore } from '../_actions/auth.actions';\nimport withLoader from '../libraries/withLoader';\nimport AuthService from '../services/auth-service';\n\nimport Wording from '../utils/wording.json';\nimport { resetUpdate } from '../_actions/profile.actions';\nconst WordingCommon = Wording.Common;\n\nconst Content = () => (\n <div className=\"content\" id=\"content\">\n {routes.map((route: RouteProps) =>\n route.links.map((subRoute: SubRouteProps, index: number) => (\n <Route\n key={index}\n path={route.path + subRoute.path}\n exact={subRoute.exact}\n component={subRoute.main}\n />\n )),\n )}\n </div>\n);\n\nconst WrappedContent = withLoader()(Content);\n\nconst mapStateToProps = (state: RootState) => ({\n authState: state.authReducer,\n profileState: state.profileReducer,\n});\n\nconst dispatchProps = {\n resetReduxStoreDispatch: resetReduxStore,\n resetUpdateDispatch: resetUpdate,\n};\n\ntype Props = ReturnType<typeof mapStateToProps> & typeof dispatchProps;\n\nclass Main extends React.Component<Props, {}> {\n render() {\n const {\n profileState: { contact, customerNumber, updateResponse },\n authState: { loading, unauthorized },\n resetReduxStoreDispatch,\n resetUpdateDispatch,\n }: Props = this.props;\n\n const props = {\n routes,\n firstName: contact.customerFullName.firstName,\n lastName: contact.customerFullName.lastName,\n customerNbr: customerNumber,\n handleLogout: () => resetReduxStoreDispatch(),\n };\n const isSignIn = AuthService.isAuthenticated();\n if (!isSignIn) {\n return <Redirect to={{ pathname: '/login' }} />;\n }\n\n return (\n <div className=\"main-page\">\n <div className=\"main-page__content\">\n <SideBar {...props} />\n <WrappedContent\n loading={loading}\n unauthorized={unauthorized}\n handleCloseModal={() => {\n // this.props.history.push('')\n AuthService.logout();\n props.handleLogout();\n }}\n />\n\n <Modal\n title={WordingCommon.contextModal.title}\n description={\n updateResponse.message ||\n WordingCommon.contextModal.description\n }\n state={1}\n show={\n updateResponse.code === '505' ||\n updateResponse.code === '0'\n }\n handleCancel={() => {\n window.close();\n resetUpdateDispatch();\n }}\n />\n </div>\n <Footer />\n </div>\n );\n }\n}\n\nexport default connect(mapStateToProps, dispatchProps)(Main);\n","import React from 'react';\nimport { Route } from 'react-router-dom';\nimport AdminMain from './admin/root';\nimport UserMain from './root';\nimport { connect } from 'react-redux';\nimport { resetReduxStore } from '../_actions/auth.actions';\nimport { fetchContextAsync } from '../_actions/profile.actions';\nimport { getGroupAsync } from '../_actions/getGroup.actions';\nimport { RootState } from 'Types';\n\nconst mapStateToProps = (state: RootState) => ({\n authState: state.authReducer,\n});\n\nconst dispatchProps = {\n resetReduxStoreDispatch: resetReduxStore,\n getGroupAsyncDispatch: getGroupAsync.request,\n};\n\ntype IProps = ReturnType<typeof mapStateToProps> &\n typeof dispatchProps & {\n initialSearchParams: Map<string, string | number>;\n };\ntype IState = {\n isAdmin: boolean;\n};\n\nclass Main extends React.Component<IProps, IState> {\n constructor(props: IProps) {\n super(props);\n this.state = {\n isAdmin: false,\n };\n }\n componentDidMount() {\n const { groupe } = this.props.authState;\n const { initialSearchParams: isp, getGroupAsyncDispatch } = this.props;\n\n if (groupe && isp.get('client') === undefined) {\n getGroupAsyncDispatch();\n this.setState({ isAdmin: true });\n } else if (groupe && isp.get('client') !== undefined) {\n this.setState({ isAdmin: true });\n } else {\n this.setState({ isAdmin: false });\n }\n }\n\n componentWillUnmount() {\n const { groupe } = this.props.authState;\n if (groupe === undefined) {\n this.setState({ isAdmin: false });\n }\n }\n\n render() {\n const { initialSearchParams: isp } = this.props;\n const { isAdmin } = this.state;\n const isUserAlias = isp.has('client') && !!isp.get('client');\n\n return (\n <Route\n path=\"/\"\n component={isAdmin && !isUserAlias ? AdminMain : UserMain}\n />\n );\n }\n}\n\nexport default connect(mapStateToProps, dispatchProps)(Main);\n","/**\n * @author Ivan Naluzhnyi | Nawin Kim\n * @email [ivan.naluzhnyi@gmail.com]\n * @email [nawin.kim@uppli.fr]\n * @create date 2019-09-16 16:44:55\n * @modify date 2019-09-16 16:50:47\n * @desc [client-space | Uppli]\n */\n\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { Provider } from 'react-redux';\nimport {\n BrowserRouter as Router,\n Route,\n Switch,\n Redirect,\n RouteProps,\n RouteComponentProps,\n} from 'react-router-dom';\n\nimport 'slick-carousel/slick/slick.css';\nimport 'slick-carousel/slick/slick-theme.css';\n\nimport store from './store';\nimport './index.css';\nimport * as serviceWorker from './serviceWorker';\nimport { version } from '../package.json';\n\nimport { log, parseQueryParams } from './utils/helpers';\nimport AuthService from './services/auth-service';\nimport AuthPage from './pages/AuthPage';\nimport ResetPasswordPage from './pages/ResetPasswordPage';\nimport ConnectedMain from './pages/Main';\n\nlet isFirstRedirect = true;\nlet initialSearchParams = new Map<string, string | number>();\n\ninterface IPrivateRouteProps extends RouteProps {\n component:\n | React.ComponentType<\n RouteComponentProps<any> & {\n initialSearchParams: Map<string, string | number>;\n }\n >\n | React.ComponentType<any>;\n}\n\nconst PrivateRoute: React.FC<IPrivateRouteProps> = ({\n component: Component,\n ...rest\n}) => {\n const isSignIn = AuthService.isAuthenticated();\n return (\n <Route\n {...rest}\n render={props => {\n if (isFirstRedirect) {\n isFirstRedirect = false;\n initialSearchParams = parseQueryParams(\n props.location,\n window.location.host,\n window.location.protocol,\n );\n }\n\n if (!isSignIn && initialSearchParams.has('client')) {\n initialSearchParams = new Map();\n }\n\n return isSignIn ? (\n <Component\n {...props}\n initialSearchParams={initialSearchParams}\n />\n ) : (\n <Redirect\n to={{\n pathname: '/login',\n state: { from: props.location },\n }}\n />\n );\n }}\n />\n );\n};\n\nReactDOM.render(\n <Provider store={store}>\n <Router>\n <Switch>\n <Route exact path=\"/login\" component={AuthPage} />\n <Route\n exact\n path=\"/createPassword\"\n component={ResetPasswordPage}\n />\n <PrivateRoute path=\"/\" component={ConnectedMain} />\n </Switch>\n </Router>\n </Provider>,\n document.getElementById('root'),\n);\n\nconsole.log('Version : ', version);\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: http://bit.ly/CRA-PWA\nserviceWorker.unregister();\n"],"sourceRoot":""}