{"version":3,"sources":["assets/icons/menu-icons/contract_grey.png","assets/icons/menu-icons/contract_white.png","assets/icons/document.png","assets/icons/green-optimization/Co2Kortlaegning.svg","assets/icons/delete.svg","assets/icons/green-optimization/KlimaTiltag.svg","assets/icons/green-optimization/Raadgivning.svg","assets/icons/green-optimization/VINDenergi.svg","assets/icons/menu-icons/dashboard_grey.png","assets/icons/menu-icons/dashboard_white.png","assets/icons/menu-icons/economy_grey.png","assets/icons/menu-icons/economy_white.png","assets/icons/menu-icons/energyconsumption_grey.png","assets/icons/menu-icons/energyconsumption_white.png","assets/icons/menu-icons/greenoptimization_grey.png","assets/icons/menu-icons/greenoptimization_white.png","assets/NRGiScanGreen.png","assets/icons/consumption_01.svg","assets/icons/contract_01.svg","assets/icons/creditcard_01.svg","assets/icons/question_mark.svg","assets/icons/credit_card.svg","assets/icons/date_icon.svg","assets/icons/power_consumption_01.png","assets/icons/green-optimization/KLIMAskov.png","assets/icons/green-optimization/KLIMAskov.svg","assets/scan_windows.jpg","assets/icons/profile.svg","assets/icons/firm_icon.svg","assets/icons/people.svg","assets/icons/person_add.svg","assets/icons/menu-icons/contact_grey.png","assets/icons/menu-icons/documents_grey.png","assets/icons/menu-icons/documents_white.png","assets/icons/menu-icons/kontakt_hvid.png","assets/icons/menu-icons/marketing_material_grey.svg","assets/icons/menu-icons/marketing_material_white.png","assets/icons/menu-icons/news_grey.png","assets/icons/menu-icons/news_white.png","state/features/auth/auth-slice.ts","services/telemetry-service.ts","utilities/constants.ts","auth/auth-constants.ts","utilities/platform-helpers/auth-helper.ts","i18n/i18n.tsx","state/features/snackbar/snackbar-slice.ts","utilities/platform-helpers/api-helper.ts","api/api.ts","utilities/platform-helpers/json-helper.ts","state/api-clients.ts","state/features/contact/operation.ts","state/features/contact/contact-slice.ts","state/features/organization/operation.ts","state/features/organization/organization-slice.ts","state/features/contract/contract-selected-slice.ts","utilities/platform-helpers/date-helpers.ts","utilities/helpers/date-helpers.ts","state/features/contract/operation.ts","state/features/contract/contract-slice.ts","state/features/document/operation.ts","state/features/document/document-slice.ts","state/features/energy-consumption/energy-consumption-helper.ts","utilities/helpers/general-helpers.ts","state/features/energy-consumption/operation.ts","state/features/energy-consumption/types.ts","state/features/energy-consumption/energy-consumption-slice.ts","state/features/green-optimization/operation.ts","state/features/green-optimization/green-optimization-slice.ts","state/features/invoice/debtor-posting-helper.ts","state/features/invoice/operation.ts","state/features/invoice/invoice-slice.ts","state/features/page-header-setting/types.ts","state/features/page-header-setting/page-header-setting-slice.ts","state/features/status-message/operation.ts","state/features/status-message/status-messages-slice.ts","state/features/user/operation.ts","state/features/user/user-slice.ts","state/features/webapp/webapp-slice.ts","state/features/news/operation.ts","state/features/news/news-slice.ts","state/features/marketing-material/operation.ts","state/features/marketing-material/types.ts","state/features/marketing-material/marketing-material-slice.ts","state/store.ts","utilities/use-previous-hook.ts","auth/b2c/ad-b2c-auth-helper.tsx","auth/general-auth-provider.tsx","view/components/default-components/buttons/basic-button.tsx","auth/no-permission-page.tsx","state/routes.ts","styles/color-constants.ts","styles/custom-grid-breakpoints.tsx","styles/font-size-constants.ts","utilities/platform-helpers/html-video-helper.ts","view/components/default-components/basic-card/basic-card.tsx","view-scan-energi/components/dashboard/dashboard-files-card-footer.tsx","view-scan-energi/components/news/single-news-content-page.tsx","view-scan-energi/components/news/single-news-content-route.tsx","view-scan-energi/components/support-contact.tsx","view/components/default-components/page-container/page-content-container.tsx","view/components/default-components/flex-column.tsx","view/components/default-components/page-header.tsx/page-header.tsx","view/components/default-components/title-and-sub-card.tsx","view-scan-energi/components/page-warning-message.tsx","view/components/default-components/page-title/page-title.tsx","view-scan-energi/components/user-info/user-info-helper.tsx","view-scan-energi/components/contact/contact-card.tsx","view-scan-energi/components/contact/contact-cards.tsx","view-scan-energi/components/contact/opening-hours-card.tsx","view-scan-energi/pages/contact/contact.tsx","view-scan-energi/pages/contact/contact-route.tsx","view-scan-energi/components/basic-circular-progress.tsx","view-scan-energi/components/basic-no-documents.tsx","view-scan-energi/components/document/basic-document-list.tsx","view-scan-energi/components/document/basic-document-list-header.tsx","view-scan-energi/components/document/basic-document-list-item-map-spacer.tsx","view-scan-energi/components/filterprovider.tsx","view-scan-energi/components/document/basic-sort-type.tsx","utilities/file-helper.ts","view-scan-energi/components/document/basic-document-list-item.tsx","view-scan-energi/components/contract/contract-list-item.tsx","view-scan-energi/components/contract/contract-card.tsx","view-scan-energi/components/basic-card-button.tsx","view-scan-energi/components/contract/contract-info-card-item.tsx","view-scan-energi/components/contract/contract-info-helper.tsx","view-scan-energi/components/contract/renew-contract-button.tsx","view-scan-energi/components/contract/contract-info-card.tsx","view-scan-energi/pages/contracts/contracts.tsx","view-scan-energi/pages/contracts/contracts-route.tsx","view-scan-energi/components/dashboard/dashboard-card.tsx","view-scan-energi/components/dashboard/dashboard-files-card.tsx","view-scan-energi/components/dashboard/dashboard-delete-statatus-message-button.tsx","view-scan-energi/components/dashboard/status-message-card-item.tsx","view-scan-energi/components/dashboard/dashboard-status-message-card.tsx","view-scan-energi/components/dashboard/dashboard-news.tsx","view-scan-energi/pages/dashboard/dashboard.tsx","view-scan-energi/pages/dashboard/dashboard-route.tsx","view/components/default-components/date-range-picker/date-range-picker.tsx","view-scan-energi/components/document/document-list-item.tsx","view-scan-energi/components/document/document-card.tsx","view-scan-energi/pages/documents/documents.tsx","view-scan-energi/pages/documents/documents-route.tsx","view-scan-energi/pages/e-books/e-books.tsx","view-scan-energi/pages/e-books/e-books-route.tsx","view-scan-energi/components/economy/economy-header.tsx","view-scan-energi/components/economy/how-to-read-invoice.tsx","view-scan-energi/components/economy/economy-header-how-to.tsx","view/components/default-components/required/required-provider.tsx","view/components/default-components/text-fields/basic-text-field.tsx","view/components/default-components/basic-checkbox/basic-checkbox.tsx","view-scan-energi/components/basic-card-checkbox.tsx","view-scan-energi/components/economy/reset-filter-button.tsx","view-scan-energi/components/economy/filter-invoices.tsx","view-scan-energi/components/economy/invoice-document-card.tsx","view/components/default-components/flex-row.tsx","view/components/default-components/list-table/list-table-item.tsx","view/components/default-components/list-table/list-table-header.tsx","styles/styling-constants.ts","view/components/default-components/virtual-list-table/virtual-list-table.tsx","view-scan-energi/components/table/table.tsx","view-scan-energi/components/economy/invoice-table.tsx","view-scan-energi/components/economy/invoice-table-overview.tsx","view-scan-energi/components/economy/next-invoice-card.tsx","view-scan-energi/components/economy/annual-statement-document-card.tsx","view-scan-energi/pages/economy/economy.tsx","view-scan-energi/pages/economy/economy-route.tsx","view-scan-energi/components/energi-consumption/consumption-back-and-forth-buttons.tsx","view-scan-energi/components/energi-consumption/consumption-documents-report.tsx","view-scan-energi/components/energi-consumption/consumption-fixed-days-button.tsx","view-scan-energi/components/energi-consumption/consumption-graph.tsx","view-scan-energi/components/energi-consumption/basic-tooltip.tsx","view-scan-energi/components/energi-consumption/consumption-measuring-units.tsx","view-scan-energi/components/energi-consumption/consumption-measuring-units-card.tsx","view-scan-energi/components/energi-consumption/consumption-prior-year-button.tsx","view-scan-energi/components/energi-consumption/consumption-total-card.tsx","view-scan-energi/pages/energy-consumption/energy-consumption.tsx","view-scan-energi/pages/energy-consumption/energy-consumption-route.tsx","view-scan-energi/components/green-optimization/green-element-card.tsx","view-scan-energi/components/green-optimization/green-image-item.tsx","view-scan-energi/pages/green-optimization/green-optimization.tsx","view-scan-energi/pages/green-optimization/green-optimization-route.tsx","view-scan-energi/components/marketing-material/contact-footer.tsx","view-scan-energi/components/marketing-material/download-all-button.tsx","assets/icons/marketing-material/Banner_black.svg","assets/icons/marketing-material/CSR_black.svg","assets/icons/marketing-material/Diploma_black.svg","assets/icons/marketing-material/SocialMedia_black.svg","view-scan-energi/components/marketing-material/download-file-button.tsx","view-scan-energi/components/marketing-material/square-banner.tsx","view-scan-energi/components/marketing-material/wide-banner.tsx","view-scan-energi/components/marketing-material/big-material-card.tsx","view-scan-energi/components/marketing-material/small-material-card.tsx","view-scan-energi/components/marketing-material/marketing-material-grid-holder.tsx","view-scan-energi/components/marketing-material/material-filter-button.tsx","view-scan-energi/components/marketing-material/material-filter-holder.tsx","view-scan-energi/components/marketing-material/not-available-card.tsx","view-scan-energi/pages/marketing-material/marketing-material.tsx","view-scan-energi/pages/marketing-material/marketing-material-route.tsx","view-scan-energi/components/news/news-card-item.tsx","view-scan-energi/components/news/sign-up-news-redirect-card.tsx","view-scan-energi/pages/news/news.tsx","view-scan-energi/pages/news/news-route.tsx","view-scan-energi/components/basic-card-title-subtext.tsx","view-scan-energi/components/user-info/user-info-card.tsx","view-scan-energi/components/user-info/user-organization-card.tsx","view/components/default-components/buttons/text-button.tsx","view/components/default-components/modal/basic-modal.tsx","view-scan-energi/components/user-management/create-user-modal.tsx","view-scan-energi/components/user-management/delete-user-from-organization-button.tsx","view-scan-energi/components/user-management/resend-invitation-button.tsx","view-scan-energi/components/user-management/user-management-table.tsx","view-scan-energi/components/user-management/user-management-card.tsx","view-scan-energi/pages/user-info/user-info.tsx","view-scan-energi/pages/user-info/user-info-route.tsx","view/components/default-components/spinner/basic-spinner.tsx","view/components/default-components/spinner/overlay-spinner.tsx","utilities/platform-helpers/icon-helper.tsx","view/navigation/app/app-drawer.tsx","view/components/default-components/baisc-dropdown/option-dropdown.tsx","view-scan-energi/components/organization/organization-dropdown.tsx","view/navigation/app/header-bar.tsx","view/navigation/desktop/header-bar.tsx","view/navigation/desktop/drawer-item.tsx","view/navigation/desktop/menu-drawer.tsx","app-routes.tsx","auth/callback.tsx","auth/private-route.tsx","utilities/platform-helpers/colors-helper.tsx","view/components/default-components/logout-auth/logout-auth.tsx","view/components/default-components/snackbar/snackbar.tsx","view/components/default-components/snackbar/snackbar-close-button.tsx","utilities/helpers/notification-provider.tsx","app.tsx","styles/color-theme.tsx","state/history.ts","index.tsx"],"names":["module","exports","authSlice","createSlice","name","initialState","token","logout","triggerSignOut","isInitialized","reducers","setNewToken","state","action","payload","window","localStorage","setItem","logOutAuth","console","log","removeItem","setTriggerSignOut","setIsInitialized","actions","Monitor","reactPlugin","ReactPlugin","appInsights","insightsKey","appHistory","this","warn","ApplicationInsights","config","instrumentationKey","extensions","extensionConfig","identifier","history","loadAppInsights","error","undefined","exception","trackException","message","properties","trackTrace","AuthRoles","ApiBaseUrl","process","InsightsKey","OrgIdKey","REACT_APP_GOOGLE_MAPS_API_KEY","REACT_APP_GOOGLE_MAPS_STATIC_MAP_API_URL","B2CConfig","REACT_APP_CLIENT_ID","REACT_APP_AUTHORITY","REACT_APP_TOKEN_ID","REACT_APP_API_CLIENT_ID","REACT_APP_AAD_API_PERMISSION","decodeToken","upn","parts","split","length","Error","decoded","str","output","replace","decodeURIComponent","escape","atob","urlBase64Decode","JSON","parse","getTokenExpiresAt","tokenId","getItem","expiresAt","exp","Date","isAdmin","jwtToken","includes","isTokenExpired","expireDate","currentTime","useAuthHelper","useState","isLoading","setIsLoading","IsAuthenticated","setIsAuthenticated","hasRole","setHasRole","useAuth","loading","isAuthenticated","loginWithRedirect","getTokenSilently","role","useEffect","getToken","LanguageEnum","i18nResources","da","translation","danishPlatformTranslation","danishTranslation","en","englishPlatformTranslation","englishTranslation","i18n","use","detector","init","fallbackLng","resources","ns","defaultNS","debug","interpolation","escapeValue","react","wait","bindI18n","bindStore","nsMode","err","t","userLang","navigator","language","changeLanguage","moment","locale","localized","key","localizedDynamic","localizedInterpolation","keysToReplace","snackbarSlice","snackbars","showSuccessSnackbar","push","getTime","Math","random","options","variant","autoHideDuration","showErrorSnackbar","showWarningSnackbar","showInfoSnackbar","clearSnackbars","map","s","dismissed","clearSnackbar","snackbar","find","removeSnackbar","splice","findIndex","DocumentType","AsyncOperationHandler","apiCall","client","a","showResponseMessage","callbackOnSuccess","dispatch","store","result","customError","code","status","toString","response","getErrorMessage","errorResponse","e","isJson","jsonError","BaseClient","headerData","headers","Authorization","Object","assign","CompetitionClient","baseUrl","http","jsonParseReviver","competition","url_","options_","body","stringify","method","transformOptions","then","transformedOptions_","fetch","_response","processPostNewCompetitionCode","_headers","forEach","v","k","text","_responseText","throwException","Promise","resolve","ConsumptionWebClient","fromDate","toDate","organizationId","encodeURIComponent","toISOString","processGetByDateRange","result200","resultData200","Array","isArray","item","DailyConsumptionDto","fromJS","date","processGetByDate","data","processGetExcelExport","contentDisposition","get","fileNameMatch","exec","fileName","blob","ContactClient","processGetContacts","ContactDto","ContractClient","processGetContractsDetails","ContractDto","contract","processRenewContact","CustomerServiceClient","processGetCustomerServiceInfo","CustomerServiceDto","DebtorPostingClient","processGetDebtorPostingsDetails","DebtorPostingDto","DocumentClient","processGetDocumentDetails","DocumentDto","processGetDebtorPostingDocumentDetails","DebtorPostingDocumentDto","documentId","processGetDocumentAzure","GreenOptimizationClient","processGetGreenOptimizationContractsStatus","GreenOptimizationContractDto","greenOptimizationId","processChooseGreenOptimization","MarketingMaterialsClient","processGetMarketingMaterialsByOrganizationId","MarketingMaterialDto","processGetOrganizationMaterialsIdByOrganizationId","marketingMaterialIds","processGetMarketingMaterialsByIds","processSendUpdatedMarketingMaterialNotifications","NewsClient","processGetNews","News","blog","processGetSingleBlog","OrganizationClient","accountNum","processGetOrganizationDetails","OrganizationDto","processGetOrganizationsByAuthId","userId","processDeleteUserOrganization","StatusMessageClient","processGetStatusMessages","StatusMessageDto","statusMessageDto","processPostNewStatusMessages","statusMessageId","processDeleteStatusMessages","UnitsClient","processGetUnitsByOrganizationId","UnitDto","UserClient","processGet","User","user","processPost","processPut","processDelete","id","processGetById","processGetByAuthId","processGetUsersByOrganizationId","processResendInvitationEmail","processCreateUserWithOrganizationId","userDto","processSignUp","processGetUserInfo","WebHookUserDTO","processCheckUserInvites","processUpdateLastOpenedMarketingPage","ModelBase","createdOn","modifiedOn","isDeleted","property","hasOwnProperty","_data","consumptionValue","connectionId","ConsumptionExcelDataDto","excelData","worksheetName","ConsumptionExcelData","toJSON","usage","eanNumber","measuringPoint","contactTitle","phoneNumber","email","image","document","productCategory","productSubcategory","contractStart","contractEnd","priceDistrict","premium","price","fixedPricePremium","active","originalCeilingYear1","originalCeilingYear2","originalCeilingYear3","originalCeilingYear4","originalCeilingYear5","originalCeilingYear6","currentCeilingYear1","currentCeilingYear2","currentCeilingYear3","currentCeilingYear4","currentCeilingYear5","currentCeilingYear6","supplement","Document","documentType","organization","filePath","debtorPosting","Organization","DebtorPosting","ProductCategory","ProductSubcategory","accountName","street","houseNum","zipcode","city","fax","cvr","homepage","accountConnections","contracts","documents","debtorPostings","greenOptimizationContracts","organizationsContacts","organizationsUsers","AccountConnection","Contract","GreenOptimizationContract","OrganizationsContact","OrganizationsUser","dwId","connectionid","eanid","contractStartDate","contractEndDate","DebtorPostingType","debtorPostingType","invoiceNumber","description","dueDate","currency","debet","credit","balance","source_Key","UserRole","windEnergy","climateEnergy","co2Mapping","energyAdvice","climateForest","contact","contactId","Contact","lastVisitedMarketingPage","authId","phonenumber","title","inviteSent","inviteAccepted","MarketingMaterialCategories","MaterialTypes","MaterialFormats","mondayToThursday","friday","nextInvoice","loginPageText","showLoginPageText","amount","eanId","marketingMaterialCategory","materialType","materialFormat","newToUser","categoryId","authorName","summary","headerImageSrc","publishDate","category","extension_Role","ApiException","isApiException","obj","statusMessagesClient","documentClient","contractClient","contactClient","customerServiceClient","greenOptimizationClient","consumptionWebClient","unitsClient","organizationClient","debtorPostingClient","userClient","newsClient","marketingMaterialsClient","getCustomerServiceInfo","createAsyncThunk","getContactsDetails","getContacts","contactsSlice","customerServiceInfo","pending","isSuccess","extraReducers","builder","addCase","fulfilled","rejected","getOrganizationById","getOrganizationDetails","getOrganizationsByUserId","getOrganizationsByAuthId","userOrganizations","organizationSlice","setSelectedOrganization","org","previousOrganizationId","selectedContract","selectedContractSlice","setSelectedContract","countNumberOfDaysBetweenDates","from","to","diff","formatToLocalDateAndLeadingZeros","toLocaleDateString","contractNoEndDate","sameDate","date1","date2","getUTCDate","getUTCMonth","getUTCFullYear","getYesterday","subtract","getFirstDayInPreviousMonth","startOf","getLastDayInPreviousMonth","endOf","getOneYearPrior","addOneDay","add","addOneWeek","subtractOneDay","subtractOneWeek","getContractsDetails","getContractPDF","fileId","getDocumentAzure","renewContact","renewSuccessMessage","contractsSlice","currentActiveContract","setCurrentContract","filter","sort","b","valueOf","getDocumentDetails","getDebtorPostingDocumentDetails","documentsSlice","debtorPostingDocuments","getOneYearPriorSortingDays","sortingDays","newSortingDays","getConnectionIdsInPeriod","units","unit","isUnitContractInPeriod","saveExccelAs","fileResponse","Blob","type","saveAs","getConsumption","input","getByDateRange","getConsumptionByDate","getByDate","getConsumptionOneYearPrior","getConsumptionByDateOneYearPrior","GetConsumptionExcelExport","oneDay","unitHashmap","items","itemKey","keyValuePairSingle","ed","connection","toLocaleString","format","getExcelExport","catch","FixedPeriodCategory","getUnits","getUnitsByOrganizationId","consumption","consumptionOneYearPrior","totalConsumption","numberOfDays","selectedMeasuringPointIds","idsInPeriod","idsInPeriodOneYearPrior","monthlyConsumption","currentFixedPeriodCategory","Month","priorFixedPeriodCategory","periodAverage","yearPriorSelected","handleSelectedUnits","oneYearPriorSortingDays","energyConsumptionSlice","setTotalConsumption","filteredConsumption","i","index","self","setSortingDays","Day","Week","Quarter","NotFixed","setNumberOfDays","setSelectedMeasuringPointIds","setMeasuringPointIdsInPeriod","setPeriodCategory","setYearPriorSelected","resetConsumptionOneYearPriorIds","dataPoints","d","getMonth","setMonthlyConsumption","getGreenOptimizationContractsStatus","chooseGreenOptimization","chooseGreenOptimizationSuccessMessage","greenOptimizationsContracts","numberOfGreenOptimizationContracts","greenOptimizationSlice","setNumberGreenOptimizationContracts","numberOfContracts","monthNames","getDebtorPostings","getDebtorPostingsDetails","SetCurrentFilter","currentFilter","DateFrom","DateTo","thisMonthDebtorPostings","saldo","thisMonth","getFullYear","DebtorPostingSlice","thisYear","ViewType","pageSettingSlice","pageSettings","toggleView","settingExist","setting","itemView","value","searchChanged","searchString","toggleSort","BoxView","getStatusMessages","saveStausMessages","statusMessage","postNewStatusMessages","deleteStausMessages","deleteStatusMessages","statusMessagesSlice","statusMessageSlice","meta","arg","getUser","getByAuthId","SetUserActive","createUser","createUserWithOrganizationId","deleteUserFromOrganization","deleteUserOrganization","getUsersByOrganizationId","resendInvitationEmail","updateLastOpenedMarketingPage","usersSlice","userPageActive","uo","webappSlice","open","showOverlaySpinner","toggleDrawer","setOverlaySpinner","GetAllNewsItems","getNews","GetSingleBlog","getSingleBlog","NewsSlice","newsItems","fetchedAll","getMarketingMaterials","getMarketingMaterialsByOrganizationId","downloadMarketingMaterial","MaterialIds","getMarketingMaterialsByIds","DefaultDownLoadLinks","disabled","DefaultMarketingMaterialPageData","banners","access","product","GetCategoryName","wideImgSrc","squareImgSrc","wideDownLoadLinks","squareDownLoadLinks","isNewToUser","diploma","downLoadLinks","soMeTexts","cSRTexts","Co2Mapping","ClimateAction","EnergyConsulting","WindPower","ClimateForest","InitialMarketingMaterialState","Category","MarketingMaterialPageData","InitialActiveIds","ActiveIds","MarketingMaterialsSlice","marketingMaterials","activeCategorys","NotSet","activeMaterials","unreadMMNotification","notifications","materialDownloaded","addNotification","removeNotification","notification","resetMarketingMaterialNotifications","marketingMaterialDto","activeCategoryIndex","activeMaterial","categoryIndex","marketingMaterial","MarketingPage","CSRTexts","smallCardMapper","Diploma","SoMeTexts","WideBanner","bigCardMapper","SquareBanner","marketingMaterialPageData","linkTitle","getFormatName","bannerType","DownloadLinkIndex","DownloadLink","PDF","Word","JPG","PNG","MP4","createPersistReducer","reducer","persistReducer","customizedMiddleware","getDefaultMiddleware","serializableCheck","immutableCheck","unshift","next","logTrace","webAppReducer","storage","whitelist","blacklist","webAppReducerBase","pageSettingReducer","pageSettingReducerBase","authReducer","authReducerBase","configureStore","snackbarReducer","statusMessageReducer","greenOptimizationReducer","energyConsumptionReducer","organizationReducer","documentsReducer","contractsReducer","contactsReducer","selectedContractsReducer","userReducer","debtorPostingReducer","newsReducer","marketingMaterialReducer","middleware","usePrevious","ref","useRef","current","authConfig","auth","authority","clientId","knownAuthorities","redirectUri","cache","cacheLocation","storeAuthStateInCookie","authParameters","scopes","accountId","initAuthSettings","setWaitForResponse","msal","msalPublicClient","handleResponse","resp","account","homeAccountId","currentAccounts","getAllAccounts","handleRedirectPromise","errorMessage","passwordResetRequest","loginRedirect","logException","clientIsAuthenticated","authClient","clientGetUser","clientLoginWithPopup","params","msalClient","loginPopup","clientLoginWithRedirect","clientHandleRedirectCallback","clientGetTokenSilently","currentAccount","getAccountByHomeId","redirectRequest","silentRequest","forceRefresh","acquireTokenSilent","accessToken","acquireTokenRedirect","getUserRole","getTokenCounter","AuthContext","React","createContext","useContext","AuthProvider","children","onRedirectCallback","setUser","setRole","authSettings","setAuthSettings","setLoading","popupOpen","setPopupOpen","waitForResponse","useSelector","prevTriggerSignOut","useDispatch","p","clientLogout","tmpAuthSettings","initAuth","location","origin","tmpIsAuthenticated","tmpUser","newToken","loadingChanged","getTokenTimeout","loginWithPopup","handleRedirectCallback","resetTokenCounter","clearTimeout","setTimeout","Provider","getIdTokenClaims","getTokenWithPopup","BasicButton","memo","icon","onClick","containerClasses","buttonColor","onClickLocal","useCallback","Box","className","Button","color","startIcon","createElement","useStyles","makeStyles","theme","createStyles","container","heigth","width","display","justifyContent","alignItems","flexDirection","fontSize","subTitle","margin","NoPermissionPage","signOut","returnTo","href","classes","routes","basicCardBoxShadow","GridWithCustomBreakpoints","others","betweenlgandxlBreakpoint","betweenlgandxl","Grid","h1","h2","h3","h4","h5","h6","videoRegex","playerIdRegex","number_regex","responseiveBox","transition","breakpoints","down","BasicCard","props","minWidth","position","minHeight","bgcolor","boxShadow","m","borderRadius","clsx","documnetFooter","flexWrap","documnetFooterContentContainer","maxWidth","flexItems","icons","alignSelf","root","backgroundColor","border","textTransform","DashboardFilesCardFooter","author","readMore","gridWithMaxWidth","headerContainer","paddingRight","marginRight","up","marginLeft","paddingLeft","arrow","opacity","containerClassName","contentContainer","iFrameStyle","height","SingleNewsContentPage","useHistory","searchParam","pathname","nt","newsItemToUse","setNewsItemToUse","iFrameVideoBuilder","playerId","style","paddingBottom","referrerPolicy","sandbox","allow","src","newsItemWithParsedVideo","useMemo","iFrameFn","newsItemBody","newBody","replaceAll","playerIdTextString","match","playerIdString","playerIdNumber","Number","iFrameElement","ReactDOMServer","renderToStaticMarkup","slice","newsToUse","goBack","close","direction","xs","sm","md","alt","dangerouslySetInnerHTML","__html","SingleNewsContentPageRoute","useRouteMatch","path","useStylesBox","spacer","box","right","bottom","speechBubbleBox","padding","smSpeechBubble","cursor","arrowDown","borderLeft","borderRight","borderTop","cancelIcon","personIcon","textHeader","fontWeight","textBold","textBoldUnderline","textDecorationLine","SupportContact","boxClasses","textClasses","useLayout","useLayoutStyles","useLocation","checked","setChecked","selectedContact","contactText","contactLayout","setContactLayout","handleChange","event","prev","justify","Typography","desktopOnly","Hidden","only","PageContentContainer","withStyles","paddingTop","spacing","FlexColumn","marginTop","PageHeaderContext","PageHeader","area","areaId","setAreaId","textAlign","titleAlign","TitleAndSubCard","hrefMailToCustomerService","warningSites","PageWarningMessage","showWarningOnPage","setShowWarning","flexBox","warningIcon","Link","target","rel","marginBottom","whiteSpace","PageTitle","fullTitle","shouldPrefixBrandName","userInfoUseStyles","cardClass","boxClass","cardText","flexGrow","cardIcon","flexDirectionRow","defaultContent","minWidth70","minWidth150","minWidth180","minWidth200","minWidth250","marginTopTen","button","buttonFlexBox","infoContainer","contactCardWrapper","noTopMargin","daysText","contactInfoCard","contactInfoTextBox","contactInfoHeader","contactInfoText","underline","imageContainer","ContactCard","ContactCards","openingHoursCard","fridayText","OpeningHoursCard","subText","ContactRoute","circularProgress","BasicCircularProgress","CircularProgress","nonDocumentsGrid","BasicNoDocuments","firstLayerCard","BasicDocumentList","overflow","header","BasicDocumentListHeader","BasicDocumentListItemMapSpacer","documentNumber","DocumentContext","useDocumentFilter","FilterProvider","sortProp","setSortProp","formControl","SortType","FormControl","Select","onChange","MenuItem","promptUserWithFileOptions","file","filename","url","URL","createObjectURL","link","setAttribute","appendChild","click","removeChild","documentCardItem","selected","BasicDocumentListItem","contractPage","statusActive","statusInactive","documentIcon","flexRow","textOverflow","downloadIcon","downloadIconContainer","downloadIconContainerMobile","marginLeft30","marginLeftt10","subProductEnumToString","param","ContractListItem","layout","setSelected","compare","downloadDocument","getContractEnd","preventDefault","smallMobileOnly","ContractIconWhite","ContractIconGrey","desktopAndLargeMobile","firstCategory","secoundCategory","secoundCategoryContractPage","thirdCategory","thirdCategoryContractPage","contractCardContainer","maxHeight","spaceBetweenTitleAndData","ContractCard","parentContracts","dateFrom","dateTo","docuNumber","cardHeight","filteredContracts","setFilteredContracts","layoutStyle","tempArray","doc","localeCompare","List","filteredContract","BasicCardButton","itemBox","ContractInfoCardItem","emptySpace","valueText","valueCeiling","valuePrice","getContractStart","getPriceDistrict","getPrice","getPriceMwh","getPremium","getOriginalCeilingYear1","ceilingValue","getOriginalCeilingYear2","getOriginalCeilingYear3","getOriginalCeilingYear4","getOriginalCeilingYear5","getOriginalCeilingYear6","getExpectedCeilingYear1","getExpectedCeilingYear2","getExpectedCeilingYear3","getExpectedCeilingYear4","getExpectedCeilingYear5","getExpectedCeilingYear6","getSupplement","getEmptySpace","renewButton","buttonText","arrowIcon","RenewContractButton","renewContract","downloadText","top","left","center","titleLeftMargin","threeInfoItemsWidth","twoInfoItemsWidth","ContractInfoCard","useLayoyut","selectedContractInfo","setSelectedContractInfo","contractInfoCardItems","setContractInfoCardItems","contractPeriod","Spottime","SMO","NONstop","FLEXvalg","FASTfast","FASTfastUp","FASTfastSPOTtime","FASTfastExclProfilSPOTtime","FASTloft","FLEXloft","FLEXloftSPOTtime","FLEXfastExclProfile","FLEXfastExclProfilSPOTtime","SpottimeNonStopWithWindPower","FLEXfast","FLEXfastFLEXSpot","VINDenergy","CO2Mapping","EnergyCalculation","EnergyLabeling","EnergySparring","EnergySupervision","OmegaEMS","PriorityList","RealizationHelp","RealizationStart","SubsidiesCase","HourCase","SolarCell","SubsidiesHelp","EnergyCheck","EsgReport","TariffCheck","PriceAlert","NewProduct","ElectricitySales","GreenEnergy","Counseling","DocumentIcon","dropDownSort","contractInfo","cardGrid","Contracts","contractDocs","setContractDocs","greenDocs","setGreenDocs","sortType","setSortType","setDirection","size","setSize","useLayoutEffect","updateSize","innerWidth","innerHeight","addEventListener","removeEventListener","useWindowSize","layoutClasses","lg","xl","ContractsRoute","DashboardCard","redirect","scoundLayerCard","headerAndButton","useButtonStyles","DashboardFilesCard","redirectButton","cardClasses","buttonClasses","DeleteUserFromOrganizationButtonStyles","DeletStatusMessageButton","onButtonClicked","deleteIcon","messageTitle","messageText","dateText","basicPadding","flexBoxSpaceBetween","StatusMessagesCardItem","nonStatusMsg","statusMsgItemBox","overflowY","statusMsgHeader","circularProgressBox","dialogCategorySeperator","statusMessageIcon","sortStatusMessages","DashboardStatusMessageCard","setOpen","setTitle","setText","statusMessages","setStatusMessages","handleClose","StausMessageItemsMapped","messages","getDate","Dialog","onClose","aria-labelledby","fullWidth","DialogTitle","DialogContent","TextField","label","multiline","rows","DialogActions","newStatusMsg","useDocumentStyles","documentOrder","alignContent","documentHeader","documentImage","documentText","iconFooter","NewsComponent","docuClasses","goToNewsPage","news","fetchedAllNews","setInnerHtml","highlightedText","Dashboard","generateComsumptionInputs","consumptionInputs","setConsumptionInputs","wrap","Creditcard","minimumFractionDigits","maximumFractionDigits","Consumption","DashboardRoute","datepickerContainer","alignCenterPaddingTop20","lineHeight","datePickerToDate","datePickerFromDate","documentLayerCard","DateRangePicker","dateFromChanged","dateToChanged","dateFromChangedLocal","dateToChangedLocal","utils","MomentUtils","maxDate","documentIconContainer","alignTextBoldTextCenter","paddingLeftFive","documentContainer","ellipsis","DocumentListItem","getDocumentName","rightHeader","documentsContainer","headerDate","DocumentCard","parentDocuments","documentElementHeight","docuHeight","elementsNumber","filteredDocuments","setFilteredDocuments","setDocuments","documentsListHeight","rowRenderer","buildList","sizes","rowCount","rowHeight","Documents","setFromDate","setToDate","reportsDocs","setReportsDocs","GreenOptimizationReports","DocumentsRoute","EBooks","EbooksRoute","EconomyHeader","pdfjs","GlobalWorkerOptions","workerSrc","version","subTextBorderBottom","borderBottom","dialog","HowToReadInvoice","numPages","setNumPages","QuestionMark","aria-describedby","onLoadSuccess","apply","x","page","pageNumber","scale","boldText","seachHeaderFlexBox","EconomyHeaderHowTo","RequiredContext","CssTextField","validationMethod","showError","setShowError","validate","isValid","onSubmit","borderBottomColor","shrink","BasicTextField","textChanged","prefix","suffix","suffixIcon","prefixIcon","placeholder","requiredText","required","isInvalid","textChangedLocal","showRequired","InputLabelProps","helperText","InputProps","startAdornment","InputAdornment","Icon","endAdornment","defaultProps","checkedIcon","BasicCheckbox","Checkbox","optionText","outerContainer","checkbox","lastChild","borderBottomWidth","BasicCardCheckbox","option","optionState","isLastChild","resetButton","msAlignSelf","ResetFilterButton","searchInvoiceTextField","searchInvoiceContainer","searchPopUp","FilterInvoices","setFilterDateFromTo","fDate","tDate","handleFromDateChanged","handleToDateChanged","setFilterInvoiceType","setFilterInvoiceNumber","num","InvoiceNumber","handleInvoiceTypeInvoiceChanged","setInvoiceType","Invoice","handleInvoiceTypeCreditChanged","Credit","handleInvoiceTypeOtherChanged","Other","handleResetButtonPressed","resetFilter","generateInvoiceSelectedItem","facturaCheckBoxOption","creditNoteCheckBoxOption","othersCheckBoxOption","inputValue","DebtorPostingDocumentCard","debtorPostingsDocuments","debtorPostingsDocumentsFilter","documentsToUse","setDocumentsToUse","documentFilter","dp","debtorPostingsFilter","useDocument","docNameLowerCase","toLowerCase","invoiceNameLowerCase","FlexRow","itemContainer","itemText","firstColumnMargin","lastColumnMargin","rightAlignColumMargin","showCursor","ListTableItem","columnSizes","objectValues","itemSelected","contentItem","itemSelectedLocal","objectValue","flex","listHasScroll","headerText","ListTableHeader","generateHeaders","list","outline","scrollContainer","VirtualizedListTable","divRef","clientHeight","setHeight","clientWidth","setWidth","hasScroll","setHasScroll","handler","h","w","showScroll","columnHeaders","overscanRowCount","rowEven","rowOdd","ScanEnergyTable","renderRow","keys","propsFromParent","generateListItems","generateData","keysToRender","dataKey","Boolean","isNaN","InvoiceTable","debtorPostingsToUse","setDebtorPostingsToUse","filteredDebtorPostings","useDebtorPosting","useEconomyStyles","alignSelfCenter","alignTextCenter","amountText","boxStyle","accumulatedCardHeader","iconContainer","InvoiceTableOverview","CreditCard","iconBox","MinHeight77","gridContainer","NextInvoiceCard","DateIcon","mobileOnly","AnnualStatementDocumentCard","annualStatementDocs","setAnnualStatementDocs","AnnualStatement","Economy","EconomyRoute","arrowFlexbox","typogrphy","arrowDiv","ConsumptionBackAndForthButtons","setNewSortingDays","newLocalSortingDays","subtractOneMonthToEndOfMonth","subtractOneQuarter","subtractOneQuarterToEndOfMonth","addOneMonthToEndOfMonth","addOneQuarter","addOneQuarterToEndOfMonth","ConsumptionDocumentsReport","setReportDocs","BasicReports","sortFlexbox","ConsumptionFixedDaysButton","periodCategory","btnText","Chart","register","annotationPlugin","yAxisUnitText","transform","graphFlexbox","graphContainer","overflowX","firstHidden","secondHidden","marginLeftTen","marginZero","ConsumptionGraph","setData","graphOptions","animation","duration","responsive","maintainAspectRatio","scales","grid","drawBorder","drawOnChartArea","drawTicks","y","plugins","legend","tooltip","titleColor","bodyColor","displayColors","bodyAlign","bodyFontSize","bodyFontStyle","borderColor","borderWidth","callbacks","context","dataset","parsed","annotation","annotations","mode","yMin","yMax","enabled","content","toFixed","filteredDataPoints","generateFilteredDataPoints","filteredDataPointsOneYearPrior","total","dataPoint","dataToSet","generateDataFromFilteredDataPoints","IsEqual","chosenDataPoints","accumulatedDataPoints","create","setHours","filteredConsumptionData","filteredConsumptionDataOneYearPrior","filteredDatesData","labelForOneDaySelected","useLabelForOneDay","toLocaleTimeString","hour","minute","generateDataForGraph","filteredDates","filteredConsumptionOneYearPrior","dateLabel","dateString","labels","datasets","TooltipSetup","palette","common","white","shadows","Tooltip","BasicTooltip","placement","interactive","toolTipValueText","toolTipDateText","toolTipBox","ConsumptionUnits","firstUpdate","handleCheckSinglePressed","newId","newIds","unitsToShow","unitList","combinedUnitIds","isUnitActive","numberOfUnitsCallback","measuringPointButtons","checkAll","divider","chooseAllBox","ConsumptionUnitsCard","numberOfUnits","setNumberOfUnits","setNumberOfUnitsCallback","number","Divider","ConsumptionPriorYearButton","handlePriorYearToggled","ConsumptionTotalCard","summarizingCardIcons","PowerConsumptionIcon","functionalityGrid","datepickerGridItem","datepickerBox","downloadExcel","downloadTypo","mobileResetBox","linkStyle","thirdHidden","fourthHidden","fifthHidden","sixthHidden","fetchOneYearPrior","EnergyConsumption","prevYearPriorSelected","elOverviewLink","elDeclarationLink","kontakteOs","chosenUnits","smUp","EnergyConsumptionRoute","cardActive","iconActive","float","flexbox","childrenBox","buttonBox","activeButton","greenLeaf","GreenElementCard","imageBox","GreenImageItem","cardYouGetText","wordWrap","GreenOptimization","VINDenergi","KlimaTiltag","Co2Kortlaegning","Raadgivning","KLIMAskov","GreenOptimizationRoute","ContactFooter","hrefMail","hrefPhone","availablestyle","gap","disabledstyle","ActiveTypo","fontFamily","DownloadAllButton","PropsFromParent","allIds","availableIds","setDisabled","handleDownload","_extends","arguments","source","prototype","call","_objectWithoutProperties","excluded","sourceKeys","indexOf","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","_ref","svgRef","viewBox","ForwardRef","forwardRef","fill","strokeWidth","stroke","x2","TypeText","NameText","font","convertBlobToBase64","reject","reader","FileReader","onerror","onload","readAsDataURL","DownloadFileButton","Disabled","setParentImgSrc","fetchImage","squareBanner","aspectRatio","imgBox","objectFit","activeTypography","inActiveTypography","ImgSrc","wideBanner","GridAroundBigMaterial","DownloadBoxStyle","gridRow","justifyItems","contactMe","zIndex","SvgIcon","headerTypo","bodyTypo","card","Badge","BigMaterialCard","activeCategory","bannerIcon","localWideImgSrc","setWideImgSrc","localSquareImgSrc","setSquareImgSrc","SquareDownloadButtons","WideDownloadButtons","BodyTextColor","IconHeaderColor","linkDisabled","setLinkDisabled","handleOnClick","badgeContent","overlap","invisible","component","GridAroundSmallMaterial","DescriptionStyle","smallCard","badge","SmallMaterialCard","downLoadButtons","gridTemplateColumns","gridTemplateColums","gridTemplateAreas","gridTemplateRows","GridWithoutBannerAndDiploma","MarketingMaterialGridHolder","selectedCategory","selectedMarketingMaterials","withoutBannerAndDiploma","gridArea","Banner_black","Diploma_black","SocialMedia_black","CSR_black","typografi","MaterialFilterButton","isCategoryActive","MaterialCategory","handleFilterButtonPressed","handleFilterChange","notificationsForCategory","MaterialFilterMenu","notAvailableCard","contactButton","activeTypo","NotAvailableCard","getIcon","MarketingMaterial","setSelectedCategory","setSelectedMarketingMaterials","isSelectedCategoryActive","accessMarketingMaterialIds","setAccessMarketingMaterialsIds","ActiveMaterials","mm","handleCategoryChange","MarketingMaterialRoute","summaryStyles","minWidth176","summaryContainerStyles","NewsItemsOverview","divStyle","setNews","showFourMore","setShowFourMore","getShowFourMore","Scan_windows","generateNewsItems","footerText","SignUpNewsRedirectCard","onSignUpClicked","newWindow","opener","NewsRoute","TitleAndSubTypographyUseStyles","textStyle","TitleAndSubTypography","subTexts","st","customSubtitle","UserInfoCard","profile","UserOrganizationCard","orginasation","firmInformation","setfirmInformation","addressInformation","setAddressInformation","phoneInformation","setPhoneInformation","firmIcon","TextButton","Transition","Slide","StyledDialog","paper","BasicModal","BackdropProps","background","TransitionComponent","keepMounted","CreateUserModalStyles","buttonActiveStyle","buttonDisableStyle","buttonStyle","textField","CreateUserModal","newUser","setNewUser","selectedOrganizationId","createUserClicked","DeleteUserFromOrganizationButton","confirmDeleteUser","DialogContentText","autoFocus","ResendInvitationButton","resendMailDisabled","mailIconStyle","handleResendMail","disableHoverListener","UserManagementTable","setItems","itemsToUse","elemen","elementCopy","deleteButton","resendInvitationButton","UserManagementCard","economyClasses","modalOpen","setModalOpen","onCreateAccountClicked","people","person_add","UserInfo","UserInfoRoute","BasicSpinner","backdrop","drawer","OverlaySpinner","Backdrop","GetIcon","srcUrl","StyledBottomNavigation","BottomNavigation","StyledBottomNavigationAction","BottomNavigationAction","StyledMenuBottomNavigationAction","menuSelected","menu","menuIconContainer","bottomDrawerContainer","AppDrawer","bottomNavigationIconHandler","route","selectedIcon","notSelectedIcon","isRoute","newValue","showLabels","showLabel","DashboardIconWhite","DashboardIconGrey","EconomyIconWhite","EconomyIconGrey","GreenOptimizationIconWhite","GreenOptimizationIconGrey","EnergyConsumptionIconWhite","EnergyConsumptionIconGrey","Menu","ListboxComponent","other","itemCount","overscanCount","renderRowProps","cloneElement","popper","PopperMy","Popper","dropdownContainer","EmptyDropdownOption","DropdownOption","listBoxProps","BasicDropdown","hideUnderline","inputClassName","dropdownOptions","setDropdownOptions","Autocomplete","PopperComponent","disableClearable","getOptionLabel","getOptionSelected","valueOption","renderInput","disableUnderline","ListboxProps","popupIcon","organizationDropDown","inputContainer","convertOrganizationToDropdownOption","OrganizationOptionSelector","createSelector","orgs","OrganizationDropdown","currentOrganization","setOrganization","orgOption","o","headerLogo","cardWidth","HeaderBar","mdUp","nrgi_scan_logo","organizationDropDownMargin","organizationHeaderInfo","organizationHeaderInfoData","iconWhite","userContainer","orgnanization","ngriScanLogo","fixFirefox","textDecoration","tintColor","StyledListItem","ListItem","StyledBadge","StyledListItemText","ListItemText","DrawerItem","currentToggleState","onMenuItemClicked","unReadNotification","linkTo","ListItemIcon","iconSelected","primary","cardHover","transitions","easing","sharp","leavingScreen","enteringScreen","drawerIcon","drawerContainer","useIconStyles","dashboardIcon","economyIcon","greenOptimizationIcon","energyConsumptionIcon","contractsIcon","documentsIcon","newsIcon","ebooksIcon","contactIcon","profileIcon","signOutIcon","profileIconGrey","signOutIconGrey","groupIconGrey","groupIcon","competitionIcon","marketingMaterialIcon","MenuDrawer","iconClasses","locationBaseString","drawerIsOpen","logOut","unreadMarketingMaterial","renderDrawerList","isDesktop","MarketingMaterialGrey","MarketingMaterialWhite","DocumentsIconGrey","DocumentsIconWhite","NewsIconGrey","NewsIconWhite","ContactIconGrey","ContactIconWhite","AddMobileDrawerItems","Drawer","reason","anchor","bodyContent","appContent","AppRoutes","organizations","ga","useGA4React","pageview","search","idNumber","exact","Callback","redirectUrl","sessionStorage","mapDispatchToProps","connect","isLogout","authHelper","Component","rest","fn","renewalTimeout","unscheduleRenewal","expiresAtDate","timeToRenewal","GetToken","scheduleTokenRenewal","render","DefaultPalette","main","secondary","default","LogoutAuth","Snackbar","useSnackbar","enqueueSnackbar","closeSnackbar","displayed","myKey","onExited","SnackbarCloseButton","snackKey","IconButton","aria-label","NotificationContext","NotificationProvider","material","doesMarketingMaterialHaveNotifications","persistor","persistStore","App","ThemeProvider","createMuiTheme","typography","join","values","maxSnack","CssBaseline","createBrowserHistory","ga4react","GA4React","initialize","_","ReactDOM","StrictMode","getElementById"],"mappings":"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","file":"static/js/main.1652b2cd.chunk.js","sourcesContent":["module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAA0CAYAAADIZmusAAAACXBIWXMAAAsSAAALEgHS3X78AAACi0lEQVRoge2aMVbjMBCG/+WlX0o6uAFupwJOQG6AuUE4wYYTACcgnIDsDaCaFm4AHWW22WKb8OQ3CorQs6VYUrTg7z0eD2Nb88uj0UiaH8vlEibMXAHYxZYhoocQC1ZCRMAcwP62RQh/ANRENPe5uREiIlQP/MxhYSDnRDTremRHfl8XKgJiWyf6iyytGy8APOW3uUGNz5nVsSddY2bEzMfWtQsi8uqFVDBzDeA+5PU7jmvb+hImi9AHXEL+S76MkJHPTcw8BlBFbntORNHcuFOIDLzbWA0aTFSgiSWm1bWYedc3jm+ACq91rJe1CiEiFT2OJV2IzR0RTWK9s9O15NNvPYnsYgi/peETtXTuE9u9Zj5ZrS+tQkSEStYOYzVocMTMiCXGJ2qVkHt14hO1amZeJJjZ87mWJma8T8UQfksjZ/idxMx2bXKG34eY2a5NzvD7Ij9JyBV+F7LZFrwW92UIv6UxCCmNQUhpDEJK43ttmbbBzAcADiLbZWcRlVoWO1jo3K2XkITbqTZXLTZcEtG0r2uNez4fg18qq+4rJFk2G8rIYYw+4fXBzmZPMtld2e42IqIXayCFrATXBnnoIf+muAa+di1ztz1k3WEKecwhwtFugxZirgJDhJj3Jls0dbSreNJCTJfYdxxZf0KO48yz8CxuJZjR8lmtPLUQu97DZ0U4tf72qhnpCzNPrHqZpgMbITI7vhr/PJXJzgkzz6ydlUcVNDKIqB2TY3M0aFYHjR3VBnfS0/8A/JVjuNpRQXSZ2LUqcacj6/qN3k9Yq9eSnj5LaFBM1NhYDfq1mV1t/chXKJ3f4h0rPlXQ4cMXpwUVoWmUgGvXxOsUojFS9D0Ab3lsddOaNQB4B7bE38nyxlNlAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAA0CAYAAADIZmusAAAACXBIWXMAAAsSAAALEgHS3X78AAAChUlEQVRoge2a7XHbMAyG0SDXv8kG9QbxBvUI6gRVJmg3iLpBO0GaDdwNPIK8gbKB8zcHnHrQUSmN0hZlQwyb6rnj+WxRJF4LhPiBd23bwlvg0tfAzBUAlADwIQNtvwCgQsQ6pvLLE2FmueFmautG8gQABSJuhm67gD9PIjcRwhUArJn5eqhi90SYuVHutJUGprXxIGL0F3XxEyIetacfI1rEChF3aez+G+fm996F5dAfexH4bf2aIgRE/Dn2npCQf5I3I+Qyoo747AIAFsZ915YuPCiEmWWgbVwotGTLzGZBJca11hOIAPfeMgvxMUIK94a1Rtr8atXmoGvJXMe5l/UYaRCxsWosarC7Ds06nYL/LvwWbppgST00fzIVwsylmveYwcy3p0xHQsS4lllkCbCyaihGyMrNiK15QMTSqs2Y8LubYHyYM89+cyNl+P0+5YItZfgtLGe7mpTh98Yy3GpSht9byze5Zg6/uTELyY1ZSG7MQnJjFpIbZwmRPWE5y2Dm1rqoru6OtN+tMqOm8UcoMjiyu2fm3bmuNXi2l4jluU9E8y2h8Xf+l5CQk/9lRKxOvXcszLwnpHctf72R/ZTdbar7vIwRf4N6jBB/xfd4vonRaBvrXoifWXDlNhuO4g7xP/qNJRSil8xBIeDC6hB6LZ8kwcCdZ372ftp2q1jJfJBCRDURtV5Z9dd0IaKlqrsjoutD9a2K9BGws+zyaTwhZcC40jeCiBZEVLlrft0qgQCxr1H9Nn2dvXwtZt4ov+95BoD3KVxnBE8u1aQbm/rNXhzY+slRROHncu0JcVs/EhF+vIp5cTxI+NU5XAdTAV10kCckn5I9NMUZyRjkXRdO+AGA33eSYrBe+grjAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGkAAABtCAYAAACiE08sAAAACXBIWXMAAAsSAAALEgHS3X78AAAEUklEQVR4nO2dXU7bQBRGL1Xfkx1gS34nOyhdAd0B2QHZQcMKgBUAK2jYAewgPFayZPetj8kKUk16HeVnbILHE89nf0eKkAhM7Hvi8fWM5/pstVpJUyRRPBKRYWMN9pt5mmcLE4FGJCVRbMS8ishF3yPbIEsRmaZ5dt+UpImI3AW0g13BiIq+NLQzP/oeTU8MRGTUlCTika8e234XkQXlfYqRHj07+JQ0SfPs1WP7nSOJYhOvb/v7xe4OAEoCgJIAoCQAKAkASgKAkgCgJAAoCQBKAoCSAKAkAHwOsB6Fzuo+ichVFwJq4SHNs4lLAyEcSfcdFmS40Znr2oQgKQpgG3zjNHMdgqQ8gG3wzcyl/RAkma7gLYDt8MWLnnNr03rioPeWXba9HSHDFBwASgKAkgCgJAAoCQBKAoCSAKAkACgJgNZHHOT/dMVlh0cdntI8cxqfDGE+yYwQ/2p7OzwyMV/CNM/mdT8ilAHWLjNw3UeekwAIZWa26zjtYwhTFbMkir8zcSgniOxOVwRyVWAJPCcBQEkAUBIAlAQAJQFASQBQEgCUBAAlARDK0peZraZORzC3GY+LKpB1CGWAtauCRJf1jF0a4NKX08ClLwB0YunLSwDb4QuzHBN+PmnBGq7VMAUHgJIAoCQAKAkASgKAkgCgJAAoCQBKAoCSAKAkACgJAEoCgJIAoCQAKAkASgKAkgCgJAAoCQBKAoCSAKAkACgJgM3NkUkUm0c6D2tusu3/RkkUo8dn7rIaoinWkpIonorIz4bbvmttr5pjaWLjepuwK0V317SgrmAqbE3b3heekz5moKeC1qCk42h1eU7VqoouP4mlioNVh20nD6WS0jzr5ZNYkiheBbAZO7C7Cwvb2uGckgLHFDSkpECoyiAp6Qi01oRvbKvw18lbIWm5/64WVO8j75Z9PsV1ku0z1ql/IclWWLwP9RVs2NLtU8SilqRWr7JbxBaLU/Qqts9YFw+uktTX7u7ksdBTy2D/91rleSPJVu75IoniPnZ5tlicex6/s9Ue2hQgWUvS4uJ/LH/Y9edIHKCxsCUPXmKhmaOt2Mjmy7KdgtueKjw+UfoZGrZYXHvqWSa2rm67HtFHkgauj4QGpWyfG5380wPAdoS+bD86YSNJf/ls+YerJIqd6rWhoaPep4jFtOQo2vky7I84lM1CPvZNlMbi4CK/qVhoGzeWt96KrK5gR5IeTbcl7T7qvRC9QGNR1r05xUIFPZa8fdDu2Wp1OH2SRPFrRclNkwWamzN6ca5qMhZ6DpqWHEGitfEOzlFlkoaaAl5UfOZS/2a+lS4uXJ5dFyIusdBXpC9zwXpd0cZ7mmfWazGrJDl+40gzmOuyy7Jp+tKpCv0HY/+BIrzyViVIqo6kbXRsyfS752ABCJ3bNM8+TECOklSgz4Qda61rUp9nTTiOulXsU5K2ZA11KuNSfxZDR10uwl6X3yLyV5MK85p96hYxEfkHePQftmBSmysAAAAASUVORK5CYII=\"","module.exports = __webpack_public_path__ + \"static/media/Co2Kortlaegning.28368d92.svg\";","module.exports = __webpack_public_path__ + \"static/media/delete.fdffca99.svg\";","module.exports = __webpack_public_path__ + \"static/media/KlimaTiltag.22b5f2ab.svg\";","module.exports = __webpack_public_path__ + \"static/media/Raadgivning.ca83204e.svg\";","module.exports = __webpack_public_path__ + \"static/media/VINDenergi.fd5aa9db.svg\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA0CAYAAADWr1sfAAAACXBIWXMAAAsSAAALEgHS3X78AAACuUlEQVRoge2ay1EjMRCG2xR3djNwBswe+zYZLBkAEcBGsM4AOwJMBksEmIv7CM6ADHYdgbeaaighz0OPbuEa5q/yZUYz0qduSf9Inux2O/hKOi7JSkTfAGAJAD/l0h0iXpRsQ7EIC+wKAE69W0WhiwAT0RQA/jTAvukRAM4Q8Z91W8yBiaiSyJ70FN0AQG0NfWT58hbYLQD8AIBLrzhHfyXZYCYzYCLicfnUAMtRfEbEpUBvPehn6SgTmaS0wN56lzcyTl+8sm1Z8Nox2m1TjzARzVtgax+WJVC1F2mGf5KOU5UqMBFxml55l+/7JiOBnkrHuLrVhlZJ6QZD8aaoNbZjrV4g4nV2QzUi7DTSh13EGgrJAk7vO+/WlWRPtrIi3GEoLmUWznk3P3/uXebhcZGzVicDdxiKbFinjhkA/PYuZxmUJOCSS0nMEhei6DHcZyhSoLqkbVCiIqzd2zHSyqrgCMcaCm1pGZQg4FRDYQRd5RiUzpTWMhTayjEorRHWNBTacgzKvffqXoPSGGFLQ6GtWIOyB1zCUBhAzxvmmEaD8gG49LeppkKXzPcxXNpQaMsxKK72DMprhFt6B+SrxV1jlyXW3BgJzJnzSNUw0b4HbrJer3k2/htRx/eSa2+XiIhn6ofA4htErI6kR2JktsGWoDrikVNeahmYx+fiYBBsxCn9izPzWNLzWn57ikybTxUiTvrqN92IP0SZnh62uKAucerNEHFu1SbLk4c6EhbEA9xYHrccakqbAZc8EPdNjKtpQjYkqSQwu7RV043E9E/Sl5ulR+ChawQeukbgoWsEHrpG4KErxUtXRBRULqPvQuuI/qpKAb5JeOZg6ghJaa0tWev97G1AmX5gOXXwT+litejawJfPxsfMOmYhhYL/8iDbLik7ES+hpxVyisAHA7HiP6v2ZyIA/ActP3sqsq+8MwAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA0CAYAAADWr1sfAAAACXBIWXMAAAsSAAALEgHS3X78AAACiUlEQVRoge2a0XHbMAyGkcDv1QZJJqhHcCaoN4hGcDfIBvUGTTbIBnU3kDdwNnDegXMOPTjXcymZFAlYVfTf+XyWSQKfCZIQ5KvD4QCfSTNvVmZeAsBcPzaI+OJp33WGmbkGgJ8nl78j4trLh2svQ8z8GIAV/WDmJy8/XGZYgR7ONHtGxNraF1NgZq4AYB2Afdb30+tbAFgg4t7MKQG2eBFRRUQNER1OXk9He0S0CnwvfSorv7xh60DbOtBuR0Tz/wJYHCWifQzsX32WgT57C2gPWPm8yOi7HCSwhmbWLCn0LiU6LgLcsg6bPiHZsf5XgwAmosfSO23MDn8RYHEg4NSm1LHSMn4WdM4MFHcmAbp3BA0q3DpsFktQSsEW20U7bBdJUFIMJicUBtDZCUoObFRCYQCd5UtsKLmkfYnQvRKUGNgiCYUBdK/9pGvA4gmFI3TridE2kGlCYQAenROEfjGXhMIJ+p9JygqPAUKfTVD+1LS09rQBgK+B2tNHRRERN2a1pgwxs9S5Kx2hbqmV1YjYHIGbAGxIr1JENy2yJUgnSny/iej1hojVtXaKgQUd2LyUmqBlJKzoCzPfHgvxvxOMVBFtvHSbYEfCGmYangtmXnQ0/jUgyC7dt3133H9mpxdCYuaLEaQoZlM1fXqoUbNKWAYSbWvL08AMWDfDPkvhGzPfIeLOwC3Tp4fziDZtStmMkuT5QHyrIRtSytGYJU/gVdva1LXuchK4PRAfiibgsWsCHrsm4LFrAh67JuCx69MBR/31kJlL/D/x3vrmARGvzrWZQrpFKVXNkN60fhyUzvxrpo1tTKPYkJYbdKkB96lEyE3/y7mSjdqQmnefMrCMLTa6HxAAwDva8aMLRd/qZAAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAjCAYAAADWtVmPAAAACXBIWXMAAAsSAAALEgHS3X78AAAB+klEQVRYhe2ZQW7CQAxFP4g93AAqdQ9br6AnKEfgCDkCnKD0BA0naG9QusFb2FdqegPYV6Jy60GTKBOSQMkE9UmwGAzyz4ztsWns93vYMPMIwABAB34SAVgT0dr27iCEmScA5gDangpI8glgQkRLGCHMHAB48MrN/NyJmCYz92osQgjlrSXbk/hgAWBKRFE1fmWjMSwh0FfDrqw1VquVnLGhLu6IyNcgP6Cn6MNamrUSNpEqrh0tfRlku17rKKQJ4NYDP05lIELe663hh7Ucqy9rYQMgqNChIsRCIBnsW1MpfYeZYx426+B0Hv6F+EYyRiqBmTt6VXLdKsJjV6bKheh1QxJMN8MskDaDiF5cBj4crfkREdAeKdSdS8W5I9poJW/GBtnq8BTvLe5z2rW1c00tD6lCVMRTxo8OJY+fUYxhRkRTy49R3rvfdWctedJaOS9xtM6CM0bUUa+czaJssLs4daeCRGOXu1stG+wuyiSBjdV/t622Ow1nUfyLYB8UtJeHtsthN8uq7mWD3YVMAAv1MzIx1OMk3+ulmGz1yDqrulMILhzsOv4s+tBiXO013vuZlgsRYk+1+3WYa+ms2iaSSeMYwHPig7fLu5ebjpWuDTdmGr88kr995lEypYmRsRamurEw6T72j5VWdBHle9BLYZTa8tubAPgGOjKusdiC4mYAAAAASUVORK5CYII=\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAkCAYAAADLsGk3AAAACXBIWXMAAAsSAAALEgHS3X78AAAB6klEQVRYhe2ZwXHCMBBFP1nu0EF85AYdhBJIB6aC0EFIBymBVBDowOkAKgjccgy3HPhDRmQ945Et2xgmSAzvxEiWtX92V94Vrf1+j2ugnWog2QXwCmAEoOO5ti2AOYCpiKzNwMEjJAcAkgAE2BhBQxFZpkKWAPp+2VibjYhErd1uZ0LpPbNqqyHmMzGA+4x9Y5MjA8vgg6t8VkFyBuAzMxTd2Q/5LgJ/Nq7tsbY9QDLI89h4pOeBHafSM0JybgqQbxNaP5bdL4HoeM78/srliIhM/9eeZpDMCkHu1AqVmxDfyOXIpdDq264yDohIUmWWF0JImtruqWR+Y9qLsqrj4qFFMi4ToZgCMVGvFeL0iC6aOKbnZ6zJXHvYdLTpmxVNFgpREUlJjzIhea4qObvHwmohulaLEble4vLIpKLR6uiGw/r21mJpJzbJWgsLc0S/7m8l61bqZm9w5oiIxNqJBUHTZHdhQmN+gvCRFUrOU8qmabI7ITkWkcKTxcEHgAed6lfsefR3pCrZyzjWi3UvOlZl3m6a7M7Njj3J1LhHc61T8tii6r1eJLuKOSW3bmW8d+SE6D2w15DMlSrtgiMt0bLaZ+zcXV/NJXYaWrFeXofGNq35DkK0HI/02xGCIGOjsXWQthLX8dcbgF+p5qFwWg0R2wAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADcAAAArCAYAAADczxCmAAAACXBIWXMAAAsSAAALEgHS3X78AAABy0lEQVRoge2asUpDMRSG/5ZuDnUVBTv4AF0zSOsT6Bu0u4P6BLVv4Bu0Ls5Ortql/yTU3aEuguBQwUFBqBxJIYRLk94brqbmg0KTe5KTP/fATU5Smc/nyAPJBoALAIeO5m9ip5Q6z+XIgOQpAPntOkxHYlct4KvrIUyoA+jpySiKTJBLmNAqKm5VQoirr2DbqIUZNx50uNjcBuo/izMAE6teoqmzKIQSN1NK3dmVJAN1n8nE9kmybZbLDMvSSeJiJYmLlSQuVtZaXKiP+EqQlJXEEYBNR7uhUmqY10/p4kg2AQw8zVskZfVzncfXb4Sl623ZNPM6+nlzejZdTqdKqWleR0voZzzqem5tllIjKRvOEx9jkv0Qm06TrP70AriwuKqvME3by+qP8K8+BQcZeyQJm165wwpDWqHEShIXK0lcrCRxsZLExUoSFytJXKwkcbGSxMVKZTwem3c15Gx7ZmlpGJmoJ8kC6/9tfWsA+jqGfT4N47lwKelB3V/HqB9ltGsah/vyfJH6MNMdrrGObHHrxL2E5fuainuW7Nc+gCsAWw7jTx1WH7osbXc87oZ8AXgB8GrU7QHY8Big+HzUfQiSFd/2OOO4AXD8DSubZwJHIsyTAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADcAAAAsCAYAAADByiAeAAAACXBIWXMAAAsSAAALEgHS3X78AAABlUlEQVRoge2aQU4CMRSGf3ju4QAkYOIBSNywkyO48AB6A24gN9Aj6AnEG+DCnQu9wRwBE1eGP5iXlDg2mOl0KvCwXzIJbdq8fuVNaRtaq9UKsZC8BDAI6P4qIrPoQA6SGktjVrEAMIuWI3kO4KFGl2MRKaKCfcecAzgLbP7YbhBrWLN9yDdcRaiY0j1KEFB519TbUF9nMHV5c+lXRiewvy6nktN3auxXkox/oauZiMjcizcFcL0uN0nLvSfLWSXLWSXLWeWg5VL9iNeCZDdw+1Y02Y/uRM5t1foB7XQirkTkLibI1tOS5DhUzBG94T7sBUVnkmShm9yKZ+EOp0kRkZb/AHhKIgdgGpgmHQC3qeX+krpp2bEk56+W9wD8lUmX7JstjikZvlyx4QBoz8qRt19WyXJWyXJWyXJWyXJWyXJWyXJWyXJW+Vc3ziOSE6/upFxw947w7hN7G/r5DN2p/sdN8y/9eqXPg1LMMhck/VvrUbnQWi6XLwBOKwZmked2zdtfS/RUTtPi88DEPtSr0d+j9hoAX7aQkHnwJvHIAAAAAElFTkSuQmCC\"","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/NRGiScanGreen.66a07bd5.png\";","module.exports = __webpack_public_path__ + \"static/media/consumption_01.3b24a3bc.svg\";","module.exports = __webpack_public_path__ + \"static/media/contract_01.c188a52a.svg\";","module.exports = __webpack_public_path__ + \"static/media/creditcard_01.85f5080f.svg\";","module.exports = __webpack_public_path__ + \"static/media/question_mark.c87a47c7.svg\";","module.exports = __webpack_public_path__ + \"static/media/credit_card.09529f38.svg\";","module.exports = __webpack_public_path__ + \"static/media/date_icon.b1354781.svg\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFEAAAB5CAYAAABBcM1tAAAACXBIWXMAAAsSAAALEgHS3X78AAAEqklEQVR4nO2d3VEbMRDHlwzvkAogFcQz7DtOBXEHIRVAB3E6cAfYHdAB8L4zwRUkriBQARk5Osb4U1r9pfva3wsP+ND6h+6kk1bS0evrKyFg5lMiGhLRwP+5BxF5gPzxhseXLNEHNyai6y2/fiGiiYiMkwpJoER8SRJ9gO6/+fnAR2cicqUuSElEfI8iMtSW8yExzruAAB3fmHmSWJaG0PguU+JT10Rmdv+5+8jLPonIH1WBkZSML6Um3iiuGSWUF4vm8aF65KRIPFdco37uKNDENwj4zAYpEkOeNeucJpRXAlV8qQ1L7zGJIEwiAJMIwCQCMIkATCIAkwjAJAIwiQBMIgCTCMAkAjCJAEwiAJMIwCQCMIkATCKA4ClTZh75iZxqsulSUbzLOHgq9N1crCeR11TxPfufdyJyMN69Epn53KdgjBQBdYWFTzXZObm/UyIz33iBfZW3jpN5tS0JaqtEZp661I8aAm0D30VkuhrnRsNiAg9yy8zvMiXeSfRJPSbwMLe+oV3ydjsrE4D6jGvJz0XkebUm1paI2VJcg7tssZc10WphEh+rmlg8i7VDjI79d4lNeVv429/16J+74MO/WFz5vMuYvvHo6OLiwqWT/Y24aOYK6oq8dSLyvCsWTmLM83AuIqpEyDbhRbp35rOQsGNHcUqmC9eGv8uCeysxEuelktabgH+1ewkJJUbiXWuN6AkatrNBWQAmEYBJBGASAZhEACYRgEkEYBIBmEQAJhGASQRgEgGYRAAmEYBJBGASAZhEACYRgEkEYBIBmEQAJhGASQRgEgGYRAAmEYBJBBAjsfMpdVsI2gowRuJXn7fXC3zmbFCiZ+zt3KcVBtOAzyyJlXi9vpqoi/hVZcGraDUNy8ayrC6hWZanbZ07KVK7rrFaDKTd9n1jxWVbSVgYOq9q4kz53TtRIxMXhk4qiePQJO8ttFqkj33b4Q4huMUA06VEvypg2DeRPuZb5eXzaiXaW8PiN4zojUiEwGpV2bvWuS8ikQJpWxen6yLRAmlXP7GrInMIpH2d7a6JzCWQDr2xdEVkToEU8trXdpG5BVLou3NbRZYQSLFnVDHzwK9K1259VexdO1Gg255hELq7QNQoTltqZKJA991GMdszRA+FNV0kQOAwZLu/VVTjiU0VWYdASpkybZrIugQS6CzT1MbmS+rBrHUKJIREShf5tnGZsmw3tflbcy1CIKEyIBJv7ZPEbba007gQgYRMI0kUmXKypOZamEBC5+IkiEzJrAjaRWkFqEDKkdAEaLVzAhdIubLCGioyi0DKmVq3IrIJZBNIufMTcwWt4ClnLJbkCcAkAmiKRM2p4NSUpNOmSDxTDkZozt2H06TbeeLfwYPw21r/qDfk/zRJonuHfggR6besb8ymmMcBnymJE/mLmV2q366tV4fKA3Wy0TSJFa06RMK6OABMIoASEh8LlFErfamJSXM4hyghsQldkawDIX2QuBCRrDFkl+iT6n/mLmcP2dcjQqZMQ2Dmp4jjOVDMRCR77k/JhmXo09VKUUQglayJFcw8Vpy+E4ObChjvOzYTTXGJDj8O6GqJq52oMUH37HVdmbJHPhHRP++1+77C6F2bAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAF0AAABoCAYAAACTxvzdAAAACXBIWXMAAAsSAAALEgHS3X78AAASM0lEQVR4nO1dS27kyBHNtqq0VfkE4sAHaM4Jhj7B1ADeD/sETe/s1bBPMNWA983ZeM3eejPUCczeGPBqqgHvh9pKAmik5kXpVTCSn/qoSoNOgFCJn2QyGPnikxHBV23bunNus/nlwg/v4f6uOeuBTmh/eAFjXDrnaiH+76G9BKLnzrlr51x6BmM5SDtros/mlxEI7sDxv4t2NkT38DGbXy5n80sPJbH7DcfXzrnPOKU87QgP104uSMHNHjoy59wVHXrzcH9XzOaXHl7ih/u7L5x+4KYJ/t4Teja/LJxzfovkwGx++eI5fnbqAXgIAbcn2GrP4e43AqeAlQUgx2sw1b73xMvMTqaGeng55+1iNk8vZvP2YjbPL2bz1cVsHmN/dDGbV1PH7q9Hf73XXszmC7nXobeTc/pQA65H0F6ah/s7EbSVgqSxTfT9b7y8eLi/y/V1sAkqnBvtcI/e9hL0dN9WzrnXwPmICP5pz34T+aGMrxz3u57NLxP70t3biyA6sNcTuFZCdwvfRxJorXdg5vD+JvD7MO1c8BzY3QBv/ZYax1s6x/9N6LjH+zbQd8T4fDGbl+hjCexe4/+E8NzvK4/xrEfndM9FO6p5HxTnljCUPOe981j7cH9X4R4eDt729OXlQaUg5KuH+7sSNsK1Ol9wvIP3B2l7cGU04rxIOHNkvxG4sALnrsF1fqvlf+MamR3rQL+VzB7PzV4TMo61OCYz7iiaS7uH9uK5Y+WF2oCumwv+Em7GwqG6wezfWJ6z+WUF46gB9yXG/Vi76OC1OifD3xD2p7h/4p5mUIR+C4xv77aPyngFQRbzTgx0DQOHCbKAFhL1PPRW89N/Nr/0hPrWOfedVxcHLgnBmMDHa7gXGnXNN/i9xEtegdCrEfec3naEl5ymZKaOlZieEQmsFhAhvwehifpbsyHD0ED7aoEWLTSV4Kx77iHCOdcQdi6ClKeZ9wwm4EgHTr4CtGQQfu/VjJjivLoW1RBugQYeSRaKCTjU4b6VeCrRZAZkTjX0eY0xerjMj+4e2PVtMbeLQMLfLaEGzivU7OhwK/W7Yk5TXCz3SMCVBfrfCEdRHWW2UR9LdR8/8zJLPT32trPKCPP5O2+0AMdr/JV27Z6Eo5tgTr9FX8KpBSzDEsaRw0zzs+l759wvSkYIl/rjCQlj32fqnV3eZ++c+9U596PncHGwhdrBrdJ93yo4pgAusnFT0jmRws2IuDJS/bWMv+i/YeMF+ws6tyVOT9Q41nRv+X8lhhH1lxjPFmuZckpM3zSPfw/3dykkvpjnt2xYgNs9x914PCfuX2Gz2mv35AIQTGYcz4DDN5AbFZ3DKuk1GVQfRW3F9jj7II9+5jGAuytcf1gNZiJXZzAmMksDIS5bBYyYjvYgXKe4q2Yth9yxRWBcBc025mhznDTWXBlH4jZeqNlyUENpFyjhB6sNH0mE/bWhuvmHzEmtrIRYxr1E5SzYsjVe5lIRqLKgoueZVnRtQuPstXKfjejEdY3C01Lh44IwN1f71+qhTAeX4sia7plSX6Xqo1YOsZK4eYnfmkm0G2BJcuAoOvtOFwUIX9ODlcaMEC5K8KCpuj7IUeolFuSL6aigTESjn7VxPnP66th+F7/tHA0AlS6DMJKFhVo2LwBhwPzFOfc359yf4BOvoBa+gzAT4RjR9Q33456iBn6BkK5hut9CMFc0rhJuAy+EX6kxV2Ty/5HGWENgflKC/jjtWG8THN8Q/CyNGTC0NQwHxuxa9dy7MtRR5mr2rxeYOZmM9ZicfiyCa+gIPgRZhStAT4J9/HIExyvVbzZyPBH9jhnK6P6i8ZhCmGCx3Xdx4xgEjxRhTMOC3AOVUtVyMvFFUDZ0jPse1FJAVO0CYHdCa8w+S+Vtptz36EQH9yRK9w3p8hFNZ4aORD28CF7ZVyh4aNFX1KO/b5bdSIOJSBiLdRoZ0FWoMWtLOd4VhiYR1tinibBxj9JDC1wUpJcnqp+cdHJNdIaqLY5st+HBcvnq8cW4R6pXokDYHP3p8cWkcfFK1qgVsX2IXrJnj/ZrHwjryCvL4lMcVAo2KzWQBZ0pfBVEtMbM2cJ/4tg1q4YgqimU6dn5mTPNHMci+jJkzOABmZN5gDxtNbauyNSP6IWFIgEsonfWSIkzxe2bgovl5VVqjGtrfETgXO3LQ8+0E9FpoMxpQhjN1b1GhHpRssjcZ3nmoT4NzG1pXHxMZtcCxGarteMiUDOiMo41ILz029D6wE5GlPVwWoVagHgZmd6NHiQGoR9IHGQ19dMqB1dEuJ+EzO6A/FhSH2wDsMrZgUSDyTZCkhSBhl5UgT4nE1ms6TGc3vGLiwBS56Uk/fvUQ0+QazaWaEC1ImQHXowpHdIw1qqfXPvMcc5SPQv3XVL4R0ovuwYNJhGe0GFzv9CJHG21xoVLkeBGp0FhSf39w5rGILw2ehpDT7aI3iqjJahnh6BERQVrp501rrjPZdwzizYG1di3tVR4XqjBMbeGMPu/dI6l3qWWnj6C6AyFuWH6R6QWLtQ1UWg87ZNALgiitEAv1IvKNZQQ8260o6n4FBHxazLPYxpICJP9gP8zZLqT5ZnSPbOQBqOFKo1H1EFNmEK9qM6sMhhuZdgRLROTtS81syrtNphC8NTAX/E7Z+SHDmIeaQBDWo8IbIG5taF3m9jebvtoOpxnME9HP6eZ3bGstRGlXi7PoFUI5qzplJPzX9SuirSXzcPSy2jIS2c6jUjwakOns8KkCLdR9XqI3gdFje6bGKAltVNmWK1hSs+WQH9M9H8FlIFHQdx3YRvwj7SaQ9QiwwbDQGS9dinLdPmF4UmkPvlYPpHoW4ZcgAFa0ueF2BU9d66euR6AIenzfwPaVxaa1jJgbUEmFoHUcWsJTV6ATMWc9rPfnV/wlrAyvJdBohPhK70ipQR/SQJ4YbzYQs3uIfz/58Vs/ndjP8u8PHRxHJjyi4Gbaver5kB5qdqsZs5MiTAR33MK0el+rJ4mymjqrIEaRlitZFkoHjLr8XaWg0SfuhGx9coQBwdFfSv1SjspSCsoyDIOEd30f5DPJVK++SENSjQWIfjW7A3M8CD8aF/8rkTOqKOCjSbCxeZi221aDhkUivClgpQ84H9pe/TstZJTptCWMQ6MLSKthoXsgmaNNhRr5VJ4vHYXgmtsDXngJnnfyP/CU7lRL0FbiEGiqxc4hrvbMct/7GOiGJ+WNLxBV+8uSQEcJHpj5GFWyPfcCtBHmJrfSuSCJpQl7RDu9j1+f0SkAOcC5T0heDoxwYf5faBdknUdyiGSiIQfZ/NLP47FQFBphKxrHu8CIeA+dFzTo96ix0RuXAxN6QGc3OJOhfmpOqY1KR0IypsWljw7RN1M1CxaqoXwQcHcdgWtaGX8HFsCV7yo3McYQhUX2wsN2kIT1Yy3kEo5xrdSKV++TnU0t/ZJ69rg5wDB2L3M4YJ9660lMUBL42U3Q3DRZizRTWPIGIx2D4jQsGIZJ88UFVQa2pjgIbUuJrmgXQfixrAW0yVessHvWI2Bl/6yIZqFHjJCxzp6NZixoDSatVptWdEsYEku0zsdsYgRerla6HbSHgPE125cK+CVVU29xKchiePuxU9lri/0YXdJalBIU9FEGKsWDkV5bQL3jWt7YWbqQjFpIKl6flZR+9J1xJIdnbz26lFv/C09JNPpe9AwUmgYkgyVU3yhBOC/pss+PdzfaW1CJLsUQXMI5K9VwH2Me3F1i1toHyViHLeC91V7Z1W1wBiW0H5kzAXu5fenPh4S8ZkptiskHJSBpIB614SwV49mqXM/4P8/hxJrqfxHSjmWkvq9IvXpsR/KeFhiuyIC9uZnQrWTTLix5UVuH+7vOmUEMb5CgkontBucWuNFfY8A01xe3M6BphOy3jiUQWClNrDa2sQ3PhjrTXk+Ipj0in7fpv0oLIAbWsjWS3xrVi8DY9pSBffZtHGkDYgEIczXgIM1pvhrcALPCj1DGsyKMjTldcP0LhGu/DgTYKQU4Nihwgsx5ZxyIZ7Pqk8/QzU0NKFUdBhzt+jrtYfdECKMek5PEMRtxyqRak158YJ5EocuDxHENFiF630Irh68Qex5H9ETStzlQjxWTQH+X2RJAYu0BHzwOSlg6grQt3stsYA0zgMSfWs1Z0BDqcbASfukv3fiyQOaRh+8FEqV6/P8bVIxjXuk7OlU1wRduGM3rfZweHKpblgaTn7LkEgnqFopyYPeBQLC4jHY3kvwU2+SR7oElOQ0bb4FnIjqWAPHbmiicL3ECNM/IsfUD1QzwNG5CZ0j5UmuDlja9WMAUs6iPQpS9qgJodG40AET6Wdct8E1rtUCnVhaR43DdVxkQdpQKvuYdPGgrn4uzcqYFun9WV6GJ5JwDQj2EZvZ4Mb8CcfigWdlbaE3R39MO3eCu0CRHeHeDixQS4eI6VPXSdvpO6+C//n9CGNj6AU6VFs6bnbcnq1DdOikX/UNHFw/RmXqVSupvRmqRIE2pnB91FNW6iza2X+egRsMmiG3QNCVcS7tpVQglTbGDzMIQaduL4boqjxUXzv7b2e8JE4fS8wvRD9gG8vpX+DlgO3LJ3dO0L5w+gnaWE7fpZD9s7YXo6fP5pdTBvr1ULlWXfbvOXX7kxEdK0HRmFq2VGBnbJNF7xIrVw1UTllofx3o5wbXSSjcUSzbZyc6vIorBQMfmUCBaz7o/SPbLVaJJApBRxdIk5KBMVU/+ozzioMWOn5Oh75a1WmM1BhZxOaQtykLF0Pb4OqUsUDO9QQOUtvr2Tgd0/vfgcO3hgAUjuTwDTdSUN7C6VWTuzijMIwbmllBCMG6QEFe1QxxP6Ho4VHtIESHUNIL29wixI14YqTqczYSLv1N4FqHxeUCtXFvVaVT//tr9CeBSD9ZH4+CHCkx1jWw3TxXPVsuhesBjfU+H6fap1qdBBnFhI86Wiuil+Ef8K99XIIHjFRlfyGqrO6/Q3DULY5/wEvRpVs/SxSDuocsS4o+v+75CgFfl8JVvUSYSmr1P6rtgc9mMljgvGZqsTEK8ClVwJCENUtuv5YJuthmXwWMkoKoBheyOdCIIoCD/Ye2YwtOibAajKQ1rrVSwiVCq6J0k1AoRtQX/Npuh5tw2ElvxrexLyXijxK0xyB0pELhaiNvP6HNSp20CplxDI4O47NqwXDOPtczsAovS7aGcK+ZezRQcqrzWYijEx3B8lbtFi5cM0als2LQ++rjSlafEJ7ruOts7yYEIyPjLJOxtSD7tr21F4qK1SHOvr0hgcolYdfuSY1c4NoF1TVn7USXdWVD6Q19RnNBEbY5xdNshDeF2zWkaVUURjdogUKN3M9a3ZO7Y4rO2jI+LA4dCU1cFVonITCGd8L6VA5rGhiXjLmg/zNKmZTU+XxqMtvYbR+C6+pHnGEW6xjBEf1xIlWmH1oVfDA/mUClCQVGYgVFBWG3WbbqObZdCc74aVV8SKaoiCqfSDSU0sDrmgJZdXCnpMbEVM+rpphJS96IEF6OVH8XxBDZrrGSo5N3Z/PLFeHzGl/YCn1Bq7asUzKoloTbH9Hno3VIfcYwRFKER29CnhGc1Kh+c1xfu6eS3m9hOeYIg44o5l7kyVsJv0a/n8iFwAZfCqv6PWSA76NEaDXjeznoHJvAiVKfZRDnQunauuSryl7baBVUozGyNA6pF0P/5zrql6uNjoTJjO5b0UzWObIVwZg1ywe5fwhCKlLj9vpUgYRjB2Blqzo/FS7efJJNXddcbNf4agMvuWLIGiD8Wo0h0+NS18TkJZ1UB2EnAo4kckQGENe8EkGWkk5tGUji0u3oxUxk0TwGuHhQvpD1nKl9JVmcln7PJclHEf9QXsZU4eQCeMiYuCCZcE2falhZOi9ScvzKUid8Gkt3XyPucoU0m44jDQ60JTC7Nz7TPcmGDPdN1bGYPIx+eS9Tx/nj471xmYd07R5snRH9/WwJaxDmV/neBV5Obt1bPtMpzKAJebJ2LHjZE5qqnhKyifq8Qui82CgvG/SdPOd2diEYSJeRzGWrLUaGQot6KqHdCeq0nJzbz4rowM0foVuHCBuPjI1fc7oMvrG3xJcbTxqQdDZEBwdWIxIE9Df+Tc7teWlZT4WkZ2n7fGP6II3WICPtUQy0rUyLqd4+WLR75zbt1U4oLCU/3/Tf9FzXjl2lOdc80ucMwViQ7zylXPyQ/ybUT8I+86nXn0N7TniRsDapNbDTIgDVZZHwt5fVnHP/B2qMjrkyq31FAAAAAElFTkSuQmCC\"","module.exports = __webpack_public_path__ + \"static/media/KLIMAskov.e7a9e361.svg\";","module.exports = __webpack_public_path__ + \"static/media/scan_windows.18d00797.jpg\";","module.exports = __webpack_public_path__ + \"static/media/profile.b9b95513.svg\";","module.exports = __webpack_public_path__ + \"static/media/firm_icon.474da93f.svg\";","module.exports = __webpack_public_path__ + \"static/media/people.f68e5632.svg\";","module.exports = __webpack_public_path__ + \"static/media/person_add.c6f45121.svg\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAC8AAAAvCAYAAABzJ5OsAAAACXBIWXMAAAsSAAALEgHS3X78AAABlElEQVRoge2ZwVHDMBBFPx7foQPoAF/3lg5ICaEDOsAdQAdAB6aD3PZKOqCEUIEZMQsDQZK9sYVWjN+ML4llPXl2ZWl10vc9mHkFwF25eAXQEdFe03/NzC2A24zin9wAaDQNKmlkgUuJAJX8qRF5NVVhvj+oA7/vXAIl7NfF9tXUh4TkV9rM18LM3dQBeMMmtbjwMvUBRcf8v0xYEzDzGYCt+wYc+Ly5vLT+5huPOOTb1JUcNudLwuZikc/FIp+LRf5IVFs+H9HlATOv5+jEQ9L1vBPfAHiY2kFKvGFTgjgiMW9eHMZmmx0RbTUNxq7nn+fYtkVw285HbaMx8k9EtJnTdC6GwsasOAbkLYhfxP4MyWcXl7plG7vHF/O/xJm5kY2wqbrm4ZsPvfF7iwXZSuqSsJ6cPmo5EVkTkXqezU0tdcnixKFYHqT8uh7NWPn2W26Y4eM0cCzaM6MJuKn5bqi5Sv4vGbOnMLsBl9nvOnaP6erB0ADMlz5iAyiibhMaQDFFJ98AzM42IWQWcte+OPkvALwDAopo+RVCSjMAAAAASUVORK5CYII=\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACkAAAAzCAYAAAAKLSELAAAACXBIWXMAAAsSAAALEgHS3X78AAACwUlEQVRogd1ZMXLbQAxce1xmxv6BlSqllRKV5Spl9IPIL4h+kKRLyR9I+gFTprJSoZV+oHQp5T4zykAGNSeadySOPMrxljoeZoVb4ADc2W63Qx2YeQrgK4DL2o/tuCeieWhXkCQzXwFYArhJQM5FkOh5zeY+CApmzDzxLXo9qZtmzk+PAHIAm5aEBgA+edYqPRoiKV68dX56T0SrlgTF7gjAQ+CTZ0QvSgZEgxIkQwBvnKVfXRD04CeAD86SHD1cogeSzDxUDaaI4BC+A/hTksAR0XMcR7FL8G9fLIlI9L8o/XwIpsKTWYngo/67dz1wnKhOJSDXpWwiRLcFybGz8Fs1mfdE0hfpBYZFnnS9OCeibUJSVtuDumTeOTRL/DDY3Vw0+CgF0XFonZmPkncUSWYeq25jkFtzrplkxXVpxVSi2UI0RpNZxB4Xl1r2NUYMyZHm0VhILvRWPFUwH7ce01ULkmacInBWRJRbNpwicMRGbcvgIkaT0yhmLWzEBs46Yl+BtdpojJjA2bbQYxR6v7tjEBM4bdvc/XFbKq0YT7Ztc2/URmOc4lo024gJnLmU9C86meOJaK7tRS+IvRazlp40JfOY6J43aJ5CuJUMoW1sI7zOPCke6CBw0h43noh2UWQ0xn9x3K9Tk1botK6u3diGusekJC1VfKhaT3bczDwwthkz3fMMyUgSkYzy7g1bxJObKqJNj3so2rKOR7QYadICu5os30SrEMncGezL1GGpV2KSsaC2yaPSY4IMIZZekkSUqfCLAleIfk5BMIBMKvg6TU508nsKLIhoPzMKklSdSJ771iNZGbDeuVXS/rGpNLQ0N0qxYGbR/cdiPxGdVdkqNLlwakTR4EqDJCXKQeIdOLhPJG4hew3gS2pPluCtrPaaVO1ZEm/XkETubXMPgaP35tuKl6mUKIIk/lH+RQDAP8teCeOXymWqAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAzCAYAAADl70o1AAAACXBIWXMAAAsSAAALEgHS3X78AAAC9UlEQVRoge1ZO44TQRB96yLfJUfCN2AyyNYBARnmBHglcpaIhMA3wAdAsvcEmIwM7wmwD4AwGaEtgUQwJaOC8jJuT/dMTU/PJjypJY/d3Xquf9Wc7HY7hMDMfQBjAP3gRhvuAfgO4B0RzUIngwSZ+RLA2xaJleEiRLIXIDfugJxgyswj34+lElS1fnW+3gJYRpI5A/DA81u5JIWgu/I8H+d5viusWdk+68rzfODc666Re+eBikVyKu7HRckRkVcFkfjiHD9S9w1BZp6oWqcAHhb2xKo1BHHCVYhkT8mJ7l8WNt1JSKqIHwAGIZI9Zh4CeO5s2HREMNP1xqPuoUjKta9XAIT0eQcEq8JY1lMR73FNRJOEhKyaeSQETwtfLFomdAAiEof7Zjiy7MoZbkBEEsoGgS2fCp9/dU4Qf0l6NcXMB88mgsx8pmbgS1dVkHAyIKLatugtFjyYR5CDnp1bDlgJXmrR0BRbvaM2TCoWL1QDHzYkOFdPTkNQsUkdjoqwOkmm5E5rbPfdEaygXTRxksbkFFMtiJMQHEY6CbRyXtfd3MRJsogOb5PcSfTf15ZALMwEtZBs2gIsiShdHFRyUzOtfziXdGnpcaxOEqpC6iLTnF4LVicZMfNGy/QmkLMjS7HQxElMNhSLJk6SReTijbWluI1Ul6V0kkkLqW6YOtW5TbYFW62ok6W6GA9uBKsEO8d/grFIRlDSGTNLebarWBsNX6VIQtDYP0vYWvhCTxKC6u2WwnTtGyz5wkxx875EMk2mtLBY6uC8ChO5v2xm4yMozdHTwvNCX0tYx2d1pZipit08vQgRFEL39Vls6b2RXCxkVrkotUFVZxsdXFNs922F10m0+xKbuO6Y3JV0jft8fZLn+bqgyhURHcUktY82XyYKngB4rZ9/AngB4KPrjEJw5kz5P5QYa9vol5Rud8sihRAUiX1OTKgKV74itqe2dnGL5FahmeEfJ9Fp0zPjBL4NiEMER8JHr2MrJvBtQqYM4cAP4DeljrxqLy4mkwAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAvCAYAAAClgknJAAAACXBIWXMAAAsSAAALEgHS3X78AAABpElEQVRoge2Z21HDMBBFb7z5xx3EHZASoAKgA1IBKSUdEDoIHUAHKcElwL93zOyMzEBGkiU/V+Dz61i6d7IPebWq6xoCMxcACsxDSURll51XVVVtAZwAbGYS3/BCRI+xL4kBEX83mqw4HojoFPNGBiBXILxhG/tCNpqUiVh7tnkfUUIxVM65DOyI6DjEBjaYWcL2DcB137WsITSmeLP+h6l8vUk+B/50EquAmaW5XTY4CcG9dG/VBphZ+sKz47E8K7SHkK/JbsRg6jmQL1VobhYDc7MYmJvFQBdMh90PsZbzKGE2kTP71Zhm+mL9B1IRD08IJSEeHgNziY/+Sgs9Tn8COMfrieJARNF7hBgQ8TddFp+CtjKqWjxaDKgXD48BLeJbh722HLCKZ+ZDl9llD4Kmd5cGXOKl7T9NKD6YnyHkCxtNE+xfZOZQ9ZpCwtpYG9H3+qSF8W++B44mR9QRdBaSGaQ5YkdfwnUkD61639es2jBDXddctOFWbQ6YS5Zd2+9UJ3GICfVVqM1EEmXUZyKZPuAykVQjs5go1ZZRH6YngYjOXyd7bmKxRWFmAAAAAElFTkSuQmCC\"","module.exports = __webpack_public_path__ + \"static/media/marketing_material_grey.359ad344.svg\";","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADoAAAA4CAYAAACsc+sjAAAACXBIWXMAAAsSAAALEgHS3X78AAAFfklEQVRogeVazY4jNRAu8AW4TN84oQ13pG2egPAEG8QRJBqJIxIBceBG9sRxmycg8wSbfQIyT0DmjrQdxAFOJBK7SOBSkLPlUU112W33JN2LKMmHdlfbXa6/r2y/cjgc4P9Ar44pIyJOEXGJiBtEPCDijp7LU881mkYRsQaALyIsnxpjlqeabxRBEXEOAI8SWD8wxqxOMedYgu4A4IJ1bQFgAwAPBOvWGDM5xZyD+6jzSyHkHgCmxpiZ0yA9e7pH/KGxavLvbq07jQ7ZrLULa+2BtTmf31pbivcr7f/EOLsuGcaIuhvx/DN/MMa491es6wEi3jJfev42Z9IxBP1bPH+u8MhoW3W8rztnHcF0pWn+Za0tFL4d42lYfyW+36TMO4ZGZ+L5NaUPhNZcUPI8UnvzlEkHFZR8S/sxrU8K5M2X+/ilMWYdmKvkCGuwPIqIBQC4n7ofYHmXAhH/xvG/x7reJu3PaKzaGLMT31S0KP676yP/QH5ZOF8SvvWbeF4q30l/XATGn1hra+HXN6nHzT9U8JFCHqi/kT+UGpTY2CtlbN7qo9WeWcgqsMoVvZ9r/WKMOsQjFko2twBTz3suASeBld7xycmko6mCxuI8a+qfKeM3hJgmcpxzCLkIaNGZb6nwLwXfVOGRizahtiDh1po1nEVQMtOQKdWa/9F304SgJLVX5/7fKQT8zlr7LCCgE3yWMIYMVlpQuhW4cv+zF2BwiR8RF4jYAMA3APCGwvYQAMrEwjkEDjhxpHRB+TKZsgADwbBKKZA5XQLAwhjTZIzrwETD6tRWwU2o6inrujLGTOldGYCRcAMqEsyKO30sX7n29R1coG9QKgPBjwfBImi6foeOVtHVfvcUtr14/jhVi9rKi+cu83W0IL4LhdfT5NgCUbBLe2uW9KUmWikkQ6vZQYlysfwH/r5sRV0FW8qPapmMU9JDhqBy/rnC04mmouklIuSmazDFAtScmSBoEcO2h0Q0FRSUnFo69CrVDFM0cYeg1MrDfdzFfyiBc5b5pWgiYyyJbVu7gH3cRTO9JgLXZhSIGtJiwd51pocMYdcyjXS4i1ri8ebTC08dK6Vq9yjoMVXujv8Hh3wy0wMf06GrGY3t2to3ZadQG4vPdxEBDC+IVoev3kKsnNy1iwWKYHogk5yT78cSvNZ+CbgL540CfQ0wyLMObePqKrCCUqtf0bFBQ8DjEcHHWILX6C1E/Ij3k9Vds67oUeMR69KPePO9hTMJY/oNpxVhRxXHKpg1h9xPu58vAhtofzqBvVsR7n7M3t9gX5UCUbeztFJMqaSAlGKWa8LP00jgc8HuHwW0zJQo32m6ySE9ImAV2PyS7dfcBbTWfpbhx63I3BI0NaSLwBLaXuTtOddiz1QTwrFZMJAHI1kZLJVTrIrC/1M6ltd88Q8A+JL87HXWv1N4O8kYU1ERr9E+9QrArcJbOYneUyQtEsohT1uKgHJX/k53EmjRZ/QvQONvZM4PkRQ09W4BF8r9/DsA8CHr/x0A3uR8pzqi70utrRQqtj/pGO+JE9DvB9FWxk8R/ta5yuAUiaSx4lvDnlrk3aXWi+du0c0x8osJ+QVPzpcUJDhvRfjX05YuYSRvkp2TkncBBXpyQWqigP9dbCdvTMrZ102pFkKn1KNTjkYLypGero0xpeCRe69P6P7Q6JSsUTLTS9Z1X15OJH+MXp0Zi3KPJGTC10o4yfNSaDT7DkOPoBQvnwaiPodMKUGJ3xQ5+d3bPtRHozIobenUzBfEEiXtjTFFe6RhKVujSlByZtywVCJ9VL0HNDT1umdEV0t/TGR/P3TpaUjqdRBMP/59AmvwZtd/QlB4Iew8UhA7eijx8Jh05ytySkHsyjFXEL8UYP5IAPAvyNl7i1g1aTIAAAAASUVORK5CYII=\"","import {createSlice} from '@reduxjs/toolkit';\r\nimport {AuthState} from './types';\r\n\r\nexport const initialState: AuthState = {\r\n token: '',\r\n logout: false,\r\n triggerSignOut: false,\r\n isInitialized: false\r\n};\r\n\r\nexport const authSlice = createSlice({\r\n name: 'auth',\r\n initialState,\r\n reducers: {\r\n setNewToken: (state, action) => {\r\n const token = action.payload ? action.payload : '';\r\n\r\n window.localStorage.setItem('token', token);\r\n state.token = token;\r\n },\r\n logOutAuth: (state) => {\r\n console.log(\"logout\")\r\n localStorage.removeItem('token');\r\n state.logout = true;\r\n state.token = '';\r\n },\r\n setTriggerSignOut: (state, action) => {\r\n state.triggerSignOut = action.payload;\r\n },\r\n setIsInitialized: (state, action) => {\r\n state.isInitialized = action.payload;\r\n }\r\n },\r\n});\r\n\r\nexport const {setNewToken, logOutAuth, setTriggerSignOut, setIsInitialized} = authSlice.actions;\r\n\r\nexport default authSlice.reducer;\r\n","import {ApplicationInsights} from '@microsoft/applicationinsights-web';\r\nimport {ReactPlugin} from '@microsoft/applicationinsights-react-js';\r\n\r\ntype PropertyCollection = { [name: string]: string };\r\n\r\n// Research Error boundaries when it is supported by React hooks. For more information - https://reactjs.org/docs/error-boundaries.html\r\nclass TelemetryService {\r\n public readonly reactPlugin = new ReactPlugin();\r\n /**\r\n * Application insights. Exposes useful tracking utilities like\r\n * ```\r\n * trackPageView(),\r\n * trackPageViewPerformance(...),\r\n * trackEvent(), // Shows in \"Usage\" -> Events on Azure.\r\n * trackException()\r\n * ```\r\n */\r\n public appInsights?: ApplicationInsights;\r\n\r\n public initialize(insightsKey: string, appHistory: any) {\r\n if (this.appInsights) {\r\n console.warn('You cannot initialize the telemetry service if it already exists!');\r\n return;\r\n }\r\n\r\n this.appInsights = new ApplicationInsights({\r\n config: {\r\n instrumentationKey: insightsKey,\r\n extensions: [this.reactPlugin],\r\n extensionConfig: {\r\n [this.reactPlugin.identifier]: {history: appHistory},\r\n },\r\n },\r\n });\r\n\r\n try {\r\n this.appInsights.loadAppInsights();\r\n } catch (error) {\r\n console.warn(\"Unable to load insights key. Are you sure it's valid?\");\r\n }\r\n }\r\n\r\n public stopTelemetry() {\r\n this.appInsights = undefined;\r\n }\r\n\r\n public logException(exception: Error) {\r\n console.error(exception);\r\n this.appInsights && this.appInsights.trackException({exception: exception});\r\n }\r\n\r\n public logTrace(message: string, properties?: PropertyCollection) {\r\n console.warn(message);\r\n this.appInsights && this.appInsights.trackTrace({message}, properties);\r\n }\r\n}\r\n\r\nexport const Monitor = new TelemetryService();\r\n","// Local Storage keys\r\nexport const AccessTokenKey = 'accessToken';\r\n\r\n// Dates\r\nexport const DateFormat = 'DD.MM.YY';\r\nexport const DateFormatFull = 'DD.MM.YYYY';\r\nexport const DateFormatWithHours = 'DD/MM/YY HH:mm';\r\nexport const TimestampFormat = 'HH:mm';\r\n\r\n// Auth\r\nexport const AuthGetAdminRoleArray = 'https://jm-iot-api/roles';\r\nexport const RedirectUriStorageKey = 'url';\r\n\r\nexport const AuthRoles = {\r\n User: 'User',\r\n Admin: 'Admin',\r\n GlobalAdmin: 'GlobalAdmin',\r\n};\r\n\r\n// App Config\r\nexport const ApiBaseUrl = process.env.REACT_APP_API_BASE_URL;\r\nexport const BrandName = process.env.REACT_APP_CUSTOMER_BRAND;\r\nexport const InsightsKey = process.env.REACT_APP_INSIGHTS_KEY;\r\n\r\n// Google maps\r\nexport const GoogleMapsApiKey = process.env.REACT_APP_GOOGLE_MAPS_API_KEY;\r\nexport const StaticMapsApiUrl = process.env.REACT_APP_GOOGLE_MAPS_STATIC_MAP_API_URL;\r\n\r\n// Google analytics\r\nexport const GoogleAnalyticsKey = process.env.REACT_APP_GOOGLE_ANALYTICS_KEY\r\n ? process.env.REACT_APP_GOOGLE_ANALYTICS_KEY\r\n : '';\r\n\r\n// Local Storage\r\nexport const OrgIdKey = 'organizationId';\r\n\r\n// HubSpot\r\n\r\nexport const hubspotVideoURL = 'https://play.hubspotvideo.com/v/2426033/id/'","import {B2COptions} from './auth-types';\r\nexport const CLIENT_ID = process.env.REACT_APP_CLIENT_ID;\r\nexport const CALLBACK_URL = `${process.env.REACT_APP_BASE_URL}`;\r\nexport const AUTHORITY = process.env.REACT_APP_AUTHORITY;\r\nexport const TOKEN_ID = process.env.REACT_APP_TOKEN_ID as string;\r\nexport const AUTH_SCOPE = `api://${process.env.REACT_APP_API_CLIENT_ID}/${process.env.REACT_APP_AAD_API_PERMISSION}`;\r\nexport const TOKEN_ROLE_IDENTIFIER = process.env.REACT_APP_B2C_TOKEN_ROLE_IDENTIFIER as string;\r\nexport const TOKEN_STORAGE_KEY = 'token';\r\nexport const B2CConfig: B2COptions = {\r\n ClientId: process.env.REACT_APP_B2C_CLIENT_ID as string,\r\n RedirectUri: process.env.REACT_APP_B2C_REDIRECT_URI as string,\r\n Tenant: process.env.REACT_APP_B2C_TENANT as string,\r\n TenantUrl: process.env.REACT_APP_B2C_TENANT_URL as string,\r\n SignInPolicy: process.env.REACT_APP_B2C_SIGN_IN_POLICY as string,\r\n PasswordResetPolicy: process.env.REACT_APP_B2C_PASSWORD_RESET_POLICY as string,\r\n Scope: process.env.REACT_APP_B2C_SCOPE as string,\r\n CacheLocation: \"localStorage\"\r\n\r\n};\r\n","import {useEffect, useState} from 'react';\r\nimport {useAuth} from '../../auth/general-auth-provider';\r\nimport {AccessTokenKey, AuthRoles} from '../constants';\r\nimport { TOKEN_ROLE_IDENTIFIER } from '../../auth/auth-constants';\r\n\r\nexport function decodeToken(token: string | null) {\r\n if (token === null || token === '') {\r\n return {upn: ''};\r\n }\r\n const parts = token.split('.');\r\n if (parts.length !== 3) {\r\n throw new Error('JWT must have 3 parts');\r\n }\r\n const decoded = urlBase64Decode(parts[1]);\r\n if (!decoded) {\r\n throw new Error('Cannot decode the token');\r\n }\r\n return JSON.parse(decoded);\r\n}\r\n\r\nfunction urlBase64Decode(str: string) {\r\n let output = str.replace(/-/g, '+').replace(/_/g, '/');\r\n switch (output.length % 4) {\r\n case 0:\r\n break;\r\n case 2:\r\n output += '==';\r\n break;\r\n case 3:\r\n output += '=';\r\n break;\r\n default:\r\n throw new Error('Illegal base64url string!');\r\n }\r\n\r\n return decodeURIComponent((window as any).escape(window.atob(output)));\r\n}\r\n\r\ntype TokenProps = 'Email' | 'sub';\r\n\r\nexport function getAccessTokenFromLocalStorage() {\r\n return '';\r\n}\r\n\r\nfunction getFieldFromToken(field: TokenProps, token?: string | null) {\r\n if (!token) {\r\n token = localStorage.getItem(AccessTokenKey);\r\n }\r\n\r\n const decodedToken = decodeToken(token);\r\n let tokenField = '';\r\n\r\n if (decodedToken) {\r\n tokenField = decodedToken[field] || '';\r\n }\r\n\r\n return tokenField;\r\n}\r\n\r\nexport function getEmailFromToken(token?: string | null) {\r\n return getFieldFromToken('Email', token);\r\n}\r\n\r\nexport function getTokenExpiresAt(tokenId: string) {\r\n let token = localStorage.getItem(tokenId);\r\n if (token) {\r\n let jwtToken = decodeToken(token);\r\n let expiresAt = jwtToken.exp;\r\n let expiresAtDate = new Date(expiresAt * 1000);\r\n return expiresAtDate;\r\n }\r\n return null;\r\n}\r\n\r\nexport function isAdmin(tokenId: string = 'token') {\r\n let token = localStorage.getItem(tokenId);\r\n if (token) {\r\n let jwtToken = decodeToken(token);\r\n if (jwtToken[TOKEN_ROLE_IDENTIFIER]) {\r\n return jwtToken[TOKEN_ROLE_IDENTIFIER].includes(AuthRoles.Admin) || jwtToken[TOKEN_ROLE_IDENTIFIER].includes(AuthRoles.GlobalAdmin);\r\n }\r\n }\r\n return false;\r\n}\r\n\r\nexport function isGlobalAdmin(tokenId: string = 'token') {\r\n let token = localStorage.getItem(tokenId);\r\n if(token) {\r\n let jwtToken = decodeToken(token);\r\n if(jwtToken[TOKEN_ROLE_IDENTIFIER]) {\r\n return jwtToken[TOKEN_ROLE_IDENTIFIER].includes(AuthRoles.GlobalAdmin)\r\n }\r\n }\r\n return false;\r\n}\r\n\r\nexport function getUserRoles(tokenId: string = 'token') {\r\n let token = localStorage.getItem(tokenId);\r\n\r\n if (token) {\r\n let jwtToken = decodeToken(token);\r\n\r\n if (jwtToken.roles && jwtToken.roles.length > 0) {\r\n return jwtToken.roles;\r\n }\r\n }\r\n return '';\r\n}\r\n\r\nexport function getUseRoleByToken(token: string) {\r\n if (token) {\r\n let jwtToken = decodeToken(token);\r\n\r\n if (jwtToken.roles && jwtToken.roles.length > 0) {\r\n return jwtToken.roles[0];\r\n }\r\n }\r\n return '';\r\n}\r\n\r\nexport function isTokenExpired(tokenId: string = 'token') {\r\n let expireDate = getTokenExpiresAt(tokenId);\r\n let currentTime = new Date();\r\n if (expireDate) {\r\n return currentTime > expireDate;\r\n }\r\n return true;\r\n}\r\n\r\nexport type AuthHelperType = {\r\n isLoading: any;\r\n isAuthenticated: any;\r\n loginWithRedirect: any;\r\n getToken: any;\r\n logout: any;\r\n hasRole: boolean;\r\n};\r\n\r\nexport function useAuthHelper() {\r\n const [isLoading, setIsLoading] = useState(true);\r\n const [IsAuthenticated, setIsAuthenticated] = useState();\r\n const [hasRole, setHasRole] = useState(false);\r\n\r\n const {loading, isAuthenticated, loginWithRedirect, getTokenSilently, logout, role} = useAuth();\r\n useEffect(() => {\r\n setIsLoading(loading);\r\n setIsAuthenticated(isAuthenticated);\r\n setHasRole(role ? true : false);\r\n }, [loading, isAuthenticated, role]);\r\n\r\n return {\r\n isLoading: isLoading,\r\n isAuthenticated: IsAuthenticated,\r\n loginWithRedirect: loginWithRedirect,\r\n getToken: getTokenSilently,\r\n logout: logout,\r\n hasRole: hasRole,\r\n } as AuthHelperType;\r\n}\r\n","import i18n from 'i18next';\r\nimport detector from 'i18next-browser-languagedetector';\r\nimport moment from 'moment';\r\nimport 'moment/locale/da'; // Import languages so the moment locale is set correctly\r\nimport 'moment/locale/en-gb';\r\nimport danishTranslation from './da.json';\r\nimport englishTranslation from './en.json';\r\nimport danishPlatformTranslation from './platform-translations/da.json';\r\nimport englishPlatformTranslation from './platform-translations/en.json';\r\n\r\nexport const Languages = {\r\n da: 'Dansk',\r\n en: 'English',\r\n} as const;\r\n\r\nexport type LanguageType = keyof typeof Languages;\r\nenum LanguageEnum {\r\n da = 'da',\r\n en = 'en',\r\n}\r\n\r\nexport type Translation = typeof i18nResources.en.translation;\r\n\r\n// NB. When adding a NEW TRANSLATION, REMEMBER to IMPORT the corresponding MOMENT LOCALE at the top!\r\nconst i18nResources = {\r\n da: {\r\n translation: {...danishPlatformTranslation, ...danishTranslation},\r\n },\r\n en: {\r\n translation: {...englishPlatformTranslation, ...englishTranslation},\r\n },\r\n};\r\n\r\nexport type i18nTranslationKey = any;\r\n\r\ni18n.use(detector);\r\ni18n.init(\r\n {\r\n fallbackLng: LanguageEnum.en,\r\n resources: i18nResources,\r\n // have a common namespace used around the full app\r\n ns: ['translation'],\r\n defaultNS: 'translation',\r\n debug: false,\r\n interpolation: {\r\n escapeValue: false, // not needed for react as it does escape per default to prevent xss!\r\n },\r\n react: {\r\n wait: false,\r\n //withRef: false,\r\n bindI18n: 'languageChanged loaded',\r\n bindStore: 'added removed',\r\n nsMode: 'default',\r\n },\r\n },\r\n (err, t) => {\r\n let userLang = navigator.language;\r\n if (userLang === LanguageEnum.da) {\r\n i18n.changeLanguage(LanguageEnum.da);\r\n }\r\n\r\n moment.locale([i18n.language, userLang === LanguageEnum.da ? LanguageEnum.da : LanguageEnum.en]);\r\n },\r\n);\r\n\r\n// type-safe translation lookup\r\nexport const localized = (key: keyof Translation): string => {\r\n return i18n.t(key);\r\n};\r\n\r\nexport const localizedDynamic = (key: keyof Translation | string): string => {\r\n return i18n.t(key);\r\n};\r\n\r\n//fx: localizedInterpolation('MarketingNotAvailable', {valueToReplace: \"dynamic Value\"})\r\nexport const localizedInterpolation = (key: keyof Translation, keysToReplace: any): string => {\r\n return i18n.t(key, keysToReplace);\r\n};\r\n\r\nexport const getTranslation = (language: keyof typeof Languages) => i18n.getFixedT(language);\r\n\r\nexport const getLanguage = () => {\r\n return i18n.language === 'en-US' ? LanguageEnum.en : i18n.language;\r\n};\r\n\r\nexport const changeLanguage = async (language: keyof typeof Languages) => {\r\n await i18n.changeLanguage(language);\r\n\r\n moment.locale([language, LanguageEnum.en]);\r\n};\r\n\r\nexport const getTranslationNamespace = () => i18n.getFixedT('translation');\r\n\r\nexport const getLocaleData = () => {\r\n return moment.localeData(i18n.language);\r\n};\r\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\r\nimport { SnackbarState } from './types';\r\n\r\nconst initialState: SnackbarState = {\r\n snackbars: []\r\n};\r\n\r\nexport const snackbarSlice = createSlice({\r\n name: \"snackbar\",\r\n initialState,\r\n reducers: {\r\n showSuccessSnackbar: (state, action: PayloadAction) => {\r\n state.snackbars.push({\r\n key: new Date().getTime() + Math.random(),\r\n message: action.payload,\r\n options: {\r\n variant: 'success',\r\n autoHideDuration: 5000\r\n }\r\n });\r\n },\r\n showErrorSnackbar: (state, action: PayloadAction) => {\r\n state.snackbars.push({\r\n key: new Date().getTime() + Math.random(),\r\n message: action.payload,\r\n options: {\r\n variant: 'error',\r\n autoHideDuration: 10000\r\n }\r\n });\r\n },\r\n showWarningSnackbar: (state, action: PayloadAction) => {\r\n state.snackbars.push({\r\n key: new Date().getTime() + Math.random(),\r\n message: action.payload,\r\n options: {\r\n variant: 'warning',\r\n autoHideDuration: 8000\r\n }\r\n });\r\n },\r\n showInfoSnackbar: (state, action: PayloadAction) => {\r\n state.snackbars.push({\r\n key: new Date().getTime() + Math.random(),\r\n message: action.payload,\r\n options: {\r\n variant: 'info',\r\n autoHideDuration: 5000\r\n }\r\n });\r\n },\r\n clearSnackbars: (state) => {\r\n state.snackbars = state.snackbars.map(s => {\r\n s.dismissed = true\r\n return s;\r\n });\r\n },\r\n clearSnackbar: (state, action: PayloadAction) => {\r\n let snackbar = state.snackbars.find(s => s.key === action.payload)\r\n if(snackbar) {\r\n snackbar.dismissed = true;\r\n }\r\n },\r\n removeSnackbar: (state, action: PayloadAction) => {\r\n state.snackbars.splice(state.snackbars.findIndex(s => s.key === action.payload), 1);\r\n }\r\n }\r\n});\r\n\r\nexport const {\r\n showSuccessSnackbar,\r\n showErrorSnackbar,\r\n showWarningSnackbar,\r\n showInfoSnackbar,\r\n clearSnackbars,\r\n clearSnackbar,\r\n removeSnackbar\r\n} = snackbarSlice.actions;\r\n\r\nexport default snackbarSlice.reducer;","import { SerializedError } from '@reduxjs/toolkit';\r\nimport { localizedDynamic } from '../../i18n/i18n';\r\nimport { ApiClient } from '../../state/api-clients';\r\nimport { showErrorSnackbar } from '../../state/features/snackbar/snackbar-slice';\r\nimport { store } from '../../state/store';\r\nimport { isJson } from './json-helper';\r\n\r\n// Used for createAsyncThunk\r\nexport const AsyncOperationHandler = async (\r\n apiCall: (cl: ApiClient) => Promise,\r\n client: ApiClient,\r\n showResponseMessage: boolean = false,\r\n callbackOnSuccess?: () => void,\r\n) => {\r\n const dispatch = store.dispatch;\r\n try {\r\n const result = await apiCall(client);\r\n\r\n // Call when api call returned successfully\r\n if(callbackOnSuccess){\r\n callbackOnSuccess();\r\n }\r\n return result;\r\n } catch (error) {\r\n const customError = {\r\n code: error.status?.toString(), // serializable\r\n } as SerializedError;\r\n if (error.status === 401) {\r\n customError.message = error.message;\r\n customError.name = 'Unauthorized';\r\n if (showResponseMessage) {\r\n dispatch(showErrorSnackbar(localizedDynamic('Unauthorized')));\r\n }\r\n } else {\r\n if (error.response) {\r\n customError.message = error.response;\r\n customError.name = 'Error';\r\n if (showResponseMessage && customError.message) {\r\n dispatch(showErrorSnackbar(localizedDynamic(getErrorMessage(customError.message))));\r\n }\r\n }\r\n }\r\n throw error;\r\n }\r\n};\r\n\r\nexport const getErrorMessage = (errorResponse: string) => {\r\n if (isJson(errorResponse)) {\r\n const jsonError = JSON.parse(errorResponse);\r\n const errorMessage = jsonError.message ? jsonError.message : jsonError;\r\n return errorMessage;\r\n }\r\n return errorResponse;\r\n};\r\n","//----------------------\r\n// \r\n// Generated using the NSwag toolchain v13.18.2.0 (NJsonSchema v10.8.0.0 (Newtonsoft.Json v12.0.0.0)) (http://NSwag.org)\r\n// \r\n//----------------------\r\n\r\n/* tslint:disable */\r\n/* eslint-disable */\r\n// ReSharper disable InconsistentNaming\r\n\r\nimport { getAccessTokenFromLocalStorage } from \"../utilities/platform-helpers/auth-helper\";\r\nexport class BaseClient {\r\n public async transformOptions(options: RequestInit): Promise {\r\n const token = localStorage.getItem(\"token\");\r\n const headerData = token\r\n ? {\r\n ...options.headers,\r\n Authorization: \"Bearer \" + token,\r\n }\r\n : {\r\n ...options.headers,\r\n };\r\n return Object.assign({}, options, {\r\n headers: headerData,\r\n });\r\n }\r\n}\r\n\r\nexport class CompetitionClient extends BaseClient {\r\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\r\n super();\r\n this.http = http ? http : window as any;\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"http://localhost:4999\";\r\n }\r\n\r\n postNewCompetitionCode(competition: Competition): Promise {\r\n let url_ = this.baseUrl + \"/api/Competition/PostNewCompetitionCode\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(competition);\r\n\r\n let options_: RequestInit = {\r\n body: content_,\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processPostNewCompetitionCode(_response);\r\n });\r\n }\r\n\r\n protected processPostNewCompetitionCode(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n return;\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null as any);\r\n }\r\n}\r\n\r\nexport class ConsumptionClient extends BaseClient {\r\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\r\n super();\r\n this.http = http ? http : window as any;\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"http://localhost:4999\";\r\n }\r\n\r\n getByDate(date: Date | undefined, connectionIds: string[]): Promise {\r\n let url_ = this.baseUrl + \"/api/Consumption/GetByDate?\";\r\n if (date === null)\r\n throw new Error(\"The parameter 'date' cannot be null.\");\r\n else if (date !== undefined)\r\n url_ += \"date=\" + encodeURIComponent(date ? \"\" + date.toISOString() : \"\") + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(connectionIds);\r\n\r\n let options_: RequestInit = {\r\n body: content_,\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processGetByDate(_response);\r\n });\r\n }\r\n\r\n protected processGetByDate(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n if (Array.isArray(resultData200)) {\r\n result200 = [] as any;\r\n for (let item of resultData200)\r\n result200!.push(DailyConsumptionDto.fromJS(item));\r\n }\r\n else {\r\n result200 = null;\r\n }\r\n return result200;\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null as any);\r\n }\r\n}\r\n\r\nexport class ConsumptionWebClient extends BaseClient {\r\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\r\n super();\r\n this.http = http ? http : window as any;\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"http://localhost:4999\";\r\n }\r\n\r\n getByDateRange(fromDate: Date | undefined, toDate: Date | undefined, organizationId: number | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/ConsumptionWeb/GetByDateRange?\";\r\n if (fromDate === null)\r\n throw new Error(\"The parameter 'fromDate' cannot be null.\");\r\n else if (fromDate !== undefined)\r\n url_ += \"fromDate=\" + encodeURIComponent(fromDate ? \"\" + fromDate.toISOString() : \"\") + \"&\";\r\n if (toDate === null)\r\n throw new Error(\"The parameter 'toDate' cannot be null.\");\r\n else if (toDate !== undefined)\r\n url_ += \"toDate=\" + encodeURIComponent(toDate ? \"\" + toDate.toISOString() : \"\") + \"&\";\r\n if (organizationId === null)\r\n throw new Error(\"The parameter 'organizationId' cannot be null.\");\r\n else if (organizationId !== undefined)\r\n url_ += \"organizationId=\" + encodeURIComponent(\"\" + organizationId) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_: RequestInit = {\r\n method: \"GET\",\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processGetByDateRange(_response);\r\n });\r\n }\r\n\r\n protected processGetByDateRange(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n if (Array.isArray(resultData200)) {\r\n result200 = [] as any;\r\n for (let item of resultData200)\r\n result200!.push(DailyConsumptionDto.fromJS(item));\r\n }\r\n else {\r\n result200 = null;\r\n }\r\n return result200;\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null as any);\r\n }\r\n\r\n getByDate(date: Date | undefined, organizationId: number | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/ConsumptionWeb/GetByDate?\";\r\n if (date === null)\r\n throw new Error(\"The parameter 'date' cannot be null.\");\r\n else if (date !== undefined)\r\n url_ += \"date=\" + encodeURIComponent(date ? \"\" + date.toISOString() : \"\") + \"&\";\r\n if (organizationId === null)\r\n throw new Error(\"The parameter 'organizationId' cannot be null.\");\r\n else if (organizationId !== undefined)\r\n url_ += \"organizationId=\" + encodeURIComponent(\"\" + organizationId) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_: RequestInit = {\r\n method: \"POST\",\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processGetByDate(_response);\r\n });\r\n }\r\n\r\n protected processGetByDate(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n if (Array.isArray(resultData200)) {\r\n result200 = [] as any;\r\n for (let item of resultData200)\r\n result200!.push(DailyConsumptionDto.fromJS(item));\r\n }\r\n else {\r\n result200 = null;\r\n }\r\n return result200;\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null as any);\r\n }\r\n\r\n getExcelExport(data: ConsumptionExcelDataDto): Promise {\r\n let url_ = this.baseUrl + \"/api/ConsumptionWeb/GetConsumptionExcelExport\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(data);\r\n\r\n let options_: RequestInit = {\r\n body: content_,\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/octet-stream\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processGetExcelExport(_response);\r\n });\r\n }\r\n\r\n protected processGetExcelExport(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200 || status === 206) {\r\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\r\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\r\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\r\n if (fileName) {\r\n fileName = decodeURIComponent(fileName);\r\n } else {\r\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n }\r\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null as any);\r\n }\r\n}\r\n\r\nexport class ContactClient extends BaseClient {\r\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\r\n super();\r\n this.http = http ? http : window as any;\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"http://localhost:4999\";\r\n }\r\n\r\n getContacts(organizationId: number | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/Contact/GetContacts?\";\r\n if (organizationId === null)\r\n throw new Error(\"The parameter 'organizationId' cannot be null.\");\r\n else if (organizationId !== undefined)\r\n url_ += \"organizationId=\" + encodeURIComponent(\"\" + organizationId) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_: RequestInit = {\r\n method: \"GET\",\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processGetContacts(_response);\r\n });\r\n }\r\n\r\n protected processGetContacts(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n if (Array.isArray(resultData200)) {\r\n result200 = [] as any;\r\n for (let item of resultData200)\r\n result200!.push(ContactDto.fromJS(item));\r\n }\r\n else {\r\n result200 = null;\r\n }\r\n return result200;\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null as any);\r\n }\r\n}\r\n\r\nexport class ContractClient extends BaseClient {\r\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\r\n super();\r\n this.http = http ? http : window as any;\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"http://localhost:4999\";\r\n }\r\n\r\n getContractsDetails(organizationId: number | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/Contract/GetContractDetails?\";\r\n if (organizationId === null)\r\n throw new Error(\"The parameter 'organizationId' cannot be null.\");\r\n else if (organizationId !== undefined)\r\n url_ += \"organizationId=\" + encodeURIComponent(\"\" + organizationId) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_: RequestInit = {\r\n method: \"GET\",\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processGetContractsDetails(_response);\r\n });\r\n }\r\n\r\n protected processGetContractsDetails(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n if (Array.isArray(resultData200)) {\r\n result200 = [] as any;\r\n for (let item of resultData200)\r\n result200!.push(ContractDto.fromJS(item));\r\n }\r\n else {\r\n result200 = null;\r\n }\r\n return result200;\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null as any);\r\n }\r\n\r\n renewContact(organizationId: number | undefined, contract: ContractDto): Promise {\r\n let url_ = this.baseUrl + \"/api/Contract/RenewContact?\";\r\n if (organizationId === null)\r\n throw new Error(\"The parameter 'organizationId' cannot be null.\");\r\n else if (organizationId !== undefined)\r\n url_ += \"organizationId=\" + encodeURIComponent(\"\" + organizationId) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(contract);\r\n\r\n let options_: RequestInit = {\r\n body: content_,\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processRenewContact(_response);\r\n });\r\n }\r\n\r\n protected processRenewContact(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n result200 = resultData200 !== undefined ? resultData200 : null;\r\n \r\n return result200;\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null as any);\r\n }\r\n}\r\n\r\nexport class CustomerServiceClient extends BaseClient {\r\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\r\n super();\r\n this.http = http ? http : window as any;\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"http://localhost:4999\";\r\n }\r\n\r\n getCustomerServiceInfo(): Promise {\r\n let url_ = this.baseUrl + \"/api/CustomerService/GetCustomerServiceInfo\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_: RequestInit = {\r\n method: \"GET\",\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processGetCustomerServiceInfo(_response);\r\n });\r\n }\r\n\r\n protected processGetCustomerServiceInfo(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n result200 = CustomerServiceDto.fromJS(resultData200);\r\n return result200;\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null as any);\r\n }\r\n}\r\n\r\nexport class DebtorPostingClient extends BaseClient {\r\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\r\n super();\r\n this.http = http ? http : window as any;\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"http://localhost:4999\";\r\n }\r\n\r\n getDebtorPostingsDetails(organizationId: number | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/DebtorPosting/GetDebtorPostingsDetails?\";\r\n if (organizationId === null)\r\n throw new Error(\"The parameter 'organizationId' cannot be null.\");\r\n else if (organizationId !== undefined)\r\n url_ += \"organizationId=\" + encodeURIComponent(\"\" + organizationId) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_: RequestInit = {\r\n method: \"GET\",\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processGetDebtorPostingsDetails(_response);\r\n });\r\n }\r\n\r\n protected processGetDebtorPostingsDetails(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n if (Array.isArray(resultData200)) {\r\n result200 = [] as any;\r\n for (let item of resultData200)\r\n result200!.push(DebtorPostingDto.fromJS(item));\r\n }\r\n else {\r\n result200 = null;\r\n }\r\n return result200;\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null as any);\r\n }\r\n}\r\n\r\nexport class DocumentClient extends BaseClient {\r\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\r\n super();\r\n this.http = http ? http : window as any;\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"http://localhost:4999\";\r\n }\r\n\r\n getDocumentDetails(organizationId: number | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/Document/GetDocumentDetails?\";\r\n if (organizationId === null)\r\n throw new Error(\"The parameter 'organizationId' cannot be null.\");\r\n else if (organizationId !== undefined)\r\n url_ += \"organizationId=\" + encodeURIComponent(\"\" + organizationId) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_: RequestInit = {\r\n method: \"GET\",\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processGetDocumentDetails(_response);\r\n });\r\n }\r\n\r\n protected processGetDocumentDetails(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n if (Array.isArray(resultData200)) {\r\n result200 = [] as any;\r\n for (let item of resultData200)\r\n result200!.push(DocumentDto.fromJS(item));\r\n }\r\n else {\r\n result200 = null;\r\n }\r\n return result200;\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null as any);\r\n }\r\n\r\n getDebtorPostingDocumentDetails(organizationId: number | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/Document/GetDebtorPostingDocumentDetails?\";\r\n if (organizationId === null)\r\n throw new Error(\"The parameter 'organizationId' cannot be null.\");\r\n else if (organizationId !== undefined)\r\n url_ += \"organizationId=\" + encodeURIComponent(\"\" + organizationId) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_: RequestInit = {\r\n method: \"GET\",\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processGetDebtorPostingDocumentDetails(_response);\r\n });\r\n }\r\n\r\n protected processGetDebtorPostingDocumentDetails(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n if (Array.isArray(resultData200)) {\r\n result200 = [] as any;\r\n for (let item of resultData200)\r\n result200!.push(DebtorPostingDocumentDto.fromJS(item));\r\n }\r\n else {\r\n result200 = null;\r\n }\r\n return result200;\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null as any);\r\n }\r\n\r\n getDocumentAzure(documentId: number | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/Document/GetDocumentPDF?\";\r\n if (documentId === null)\r\n throw new Error(\"The parameter 'documentId' cannot be null.\");\r\n else if (documentId !== undefined)\r\n url_ += \"documentId=\" + encodeURIComponent(\"\" + documentId) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_: RequestInit = {\r\n method: \"GET\",\r\n headers: {\r\n \"Accept\": \"application/octet-stream\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processGetDocumentAzure(_response);\r\n });\r\n }\r\n\r\n protected processGetDocumentAzure(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200 || status === 206) {\r\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\r\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\r\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\r\n if (fileName) {\r\n fileName = decodeURIComponent(fileName);\r\n } else {\r\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n }\r\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null as any);\r\n }\r\n}\r\n\r\nexport class GreenOptimizationClient extends BaseClient {\r\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\r\n super();\r\n this.http = http ? http : window as any;\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"http://localhost:4999\";\r\n }\r\n\r\n getGreenOptimizationContractsStatus(organizationId: number | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/GreenOptimization/GetGreenOptimizationContractsStatus?\";\r\n if (organizationId === null)\r\n throw new Error(\"The parameter 'organizationId' cannot be null.\");\r\n else if (organizationId !== undefined)\r\n url_ += \"organizationId=\" + encodeURIComponent(\"\" + organizationId) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_: RequestInit = {\r\n method: \"GET\",\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processGetGreenOptimizationContractsStatus(_response);\r\n });\r\n }\r\n\r\n protected processGetGreenOptimizationContractsStatus(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n result200 = GreenOptimizationContractDto.fromJS(resultData200);\r\n return result200;\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null as any);\r\n }\r\n\r\n chooseGreenOptimization(organizationId: number | undefined, greenOptimizationId: string | null | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/GreenOptimization/ChooseGreenOptimization?\";\r\n if (organizationId === null)\r\n throw new Error(\"The parameter 'organizationId' cannot be null.\");\r\n else if (organizationId !== undefined)\r\n url_ += \"organizationId=\" + encodeURIComponent(\"\" + organizationId) + \"&\";\r\n if (greenOptimizationId !== undefined && greenOptimizationId !== null)\r\n url_ += \"greenOptimizationId=\" + encodeURIComponent(\"\" + greenOptimizationId) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_: RequestInit = {\r\n method: \"POST\",\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processChooseGreenOptimization(_response);\r\n });\r\n }\r\n\r\n protected processChooseGreenOptimization(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n result200 = resultData200 !== undefined ? resultData200 : null;\r\n \r\n return result200;\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null as any);\r\n }\r\n}\r\n\r\nexport class IntegrationConsumptionClient extends BaseClient {\r\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\r\n super();\r\n this.http = http ? http : window as any;\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"http://localhost:4999\";\r\n }\r\n\r\n getByDateRange(fromDate: Date | null | undefined, toDate: Date | null | undefined, connectionIds: string[]): Promise {\r\n let url_ = this.baseUrl + \"/api/integration/Consumption/DateRange?\";\r\n if (fromDate !== undefined && fromDate !== null)\r\n url_ += \"fromDate=\" + encodeURIComponent(fromDate ? \"\" + fromDate.toISOString() : \"\") + \"&\";\r\n if (toDate !== undefined && toDate !== null)\r\n url_ += \"toDate=\" + encodeURIComponent(toDate ? \"\" + toDate.toISOString() : \"\") + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(connectionIds);\r\n\r\n let options_: RequestInit = {\r\n body: content_,\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processGetByDateRange(_response);\r\n });\r\n }\r\n\r\n protected processGetByDateRange(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n if (Array.isArray(resultData200)) {\r\n result200 = [] as any;\r\n for (let item of resultData200)\r\n result200!.push(DailyConsumptionDto.fromJS(item));\r\n }\r\n else {\r\n result200 = null;\r\n }\r\n return result200;\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null as any);\r\n }\r\n}\r\n\r\nexport class IntegrationUnitsClient extends BaseClient {\r\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\r\n super();\r\n this.http = http ? http : window as any;\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"http://localhost:4999\";\r\n }\r\n\r\n getUnits(): Promise {\r\n let url_ = this.baseUrl + \"/api/integration/Units\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_: RequestInit = {\r\n method: \"GET\",\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processGetUnits(_response);\r\n });\r\n }\r\n\r\n protected processGetUnits(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n if (Array.isArray(resultData200)) {\r\n result200 = [] as any;\r\n for (let item of resultData200)\r\n result200!.push(UnitDto.fromJS(item));\r\n }\r\n else {\r\n result200 = null;\r\n }\r\n return result200;\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null as any);\r\n }\r\n}\r\n\r\nexport class MarketingMaterialsClient extends BaseClient {\r\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\r\n super();\r\n this.http = http ? http : window as any;\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"http://localhost:4999\";\r\n }\r\n\r\n getMarketingMaterialsByOrganizationId(organizationId: number | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/MarketingMaterials?\";\r\n if (organizationId === null)\r\n throw new Error(\"The parameter 'organizationId' cannot be null.\");\r\n else if (organizationId !== undefined)\r\n url_ += \"organizationId=\" + encodeURIComponent(\"\" + organizationId) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_: RequestInit = {\r\n method: \"GET\",\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processGetMarketingMaterialsByOrganizationId(_response);\r\n });\r\n }\r\n\r\n protected processGetMarketingMaterialsByOrganizationId(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n if (Array.isArray(resultData200)) {\r\n result200 = [] as any;\r\n for (let item of resultData200)\r\n result200!.push(MarketingMaterialDto.fromJS(item));\r\n }\r\n else {\r\n result200 = null;\r\n }\r\n return result200;\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null as any);\r\n }\r\n\r\n getOrganizationMaterialsIdByOrganizationId(organizationId: number | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/MarketingMaterials/id?\";\r\n if (organizationId === null)\r\n throw new Error(\"The parameter 'organizationId' cannot be null.\");\r\n else if (organizationId !== undefined)\r\n url_ += \"organizationId=\" + encodeURIComponent(\"\" + organizationId) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_: RequestInit = {\r\n method: \"GET\",\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processGetOrganizationMaterialsIdByOrganizationId(_response);\r\n });\r\n }\r\n\r\n protected processGetOrganizationMaterialsIdByOrganizationId(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n if (Array.isArray(resultData200)) {\r\n result200 = [] as any;\r\n for (let item of resultData200)\r\n result200!.push(item);\r\n }\r\n else {\r\n result200 = null;\r\n }\r\n return result200;\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null as any);\r\n }\r\n\r\n getMarketingMaterialsByIds(marketingMaterialIds: number[], organizationId: number | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/MarketingMaterials/GetMarketingMaterialsByIds?\";\r\n if (organizationId === null)\r\n throw new Error(\"The parameter 'organizationId' cannot be null.\");\r\n else if (organizationId !== undefined)\r\n url_ += \"organizationId=\" + encodeURIComponent(\"\" + organizationId) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(marketingMaterialIds);\r\n\r\n let options_: RequestInit = {\r\n body: content_,\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/octet-stream\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processGetMarketingMaterialsByIds(_response);\r\n });\r\n }\r\n\r\n protected processGetMarketingMaterialsByIds(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200 || status === 206) {\r\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\r\n let fileNameMatch = contentDisposition ? /filename\\*=(?:(\\\\?['\"])(.*?)\\1|(?:[^\\s]+'.*?')?([^;\\n]*))/g.exec(contentDisposition) : undefined;\r\n let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined;\r\n if (fileName) {\r\n fileName = decodeURIComponent(fileName);\r\n } else {\r\n fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n }\r\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null as any);\r\n }\r\n\r\n sendUpdatedMarketingMaterialNotifications(): Promise {\r\n let url_ = this.baseUrl + \"/api/MarketingMaterials/SendUpdatedMarketingMaterialNotification\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_: RequestInit = {\r\n method: \"POST\",\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processSendUpdatedMarketingMaterialNotifications(_response);\r\n });\r\n }\r\n\r\n protected processSendUpdatedMarketingMaterialNotifications(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n result200 = resultData200 !== undefined ? resultData200 : null;\r\n \r\n return result200;\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null as any);\r\n }\r\n}\r\n\r\nexport class NewsClient extends BaseClient {\r\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\r\n super();\r\n this.http = http ? http : window as any;\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"http://localhost:4999\";\r\n }\r\n\r\n getNews(): Promise {\r\n let url_ = this.baseUrl + \"/api/News\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_: RequestInit = {\r\n method: \"GET\",\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processGetNews(_response);\r\n });\r\n }\r\n\r\n protected processGetNews(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n if (Array.isArray(resultData200)) {\r\n result200 = [] as any;\r\n for (let item of resultData200)\r\n result200!.push(News.fromJS(item));\r\n }\r\n else {\r\n result200 = null;\r\n }\r\n return result200;\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null as any);\r\n }\r\n\r\n getSingleBlog(blog: string | null | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/News/GetSingleBlog?\";\r\n if (blog !== undefined && blog !== null)\r\n url_ += \"blog=\" + encodeURIComponent(\"\" + blog) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_: RequestInit = {\r\n method: \"GET\",\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processGetSingleBlog(_response);\r\n });\r\n }\r\n\r\n protected processGetSingleBlog(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n result200 = News.fromJS(resultData200);\r\n return result200;\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null as any);\r\n }\r\n}\r\n\r\nexport class OrganizationClient extends BaseClient {\r\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\r\n super();\r\n this.http = http ? http : window as any;\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"http://localhost:4999\";\r\n }\r\n\r\n getOrganizationDetails(accountNum: string | null | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/Organization/GetOrganizationDetails?\";\r\n if (accountNum !== undefined && accountNum !== null)\r\n url_ += \"accountNum=\" + encodeURIComponent(\"\" + accountNum) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_: RequestInit = {\r\n method: \"GET\",\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processGetOrganizationDetails(_response);\r\n });\r\n }\r\n\r\n protected processGetOrganizationDetails(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n if (Array.isArray(resultData200)) {\r\n result200 = [] as any;\r\n for (let item of resultData200)\r\n result200!.push(OrganizationDto.fromJS(item));\r\n }\r\n else {\r\n result200 = null;\r\n }\r\n return result200;\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null as any);\r\n }\r\n\r\n getOrganizationsByAuthId(): Promise {\r\n let url_ = this.baseUrl + \"/api/Organization/GetOrganizationsByAuthId\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_: RequestInit = {\r\n method: \"GET\",\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processGetOrganizationsByAuthId(_response);\r\n });\r\n }\r\n\r\n protected processGetOrganizationsByAuthId(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n if (Array.isArray(resultData200)) {\r\n result200 = [] as any;\r\n for (let item of resultData200)\r\n result200!.push(OrganizationDto.fromJS(item));\r\n }\r\n else {\r\n result200 = null;\r\n }\r\n return result200;\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null as any);\r\n }\r\n\r\n deleteUserOrganization(userId: number | undefined, organizationId: number | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/Organization/DeleteUserOrganization?\";\r\n if (userId === null)\r\n throw new Error(\"The parameter 'userId' cannot be null.\");\r\n else if (userId !== undefined)\r\n url_ += \"userId=\" + encodeURIComponent(\"\" + userId) + \"&\";\r\n if (organizationId === null)\r\n throw new Error(\"The parameter 'organizationId' cannot be null.\");\r\n else if (organizationId !== undefined)\r\n url_ += \"organizationId=\" + encodeURIComponent(\"\" + organizationId) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_: RequestInit = {\r\n method: \"DELETE\",\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processDeleteUserOrganization(_response);\r\n });\r\n }\r\n\r\n protected processDeleteUserOrganization(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n result200 = resultData200 !== undefined ? resultData200 : null;\r\n \r\n return result200;\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null as any);\r\n }\r\n}\r\n\r\nexport class StatusMessageClient extends BaseClient {\r\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\r\n super();\r\n this.http = http ? http : window as any;\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"http://localhost:4999\";\r\n }\r\n\r\n getStatusMessages(): Promise {\r\n let url_ = this.baseUrl + \"/api/StatusMessage/GetStatusMessages\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_: RequestInit = {\r\n method: \"GET\",\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processGetStatusMessages(_response);\r\n });\r\n }\r\n\r\n protected processGetStatusMessages(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n if (Array.isArray(resultData200)) {\r\n result200 = [] as any;\r\n for (let item of resultData200)\r\n result200!.push(StatusMessageDto.fromJS(item));\r\n }\r\n else {\r\n result200 = null;\r\n }\r\n return result200;\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null as any);\r\n }\r\n\r\n postNewStatusMessages(statusMessageDto: StatusMessageDto): Promise {\r\n let url_ = this.baseUrl + \"/api/StatusMessage/PostNewStatusMessages\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(statusMessageDto);\r\n\r\n let options_: RequestInit = {\r\n body: content_,\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processPostNewStatusMessages(_response);\r\n });\r\n }\r\n\r\n protected processPostNewStatusMessages(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n result200 = StatusMessageDto.fromJS(resultData200);\r\n return result200;\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null as any);\r\n }\r\n\r\n deleteStatusMessages(statusMessageId: number | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/StatusMessage/DeleteStatusMessages?\";\r\n if (statusMessageId === null)\r\n throw new Error(\"The parameter 'statusMessageId' cannot be null.\");\r\n else if (statusMessageId !== undefined)\r\n url_ += \"statusMessageId=\" + encodeURIComponent(\"\" + statusMessageId) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_: RequestInit = {\r\n method: \"POST\",\r\n headers: {\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processDeleteStatusMessages(_response);\r\n });\r\n }\r\n\r\n protected processDeleteStatusMessages(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n return;\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null as any);\r\n }\r\n}\r\n\r\nexport class UnitsClient extends BaseClient {\r\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\r\n super();\r\n this.http = http ? http : window as any;\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"http://localhost:4999\";\r\n }\r\n\r\n getUnitsByOrganizationId(organizationId: number | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/Units/GetUnitsByOrganizationId?\";\r\n if (organizationId === null)\r\n throw new Error(\"The parameter 'organizationId' cannot be null.\");\r\n else if (organizationId !== undefined)\r\n url_ += \"organizationId=\" + encodeURIComponent(\"\" + organizationId) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_: RequestInit = {\r\n method: \"GET\",\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processGetUnitsByOrganizationId(_response);\r\n });\r\n }\r\n\r\n protected processGetUnitsByOrganizationId(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n if (Array.isArray(resultData200)) {\r\n result200 = [] as any;\r\n for (let item of resultData200)\r\n result200!.push(UnitDto.fromJS(item));\r\n }\r\n else {\r\n result200 = null;\r\n }\r\n return result200;\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null as any);\r\n }\r\n}\r\n\r\nexport class UserClient extends BaseClient {\r\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\r\n super();\r\n this.http = http ? http : window as any;\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"http://localhost:4999\";\r\n }\r\n\r\n get(): Promise {\r\n let url_ = this.baseUrl + \"/api/User\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_: RequestInit = {\r\n method: \"GET\",\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processGet(_response);\r\n });\r\n }\r\n\r\n protected processGet(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n if (Array.isArray(resultData200)) {\r\n result200 = [] as any;\r\n for (let item of resultData200)\r\n result200!.push(User.fromJS(item));\r\n }\r\n else {\r\n result200 = null;\r\n }\r\n return result200;\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null as any);\r\n }\r\n\r\n post(user: User): Promise {\r\n let url_ = this.baseUrl + \"/api/User\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(user);\r\n\r\n let options_: RequestInit = {\r\n body: content_,\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processPost(_response);\r\n });\r\n }\r\n\r\n protected processPost(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n result200 = User.fromJS(resultData200);\r\n return result200;\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null as any);\r\n }\r\n\r\n put(user: User): Promise {\r\n let url_ = this.baseUrl + \"/api/User\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(user);\r\n\r\n let options_: RequestInit = {\r\n body: content_,\r\n method: \"PUT\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processPut(_response);\r\n });\r\n }\r\n\r\n protected processPut(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n result200 = User.fromJS(resultData200);\r\n return result200;\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null as any);\r\n }\r\n\r\n delete(user: User): Promise {\r\n let url_ = this.baseUrl + \"/api/User\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(user);\r\n\r\n let options_: RequestInit = {\r\n body: content_,\r\n method: \"DELETE\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processDelete(_response);\r\n });\r\n }\r\n\r\n protected processDelete(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n return;\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null as any);\r\n }\r\n\r\n getById(id: number | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/User/GetById?\";\r\n if (id === null)\r\n throw new Error(\"The parameter 'id' cannot be null.\");\r\n else if (id !== undefined)\r\n url_ += \"id=\" + encodeURIComponent(\"\" + id) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_: RequestInit = {\r\n method: \"GET\",\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processGetById(_response);\r\n });\r\n }\r\n\r\n protected processGetById(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n result200 = User.fromJS(resultData200);\r\n return result200;\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null as any);\r\n }\r\n\r\n getByAuthId(): Promise {\r\n let url_ = this.baseUrl + \"/api/User/GetByAuthId\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_: RequestInit = {\r\n method: \"GET\",\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processGetByAuthId(_response);\r\n });\r\n }\r\n\r\n protected processGetByAuthId(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n result200 = User.fromJS(resultData200);\r\n return result200;\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null as any);\r\n }\r\n\r\n getUsersByOrganizationId(organizationId: number | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/User/GetUsersByOrganizationId?\";\r\n if (organizationId === null)\r\n throw new Error(\"The parameter 'organizationId' cannot be null.\");\r\n else if (organizationId !== undefined)\r\n url_ += \"organizationId=\" + encodeURIComponent(\"\" + organizationId) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_: RequestInit = {\r\n method: \"GET\",\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processGetUsersByOrganizationId(_response);\r\n });\r\n }\r\n\r\n protected processGetUsersByOrganizationId(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n if (Array.isArray(resultData200)) {\r\n result200 = [] as any;\r\n for (let item of resultData200)\r\n result200!.push(User.fromJS(item));\r\n }\r\n else {\r\n result200 = null;\r\n }\r\n return result200;\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null as any);\r\n }\r\n\r\n resendInvitationEmail(user: User): Promise {\r\n let url_ = this.baseUrl + \"/api/User/ResendInvitationEmail\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(user);\r\n\r\n let options_: RequestInit = {\r\n body: content_,\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processResendInvitationEmail(_response);\r\n });\r\n }\r\n\r\n protected processResendInvitationEmail(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n return;\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null as any);\r\n }\r\n\r\n createUserWithOrganizationId(user: User, organizationId: number | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/User/CreateUserWithOrganizationId?\";\r\n if (organizationId === null)\r\n throw new Error(\"The parameter 'organizationId' cannot be null.\");\r\n else if (organizationId !== undefined)\r\n url_ += \"organizationId=\" + encodeURIComponent(\"\" + organizationId) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(user);\r\n\r\n let options_: RequestInit = {\r\n body: content_,\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processCreateUserWithOrganizationId(_response);\r\n });\r\n }\r\n\r\n protected processCreateUserWithOrganizationId(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n result200 = User.fromJS(resultData200);\r\n return result200;\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null as any);\r\n }\r\n\r\n signUp(userDto: WebHookUserDTO): Promise {\r\n let url_ = this.baseUrl + \"/api/User/SignUp\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(userDto);\r\n\r\n let options_: RequestInit = {\r\n body: content_,\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processSignUp(_response);\r\n });\r\n }\r\n\r\n protected processSignUp(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n return;\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null as any);\r\n }\r\n\r\n getUserInfo(userDto: WebHookUserDTO): Promise {\r\n let url_ = this.baseUrl + \"/api/User/GetUserInfo\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(userDto);\r\n\r\n let options_: RequestInit = {\r\n body: content_,\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processGetUserInfo(_response);\r\n });\r\n }\r\n\r\n protected processGetUserInfo(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n let resultData200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n result200 = WebHookUserDTO.fromJS(resultData200);\r\n return result200;\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null as any);\r\n }\r\n\r\n checkUserInvites(): Promise {\r\n let url_ = this.baseUrl + \"/api/User/CheckUserInvites\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_: RequestInit = {\r\n method: \"GET\",\r\n headers: {\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processCheckUserInvites(_response);\r\n });\r\n }\r\n\r\n protected processCheckUserInvites(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n return;\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null as any);\r\n }\r\n\r\n updateLastOpenedMarketingPage(organizationId: number | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/User/UpdateLastOpenedMarketingPage?\";\r\n if (organizationId === null)\r\n throw new Error(\"The parameter 'organizationId' cannot be null.\");\r\n else if (organizationId !== undefined)\r\n url_ += \"organizationId=\" + encodeURIComponent(\"\" + organizationId) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_: RequestInit = {\r\n method: \"POST\",\r\n headers: {\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.processUpdateLastOpenedMarketingPage(_response);\r\n });\r\n }\r\n\r\n protected processUpdateLastOpenedMarketingPage(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n return;\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null as any);\r\n }\r\n}\r\n\r\nexport abstract class ModelBase implements IModelBase {\r\n id!: number;\r\n createdOn?: Date | undefined;\r\n modifiedOn?: Date | undefined;\r\n isDeleted!: boolean;\r\n\r\n constructor(data?: IModelBase) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.createdOn = _data[\"createdOn\"] ? new Date(_data[\"createdOn\"].toString()) : undefined;\r\n this.modifiedOn = _data[\"modifiedOn\"] ? new Date(_data[\"modifiedOn\"].toString()) : undefined;\r\n this.isDeleted = _data[\"isDeleted\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): ModelBase {\r\n data = typeof data === 'object' ? data : {};\r\n throw new Error(\"The abstract class 'ModelBase' cannot be instantiated.\");\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"createdOn\"] = this.createdOn ? this.createdOn.toISOString() : undefined;\r\n data[\"modifiedOn\"] = this.modifiedOn ? this.modifiedOn.toISOString() : undefined;\r\n data[\"isDeleted\"] = this.isDeleted;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IModelBase {\r\n id: number;\r\n createdOn?: Date | undefined;\r\n modifiedOn?: Date | undefined;\r\n isDeleted: boolean;\r\n}\r\n\r\nexport class Competition extends ModelBase implements ICompetition {\r\n code?: string | undefined;\r\n mail?: string | undefined;\r\n userId!: number;\r\n organizationId!: number;\r\n\r\n constructor(data?: ICompetition) {\r\n super(data);\r\n }\r\n\r\n init(_data?: any) {\r\n super.init(_data);\r\n if (_data) {\r\n this.code = _data[\"code\"];\r\n this.mail = _data[\"mail\"];\r\n this.userId = _data[\"userId\"];\r\n this.organizationId = _data[\"organizationId\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): Competition {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new Competition();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"code\"] = this.code;\r\n data[\"mail\"] = this.mail;\r\n data[\"userId\"] = this.userId;\r\n data[\"organizationId\"] = this.organizationId;\r\n super.toJSON(data);\r\n return data;\r\n }\r\n}\r\n\r\nexport interface ICompetition extends IModelBase {\r\n code?: string | undefined;\r\n mail?: string | undefined;\r\n userId: number;\r\n organizationId: number;\r\n}\r\n\r\nexport class DailyConsumptionDto implements IDailyConsumptionDto {\r\n consumptionValue!: number;\r\n connectionId?: string | undefined;\r\n date!: Date;\r\n\r\n constructor(data?: IDailyConsumptionDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.consumptionValue = _data[\"consumptionValue\"];\r\n this.connectionId = _data[\"connectionId\"];\r\n this.date = _data[\"date\"] ? new Date(_data[\"date\"].toString()) : undefined;\r\n }\r\n }\r\n\r\n static fromJS(data: any): DailyConsumptionDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new DailyConsumptionDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"consumptionValue\"] = this.consumptionValue;\r\n data[\"connectionId\"] = this.connectionId;\r\n data[\"date\"] = this.date ? this.date.toISOString() : undefined;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IDailyConsumptionDto {\r\n consumptionValue: number;\r\n connectionId?: string | undefined;\r\n date: Date;\r\n}\r\n\r\nexport class ConsumptionExcelDataDto implements IConsumptionExcelDataDto {\r\n excelData?: ConsumptionExcelData[] | undefined;\r\n headers?: string[] | undefined;\r\n worksheetName?: string | undefined;\r\n\r\n constructor(data?: IConsumptionExcelDataDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n if (Array.isArray(_data[\"excelData\"])) {\r\n this.excelData = [] as any;\r\n for (let item of _data[\"excelData\"])\r\n this.excelData!.push(ConsumptionExcelData.fromJS(item));\r\n }\r\n if (Array.isArray(_data[\"headers\"])) {\r\n this.headers = [] as any;\r\n for (let item of _data[\"headers\"])\r\n this.headers!.push(item);\r\n }\r\n this.worksheetName = _data[\"worksheetName\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): ConsumptionExcelDataDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new ConsumptionExcelDataDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n if (Array.isArray(this.excelData)) {\r\n data[\"excelData\"] = [];\r\n for (let item of this.excelData)\r\n data[\"excelData\"].push(item.toJSON());\r\n }\r\n if (Array.isArray(this.headers)) {\r\n data[\"headers\"] = [];\r\n for (let item of this.headers)\r\n data[\"headers\"].push(item);\r\n }\r\n data[\"worksheetName\"] = this.worksheetName;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IConsumptionExcelDataDto {\r\n excelData?: ConsumptionExcelData[] | undefined;\r\n headers?: string[] | undefined;\r\n worksheetName?: string | undefined;\r\n}\r\n\r\nexport class ConsumptionExcelData implements IConsumptionExcelData {\r\n date?: string | undefined;\r\n usage!: number;\r\n eanNumber?: string | undefined;\r\n measuringPoint?: string | undefined;\r\n\r\n constructor(data?: IConsumptionExcelData) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.date = _data[\"date\"];\r\n this.usage = _data[\"usage\"];\r\n this.eanNumber = _data[\"eanNumber\"];\r\n this.measuringPoint = _data[\"measuringPoint\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): ConsumptionExcelData {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new ConsumptionExcelData();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"date\"] = this.date;\r\n data[\"usage\"] = this.usage;\r\n data[\"eanNumber\"] = this.eanNumber;\r\n data[\"measuringPoint\"] = this.measuringPoint;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IConsumptionExcelData {\r\n date?: string | undefined;\r\n usage: number;\r\n eanNumber?: string | undefined;\r\n measuringPoint?: string | undefined;\r\n}\r\n\r\nexport class ContactDto implements IContactDto {\r\n contactTitle?: string | undefined;\r\n name?: string | undefined;\r\n phoneNumber?: string | undefined;\r\n email?: string | undefined;\r\n image?: string | undefined;\r\n\r\n constructor(data?: IContactDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.contactTitle = _data[\"contactTitle\"];\r\n this.name = _data[\"name\"];\r\n this.phoneNumber = _data[\"phoneNumber\"];\r\n this.email = _data[\"email\"];\r\n this.image = _data[\"image\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): ContactDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new ContactDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"contactTitle\"] = this.contactTitle;\r\n data[\"name\"] = this.name;\r\n data[\"phoneNumber\"] = this.phoneNumber;\r\n data[\"email\"] = this.email;\r\n data[\"image\"] = this.image;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IContactDto {\r\n contactTitle?: string | undefined;\r\n name?: string | undefined;\r\n phoneNumber?: string | undefined;\r\n email?: string | undefined;\r\n image?: string | undefined;\r\n}\r\n\r\nexport class ContractDto implements IContractDto {\r\n documentId!: number;\r\n document?: Document | undefined;\r\n productCategory!: ProductCategory;\r\n productSubcategory!: ProductSubcategory;\r\n contractStart!: Date;\r\n contractEnd!: Date;\r\n priceDistrict?: string | undefined;\r\n premium?: string | undefined;\r\n price?: number | undefined;\r\n fixedPricePremium?: number | undefined;\r\n active!: boolean;\r\n originalCeilingYear1?: number | undefined;\r\n originalCeilingYear2?: number | undefined;\r\n originalCeilingYear3?: number | undefined;\r\n originalCeilingYear4?: number | undefined;\r\n originalCeilingYear5?: number | undefined;\r\n originalCeilingYear6?: number | undefined;\r\n currentCeilingYear1?: number | undefined;\r\n currentCeilingYear2?: number | undefined;\r\n currentCeilingYear3?: number | undefined;\r\n currentCeilingYear4?: number | undefined;\r\n currentCeilingYear5?: number | undefined;\r\n currentCeilingYear6?: number | undefined;\r\n supplement?: number | undefined;\r\n\r\n constructor(data?: IContractDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.documentId = _data[\"documentId\"];\r\n this.document = _data[\"document\"] ? Document.fromJS(_data[\"document\"]) : undefined;\r\n this.productCategory = _data[\"productCategory\"];\r\n this.productSubcategory = _data[\"productSubcategory\"];\r\n this.contractStart = _data[\"contractStart\"] ? new Date(_data[\"contractStart\"].toString()) : undefined;\r\n this.contractEnd = _data[\"contractEnd\"] ? new Date(_data[\"contractEnd\"].toString()) : undefined;\r\n this.priceDistrict = _data[\"priceDistrict\"];\r\n this.premium = _data[\"premium\"];\r\n this.price = _data[\"price\"];\r\n this.fixedPricePremium = _data[\"fixedPricePremium\"];\r\n this.active = _data[\"active\"];\r\n this.originalCeilingYear1 = _data[\"originalCeilingYear1\"];\r\n this.originalCeilingYear2 = _data[\"originalCeilingYear2\"];\r\n this.originalCeilingYear3 = _data[\"originalCeilingYear3\"];\r\n this.originalCeilingYear4 = _data[\"originalCeilingYear4\"];\r\n this.originalCeilingYear5 = _data[\"originalCeilingYear5\"];\r\n this.originalCeilingYear6 = _data[\"originalCeilingYear6\"];\r\n this.currentCeilingYear1 = _data[\"currentCeilingYear1\"];\r\n this.currentCeilingYear2 = _data[\"currentCeilingYear2\"];\r\n this.currentCeilingYear3 = _data[\"currentCeilingYear3\"];\r\n this.currentCeilingYear4 = _data[\"currentCeilingYear4\"];\r\n this.currentCeilingYear5 = _data[\"currentCeilingYear5\"];\r\n this.currentCeilingYear6 = _data[\"currentCeilingYear6\"];\r\n this.supplement = _data[\"supplement\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): ContractDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new ContractDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"documentId\"] = this.documentId;\r\n data[\"document\"] = this.document ? this.document.toJSON() : undefined;\r\n data[\"productCategory\"] = this.productCategory;\r\n data[\"productSubcategory\"] = this.productSubcategory;\r\n data[\"contractStart\"] = this.contractStart ? this.contractStart.toISOString() : undefined;\r\n data[\"contractEnd\"] = this.contractEnd ? this.contractEnd.toISOString() : undefined;\r\n data[\"priceDistrict\"] = this.priceDistrict;\r\n data[\"premium\"] = this.premium;\r\n data[\"price\"] = this.price;\r\n data[\"fixedPricePremium\"] = this.fixedPricePremium;\r\n data[\"active\"] = this.active;\r\n data[\"originalCeilingYear1\"] = this.originalCeilingYear1;\r\n data[\"originalCeilingYear2\"] = this.originalCeilingYear2;\r\n data[\"originalCeilingYear3\"] = this.originalCeilingYear3;\r\n data[\"originalCeilingYear4\"] = this.originalCeilingYear4;\r\n data[\"originalCeilingYear5\"] = this.originalCeilingYear5;\r\n data[\"originalCeilingYear6\"] = this.originalCeilingYear6;\r\n data[\"currentCeilingYear1\"] = this.currentCeilingYear1;\r\n data[\"currentCeilingYear2\"] = this.currentCeilingYear2;\r\n data[\"currentCeilingYear3\"] = this.currentCeilingYear3;\r\n data[\"currentCeilingYear4\"] = this.currentCeilingYear4;\r\n data[\"currentCeilingYear5\"] = this.currentCeilingYear5;\r\n data[\"currentCeilingYear6\"] = this.currentCeilingYear6;\r\n data[\"supplement\"] = this.supplement;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IContractDto {\r\n documentId: number;\r\n document?: Document | undefined;\r\n productCategory: ProductCategory;\r\n productSubcategory: ProductSubcategory;\r\n contractStart: Date;\r\n contractEnd: Date;\r\n priceDistrict?: string | undefined;\r\n premium?: string | undefined;\r\n price?: number | undefined;\r\n fixedPricePremium?: number | undefined;\r\n active: boolean;\r\n originalCeilingYear1?: number | undefined;\r\n originalCeilingYear2?: number | undefined;\r\n originalCeilingYear3?: number | undefined;\r\n originalCeilingYear4?: number | undefined;\r\n originalCeilingYear5?: number | undefined;\r\n originalCeilingYear6?: number | undefined;\r\n currentCeilingYear1?: number | undefined;\r\n currentCeilingYear2?: number | undefined;\r\n currentCeilingYear3?: number | undefined;\r\n currentCeilingYear4?: number | undefined;\r\n currentCeilingYear5?: number | undefined;\r\n currentCeilingYear6?: number | undefined;\r\n supplement?: number | undefined;\r\n}\r\n\r\nexport class Document extends ModelBase implements IDocument {\r\n name?: string | undefined;\r\n documentType!: DocumentType;\r\n date!: Date;\r\n organization?: Organization | undefined;\r\n organizationId!: number;\r\n filePath?: string | undefined;\r\n fileName?: string | undefined;\r\n debtorPosting?: DebtorPosting | undefined;\r\n\r\n constructor(data?: IDocument) {\r\n super(data);\r\n }\r\n\r\n init(_data?: any) {\r\n super.init(_data);\r\n if (_data) {\r\n this.name = _data[\"name\"];\r\n this.documentType = _data[\"documentType\"];\r\n this.date = _data[\"date\"] ? new Date(_data[\"date\"].toString()) : undefined;\r\n this.organization = _data[\"organization\"] ? Organization.fromJS(_data[\"organization\"]) : undefined;\r\n this.organizationId = _data[\"organizationId\"];\r\n this.filePath = _data[\"filePath\"];\r\n this.fileName = _data[\"fileName\"];\r\n this.debtorPosting = _data[\"debtorPosting\"] ? DebtorPosting.fromJS(_data[\"debtorPosting\"]) : undefined;\r\n }\r\n }\r\n\r\n static fromJS(data: any): Document {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new Document();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"name\"] = this.name;\r\n data[\"documentType\"] = this.documentType;\r\n data[\"date\"] = this.date ? this.date.toISOString() : undefined;\r\n data[\"organization\"] = this.organization ? this.organization.toJSON() : undefined;\r\n data[\"organizationId\"] = this.organizationId;\r\n data[\"filePath\"] = this.filePath;\r\n data[\"fileName\"] = this.fileName;\r\n data[\"debtorPosting\"] = this.debtorPosting ? this.debtorPosting.toJSON() : undefined;\r\n super.toJSON(data);\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IDocument extends IModelBase {\r\n name?: string | undefined;\r\n documentType: DocumentType;\r\n date: Date;\r\n organization?: Organization | undefined;\r\n organizationId: number;\r\n filePath?: string | undefined;\r\n fileName?: string | undefined;\r\n debtorPosting?: DebtorPosting | undefined;\r\n}\r\n\r\nexport enum DocumentType {\r\n Contract = 0,\r\n GreenOptimizationContract = 1,\r\n GreenOptimizationReports = 2,\r\n Invoice = 3,\r\n BasicReports = 4,\r\n AnnualStatement = 5,\r\n}\r\n\r\nexport class Organization extends ModelBase implements IOrganization {\r\n accountNum?: string | undefined;\r\n accountName?: string | undefined;\r\n street?: string | undefined;\r\n houseNum?: string | undefined;\r\n zipcode?: string | undefined;\r\n city?: string | undefined;\r\n email?: string | undefined;\r\n phoneNumber?: string | undefined;\r\n fax?: string | undefined;\r\n cvr?: string | undefined;\r\n homepage?: string | undefined;\r\n accountConnections?: AccountConnection[] | undefined;\r\n contracts?: Contract[] | undefined;\r\n documents?: Document[] | undefined;\r\n debtorPostings?: DebtorPosting[] | undefined;\r\n greenOptimizationContracts?: GreenOptimizationContract[] | undefined;\r\n organizationsContacts?: OrganizationsContact[] | undefined;\r\n organizationsUsers?: OrganizationsUser[] | undefined;\r\n\r\n constructor(data?: IOrganization) {\r\n super(data);\r\n }\r\n\r\n init(_data?: any) {\r\n super.init(_data);\r\n if (_data) {\r\n this.accountNum = _data[\"accountNum\"];\r\n this.accountName = _data[\"accountName\"];\r\n this.street = _data[\"street\"];\r\n this.houseNum = _data[\"houseNum\"];\r\n this.zipcode = _data[\"zipcode\"];\r\n this.city = _data[\"city\"];\r\n this.email = _data[\"email\"];\r\n this.phoneNumber = _data[\"phoneNumber\"];\r\n this.fax = _data[\"fax\"];\r\n this.cvr = _data[\"cvr\"];\r\n this.homepage = _data[\"homepage\"];\r\n if (Array.isArray(_data[\"accountConnections\"])) {\r\n this.accountConnections = [] as any;\r\n for (let item of _data[\"accountConnections\"])\r\n this.accountConnections!.push(AccountConnection.fromJS(item));\r\n }\r\n if (Array.isArray(_data[\"contracts\"])) {\r\n this.contracts = [] as any;\r\n for (let item of _data[\"contracts\"])\r\n this.contracts!.push(Contract.fromJS(item));\r\n }\r\n if (Array.isArray(_data[\"documents\"])) {\r\n this.documents = [] as any;\r\n for (let item of _data[\"documents\"])\r\n this.documents!.push(Document.fromJS(item));\r\n }\r\n if (Array.isArray(_data[\"debtorPostings\"])) {\r\n this.debtorPostings = [] as any;\r\n for (let item of _data[\"debtorPostings\"])\r\n this.debtorPostings!.push(DebtorPosting.fromJS(item));\r\n }\r\n if (Array.isArray(_data[\"greenOptimizationContracts\"])) {\r\n this.greenOptimizationContracts = [] as any;\r\n for (let item of _data[\"greenOptimizationContracts\"])\r\n this.greenOptimizationContracts!.push(GreenOptimizationContract.fromJS(item));\r\n }\r\n if (Array.isArray(_data[\"organizationsContacts\"])) {\r\n this.organizationsContacts = [] as any;\r\n for (let item of _data[\"organizationsContacts\"])\r\n this.organizationsContacts!.push(OrganizationsContact.fromJS(item));\r\n }\r\n if (Array.isArray(_data[\"organizationsUsers\"])) {\r\n this.organizationsUsers = [] as any;\r\n for (let item of _data[\"organizationsUsers\"])\r\n this.organizationsUsers!.push(OrganizationsUser.fromJS(item));\r\n }\r\n }\r\n }\r\n\r\n static fromJS(data: any): Organization {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new Organization();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"accountNum\"] = this.accountNum;\r\n data[\"accountName\"] = this.accountName;\r\n data[\"street\"] = this.street;\r\n data[\"houseNum\"] = this.houseNum;\r\n data[\"zipcode\"] = this.zipcode;\r\n data[\"city\"] = this.city;\r\n data[\"email\"] = this.email;\r\n data[\"phoneNumber\"] = this.phoneNumber;\r\n data[\"fax\"] = this.fax;\r\n data[\"cvr\"] = this.cvr;\r\n data[\"homepage\"] = this.homepage;\r\n if (Array.isArray(this.accountConnections)) {\r\n data[\"accountConnections\"] = [];\r\n for (let item of this.accountConnections)\r\n data[\"accountConnections\"].push(item.toJSON());\r\n }\r\n if (Array.isArray(this.contracts)) {\r\n data[\"contracts\"] = [];\r\n for (let item of this.contracts)\r\n data[\"contracts\"].push(item.toJSON());\r\n }\r\n if (Array.isArray(this.documents)) {\r\n data[\"documents\"] = [];\r\n for (let item of this.documents)\r\n data[\"documents\"].push(item.toJSON());\r\n }\r\n if (Array.isArray(this.debtorPostings)) {\r\n data[\"debtorPostings\"] = [];\r\n for (let item of this.debtorPostings)\r\n data[\"debtorPostings\"].push(item.toJSON());\r\n }\r\n if (Array.isArray(this.greenOptimizationContracts)) {\r\n data[\"greenOptimizationContracts\"] = [];\r\n for (let item of this.greenOptimizationContracts)\r\n data[\"greenOptimizationContracts\"].push(item.toJSON());\r\n }\r\n if (Array.isArray(this.organizationsContacts)) {\r\n data[\"organizationsContacts\"] = [];\r\n for (let item of this.organizationsContacts)\r\n data[\"organizationsContacts\"].push(item.toJSON());\r\n }\r\n if (Array.isArray(this.organizationsUsers)) {\r\n data[\"organizationsUsers\"] = [];\r\n for (let item of this.organizationsUsers)\r\n data[\"organizationsUsers\"].push(item.toJSON());\r\n }\r\n super.toJSON(data);\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IOrganization extends IModelBase {\r\n accountNum?: string | undefined;\r\n accountName?: string | undefined;\r\n street?: string | undefined;\r\n houseNum?: string | undefined;\r\n zipcode?: string | undefined;\r\n city?: string | undefined;\r\n email?: string | undefined;\r\n phoneNumber?: string | undefined;\r\n fax?: string | undefined;\r\n cvr?: string | undefined;\r\n homepage?: string | undefined;\r\n accountConnections?: AccountConnection[] | undefined;\r\n contracts?: Contract[] | undefined;\r\n documents?: Document[] | undefined;\r\n debtorPostings?: DebtorPosting[] | undefined;\r\n greenOptimizationContracts?: GreenOptimizationContract[] | undefined;\r\n organizationsContacts?: OrganizationsContact[] | undefined;\r\n organizationsUsers?: OrganizationsUser[] | undefined;\r\n}\r\n\r\nexport abstract class ModelBaseNoId implements IModelBaseNoId {\r\n createdOn?: Date | undefined;\r\n modifiedOn?: Date | undefined;\r\n isDeleted!: boolean;\r\n\r\n constructor(data?: IModelBaseNoId) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.createdOn = _data[\"createdOn\"] ? new Date(_data[\"createdOn\"].toString()) : undefined;\r\n this.modifiedOn = _data[\"modifiedOn\"] ? new Date(_data[\"modifiedOn\"].toString()) : undefined;\r\n this.isDeleted = _data[\"isDeleted\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): ModelBaseNoId {\r\n data = typeof data === 'object' ? data : {};\r\n throw new Error(\"The abstract class 'ModelBaseNoId' cannot be instantiated.\");\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"createdOn\"] = this.createdOn ? this.createdOn.toISOString() : undefined;\r\n data[\"modifiedOn\"] = this.modifiedOn ? this.modifiedOn.toISOString() : undefined;\r\n data[\"isDeleted\"] = this.isDeleted;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IModelBaseNoId {\r\n createdOn?: Date | undefined;\r\n modifiedOn?: Date | undefined;\r\n isDeleted: boolean;\r\n}\r\n\r\nexport class AccountConnection extends ModelBaseNoId implements IAccountConnection {\r\n dwId!: number;\r\n accountNum?: string | undefined;\r\n accountName?: string | undefined;\r\n connectionid?: string | undefined;\r\n eanid?: string | undefined;\r\n street?: string | undefined;\r\n houseNum?: string | undefined;\r\n zipcode?: string | undefined;\r\n city?: string | undefined;\r\n organization?: Organization | undefined;\r\n organizationId?: number | undefined;\r\n contractStartDate!: Date;\r\n contractEndDate!: Date;\r\n\r\n constructor(data?: IAccountConnection) {\r\n super(data);\r\n }\r\n\r\n init(_data?: any) {\r\n super.init(_data);\r\n if (_data) {\r\n this.dwId = _data[\"dwId\"];\r\n this.accountNum = _data[\"accountNum\"];\r\n this.accountName = _data[\"accountName\"];\r\n this.connectionid = _data[\"connectionid\"];\r\n this.eanid = _data[\"eanid\"];\r\n this.street = _data[\"street\"];\r\n this.houseNum = _data[\"houseNum\"];\r\n this.zipcode = _data[\"zipcode\"];\r\n this.city = _data[\"city\"];\r\n this.organization = _data[\"organization\"] ? Organization.fromJS(_data[\"organization\"]) : undefined;\r\n this.organizationId = _data[\"organizationId\"];\r\n this.contractStartDate = _data[\"contractStartDate\"] ? new Date(_data[\"contractStartDate\"].toString()) : undefined;\r\n this.contractEndDate = _data[\"contractEndDate\"] ? new Date(_data[\"contractEndDate\"].toString()) : undefined;\r\n }\r\n }\r\n\r\n static fromJS(data: any): AccountConnection {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new AccountConnection();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"dwId\"] = this.dwId;\r\n data[\"accountNum\"] = this.accountNum;\r\n data[\"accountName\"] = this.accountName;\r\n data[\"connectionid\"] = this.connectionid;\r\n data[\"eanid\"] = this.eanid;\r\n data[\"street\"] = this.street;\r\n data[\"houseNum\"] = this.houseNum;\r\n data[\"zipcode\"] = this.zipcode;\r\n data[\"city\"] = this.city;\r\n data[\"organization\"] = this.organization ? this.organization.toJSON() : undefined;\r\n data[\"organizationId\"] = this.organizationId;\r\n data[\"contractStartDate\"] = this.contractStartDate ? this.contractStartDate.toISOString() : undefined;\r\n data[\"contractEndDate\"] = this.contractEndDate ? this.contractEndDate.toISOString() : undefined;\r\n super.toJSON(data);\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IAccountConnection extends IModelBaseNoId {\r\n dwId: number;\r\n accountNum?: string | undefined;\r\n accountName?: string | undefined;\r\n connectionid?: string | undefined;\r\n eanid?: string | undefined;\r\n street?: string | undefined;\r\n houseNum?: string | undefined;\r\n zipcode?: string | undefined;\r\n city?: string | undefined;\r\n organization?: Organization | undefined;\r\n organizationId?: number | undefined;\r\n contractStartDate: Date;\r\n contractEndDate: Date;\r\n}\r\n\r\nexport class Contract extends ModelBase implements IContract {\r\n productCategory!: ProductCategory;\r\n productSubcategory!: ProductSubcategory;\r\n contractStart!: Date;\r\n contractEnd!: Date;\r\n priceDistrict?: string | undefined;\r\n premium?: string | undefined;\r\n price?: number | undefined;\r\n fixedPricePremium?: number | undefined;\r\n active!: boolean;\r\n document?: Document | undefined;\r\n documentId!: number;\r\n organization?: Organization | undefined;\r\n organizationId!: number;\r\n originalCeilingYear1?: number | undefined;\r\n originalCeilingYear2?: number | undefined;\r\n originalCeilingYear3?: number | undefined;\r\n originalCeilingYear4?: number | undefined;\r\n originalCeilingYear5?: number | undefined;\r\n originalCeilingYear6?: number | undefined;\r\n currentCeilingYear1?: number | undefined;\r\n currentCeilingYear2?: number | undefined;\r\n currentCeilingYear3?: number | undefined;\r\n currentCeilingYear4?: number | undefined;\r\n currentCeilingYear5?: number | undefined;\r\n currentCeilingYear6?: number | undefined;\r\n supplement?: number | undefined;\r\n\r\n constructor(data?: IContract) {\r\n super(data);\r\n }\r\n\r\n init(_data?: any) {\r\n super.init(_data);\r\n if (_data) {\r\n this.productCategory = _data[\"productCategory\"];\r\n this.productSubcategory = _data[\"productSubcategory\"];\r\n this.contractStart = _data[\"contractStart\"] ? new Date(_data[\"contractStart\"].toString()) : undefined;\r\n this.contractEnd = _data[\"contractEnd\"] ? new Date(_data[\"contractEnd\"].toString()) : undefined;\r\n this.priceDistrict = _data[\"priceDistrict\"];\r\n this.premium = _data[\"premium\"];\r\n this.price = _data[\"price\"];\r\n this.fixedPricePremium = _data[\"fixedPricePremium\"];\r\n this.active = _data[\"active\"];\r\n this.document = _data[\"document\"] ? Document.fromJS(_data[\"document\"]) : undefined;\r\n this.documentId = _data[\"documentId\"];\r\n this.organization = _data[\"organization\"] ? Organization.fromJS(_data[\"organization\"]) : undefined;\r\n this.organizationId = _data[\"organizationId\"];\r\n this.originalCeilingYear1 = _data[\"originalCeilingYear1\"];\r\n this.originalCeilingYear2 = _data[\"originalCeilingYear2\"];\r\n this.originalCeilingYear3 = _data[\"originalCeilingYear3\"];\r\n this.originalCeilingYear4 = _data[\"originalCeilingYear4\"];\r\n this.originalCeilingYear5 = _data[\"originalCeilingYear5\"];\r\n this.originalCeilingYear6 = _data[\"originalCeilingYear6\"];\r\n this.currentCeilingYear1 = _data[\"currentCeilingYear1\"];\r\n this.currentCeilingYear2 = _data[\"currentCeilingYear2\"];\r\n this.currentCeilingYear3 = _data[\"currentCeilingYear3\"];\r\n this.currentCeilingYear4 = _data[\"currentCeilingYear4\"];\r\n this.currentCeilingYear5 = _data[\"currentCeilingYear5\"];\r\n this.currentCeilingYear6 = _data[\"currentCeilingYear6\"];\r\n this.supplement = _data[\"supplement\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): Contract {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new Contract();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"productCategory\"] = this.productCategory;\r\n data[\"productSubcategory\"] = this.productSubcategory;\r\n data[\"contractStart\"] = this.contractStart ? this.contractStart.toISOString() : undefined;\r\n data[\"contractEnd\"] = this.contractEnd ? this.contractEnd.toISOString() : undefined;\r\n data[\"priceDistrict\"] = this.priceDistrict;\r\n data[\"premium\"] = this.premium;\r\n data[\"price\"] = this.price;\r\n data[\"fixedPricePremium\"] = this.fixedPricePremium;\r\n data[\"active\"] = this.active;\r\n data[\"document\"] = this.document ? this.document.toJSON() : undefined;\r\n data[\"documentId\"] = this.documentId;\r\n data[\"organization\"] = this.organization ? this.organization.toJSON() : undefined;\r\n data[\"organizationId\"] = this.organizationId;\r\n data[\"originalCeilingYear1\"] = this.originalCeilingYear1;\r\n data[\"originalCeilingYear2\"] = this.originalCeilingYear2;\r\n data[\"originalCeilingYear3\"] = this.originalCeilingYear3;\r\n data[\"originalCeilingYear4\"] = this.originalCeilingYear4;\r\n data[\"originalCeilingYear5\"] = this.originalCeilingYear5;\r\n data[\"originalCeilingYear6\"] = this.originalCeilingYear6;\r\n data[\"currentCeilingYear1\"] = this.currentCeilingYear1;\r\n data[\"currentCeilingYear2\"] = this.currentCeilingYear2;\r\n data[\"currentCeilingYear3\"] = this.currentCeilingYear3;\r\n data[\"currentCeilingYear4\"] = this.currentCeilingYear4;\r\n data[\"currentCeilingYear5\"] = this.currentCeilingYear5;\r\n data[\"currentCeilingYear6\"] = this.currentCeilingYear6;\r\n data[\"supplement\"] = this.supplement;\r\n super.toJSON(data);\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IContract extends IModelBase {\r\n productCategory: ProductCategory;\r\n productSubcategory: ProductSubcategory;\r\n contractStart: Date;\r\n contractEnd: Date;\r\n priceDistrict?: string | undefined;\r\n premium?: string | undefined;\r\n price?: number | undefined;\r\n fixedPricePremium?: number | undefined;\r\n active: boolean;\r\n document?: Document | undefined;\r\n documentId: number;\r\n organization?: Organization | undefined;\r\n organizationId: number;\r\n originalCeilingYear1?: number | undefined;\r\n originalCeilingYear2?: number | undefined;\r\n originalCeilingYear3?: number | undefined;\r\n originalCeilingYear4?: number | undefined;\r\n originalCeilingYear5?: number | undefined;\r\n originalCeilingYear6?: number | undefined;\r\n currentCeilingYear1?: number | undefined;\r\n currentCeilingYear2?: number | undefined;\r\n currentCeilingYear3?: number | undefined;\r\n currentCeilingYear4?: number | undefined;\r\n currentCeilingYear5?: number | undefined;\r\n currentCeilingYear6?: number | undefined;\r\n supplement?: number | undefined;\r\n}\r\n\r\nexport enum ProductCategory {\r\n ElectricitySales = 0,\r\n GreenEnergy = 1,\r\n Counseling = 2,\r\n}\r\n\r\nexport enum ProductSubcategory {\r\n Spottime = 0,\r\n SMO = 1,\r\n FASTfast = 2,\r\n FASTfastUp = 3,\r\n FASTloft = 4,\r\n FLEXloft = 5,\r\n FLEXfast = 6,\r\n FLEXvalg = 7,\r\n NONstop = 8,\r\n VINDenergy = 9,\r\n ClimateAction = 10,\r\n FASTfastSPOTtime = 11,\r\n FASTfastExclProfilSPOTtime = 12,\r\n FLEXloftSPOTtime = 13,\r\n CO2Mapping = 14,\r\n EnergyCalculation = 15,\r\n EnergyLabeling = 16,\r\n EnergySparring = 17,\r\n EnergySupervision = 18,\r\n OmegaEMS = 19,\r\n PriorityList = 20,\r\n RealizationHelp = 21,\r\n RealizationStart = 22,\r\n SubsidiesCase = 23,\r\n HourCase = 24,\r\n FLEXfastExclProfile = 25,\r\n FLEXfastExclProfilSPOTtime = 26,\r\n ClimateForest = 27,\r\n SolarCell = 28,\r\n SubsidiesHelp = 29,\r\n SpottimeNonStopWithWindPower = 30,\r\n EnergyCheck = 31,\r\n EsgReport = 32,\r\n PriceAlert = 33,\r\n FLEXfastFLEXSpot = 34,\r\n TariffCheck = 35,\r\n NewProduct = 255,\r\n}\r\n\r\nexport class DebtorPosting extends ModelBase implements IDebtorPosting {\r\n document?: Document | undefined;\r\n documentId?: number | undefined;\r\n debtorPostingType?: DebtorPostingType | undefined;\r\n invoiceNumber?: string | undefined;\r\n description?: string | undefined;\r\n date!: Date;\r\n dueDate!: Date;\r\n currency?: string | undefined;\r\n debet?: number | undefined;\r\n credit?: number | undefined;\r\n balance!: number;\r\n organization?: Organization | undefined;\r\n organizationId!: number;\r\n source_Key!: number;\r\n\r\n constructor(data?: IDebtorPosting) {\r\n super(data);\r\n }\r\n\r\n init(_data?: any) {\r\n super.init(_data);\r\n if (_data) {\r\n this.document = _data[\"document\"] ? Document.fromJS(_data[\"document\"]) : undefined;\r\n this.documentId = _data[\"documentId\"];\r\n this.debtorPostingType = _data[\"debtorPostingType\"];\r\n this.invoiceNumber = _data[\"invoiceNumber\"];\r\n this.description = _data[\"description\"];\r\n this.date = _data[\"date\"] ? new Date(_data[\"date\"].toString()) : undefined;\r\n this.dueDate = _data[\"dueDate\"] ? new Date(_data[\"dueDate\"].toString()) : undefined;\r\n this.currency = _data[\"currency\"];\r\n this.debet = _data[\"debet\"];\r\n this.credit = _data[\"credit\"];\r\n this.balance = _data[\"balance\"];\r\n this.organization = _data[\"organization\"] ? Organization.fromJS(_data[\"organization\"]) : undefined;\r\n this.organizationId = _data[\"organizationId\"];\r\n this.source_Key = _data[\"source_Key\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): DebtorPosting {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new DebtorPosting();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"document\"] = this.document ? this.document.toJSON() : undefined;\r\n data[\"documentId\"] = this.documentId;\r\n data[\"debtorPostingType\"] = this.debtorPostingType;\r\n data[\"invoiceNumber\"] = this.invoiceNumber;\r\n data[\"description\"] = this.description;\r\n data[\"date\"] = this.date ? this.date.toISOString() : undefined;\r\n data[\"dueDate\"] = this.dueDate ? this.dueDate.toISOString() : undefined;\r\n data[\"currency\"] = this.currency;\r\n data[\"debet\"] = this.debet;\r\n data[\"credit\"] = this.credit;\r\n data[\"balance\"] = this.balance;\r\n data[\"organization\"] = this.organization ? this.organization.toJSON() : undefined;\r\n data[\"organizationId\"] = this.organizationId;\r\n data[\"source_Key\"] = this.source_Key;\r\n super.toJSON(data);\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IDebtorPosting extends IModelBase {\r\n document?: Document | undefined;\r\n documentId?: number | undefined;\r\n debtorPostingType?: DebtorPostingType | undefined;\r\n invoiceNumber?: string | undefined;\r\n description?: string | undefined;\r\n date: Date;\r\n dueDate: Date;\r\n currency?: string | undefined;\r\n debet?: number | undefined;\r\n credit?: number | undefined;\r\n balance: number;\r\n organization?: Organization | undefined;\r\n organizationId: number;\r\n source_Key: number;\r\n}\r\n\r\nexport enum DebtorPostingType {\r\n Invoice = 0,\r\n Credit = 1,\r\n Other = 2,\r\n}\r\n\r\nexport class GreenOptimizationContract extends ModelBase implements IGreenOptimizationContract {\r\n windEnergy?: boolean | undefined;\r\n climateEnergy?: boolean | undefined;\r\n co2Mapping?: boolean | undefined;\r\n energyAdvice?: boolean | undefined;\r\n climateForest?: boolean | undefined;\r\n organization?: Organization | undefined;\r\n organizationId!: number;\r\n\r\n constructor(data?: IGreenOptimizationContract) {\r\n super(data);\r\n }\r\n\r\n init(_data?: any) {\r\n super.init(_data);\r\n if (_data) {\r\n this.windEnergy = _data[\"windEnergy\"];\r\n this.climateEnergy = _data[\"climateEnergy\"];\r\n this.co2Mapping = _data[\"co2Mapping\"];\r\n this.energyAdvice = _data[\"energyAdvice\"];\r\n this.climateForest = _data[\"climateForest\"];\r\n this.organization = _data[\"organization\"] ? Organization.fromJS(_data[\"organization\"]) : undefined;\r\n this.organizationId = _data[\"organizationId\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): GreenOptimizationContract {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new GreenOptimizationContract();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"windEnergy\"] = this.windEnergy;\r\n data[\"climateEnergy\"] = this.climateEnergy;\r\n data[\"co2Mapping\"] = this.co2Mapping;\r\n data[\"energyAdvice\"] = this.energyAdvice;\r\n data[\"climateForest\"] = this.climateForest;\r\n data[\"organization\"] = this.organization ? this.organization.toJSON() : undefined;\r\n data[\"organizationId\"] = this.organizationId;\r\n super.toJSON(data);\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IGreenOptimizationContract extends IModelBase {\r\n windEnergy?: boolean | undefined;\r\n climateEnergy?: boolean | undefined;\r\n co2Mapping?: boolean | undefined;\r\n energyAdvice?: boolean | undefined;\r\n climateForest?: boolean | undefined;\r\n organization?: Organization | undefined;\r\n organizationId: number;\r\n}\r\n\r\nexport class OrganizationsContact implements IOrganizationsContact {\r\n organization?: Organization | undefined;\r\n organizationId!: number;\r\n contact?: Contact | undefined;\r\n contactId!: number;\r\n\r\n constructor(data?: IOrganizationsContact) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.organization = _data[\"organization\"] ? Organization.fromJS(_data[\"organization\"]) : undefined;\r\n this.organizationId = _data[\"organizationId\"];\r\n this.contact = _data[\"contact\"] ? Contact.fromJS(_data[\"contact\"]) : undefined;\r\n this.contactId = _data[\"contactId\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): OrganizationsContact {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new OrganizationsContact();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"organization\"] = this.organization ? this.organization.toJSON() : undefined;\r\n data[\"organizationId\"] = this.organizationId;\r\n data[\"contact\"] = this.contact ? this.contact.toJSON() : undefined;\r\n data[\"contactId\"] = this.contactId;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IOrganizationsContact {\r\n organization?: Organization | undefined;\r\n organizationId: number;\r\n contact?: Contact | undefined;\r\n contactId: number;\r\n}\r\n\r\nexport class Contact extends ModelBase implements IContact {\r\n contactTitle?: string | undefined;\r\n name?: string | undefined;\r\n phoneNumber?: string | undefined;\r\n email?: string | undefined;\r\n filePath?: string | undefined;\r\n fileName?: string | undefined;\r\n organizationsContacts?: OrganizationsContact[] | undefined;\r\n\r\n constructor(data?: IContact) {\r\n super(data);\r\n }\r\n\r\n init(_data?: any) {\r\n super.init(_data);\r\n if (_data) {\r\n this.contactTitle = _data[\"contactTitle\"];\r\n this.name = _data[\"name\"];\r\n this.phoneNumber = _data[\"phoneNumber\"];\r\n this.email = _data[\"email\"];\r\n this.filePath = _data[\"filePath\"];\r\n this.fileName = _data[\"fileName\"];\r\n if (Array.isArray(_data[\"organizationsContacts\"])) {\r\n this.organizationsContacts = [] as any;\r\n for (let item of _data[\"organizationsContacts\"])\r\n this.organizationsContacts!.push(OrganizationsContact.fromJS(item));\r\n }\r\n }\r\n }\r\n\r\n static fromJS(data: any): Contact {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new Contact();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"contactTitle\"] = this.contactTitle;\r\n data[\"name\"] = this.name;\r\n data[\"phoneNumber\"] = this.phoneNumber;\r\n data[\"email\"] = this.email;\r\n data[\"filePath\"] = this.filePath;\r\n data[\"fileName\"] = this.fileName;\r\n if (Array.isArray(this.organizationsContacts)) {\r\n data[\"organizationsContacts\"] = [];\r\n for (let item of this.organizationsContacts)\r\n data[\"organizationsContacts\"].push(item.toJSON());\r\n }\r\n super.toJSON(data);\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IContact extends IModelBase {\r\n contactTitle?: string | undefined;\r\n name?: string | undefined;\r\n phoneNumber?: string | undefined;\r\n email?: string | undefined;\r\n filePath?: string | undefined;\r\n fileName?: string | undefined;\r\n organizationsContacts?: OrganizationsContact[] | undefined;\r\n}\r\n\r\nexport class OrganizationsUser implements IOrganizationsUser {\r\n organization?: Organization | undefined;\r\n organizationId!: number;\r\n user?: User | undefined;\r\n userId!: number;\r\n lastVisitedMarketingPage!: Date;\r\n\r\n constructor(data?: IOrganizationsUser) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.organization = _data[\"organization\"] ? Organization.fromJS(_data[\"organization\"]) : undefined;\r\n this.organizationId = _data[\"organizationId\"];\r\n this.user = _data[\"user\"] ? User.fromJS(_data[\"user\"]) : undefined;\r\n this.userId = _data[\"userId\"];\r\n this.lastVisitedMarketingPage = _data[\"lastVisitedMarketingPage\"] ? new Date(_data[\"lastVisitedMarketingPage\"].toString()) : undefined;\r\n }\r\n }\r\n\r\n static fromJS(data: any): OrganizationsUser {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new OrganizationsUser();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"organization\"] = this.organization ? this.organization.toJSON() : undefined;\r\n data[\"organizationId\"] = this.organizationId;\r\n data[\"user\"] = this.user ? this.user.toJSON() : undefined;\r\n data[\"userId\"] = this.userId;\r\n data[\"lastVisitedMarketingPage\"] = this.lastVisitedMarketingPage ? this.lastVisitedMarketingPage.toISOString() : undefined;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IOrganizationsUser {\r\n organization?: Organization | undefined;\r\n organizationId: number;\r\n user?: User | undefined;\r\n userId: number;\r\n lastVisitedMarketingPage: Date;\r\n}\r\n\r\nexport class User extends ModelBase implements IUser {\r\n authId?: string | undefined;\r\n name?: string | undefined;\r\n email?: string | undefined;\r\n phonenumber?: string | undefined;\r\n title?: string | undefined;\r\n role!: UserRole;\r\n inviteSent?: Date | undefined;\r\n inviteAccepted?: Date | undefined;\r\n organizationsUsers?: OrganizationsUser[] | undefined;\r\n\r\n constructor(data?: IUser) {\r\n super(data);\r\n }\r\n\r\n init(_data?: any) {\r\n super.init(_data);\r\n if (_data) {\r\n this.authId = _data[\"authId\"];\r\n this.name = _data[\"name\"];\r\n this.email = _data[\"email\"];\r\n this.phonenumber = _data[\"phonenumber\"];\r\n this.title = _data[\"title\"];\r\n this.role = _data[\"role\"];\r\n this.inviteSent = _data[\"inviteSent\"] ? new Date(_data[\"inviteSent\"].toString()) : undefined;\r\n this.inviteAccepted = _data[\"inviteAccepted\"] ? new Date(_data[\"inviteAccepted\"].toString()) : undefined;\r\n if (Array.isArray(_data[\"organizationsUsers\"])) {\r\n this.organizationsUsers = [] as any;\r\n for (let item of _data[\"organizationsUsers\"])\r\n this.organizationsUsers!.push(OrganizationsUser.fromJS(item));\r\n }\r\n }\r\n }\r\n\r\n static fromJS(data: any): User {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new User();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"authId\"] = this.authId;\r\n data[\"name\"] = this.name;\r\n data[\"email\"] = this.email;\r\n data[\"phonenumber\"] = this.phonenumber;\r\n data[\"title\"] = this.title;\r\n data[\"role\"] = this.role;\r\n data[\"inviteSent\"] = this.inviteSent ? this.inviteSent.toISOString() : undefined;\r\n data[\"inviteAccepted\"] = this.inviteAccepted ? this.inviteAccepted.toISOString() : undefined;\r\n if (Array.isArray(this.organizationsUsers)) {\r\n data[\"organizationsUsers\"] = [];\r\n for (let item of this.organizationsUsers)\r\n data[\"organizationsUsers\"].push(item.toJSON());\r\n }\r\n super.toJSON(data);\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IUser extends IModelBase {\r\n authId?: string | undefined;\r\n name?: string | undefined;\r\n email?: string | undefined;\r\n phonenumber?: string | undefined;\r\n title?: string | undefined;\r\n role: UserRole;\r\n inviteSent?: Date | undefined;\r\n inviteAccepted?: Date | undefined;\r\n organizationsUsers?: OrganizationsUser[] | undefined;\r\n}\r\n\r\nexport enum UserRole {\r\n User = 0,\r\n Admin = 1,\r\n}\r\n\r\nexport class CustomerServiceDto implements ICustomerServiceDto {\r\n mondayToThursday?: string | undefined;\r\n friday?: string | undefined;\r\n nextInvoice!: Date;\r\n loginPageText?: string | undefined;\r\n showLoginPageText!: boolean;\r\n\r\n constructor(data?: ICustomerServiceDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.mondayToThursday = _data[\"mondayToThursday\"];\r\n this.friday = _data[\"friday\"];\r\n this.nextInvoice = _data[\"nextInvoice\"] ? new Date(_data[\"nextInvoice\"].toString()) : undefined;\r\n this.loginPageText = _data[\"loginPageText\"];\r\n this.showLoginPageText = _data[\"showLoginPageText\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): CustomerServiceDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new CustomerServiceDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"mondayToThursday\"] = this.mondayToThursday;\r\n data[\"friday\"] = this.friday;\r\n data[\"nextInvoice\"] = this.nextInvoice ? this.nextInvoice.toISOString() : undefined;\r\n data[\"loginPageText\"] = this.loginPageText;\r\n data[\"showLoginPageText\"] = this.showLoginPageText;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface ICustomerServiceDto {\r\n mondayToThursday?: string | undefined;\r\n friday?: string | undefined;\r\n nextInvoice: Date;\r\n loginPageText?: string | undefined;\r\n showLoginPageText: boolean;\r\n}\r\n\r\nexport class DebtorPostingDto implements IDebtorPostingDto {\r\n invoiceNumber?: string | undefined;\r\n description?: string | undefined;\r\n date!: Date;\r\n dueDate!: Date;\r\n currency?: string | undefined;\r\n debet?: number | undefined;\r\n credit?: number | undefined;\r\n balance!: number;\r\n debtorPostingType?: DebtorPostingType | undefined;\r\n document?: Document | undefined;\r\n documentId!: number;\r\n\r\n constructor(data?: IDebtorPostingDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.invoiceNumber = _data[\"invoiceNumber\"];\r\n this.description = _data[\"description\"];\r\n this.date = _data[\"date\"] ? new Date(_data[\"date\"].toString()) : undefined;\r\n this.dueDate = _data[\"dueDate\"] ? new Date(_data[\"dueDate\"].toString()) : undefined;\r\n this.currency = _data[\"currency\"];\r\n this.debet = _data[\"debet\"];\r\n this.credit = _data[\"credit\"];\r\n this.balance = _data[\"balance\"];\r\n this.debtorPostingType = _data[\"debtorPostingType\"];\r\n this.document = _data[\"document\"] ? Document.fromJS(_data[\"document\"]) : undefined;\r\n this.documentId = _data[\"documentId\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): DebtorPostingDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new DebtorPostingDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"invoiceNumber\"] = this.invoiceNumber;\r\n data[\"description\"] = this.description;\r\n data[\"date\"] = this.date ? this.date.toISOString() : undefined;\r\n data[\"dueDate\"] = this.dueDate ? this.dueDate.toISOString() : undefined;\r\n data[\"currency\"] = this.currency;\r\n data[\"debet\"] = this.debet;\r\n data[\"credit\"] = this.credit;\r\n data[\"balance\"] = this.balance;\r\n data[\"debtorPostingType\"] = this.debtorPostingType;\r\n data[\"document\"] = this.document ? this.document.toJSON() : undefined;\r\n data[\"documentId\"] = this.documentId;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IDebtorPostingDto {\r\n invoiceNumber?: string | undefined;\r\n description?: string | undefined;\r\n date: Date;\r\n dueDate: Date;\r\n currency?: string | undefined;\r\n debet?: number | undefined;\r\n credit?: number | undefined;\r\n balance: number;\r\n debtorPostingType?: DebtorPostingType | undefined;\r\n document?: Document | undefined;\r\n documentId: number;\r\n}\r\n\r\nexport class DocumentDto implements IDocumentDto {\r\n id!: number;\r\n name?: string | undefined;\r\n documentType!: DocumentType;\r\n date!: Date;\r\n\r\n constructor(data?: IDocumentDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.name = _data[\"name\"];\r\n this.documentType = _data[\"documentType\"];\r\n this.date = _data[\"date\"] ? new Date(_data[\"date\"].toString()) : undefined;\r\n }\r\n }\r\n\r\n static fromJS(data: any): DocumentDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new DocumentDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"name\"] = this.name;\r\n data[\"documentType\"] = this.documentType;\r\n data[\"date\"] = this.date ? this.date.toISOString() : undefined;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IDocumentDto {\r\n id: number;\r\n name?: string | undefined;\r\n documentType: DocumentType;\r\n date: Date;\r\n}\r\n\r\nexport class DebtorPostingDocumentDto implements IDebtorPostingDocumentDto {\r\n id!: number;\r\n name?: string | undefined;\r\n documentType!: DocumentType;\r\n date!: Date;\r\n debtorPostingType?: DebtorPostingType | undefined;\r\n amount?: number | undefined;\r\n invoiceNumber?: string | undefined;\r\n\r\n constructor(data?: IDebtorPostingDocumentDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.name = _data[\"name\"];\r\n this.documentType = _data[\"documentType\"];\r\n this.date = _data[\"date\"] ? new Date(_data[\"date\"].toString()) : undefined;\r\n this.debtorPostingType = _data[\"debtorPostingType\"];\r\n this.amount = _data[\"amount\"];\r\n this.invoiceNumber = _data[\"invoiceNumber\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): DebtorPostingDocumentDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new DebtorPostingDocumentDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"name\"] = this.name;\r\n data[\"documentType\"] = this.documentType;\r\n data[\"date\"] = this.date ? this.date.toISOString() : undefined;\r\n data[\"debtorPostingType\"] = this.debtorPostingType;\r\n data[\"amount\"] = this.amount;\r\n data[\"invoiceNumber\"] = this.invoiceNumber;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IDebtorPostingDocumentDto {\r\n id: number;\r\n name?: string | undefined;\r\n documentType: DocumentType;\r\n date: Date;\r\n debtorPostingType?: DebtorPostingType | undefined;\r\n amount?: number | undefined;\r\n invoiceNumber?: string | undefined;\r\n}\r\n\r\nexport class GreenOptimizationContractDto extends ModelBase implements IGreenOptimizationContractDto {\r\n windEnergy?: boolean | undefined;\r\n climateEnergy?: boolean | undefined;\r\n co2Mapping?: boolean | undefined;\r\n energyAdvice?: boolean | undefined;\r\n climateForest?: boolean | undefined;\r\n\r\n constructor(data?: IGreenOptimizationContractDto) {\r\n super(data);\r\n }\r\n\r\n init(_data?: any) {\r\n super.init(_data);\r\n if (_data) {\r\n this.windEnergy = _data[\"windEnergy\"];\r\n this.climateEnergy = _data[\"climateEnergy\"];\r\n this.co2Mapping = _data[\"co2Mapping\"];\r\n this.energyAdvice = _data[\"energyAdvice\"];\r\n this.climateForest = _data[\"climateForest\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): GreenOptimizationContractDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new GreenOptimizationContractDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"windEnergy\"] = this.windEnergy;\r\n data[\"climateEnergy\"] = this.climateEnergy;\r\n data[\"co2Mapping\"] = this.co2Mapping;\r\n data[\"energyAdvice\"] = this.energyAdvice;\r\n data[\"climateForest\"] = this.climateForest;\r\n super.toJSON(data);\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IGreenOptimizationContractDto extends IModelBase {\r\n windEnergy?: boolean | undefined;\r\n climateEnergy?: boolean | undefined;\r\n co2Mapping?: boolean | undefined;\r\n energyAdvice?: boolean | undefined;\r\n climateForest?: boolean | undefined;\r\n}\r\n\r\nexport class UnitDto implements IUnitDto {\r\n accountName?: string | undefined;\r\n connectionid?: string | undefined;\r\n eanId?: string | undefined;\r\n street?: string | undefined;\r\n houseNum?: string | undefined;\r\n zipcode?: string | undefined;\r\n city?: string | undefined;\r\n contractStartDate!: Date;\r\n contractEndDate!: Date;\r\n\r\n constructor(data?: IUnitDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.accountName = _data[\"accountName\"];\r\n this.connectionid = _data[\"connectionid\"];\r\n this.eanId = _data[\"eanId\"];\r\n this.street = _data[\"street\"];\r\n this.houseNum = _data[\"houseNum\"];\r\n this.zipcode = _data[\"zipcode\"];\r\n this.city = _data[\"city\"];\r\n this.contractStartDate = _data[\"contractStartDate\"] ? new Date(_data[\"contractStartDate\"].toString()) : undefined;\r\n this.contractEndDate = _data[\"contractEndDate\"] ? new Date(_data[\"contractEndDate\"].toString()) : undefined;\r\n }\r\n }\r\n\r\n static fromJS(data: any): UnitDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new UnitDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"accountName\"] = this.accountName;\r\n data[\"connectionid\"] = this.connectionid;\r\n data[\"eanId\"] = this.eanId;\r\n data[\"street\"] = this.street;\r\n data[\"houseNum\"] = this.houseNum;\r\n data[\"zipcode\"] = this.zipcode;\r\n data[\"city\"] = this.city;\r\n data[\"contractStartDate\"] = this.contractStartDate ? this.contractStartDate.toISOString() : undefined;\r\n data[\"contractEndDate\"] = this.contractEndDate ? this.contractEndDate.toISOString() : undefined;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IUnitDto {\r\n accountName?: string | undefined;\r\n connectionid?: string | undefined;\r\n eanId?: string | undefined;\r\n street?: string | undefined;\r\n houseNum?: string | undefined;\r\n zipcode?: string | undefined;\r\n city?: string | undefined;\r\n contractStartDate: Date;\r\n contractEndDate: Date;\r\n}\r\n\r\nexport class MarketingMaterialDto implements IMarketingMaterialDto {\r\n id!: number;\r\n marketingMaterialCategory!: MarketingMaterialCategories;\r\n materialType!: MaterialTypes;\r\n materialFormat!: MaterialFormats;\r\n newToUser!: boolean;\r\n\r\n constructor(data?: IMarketingMaterialDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.marketingMaterialCategory = _data[\"marketingMaterialCategory\"];\r\n this.materialType = _data[\"materialType\"];\r\n this.materialFormat = _data[\"materialFormat\"];\r\n this.newToUser = _data[\"newToUser\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): MarketingMaterialDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new MarketingMaterialDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"marketingMaterialCategory\"] = this.marketingMaterialCategory;\r\n data[\"materialType\"] = this.materialType;\r\n data[\"materialFormat\"] = this.materialFormat;\r\n data[\"newToUser\"] = this.newToUser;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IMarketingMaterialDto {\r\n id: number;\r\n marketingMaterialCategory: MarketingMaterialCategories;\r\n materialType: MaterialTypes;\r\n materialFormat: MaterialFormats;\r\n newToUser: boolean;\r\n}\r\n\r\nexport enum MarketingMaterialCategories {\r\n NotSet = 0,\r\n WindPower = 1,\r\n ClimateAction = 2,\r\n Co2Mapping = 3,\r\n EnergyConsulting = 4,\r\n ClimateForest = 5,\r\n}\r\n\r\nexport enum MaterialTypes {\r\n NotSet = 0,\r\n WideBanner = 1,\r\n SquareBanner = 2,\r\n WideGroupedBanners = 3,\r\n SquareGroupedBanners = 4,\r\n Diploma = 5,\r\n SoMeTexts = 8,\r\n CSRTexts = 9,\r\n}\r\n\r\nexport enum MaterialFormats {\r\n NotSet = 0,\r\n PDF = 1,\r\n JPG = 2,\r\n PNG = 3,\r\n Word = 4,\r\n MP4 = 5,\r\n}\r\n\r\nexport class News implements INews {\r\n id?: string | undefined;\r\n categoryId?: string | undefined;\r\n authorName?: string | undefined;\r\n summary?: string | undefined;\r\n body?: string | undefined;\r\n headerImageSrc?: string | undefined;\r\n publishDate!: Date;\r\n category?: string | undefined;\r\n\r\n constructor(data?: INews) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.categoryId = _data[\"categoryId\"];\r\n this.authorName = _data[\"authorName\"];\r\n this.summary = _data[\"summary\"];\r\n this.body = _data[\"body\"];\r\n this.headerImageSrc = _data[\"headerImageSrc\"];\r\n this.publishDate = _data[\"publishDate\"] ? new Date(_data[\"publishDate\"].toString()) : undefined;\r\n this.category = _data[\"category\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): News {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new News();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"categoryId\"] = this.categoryId;\r\n data[\"authorName\"] = this.authorName;\r\n data[\"summary\"] = this.summary;\r\n data[\"body\"] = this.body;\r\n data[\"headerImageSrc\"] = this.headerImageSrc;\r\n data[\"publishDate\"] = this.publishDate ? this.publishDate.toISOString() : undefined;\r\n data[\"category\"] = this.category;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface INews {\r\n id?: string | undefined;\r\n categoryId?: string | undefined;\r\n authorName?: string | undefined;\r\n summary?: string | undefined;\r\n body?: string | undefined;\r\n headerImageSrc?: string | undefined;\r\n publishDate: Date;\r\n category?: string | undefined;\r\n}\r\n\r\nexport class OrganizationDto implements IOrganizationDto {\r\n organizationId!: number;\r\n accountNum?: string | undefined;\r\n accountName?: string | undefined;\r\n connectionid?: string | undefined;\r\n street?: string | undefined;\r\n houseNum?: string | undefined;\r\n zipcode?: string | undefined;\r\n city?: string | undefined;\r\n email?: string | undefined;\r\n phonenumber?: string | undefined;\r\n fax?: string | undefined;\r\n cvr?: string | undefined;\r\n homepage?: string | undefined;\r\n\r\n constructor(data?: IOrganizationDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.organizationId = _data[\"organizationId\"];\r\n this.accountNum = _data[\"accountNum\"];\r\n this.accountName = _data[\"accountName\"];\r\n this.connectionid = _data[\"connectionid\"];\r\n this.street = _data[\"street\"];\r\n this.houseNum = _data[\"houseNum\"];\r\n this.zipcode = _data[\"zipcode\"];\r\n this.city = _data[\"city\"];\r\n this.email = _data[\"email\"];\r\n this.phonenumber = _data[\"phonenumber\"];\r\n this.fax = _data[\"fax\"];\r\n this.cvr = _data[\"cvr\"];\r\n this.homepage = _data[\"homepage\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): OrganizationDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new OrganizationDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"organizationId\"] = this.organizationId;\r\n data[\"accountNum\"] = this.accountNum;\r\n data[\"accountName\"] = this.accountName;\r\n data[\"connectionid\"] = this.connectionid;\r\n data[\"street\"] = this.street;\r\n data[\"houseNum\"] = this.houseNum;\r\n data[\"zipcode\"] = this.zipcode;\r\n data[\"city\"] = this.city;\r\n data[\"email\"] = this.email;\r\n data[\"phonenumber\"] = this.phonenumber;\r\n data[\"fax\"] = this.fax;\r\n data[\"cvr\"] = this.cvr;\r\n data[\"homepage\"] = this.homepage;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IOrganizationDto {\r\n organizationId: number;\r\n accountNum?: string | undefined;\r\n accountName?: string | undefined;\r\n connectionid?: string | undefined;\r\n street?: string | undefined;\r\n houseNum?: string | undefined;\r\n zipcode?: string | undefined;\r\n city?: string | undefined;\r\n email?: string | undefined;\r\n phonenumber?: string | undefined;\r\n fax?: string | undefined;\r\n cvr?: string | undefined;\r\n homepage?: string | undefined;\r\n}\r\n\r\nexport class StatusMessageDto implements IStatusMessageDto {\r\n id!: number;\r\n title?: string | undefined;\r\n text?: string | undefined;\r\n date!: Date;\r\n\r\n constructor(data?: IStatusMessageDto) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.id = _data[\"id\"];\r\n this.title = _data[\"title\"];\r\n this.text = _data[\"text\"];\r\n this.date = _data[\"date\"] ? new Date(_data[\"date\"].toString()) : undefined;\r\n }\r\n }\r\n\r\n static fromJS(data: any): StatusMessageDto {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new StatusMessageDto();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"id\"] = this.id;\r\n data[\"title\"] = this.title;\r\n data[\"text\"] = this.text;\r\n data[\"date\"] = this.date ? this.date.toISOString() : undefined;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IStatusMessageDto {\r\n id: number;\r\n title?: string | undefined;\r\n text?: string | undefined;\r\n date: Date;\r\n}\r\n\r\nexport class WebHookUserDTO implements IWebHookUserDTO {\r\n email?: string | undefined;\r\n authId?: string | undefined;\r\n name?: string | undefined;\r\n extension_Role?: string | undefined;\r\n\r\n constructor(data?: IWebHookUserDTO) {\r\n if (data) {\r\n for (var property in data) {\r\n if (data.hasOwnProperty(property))\r\n (this)[property] = (data)[property];\r\n }\r\n }\r\n }\r\n\r\n init(_data?: any) {\r\n if (_data) {\r\n this.email = _data[\"email\"];\r\n this.authId = _data[\"authId\"];\r\n this.name = _data[\"name\"];\r\n this.extension_Role = _data[\"extension_Role\"];\r\n }\r\n }\r\n\r\n static fromJS(data: any): WebHookUserDTO {\r\n data = typeof data === 'object' ? data : {};\r\n let result = new WebHookUserDTO();\r\n result.init(data);\r\n return result;\r\n }\r\n\r\n toJSON(data?: any) {\r\n data = typeof data === 'object' ? data : {};\r\n data[\"email\"] = this.email;\r\n data[\"authId\"] = this.authId;\r\n data[\"name\"] = this.name;\r\n data[\"extension_Role\"] = this.extension_Role;\r\n return data;\r\n }\r\n}\r\n\r\nexport interface IWebHookUserDTO {\r\n email?: string | undefined;\r\n authId?: string | undefined;\r\n name?: string | undefined;\r\n extension_Role?: string | undefined;\r\n}\r\n\r\nexport interface FileResponse {\r\n data: Blob;\r\n status: number;\r\n fileName?: string;\r\n headers?: { [name: string]: any };\r\n}\r\n\r\nexport class ApiException extends Error {\r\n message: string;\r\n status: number;\r\n response: string;\r\n headers: { [key: string]: any; };\r\n result: any;\r\n\r\n constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) {\r\n super();\r\n\r\n this.message = message;\r\n this.status = status;\r\n this.response = response;\r\n this.headers = headers;\r\n this.result = result;\r\n }\r\n\r\n protected isApiException = true;\r\n\r\n static isApiException(obj: any): obj is ApiException {\r\n return obj.isApiException === true;\r\n }\r\n}\r\n\r\nfunction throwException(message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): any {\r\n throw new ApiException(message, status, response, headers, result);\r\n}\r\n\r\n// This class is copied to api.ts when running codegen.","export function isJson(str: string) {\r\n try {\r\n JSON.parse(str);\r\n } catch (e) {\r\n return false;\r\n }\r\n return true;\r\n}\r\n\r\n","import {\r\n CompetitionClient,\r\n ConsumptionWebClient,\r\n ContactClient,\r\n ContractClient,\r\n CustomerServiceClient,\r\n DebtorPostingClient,\r\n DocumentClient,\r\n GreenOptimizationClient,\r\n NewsClient,\r\n OrganizationClient,\r\n StatusMessageClient,\r\n UnitsClient,\r\n UserClient,\r\n MarketingMaterialsClient,\r\n} from '../api/api';\r\nimport {ApiBaseUrl} from '../utilities/constants';\r\n\r\nexport const statusMessagesClient = new StatusMessageClient(ApiBaseUrl);\r\nexport const documentClient = new DocumentClient(ApiBaseUrl);\r\nexport const contractClient = new ContractClient(ApiBaseUrl);\r\nexport const contactClient = new ContactClient(ApiBaseUrl);\r\nexport const customerServiceClient = new CustomerServiceClient(ApiBaseUrl);\r\nexport const greenOptimizationClient = new GreenOptimizationClient(ApiBaseUrl);\r\nexport const consumptionWebClient = new ConsumptionWebClient(ApiBaseUrl);\r\nexport const unitsClient = new UnitsClient(ApiBaseUrl);\r\nexport const organizationClient = new OrganizationClient(ApiBaseUrl);\r\nexport const debtorPostingClient = new DebtorPostingClient(ApiBaseUrl);\r\nexport const userClient = new UserClient(ApiBaseUrl);\r\nexport const newsClient = new NewsClient(ApiBaseUrl);\r\nexport const competitionClient = new CompetitionClient(ApiBaseUrl);\r\nexport const marketingMaterialsClient = new MarketingMaterialsClient(ApiBaseUrl);\r\nexport type ApiClient =\r\n | StatusMessageClient\r\n | DocumentClient\r\n | ContractClient\r\n | ContactClient\r\n | CustomerServiceClient\r\n | GreenOptimizationClient\r\n | OrganizationClient\r\n | ConsumptionWebClient\r\n | UnitsClient\r\n | UserClient\r\n | DebtorPostingClient\r\n | NewsClient\r\n | CompetitionClient\r\n | MarketingMaterialsClient;\r\n","import { createAsyncThunk } from '@reduxjs/toolkit';\r\nimport {ContactClient, CustomerServiceClient} from '../../../api/api';\r\nimport {AsyncOperationHandler} from '../../../utilities/platform-helpers/api-helper';\r\nimport {contactClient, customerServiceClient} from '../../api-clients';\r\n\r\nexport const getCustomerServiceInfo = createAsyncThunk('customerServiceInfo/getCustomerServiceInfo', () => {\r\n return AsyncOperationHandler(\r\n (client) => (client as CustomerServiceClient).getCustomerServiceInfo(),\r\n customerServiceClient,\r\n );\r\n});\r\n\r\nexport const getContactsDetails = createAsyncThunk('contacts/getContacts', (organizationId: number) => {\r\n return AsyncOperationHandler((client) => (client as ContactClient).getContacts(organizationId), contactClient);\r\n});\r\n","import {createSlice} from '@reduxjs/toolkit';\r\nimport {ContactDto} from '../../../api/api';\r\nimport {ContactsState} from '../contact/types';\r\nimport {getContactsDetails, getCustomerServiceInfo} from './operation';\r\n\r\nconst initialState: ContactsState = {\r\n contactsSlice: [] as ContactDto[],\r\n customerServiceInfo: undefined,\r\n pending: false,\r\n isSuccess: false,\r\n};\r\n\r\nexport const contactsSlice = createSlice({\r\n name: 'contacts',\r\n initialState,\r\n reducers: {},\r\n extraReducers: (builder) => {\r\n // Get Contacts Details\r\n builder.addCase(getContactsDetails.fulfilled, (state, action) => {\r\n state.pending = false;\r\n state.contactsSlice = action.payload ? action.payload : [];\r\n });\r\n\r\n builder.addCase(getContactsDetails.pending, (state, action) => {\r\n state.pending = true;\r\n });\r\n\r\n builder.addCase(getContactsDetails.rejected, (state, action) => {\r\n state.pending = false;\r\n });\r\n\r\n // Get Customer Service Info\r\n builder.addCase(getCustomerServiceInfo.fulfilled, (state, action) => {\r\n state.pending = false;\r\n state.customerServiceInfo = action.payload;\r\n });\r\n\r\n builder.addCase(getCustomerServiceInfo.pending, (state, action) => {\r\n state.pending = true;\r\n });\r\n\r\n builder.addCase(getCustomerServiceInfo.rejected, (state, action) => {\r\n state.pending = false;\r\n });\r\n },\r\n});\r\n\r\n// eslint-disable-next-line\r\nexport const {} = contactsSlice.actions;\r\n\r\nexport default contactsSlice.reducer;\r\n","import { createAsyncThunk } from '@reduxjs/toolkit';\r\nimport { OrganizationClient } from '../../../api/api';\r\nimport { AsyncOperationHandler } from '../../../utilities/platform-helpers/api-helper';\r\nimport { organizationClient } from '../../api-clients';\r\n\r\nexport const getOrganizationById = createAsyncThunk('organizations/getOrganizationById', (accountNum: string) => {\r\n return AsyncOperationHandler(\r\n (client) => (client as OrganizationClient).getOrganizationDetails(accountNum),\r\n organizationClient,\r\n );\r\n});\r\n\r\nexport const getOrganizationsByUserId = createAsyncThunk('organizations/getOrganizationsByAuthId', () => {\r\n return AsyncOperationHandler(\r\n (client) => (client as OrganizationClient).getOrganizationsByAuthId(),\r\n organizationClient,\r\n );\r\n});\r\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\r\nimport { getOrganizationsByUserId } from './operation';\r\nimport { OrganizationState } from './types';\r\n\r\nconst initialState: OrganizationState = {\r\n organization: undefined,\r\n organizationId: undefined,\r\n pending: false,\r\n isSuccess: false,\r\n userOrganizations: [],\r\n};\r\n\r\nexport const organizationSlice = createSlice({\r\n name: 'organization',\r\n initialState,\r\n reducers: {\r\n // TODO: This might need to trigger a clear data, in all other slice reducers\r\n setSelectedOrganization: (state, action: PayloadAction) => {\r\n state.organization = state.userOrganizations.find((org) => org.organizationId === action.payload.organizationId);\r\n state.organizationId = action.payload.organizationId;\r\n },\r\n },\r\n extraReducers: (builder) => {\r\n // Get user organizations\r\n builder.addCase(getOrganizationsByUserId.fulfilled, (state, action) => {\r\n state.pending = false;\r\n\r\n if (action.payload && action.payload.length !== 0) {\r\n state.userOrganizations = action.payload;\r\n setSelectedOrganization({ previousOrganizationId: undefined, organizationId: action.payload[0].organizationId });\r\n }\r\n });\r\n\r\n builder.addCase(getOrganizationsByUserId.pending, (state, action) => {\r\n state.pending = true;\r\n });\r\n\r\n builder.addCase(getOrganizationsByUserId.rejected, (state, action) => {\r\n state.pending = false;\r\n });\r\n },\r\n});\r\n\r\n// eslint-disable-next-line\r\nexport const { setSelectedOrganization } = organizationSlice.actions;\r\nexport interface SelectOrganization {\r\n previousOrganizationId: number | undefined;\r\n organizationId: number | undefined;\r\n}\r\nexport default organizationSlice.reducer;\r\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\r\nimport { IContractDto } from '../../../api/api';\r\nimport { ContractSelectedState } from '../contract/types';\r\nimport {setSelectedOrganization} from '../organization/organization-slice';\r\n\r\nconst initialState: ContractSelectedState = {\r\n selectedContract: undefined,\r\n};\r\n\r\nexport const selectedContractSlice = createSlice({\r\n name: 'selectedContract',\r\n initialState,\r\n reducers: {\r\n setSelectedContract: (state, action: PayloadAction) => {\r\n state.selectedContract = action.payload;\r\n },\r\n },\r\n extraReducers: (builder) => {\r\n builder.addCase(setSelectedOrganization, (state, action) => {\r\n if (action.payload.previousOrganizationId !== undefined) {\r\n return initialState;\r\n }\r\n });\r\n },\r\n});\r\n\r\n// eslint-disable-next-line\r\nexport const {} = selectedContractSlice.actions;\r\n\r\nexport default selectedContractSlice.reducer;\r\n","import moment from 'moment';\r\nimport {TimestampFormat} from '../constants';\r\nexport const setFromDate = (dateFrom: Date) => {\r\n dateFrom.setHours(0);\r\n dateFrom.setMinutes(0);\r\n dateFrom.setSeconds(0);\r\n\r\n return dateFrom;\r\n};\r\n\r\nexport const setToDate = (dateTo: Date) => {\r\n dateTo.setHours(23);\r\n dateTo.setMinutes(59);\r\n dateTo.setSeconds(59);\r\n\r\n return dateTo;\r\n};\r\n\r\nexport const showTimestamp = (timestamp: Date) => {\r\n return moment(timestamp).format(TimestampFormat);\r\n};\r\n\r\nexport const adjustForTimezone = (date: Date | undefined, negativeOffset: boolean = false): Date | undefined => {\r\n if (date) {\r\n let timeOffsetInMS: number = date.getTimezoneOffset() * 60000;\r\n if (negativeOffset) {\r\n date.setTime(date.getTime() + timeOffsetInMS);\r\n } else {\r\n date.setTime(date.getTime() - timeOffsetInMS);\r\n }\r\n\r\n return date;\r\n }\r\n return undefined;\r\n};\r\n\r\nexport const countNumberOfDaysBetweenDates = (from: Date, to: Date) => {\r\n return moment(to).diff(moment(from), 'days') + 1;\r\n};\r\n\r\nexport const formatToLocalDateAndLeadingZeros = (date: Date) => {\r\n return date.toLocaleDateString().replace(/(^|\\D)(\\d)(?!\\d)/g, '$10$2');\r\n};\r\n","import i18n from 'i18next';\r\nimport moment from 'moment';\r\nimport {countNumberOfDaysBetweenDates} from '../platform-helpers/date-helpers';\r\n\r\nexport const contractNoEndDate = new Date('9999-12-31 00:00:00.0000000 +00:00');\r\n\r\nexport const sameDate = (date1: Date, date2: Date) => {\r\n return (\r\n date1.getUTCDate() === date2.getUTCDate() &&\r\n date1.getUTCMonth() === date2.getUTCMonth() &&\r\n date1.getUTCFullYear() === date2.getUTCFullYear()\r\n );\r\n};\r\n\r\nexport const numberOfDaysInCurrentMonth = () => {\r\n return countNumberOfDaysBetweenDates(moment().startOf('month').toDate(), moment().endOf('month').toDate());\r\n};\r\nexport const numberOfDaysInCurrentQuarter = () => {\r\n return countNumberOfDaysBetweenDates(moment().startOf('quarter').toDate(), moment().endOf('quarter').toDate());\r\n};\r\n\r\nexport const getMondayInWeek = (date: Date) => {\r\n return moment(date).startOf('isoWeek').toDate();\r\n};\r\nexport const getSundayInWeek = (date: Date) => {\r\n return moment(date).endOf('isoWeek').toDate();\r\n};\r\nexport const getFirstDayInMonth = (date: Date) => {\r\n return moment(date).startOf('month').toDate();\r\n};\r\nexport const getLastDayInMonth = (date: Date) => {\r\n return moment(date).endOf('month').toDate();\r\n};\r\nexport const getFirstDayInQuarter = (date: Date) => {\r\n return moment(date).startOf('quarter').toDate();\r\n};\r\nexport const getLastDayInQuarter = (date: Date) => {\r\n return moment(date).endOf('quarter').toDate();\r\n};\r\n\r\nexport const getYesterday = () => {\r\n return moment().subtract(1, 'day').toDate();\r\n};\r\nexport const getMondayInPreviousWeek = () => {\r\n return moment().subtract(1, 'week').startOf('isoWeek').toDate();\r\n};\r\nexport const getSundayInPreviousWeek = () => {\r\n return moment().subtract(1, 'week').endOf('isoWeek').toDate();\r\n};\r\nexport const getFirstDayInPreviousMonth = () => {\r\n return moment().subtract(1, 'month').startOf('month').toDate();\r\n};\r\nexport const getLastDayInPreviousMonth = () => {\r\n return moment().subtract(1, 'month').endOf('month').toDate();\r\n};\r\nexport const getFirstDayInPreviousQuarter = () => {\r\n return moment().subtract(1, 'quarter').startOf('quarter').toDate();\r\n};\r\nexport const getLastDayInPreviousQuarter = () => {\r\n return moment().subtract(1, 'quarter').endOf('quarter').toDate();\r\n};\r\n\r\nexport const getOneYearPrior = (date: Date) => {\r\n date = moment(date).subtract(1, 'year').toDate();\r\n return date;\r\n};\r\n\r\nexport const getDateByStringFormat = (dateString: string) => {\r\n if (i18n.language === 'en-US') {\r\n return moment(dateString, 'MM-DD-YYYY').toDate();\r\n } else {\r\n return moment(dateString, 'DD-MM-YYYY').toDate();\r\n }\r\n};\r\n\r\n// Addition\r\nexport const addOneDay = (date: Date) => {\r\n return moment(date).add(1, 'day').toDate();\r\n};\r\nexport const addOneWeek = (date: Date) => {\r\n return moment(date).add(1, 'week').toDate();\r\n};\r\n\r\nexport const addOneMonth = (date: Date) => {\r\n return moment(date).add(1, 'month').toDate();\r\n};\r\nexport const addOneMonthToEndOfMonth = (date: Date) => {\r\n return moment(date).add(1, 'month').endOf('month').toDate();\r\n};\r\n\r\nexport const addOneQuarter = (date: Date) => {\r\n return moment(date).add(1, 'quarter').toDate();\r\n};\r\nexport const addOneQuarterToEndOfMonth = (date: Date) => {\r\n return moment(date).add(1, 'quarter').endOf('month').toDate();\r\n};\r\n\r\n// Subtraction\r\nexport const subtractOneDay = (date: Date) => {\r\n return moment(date).subtract(1, 'day').toDate();\r\n};\r\nexport const subtractOneWeek = (date: Date) => {\r\n return moment(date).subtract(1, 'week').toDate();\r\n};\r\nexport const subtractOneMonth = (date: Date) => {\r\n return moment(date).subtract(1, 'month').toDate();\r\n};\r\nexport const subtractOneMonthToEndOfMonth = (date: Date) => {\r\n return moment(date).subtract(1, 'month').endOf('month').toDate();\r\n};\r\nexport const subtractOneQuarter = (date: Date) => {\r\n return moment(date).subtract(1, 'quarter').toDate();\r\n};\r\nexport const subtractOneQuarterToEndOfMonth = (date: Date) => {\r\n return moment(date).subtract(1, 'quarter').endOf('month').toDate();\r\n};\r\n\r\n// last day of month\r\nexport const setLastDayOfMonth = (date: Date) => {\r\n return moment(date).endOf('month').toDate();\r\n};\r\n","import {createAsyncThunk} from '@reduxjs/toolkit';\r\nimport {ContractClient, ContractDto, DocumentClient, IContractDto} from '../../../api/api';\r\nimport {localized} from '../../../i18n/i18n';\r\nimport {AsyncOperationHandler} from '../../../utilities/platform-helpers/api-helper';\r\nimport {contractClient, documentClient} from '../../api-clients';\r\nimport {store} from '../../store';\r\nimport {showSuccessSnackbar} from '../snackbar/snackbar-slice';\r\n\r\nexport const getContractsDetails = createAsyncThunk('contracts/getContracts', (organizationId: number) => {\r\n return AsyncOperationHandler(\r\n (client) => (client as ContractClient).getContractsDetails(organizationId),\r\n contractClient,\r\n );\r\n});\r\n\r\nexport async function getContractPDF(fileId: number) {\r\n return AsyncOperationHandler((client) => (client as DocumentClient).getDocumentAzure(fileId), documentClient, true);\r\n}\r\nexport async function renewContract(organizationId: number, contract: IContractDto) {\r\n return AsyncOperationHandler(\r\n (client) => (client as ContractClient).renewContact(organizationId, ContractDto.fromJS(contract)),\r\n contractClient,\r\n true,\r\n renewSuccessMessage,\r\n );\r\n}\r\n\r\nconst renewSuccessMessage = () => {\r\n const dispatch = store.dispatch;\r\n dispatch(showSuccessSnackbar(localized('RenewContractSuccess')));\r\n};\r\n","import {createSlice, PayloadAction} from '@reduxjs/toolkit';\r\nimport {IContractDto} from '../../../api/api';\r\nimport {contractNoEndDate, sameDate} from '../../../utilities/helpers/date-helpers';\r\nimport {ContractsState} from '../contract/types';\r\nimport {setSelectedOrganization} from '../organization/organization-slice';\r\nimport {getContractsDetails} from './operation';\r\n\r\nconst initialState: ContractsState = {\r\n contractsSlice: [] as IContractDto[],\r\n currentActiveContract: undefined,\r\n pending: false,\r\n isSuccess: false,\r\n};\r\n\r\nexport const contractsSlice = createSlice({\r\n name: 'contracts',\r\n initialState,\r\n reducers: {\r\n setCurrentContract: (state, action: PayloadAction) => {\r\n if (action?.payload) {\r\n state.currentActiveContract = action.payload;\r\n }\r\n },\r\n },\r\n extraReducers: (builder) => {\r\n // Get\r\n builder.addCase(getContractsDetails.fulfilled, (state, action) => {\r\n state.pending = false;\r\n state.contractsSlice = action.payload ? action.payload : [];\r\n state.currentActiveContract =\r\n state.contractsSlice.length > 0\r\n ? state.contractsSlice\r\n .filter((a) => !sameDate(a.contractEnd, contractNoEndDate))\r\n .sort((a, b) => b.contractEnd.valueOf()! - a.contractEnd.valueOf()!)[0]\r\n : undefined;\r\n });\r\n\r\n builder.addCase(getContractsDetails.pending, (state, action) => {\r\n state.pending = true;\r\n });\r\n\r\n builder.addCase(getContractsDetails.rejected, (state, action) => {\r\n state.pending = false;\r\n });\r\n builder.addCase(setSelectedOrganization, (state, action) => {\r\n if (action.payload.previousOrganizationId !== undefined) {\r\n return initialState;\r\n }\r\n });\r\n },\r\n});\r\n\r\n// eslint-disable-next-line\r\nexport const {} = contractsSlice.actions;\r\n\r\nexport default contractsSlice.reducer;\r\n","import {createAsyncThunk} from '@reduxjs/toolkit';\r\nimport {DocumentClient} from '../../../api/api';\r\nimport {AsyncOperationHandler} from '../../../utilities/platform-helpers/api-helper';\r\nimport {documentClient} from '../../api-clients';\r\n\r\nexport const getDocumentDetails = createAsyncThunk('documents/getDocuments', (organizationId: number) => {\r\n return AsyncOperationHandler((client) => (client as DocumentClient).getDocumentDetails(organizationId), documentClient);\r\n});\r\n\r\nexport const getDebtorPostingDocumentDetails = createAsyncThunk('documents/getDebtorPostingDocuments', (organizationId: number) => {\r\n return AsyncOperationHandler((client) => (client as DocumentClient).getDebtorPostingDocumentDetails(organizationId), documentClient);\r\n});\r\n","import {createSlice} from '@reduxjs/toolkit';\r\nimport {IDebtorPostingDocumentDto, IDocument} from '../../../api/api';\r\nimport {setSelectedOrganization} from '../organization/organization-slice';\r\nimport {getDebtorPostingDocumentDetails, getDocumentDetails} from './operation';\r\nimport {DocumentsState} from './types';\r\n\r\nconst initialState: DocumentsState = {\r\n documentsSlice: [] as IDocument[],\r\n debtorPostingDocuments: [] as IDebtorPostingDocumentDto[],\r\n pending: false,\r\n isSuccess: false,\r\n};\r\n\r\nexport const documentsSlice = createSlice({\r\n name: 'document',\r\n initialState,\r\n reducers: {},\r\n extraReducers: (builder) => {\r\n // Get Documents\r\n builder.addCase(getDocumentDetails.fulfilled, (state, action) => {\r\n state.pending = false;\r\n if (action.payload) {\r\n state.documentsSlice = action.payload;\r\n }\r\n });\r\n\r\n builder.addCase(getDocumentDetails.pending, (state, action) => {\r\n state.pending = true;\r\n });\r\n\r\n builder.addCase(getDocumentDetails.rejected, (state, action) => {\r\n state.pending = false;\r\n });\r\n\r\n // Get DebtorPostingDocuments\r\n builder.addCase(getDebtorPostingDocumentDetails.fulfilled, (state, action) => {\r\n state.pending = false;\r\n if (action.payload) {\r\n state.debtorPostingDocuments = action.payload;\r\n }\r\n });\r\n\r\n builder.addCase(getDebtorPostingDocumentDetails.pending, (state, action) => {\r\n state.pending = true;\r\n });\r\n\r\n builder.addCase(getDebtorPostingDocumentDetails.rejected, (state, action) => {\r\n state.pending = false;\r\n });\r\n builder.addCase(setSelectedOrganization, (state, action) => {\r\n if (action.payload.previousOrganizationId !== undefined) {\r\n return initialState;\r\n }\r\n });\r\n },\r\n});\r\n\r\n// eslint-disable-next-line\r\nexport const {} = documentsSlice.actions;\r\n\r\nexport default documentsSlice.reducer;\r\n","import moment from 'moment';\r\nimport {IDailyConsumptionDto, IUnitDto} from '../../../api/api';\r\nimport {getOneYearPrior} from '../../../utilities/helpers/date-helpers';\r\nimport {SortingDays} from './types';\r\n\r\nexport interface IConsumptionDateInputs {\r\n date: Date;\r\n organizationId: number | undefined;\r\n}\r\n\r\nexport const setMonthlyConsumption = (dataPoints: IDailyConsumptionDto[]) => {\r\n let monthlyConsumption = 0;\r\n if (dataPoints) {\r\n dataPoints\r\n .filter((d) => d.date?.getMonth() === new Date().getMonth())\r\n .map((d) => (monthlyConsumption += d.consumptionValue!));\r\n }\r\n return monthlyConsumption;\r\n};\r\n\r\nexport const getOneYearPriorSortingDays = (sortingDays: SortingDays) => {\r\n let newSortingDays = {} as SortingDays;\r\n newSortingDays.fromDate = getOneYearPrior(sortingDays.fromDate);\r\n newSortingDays.toDate = getOneYearPrior(sortingDays.toDate);\r\n return newSortingDays;\r\n};\r\n\r\nexport const countUniqueConsumptionTimeStamps = (consumption: IDailyConsumptionDto[]) => {\r\n return consumption.filter(\r\n (consumption, index, self) =>\r\n index ===\r\n self.findIndex((t) => moment(t.date).valueOf() === moment(consumption.date).valueOf() && t.connectionId !== null),\r\n ).length;\r\n};\r\n\r\nexport const getConnectionIdsInPeriod = (units: IUnitDto[], sortingDays: SortingDays) => {\r\n return units.filter((unit) => isUnitContractInPeriod(unit, sortingDays)).map((unit) => unit.connectionid!);\r\n};\r\n\r\nexport const isUnitContractInPeriod = (unit: IUnitDto, sortingDays: SortingDays): boolean => {\r\n return unit.contractStartDate <= sortingDays.toDate && unit.contractEndDate >= sortingDays.fromDate;\r\n};\r\n","import {SortDirection} from '@material-ui/core';\r\nimport saveAs from 'file-saver';\r\nimport { FileResponse } from '../../api/api';\r\n\r\nexport const filterListItems = >>(\r\n items: T[],\r\n propertyName: K[],\r\n searchString: string | undefined,\r\n) => {\r\n if (searchString) {\r\n return items.filter((item) => {\r\n\r\n // Iterate item properties\r\n for (let i = 0; i < propertyName.length; i++) {\r\n const keyValue = item[propertyName[i]];\r\n const valueString = keyValue ? keyValue.toString() : '';\r\n\r\n if (valueString.toLocaleLowerCase().includes(searchString.toLocaleLowerCase())) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n });\r\n }\r\n return items;\r\n};\r\n\r\nexport const sortListItems = >>(\r\n items: T[],\r\n propertyName: K,\r\n sortType: SortDirection,\r\n) => {\r\n const sortedArray = items.concat().sort((a, b) => {\r\n return ('' + a[propertyName]).localeCompare('' + b[propertyName]);\r\n });\r\n if (sortType === 'desc') {\r\n sortedArray.reverse();\r\n }\r\n\r\n return sortedArray;\r\n};\r\n\r\nexport const isNullOrUndefined = (data: any) => {\r\n return data === undefined || data === null;\r\n};\r\n\r\nexport function saveExccelAs(fileResponse: FileResponse, fileName: string) {\r\n let blob = new Blob([fileResponse.data], { type: 'data:application/octet-stream;base64' });\r\n saveAs(blob, fileName);\r\n}\r\n","import {createAsyncThunk} from '@reduxjs/toolkit';\r\nimport {\r\n ConsumptionExcelData,\r\n ConsumptionExcelDataDto,\r\n FileResponse,\r\n IDailyConsumptionDto,\r\n IUnitDto,\r\n} from '../../../api/api';\r\nimport {localized} from '../../../i18n/i18n';\r\nimport {saveExccelAs} from '../../../utilities/helpers/general-helpers';\r\nimport {ConsumptionWebClient, UnitsClient} from '../../../api/api';\r\nimport {AsyncOperationHandler} from '../../../utilities/platform-helpers/api-helper';\r\nimport {consumptionWebClient, unitsClient} from '../../api-clients';\r\nimport moment from 'moment';\r\nimport { DateFormat } from '../../../utilities/constants';\r\n\r\nexport const getConsumption = createAsyncThunk(\r\n 'ConsumptionWeb/getByDateRange',\r\n (input: {fromDate: Date; toDate: Date; organizationId: number | undefined}) => {\r\n return AsyncOperationHandler(\r\n (client) => (client as ConsumptionWebClient).getByDateRange(input.fromDate, input.toDate, input.organizationId),\r\n consumptionWebClient,\r\n );\r\n },\r\n);\r\n\r\nexport const getConsumptionByDate = createAsyncThunk(\r\n 'ConsumptionWeb/getByDate',\r\n (input: {date: Date;organizationId: number | undefined}) => {\r\n return AsyncOperationHandler(\r\n (client) => (client as ConsumptionWebClient).getByDate(input.date, input.organizationId),\r\n consumptionWebClient,\r\n );\r\n },\r\n);\r\nexport const getConsumptionOneYearPrior = createAsyncThunk(\r\n 'ConsumptionWeb/getByDateRangeOneYearPrior',\r\n (input: {fromDate: Date; toDate: Date; organizationId: number | undefined}) => {\r\n return AsyncOperationHandler(\r\n (client) => (client as ConsumptionWebClient).getByDateRange(input.fromDate, input.toDate, input.organizationId),\r\n consumptionWebClient,\r\n );\r\n },\r\n);\r\n\r\nexport const getConsumptionByDateOneYearPrior = createAsyncThunk(\r\n 'ConsumptionWeb/getByDateOneYearPrior',\r\n (input: {date: Date;organizationId: number | undefined}) => {\r\n return AsyncOperationHandler(\r\n (client) => (client as ConsumptionWebClient).getByDate(input.date, input.organizationId),\r\n consumptionWebClient,\r\n );\r\n },\r\n);\r\n\r\nexport function GetConsumptionExcelExport(data: IDailyConsumptionDto[], units: IUnitDto[], oneDay: boolean) {\r\n const unitHashmap = keyValuePairSingle(units, 'connectionid');\r\n const excelData = new ConsumptionExcelDataDto({\r\n excelData: data.map((ed) => {\r\n let connection: IUnitDto | undefined;\r\n if (ed.connectionId && unitHashmap[ed.connectionId]) {\r\n connection = unitHashmap[ed.connectionId];\r\n }\r\n return new ConsumptionExcelData({\r\n date: ed.date ? (oneDay ? ed.date.toLocaleString() : moment(ed.date).format(DateFormat)) : '',\r\n usage: ed.consumptionValue ? ed.consumptionValue : 0,\r\n eanNumber: connection?.eanId,\r\n measuringPoint:\r\n (connection?.street ? connection?.street + ' ' : '') + (connection?.houseNum ? connection?.houseNum : ''),\r\n });\r\n }),\r\n headers: [localized('Date'), localized('Usage'), localized('EanNumber'), localized('MeasuringPoint'), ],\r\n worksheetName: localized('EnergyConsumption'),\r\n });\r\n\r\n return consumptionWebClient\r\n .getExcelExport(excelData)\r\n .then((fileResponse: FileResponse | null) => {\r\n if (fileResponse !== null) {\r\n saveExccelAs(fileResponse, localized('EnergyConsumption') + '.xlsx');\r\n }\r\n })\r\n .catch(() => {\r\n return;\r\n });\r\n}\r\n\r\nexport const getUnits = createAsyncThunk('Units/getUnitsByOrganizationId', (organizationId: number | undefined) => {\r\n return AsyncOperationHandler(\r\n (client) => (client as UnitsClient).getUnitsByOrganizationId(organizationId),\r\n unitsClient,\r\n );\r\n});\r\n\r\nfunction keyValuePairSingle(data: T[], key: keyof T) {\r\n const items: {[key: string]: T} = {};\r\n data.forEach((item) => {\r\n const itemKey = item[key];\r\n if (itemKey) {\r\n items[(itemKey as any).toString()] = item;\r\n }\r\n });\r\n return items;\r\n}\r\n","import {IDailyConsumptionDto, IUnitDto} from '../../../api/api';\r\n\r\nexport interface EnergyConsumptionState {\r\n consumption: IDailyConsumptionDto[];\r\n consumptionOneYearPrior: IDailyConsumptionDto[];\r\n units: IUnitDto[];\r\n pending: boolean;\r\n isSuccess: boolean;\r\n totalConsumption: number;\r\n sortingDays: SortingDays;\r\n numberOfDays: number;\r\n currentFixedPeriodCategory: FixedPeriodCategory;\r\n priorFixedPeriodCategory: FixedPeriodCategory;\r\n selectedMeasuringPointIds: string[];\r\n idsInPeriod: string[];\r\n idsInPeriodOneYearPrior: string[];\r\n monthlyConsumption: number;\r\n periodAverage: number;\r\n yearPriorSelected: boolean;\r\n}\r\n\r\nexport interface SortingDays {\r\n fromDate: Date;\r\n toDate: Date;\r\n}\r\n\r\nexport enum FixedPeriodCategory {\r\n NotFixed,\r\n Day,\r\n Week,\r\n Month,\r\n Quarter,\r\n}\r\n","import {createSlice, PayloadAction} from '@reduxjs/toolkit';\r\nimport {IDailyConsumptionDto, IUnitDto} from '../../../api/api';\r\nimport {\r\n getFirstDayInPreviousMonth,\r\n getFirstDayInPreviousQuarter,\r\n getLastDayInPreviousMonth,\r\n getLastDayInPreviousQuarter,\r\n getMondayInPreviousWeek,\r\n getSundayInPreviousWeek,\r\n getYesterday,\r\n} from '../../../utilities/helpers/date-helpers';\r\nimport {countNumberOfDaysBetweenDates} from '../../../utilities/platform-helpers/date-helpers';\r\nimport {\r\n countUniqueConsumptionTimeStamps,\r\n getConnectionIdsInPeriod,\r\n getOneYearPriorSortingDays,\r\n setMonthlyConsumption,\r\n} from './energy-consumption-helper';\r\nimport {\r\n getConsumption,\r\n getConsumptionByDate,\r\n getConsumptionByDateOneYearPrior,\r\n getConsumptionOneYearPrior,\r\n getUnits,\r\n} from './operation';\r\nimport {EnergyConsumptionState, FixedPeriodCategory, SortingDays} from './types';\r\n\r\nconst initialState: EnergyConsumptionState = {\r\n consumption: [] as IDailyConsumptionDto[],\r\n consumptionOneYearPrior: [] as IDailyConsumptionDto[],\r\n units: [] as IUnitDto[],\r\n pending: false,\r\n isSuccess: false,\r\n totalConsumption: 0,\r\n sortingDays: {\r\n fromDate: getFirstDayInPreviousMonth(),\r\n toDate: getLastDayInPreviousMonth(),\r\n },\r\n numberOfDays: 0,\r\n selectedMeasuringPointIds: [] as string[],\r\n idsInPeriod: [] as string[],\r\n idsInPeriodOneYearPrior: [] as string[],\r\n monthlyConsumption: 0,\r\n currentFixedPeriodCategory: FixedPeriodCategory.Month,\r\n priorFixedPeriodCategory: FixedPeriodCategory.Month,\r\n periodAverage: 0,\r\n yearPriorSelected: false,\r\n};\r\n\r\nconst handleSelectedUnits = (state: EnergyConsumptionState) => {\r\n state.numberOfDays = countNumberOfDaysBetweenDates(state.sortingDays.fromDate, state.sortingDays.toDate);\r\n let idsInPeriod = getConnectionIdsInPeriod(state.units, state.sortingDays);\r\n\r\n // Find the IDs that are in selectedMeasuringPointIds but no longer in idsInPeriod\r\n state.selectedMeasuringPointIds = state.selectedMeasuringPointIds.filter((id) => idsInPeriod.includes(id));\r\n state.idsInPeriod = idsInPeriod;\r\n\r\n if (state.yearPriorSelected) {\r\n let oneYearPriorSortingDays = getOneYearPriorSortingDays(state.sortingDays);\r\n let idsInPeriodOneYearPrior = getConnectionIdsInPeriod(state.units, oneYearPriorSortingDays);\r\n \r\n // Find the selectedMeasuringPointIds that are in either idsInPeriodOneYearPrior or idsInPeriod\r\n state.selectedMeasuringPointIds = state.selectedMeasuringPointIds.filter(\r\n (id) => idsInPeriodOneYearPrior.includes(id) || idsInPeriod.includes(id)\r\n );\r\n state.idsInPeriodOneYearPrior = idsInPeriodOneYearPrior;\r\n }\r\n};\r\n\r\nexport const energyConsumptionSlice = createSlice({\r\n name: 'energyConsumption',\r\n initialState,\r\n reducers: {\r\n setTotalConsumption: (state, action: PayloadAction) => {\r\n if (!action.payload) {\r\n state.totalConsumption = 0;\r\n state.periodAverage = 0;\r\n return;\r\n }\r\n\r\n state.totalConsumption = action.payload;\r\n let filteredConsumption = state.consumption.filter(\r\n (i) => i.connectionId && state.selectedMeasuringPointIds.includes(i.connectionId),\r\n );\r\n state.periodAverage = action.payload / countUniqueConsumptionTimeStamps(filteredConsumption);\r\n },\r\n\r\n setSortingDays: (state, action: PayloadAction) => {\r\n if (action.payload) {\r\n state.sortingDays.fromDate = action.payload.fromDate;\r\n state.sortingDays.toDate = action.payload.toDate;\r\n state.numberOfDays = countNumberOfDaysBetweenDates(action.payload.fromDate, action.payload.toDate);\r\n\r\n if (state.numberOfDays === 1) {\r\n state.currentFixedPeriodCategory = FixedPeriodCategory.Day;\r\n } else if (state.numberOfDays === 7) {\r\n state.currentFixedPeriodCategory = FixedPeriodCategory.Week;\r\n\r\n // Possible month length\r\n } else if (state.numberOfDays >= 28 && state.numberOfDays <= 31) {\r\n state.currentFixedPeriodCategory = FixedPeriodCategory.Month;\r\n\r\n // Possible quarter length\r\n } else if (state.numberOfDays >= 89 && state.numberOfDays <= 92) {\r\n state.currentFixedPeriodCategory = FixedPeriodCategory.Quarter;\r\n } else {\r\n state.currentFixedPeriodCategory = FixedPeriodCategory.NotFixed;\r\n }\r\n\r\n handleSelectedUnits(state);\r\n }\r\n },\r\n\r\n setNumberOfDays: (state, action: PayloadAction) => {\r\n if (action.payload) {\r\n state.numberOfDays = countNumberOfDaysBetweenDates(state.sortingDays.fromDate, state.sortingDays.toDate);\r\n }\r\n },\r\n\r\n setSelectedMeasuringPointIds: (state, action: PayloadAction) => {\r\n if (action.payload) {\r\n state.selectedMeasuringPointIds = action.payload;\r\n }\r\n },\r\n setMeasuringPointIdsInPeriod: (state, action: PayloadAction) => {\r\n if (action.payload) {\r\n state.idsInPeriod = action.payload;\r\n }\r\n },\r\n\r\n setPeriodCategory: (state, action: PayloadAction) => {\r\n if (action.payload !== undefined) {\r\n state.currentFixedPeriodCategory = action.payload;\r\n\r\n switch (action.payload) {\r\n case FixedPeriodCategory.Day:\r\n state.sortingDays.fromDate = getYesterday();\r\n state.sortingDays.toDate = getYesterday();\r\n break;\r\n\r\n case FixedPeriodCategory.Week:\r\n state.sortingDays.fromDate = getMondayInPreviousWeek();\r\n state.sortingDays.toDate = getSundayInPreviousWeek();\r\n break;\r\n\r\n case FixedPeriodCategory.Month:\r\n state.sortingDays.fromDate = getFirstDayInPreviousMonth();\r\n state.sortingDays.toDate = getLastDayInPreviousMonth();\r\n break;\r\n\r\n case FixedPeriodCategory.Quarter:\r\n state.sortingDays.fromDate = getFirstDayInPreviousQuarter();\r\n state.sortingDays.toDate = getLastDayInPreviousQuarter();\r\n break;\r\n\r\n default:\r\n state.sortingDays.fromDate = getFirstDayInPreviousMonth();\r\n state.sortingDays.toDate = getLastDayInPreviousMonth();\r\n break;\r\n }\r\n\r\n handleSelectedUnits(state);\r\n }\r\n },\r\n\r\n setYearPriorSelected: (state, action: PayloadAction) => {\r\n state.yearPriorSelected = action.payload;\r\n handleSelectedUnits(state);\r\n\r\n if (action.payload === false) {\r\n // Clean up data from prior year\r\n state.idsInPeriodOneYearPrior = [];\r\n state.consumptionOneYearPrior = [];\r\n }\r\n },\r\n\r\n resetConsumptionOneYearPriorIds: (state) => {\r\n state.idsInPeriodOneYearPrior = initialState.idsInPeriodOneYearPrior;\r\n },\r\n },\r\n extraReducers: (builder) => {\r\n // Get DailyConsumptionDtos - DateRange\r\n builder.addCase(getConsumption.fulfilled, (state, action) => {\r\n if (action.payload) {\r\n state.pending = false;\r\n state.consumption = action.payload;\r\n state.monthlyConsumption = setMonthlyConsumption(action.payload);\r\n }\r\n });\r\n builder.addCase(getConsumption.pending, (state, action) => {\r\n state.pending = true;\r\n });\r\n\r\n builder.addCase(getConsumption.rejected, (state, action) => {\r\n state.pending = false;\r\n });\r\n\r\n // Get DailyConsumptionDtos - ByDate\r\n builder.addCase(getConsumptionByDate.fulfilled, (state, action) => {\r\n if (action.payload) {\r\n state.pending = false;\r\n state.consumption = action.payload;\r\n }\r\n });\r\n builder.addCase(getConsumptionByDate.pending, (state, action) => {\r\n state.pending = true;\r\n if (state.currentFixedPeriodCategory !== state.priorFixedPeriodCategory) {\r\n state.consumption = initialState.consumption;\r\n state.consumptionOneYearPrior = initialState.consumptionOneYearPrior;\r\n }\r\n\r\n state.priorFixedPeriodCategory = state.currentFixedPeriodCategory;\r\n });\r\n\r\n builder.addCase(getConsumptionByDate.rejected, (state, action) => {\r\n state.pending = false;\r\n });\r\n\r\n // Get One Year Prior DailyConsumptionDtos - DateRange\r\n builder.addCase(getConsumptionOneYearPrior.fulfilled, (state, action) => {\r\n if (action.payload) {\r\n state.pending = false;\r\n state.consumptionOneYearPrior = action.payload;\r\n }\r\n });\r\n builder.addCase(getConsumptionOneYearPrior.pending, (state, action) => {\r\n state.pending = true;\r\n if (state.currentFixedPeriodCategory !== state.priorFixedPeriodCategory) {\r\n state.consumption = initialState.consumption;\r\n state.consumptionOneYearPrior = initialState.consumptionOneYearPrior;\r\n }\r\n\r\n state.priorFixedPeriodCategory = state.currentFixedPeriodCategory;\r\n });\r\n\r\n builder.addCase(getConsumptionOneYearPrior.rejected, (state, action) => {\r\n state.pending = false;\r\n });\r\n\r\n // Get One Year Prior DailyConsumptionDtos - ByDate\r\n builder.addCase(getConsumptionByDateOneYearPrior.fulfilled, (state, action) => {\r\n if (action.payload) {\r\n state.pending = false;\r\n state.consumptionOneYearPrior = action.payload;\r\n }\r\n });\r\n builder.addCase(getConsumptionByDateOneYearPrior.pending, (state, action) => {\r\n state.pending = true;\r\n });\r\n\r\n builder.addCase(getConsumptionByDateOneYearPrior.rejected, (state, action) => {\r\n state.pending = false;\r\n });\r\n\r\n // Get UnitDtos\r\n builder.addCase(getUnits.fulfilled, (state, action) => {\r\n if (action.payload) {\r\n state.units = action.payload;\r\n state.selectedMeasuringPointIds = state.units.map((unit) => unit.connectionid!);\r\n state.idsInPeriod = getConnectionIdsInPeriod(state.units, state.sortingDays);\r\n }\r\n });\r\n },\r\n});\r\n\r\nexport const {\r\n setTotalConsumption,\r\n setSortingDays,\r\n setPeriodCategory,\r\n setNumberOfDays,\r\n setSelectedMeasuringPointIds,\r\n setYearPriorSelected,\r\n resetConsumptionOneYearPriorIds: resetConsumptionOneYearPrior,\r\n} = energyConsumptionSlice.actions;\r\nexport default energyConsumptionSlice.reducer;\r\n","import {createAsyncThunk} from '@reduxjs/toolkit';\r\nimport {GreenOptimizationClient} from '../../../api/api';\r\nimport {localized} from '../../../i18n/i18n';\r\nimport {AsyncOperationHandler} from '../../../utilities/platform-helpers/api-helper';\r\nimport {greenOptimizationClient} from '../../api-clients';\r\nimport {store} from '../../store';\r\nimport {showSuccessSnackbar} from '../snackbar/snackbar-slice';\r\n\r\nexport const getGreenOptimizationContractsStatus = createAsyncThunk(\r\n 'greenOptimization/getGreenOptimization',\r\n (organizationId: number) => {\r\n return AsyncOperationHandler(\r\n (client) => (client as GreenOptimizationClient).getGreenOptimizationContractsStatus(organizationId),\r\n greenOptimizationClient,\r\n );\r\n },\r\n);\r\n\r\nexport async function chooseGreenOptimization(organizationId: number, greenOptimizationId: string) {\r\n return AsyncOperationHandler(\r\n (client) => (client as GreenOptimizationClient).chooseGreenOptimization(organizationId, greenOptimizationId),\r\n greenOptimizationClient,\r\n true,\r\n chooseGreenOptimizationSuccessMessage,\r\n );\r\n}\r\n\r\nconst chooseGreenOptimizationSuccessMessage = () => {\r\n const dispatch = store.dispatch;\r\n dispatch(showSuccessSnackbar(localized('ChooseGreenOptimizationSuccess')));\r\n};\r\n","import {createSlice, PayloadAction} from '@reduxjs/toolkit';\r\nimport { setSelectedOrganization } from '../organization/organization-slice';\r\nimport {getGreenOptimizationContractsStatus} from './operation';\r\nimport {GreenOptimizationState} from './types';\r\n\r\nconst initialState: GreenOptimizationState = {\r\n greenOptimizationsContracts: undefined,\r\n numberOfGreenOptimizationContracts: 0,\r\n pending: false,\r\n isSuccess: false,\r\n};\r\n\r\nexport const greenOptimizationSlice = createSlice({\r\n name: 'greenOptimization',\r\n initialState,\r\n reducers: {\r\n setNumberGreenOptimizationContracts: (state, action: PayloadAction) => {\r\n if (state?.greenOptimizationsContracts) {\r\n state.numberOfGreenOptimizationContracts = action.payload;\r\n }\r\n },\r\n },\r\n extraReducers: (builder) => {\r\n // Get\r\n builder.addCase(getGreenOptimizationContractsStatus.fulfilled, (state, action) => {\r\n state.pending = false;\r\n state.greenOptimizationsContracts = action.payload;\r\n\r\n let numberOfContracts: number = 0;\r\n if (action.payload?.windEnergy) {\r\n numberOfContracts++;\r\n }\r\n if (action.payload?.climateEnergy) {\r\n numberOfContracts++;\r\n }\r\n if (action.payload?.co2Mapping) {\r\n numberOfContracts++;\r\n }\r\n if (action.payload?.energyAdvice) {\r\n numberOfContracts++;\r\n }\r\n if (action.payload?.climateForest) {\r\n numberOfContracts++;\r\n }\r\n\r\n state.numberOfGreenOptimizationContracts = numberOfContracts;\r\n });\r\n\r\n builder.addCase(getGreenOptimizationContractsStatus.pending, (state) => {\r\n state.pending = true;\r\n });\r\n\r\n builder.addCase(getGreenOptimizationContractsStatus.rejected, (state) => {\r\n state.pending = false;\r\n });\r\n builder.addCase(setSelectedOrganization, (state, action) => {\r\n if (action.payload.previousOrganizationId !== undefined) {\r\n return initialState;\r\n }\r\n });\r\n },\r\n});\r\n\r\nexport const {setNumberGreenOptimizationContracts} = greenOptimizationSlice.actions;\r\nexport default greenOptimizationSlice.reducer;\r\n","import { DebtorPostingDto } from \"../../../api/api\";\r\nimport { localized } from \"../../../i18n/i18n\";\r\n\r\nexport const getMonthAccumulated = (debtorPosting: DebtorPostingDto[]) => {\r\n let monthAccumulated = 0;\r\n const thisMonth = new Date().getMonth()\r\n const thisYear = new Date().getFullYear()\r\n if (debtorPosting) {\r\n debtorPosting\r\n .filter((d) => d.date?.getMonth() === thisMonth && d.date?.getFullYear() === thisYear)\r\n .map((d) => (monthAccumulated += d.debet! + d.credit!));\r\n }\r\n return monthAccumulated;\r\n};\r\n\r\nexport const monthNames = [\r\n localized('January'),\r\n localized('February'),\r\n localized('March'),\r\n localized('April'),\r\n localized('May'),\r\n localized('June'),\r\n localized('July'),\r\n localized('August'),\r\n localized('September'),\r\n localized('October'),\r\n localized('November'),\r\n localized('December'),\r\n];\r\n","import {createAsyncThunk} from '@reduxjs/toolkit';\r\nimport {DebtorPostingClient} from '../../../api/api';\r\nimport {AsyncOperationHandler} from '../../../utilities/platform-helpers/api-helper';\r\nimport {debtorPostingClient} from '../../api-clients';\r\nimport {DebtorPostingFilter} from './types';\r\n\r\nexport const getDebtorPostings = createAsyncThunk('debtorPostings/getDebtorPostings', (organizationId: number | undefined) => {\r\n return AsyncOperationHandler((client) => (client as DebtorPostingClient).getDebtorPostingsDetails(organizationId), debtorPostingClient);\r\n});\r\n\r\nexport const SetCurrentFilter = createAsyncThunk('debtorPostings/SetCurrentFilter', (filter: DebtorPostingFilter) => {\r\n return filter;\r\n});\r\n","import {createSlice} from '@reduxjs/toolkit';\r\nimport {DebtorPostingDto} from '../../../api/api';\r\nimport {monthNames} from './debtor-posting-helper';\r\nimport {getDebtorPostings, SetCurrentFilter} from './operation';\r\nimport {DebtorPostingState} from './types';\r\n\r\nconst initialState: DebtorPostingState = {\r\n debtorPostings: [] as DebtorPostingDto[],\r\n pending: false,\r\n isSuccess: false,\r\n currentFilter: {\r\n DateFrom: undefined,\r\n DateTo: new Date(),\r\n },\r\n thisMonthDebtorPostings: [] as DebtorPostingDto[],\r\n saldo: 0,\r\n thisMonth: monthNames[new Date().getMonth()] + ' ' + new Date().getFullYear(),\r\n};\r\n\r\nexport const DebtorPostingSlice = createSlice({\r\n name: 'Invoice',\r\n initialState,\r\n reducers: {},\r\n extraReducers: (builder) => {\r\n // Get\r\n builder.addCase(getDebtorPostings.fulfilled, (state, action) => {\r\n if (action.payload && action.payload.length !== 0 && action.payload[0].balance !== undefined) {\r\n state.pending = false;\r\n state.debtorPostings = action.payload;\r\n const thisMonth = new Date().getMonth();\r\n const thisYear = new Date().getFullYear();\r\n state.thisMonthDebtorPostings = action.payload\r\n ? action.payload.filter((d) => d.date.getMonth() === thisMonth && d.date?.getFullYear() === thisYear)\r\n : [];\r\n state.saldo = action.payload[0].balance;\r\n state.thisMonth = monthNames[new Date().getMonth()] + ' ' + new Date().getFullYear();\r\n }\r\n });\r\n\r\n builder.addCase(getDebtorPostings.pending, (state, action) => {\r\n state.pending = true;\r\n });\r\n\r\n builder.addCase(getDebtorPostings.rejected, (state, action) => {\r\n state.pending = false;\r\n });\r\n\r\n builder.addCase(SetCurrentFilter.fulfilled, (state, action) => {\r\n state.pending = false;\r\n state.currentFilter = action.payload;\r\n });\r\n\r\n builder.addCase(SetCurrentFilter.pending, (state, action) => {\r\n state.pending = true;\r\n });\r\n\r\n builder.addCase(SetCurrentFilter.rejected, (state, action) => {\r\n state.pending = false;\r\n });\r\n },\r\n});\r\n\r\n// eslint-disable-next-line\r\nexport const {} = DebtorPostingSlice.actions;\r\n\r\nexport default DebtorPostingSlice.reducer;\r\n","import { SortDirection } from \"@material-ui/core\";\r\n\r\nexport interface PageHeaderSettingState {\r\n searchString?: string;\r\n pageSettings: PageSetting[];\r\n}\r\n\r\nexport enum ViewType {\r\n ListView = 'ListView',\r\n BoxView = 'BoxView',\r\n}\r\n\r\ninterface PageSetting {\r\n key: string;\r\n sort: SortDirection;\r\n itemView: ViewType;\r\n}\r\n\r\nexport const defaultPageSetting = (pageSettingKey: string) => {\r\n return {\r\n key: pageSettingKey,\r\n sort: 'asc' as SortDirection,\r\n itemView: ViewType.BoxView,\r\n };\r\n};\r\n","import { SortDirection } from '@material-ui/core';\r\nimport { createSlice, PayloadAction } from '@reduxjs/toolkit';\r\nimport { PageHeaderSettingState, ViewType } from './types';\r\n\r\nconst initialState: PageHeaderSettingState = {\r\n pageSettings: [],\r\n};\r\n\r\nexport const pageSettingSlice = createSlice({\r\n name: 'pageSetting',\r\n initialState,\r\n reducers: {\r\n toggleView: (state, action: PayloadAction<{value: ViewType; key: string}>) => {\r\n let settingExist = state.pageSettings.find((setting) => setting.key === action.payload.key);\r\n if (settingExist) {\r\n settingExist.itemView = action.payload.value;\r\n } else {\r\n state.pageSettings.push({\r\n key: action.payload.key,\r\n sort: 'asc',\r\n itemView: action.payload.value,\r\n });\r\n }\r\n },\r\n searchChanged: (state, action: PayloadAction<{value: string; key: string}>) => {\r\n state.searchString = action.payload.value;\r\n },\r\n toggleSort: (state, action: PayloadAction<{value: SortDirection; key: string}>) => {\r\n let settingExist = state.pageSettings.find((setting) => setting.key === action.payload.key);\r\n if (settingExist) {\r\n settingExist.sort = action.payload.value;\r\n } else {\r\n state.pageSettings.push({\r\n key: action.payload.key,\r\n sort: action.payload.value,\r\n itemView: ViewType.BoxView,\r\n });\r\n }\r\n },\r\n },\r\n});\r\n\r\nexport const {\r\n toggleView,\r\n searchChanged,\r\n toggleSort,\r\n} = pageSettingSlice.actions;\r\n\r\nexport default pageSettingSlice.reducer;\r\n","import {createAsyncThunk} from '@reduxjs/toolkit';\r\nimport {IStatusMessageDto, StatusMessageClient, StatusMessageDto} from '../../../api/api';\r\nimport {AsyncOperationHandler} from '../../../utilities/platform-helpers/api-helper';\r\nimport {statusMessagesClient} from '../../api-clients';\r\n\r\nexport const getStatusMessages = createAsyncThunk('statusMessages/getStatusMessages', () => {\r\n return AsyncOperationHandler((client) => (client as StatusMessageClient).getStatusMessages(), statusMessagesClient);\r\n});\r\n\r\nexport const saveStausMessages = createAsyncThunk(\r\n 'statusMessages/saveStatusMessages',\r\n (statusMessage: IStatusMessageDto) => {\r\n return AsyncOperationHandler(\r\n (client) => (client as StatusMessageClient).postNewStatusMessages(StatusMessageDto.fromJS(statusMessage)),\r\n statusMessagesClient,\r\n true,\r\n );\r\n },\r\n);\r\n\r\nexport const deleteStausMessages = createAsyncThunk(\r\n 'statusMessages/deleteStatusMessages',\r\n (statusMessageId: number) => {\r\n return AsyncOperationHandler(\r\n (client) => (client as StatusMessageClient).deleteStatusMessages(statusMessageId),\r\n statusMessagesClient,\r\n );\r\n },\r\n);\r\n","import {createSlice} from '@reduxjs/toolkit';\r\nimport {IStatusMessageDto} from '../../../api/api';\r\nimport {deleteStausMessages, getStatusMessages, saveStausMessages} from './operation';\r\nimport {StatusMessagesState} from './types';\r\n\r\nconst initialState: StatusMessagesState = {\r\n statusMessageSlice: [] as IStatusMessageDto[],\r\n pending: false,\r\n isSuccess: false,\r\n};\r\n\r\nexport const statusMessagesSlice = createSlice({\r\n name: 'statusMessages',\r\n initialState,\r\n reducers: {},\r\n extraReducers: (builder) => {\r\n // Get\r\n builder.addCase(getStatusMessages.fulfilled, (state, action) => {\r\n state.pending = false;\r\n if (action.payload) {\r\n state.statusMessageSlice = action.payload;\r\n }\r\n });\r\n\r\n builder.addCase(getStatusMessages.pending, (state, action) => {\r\n state.pending = true;\r\n });\r\n\r\n builder.addCase(getStatusMessages.rejected, (state, action) => {\r\n state.pending = false;\r\n });\r\n\r\n // Save\r\n builder.addCase(saveStausMessages.fulfilled, (state, action) => {\r\n state.pending = false;\r\n state.isSuccess = true;\r\n if (action.payload) {\r\n state.statusMessageSlice.push(action.payload);\r\n }\r\n });\r\n\r\n builder.addCase(saveStausMessages.pending, (state, action) => {\r\n state.isSuccess = false;\r\n state.pending = true;\r\n });\r\n\r\n builder.addCase(saveStausMessages.rejected, (state, action) => {\r\n state.isSuccess = false;\r\n state.pending = false;\r\n });\r\n\r\n // Delete\r\n builder.addCase(deleteStausMessages.fulfilled, (state, action) => {\r\n state.pending = false;\r\n state.isSuccess = true;\r\n state.statusMessageSlice.splice(\r\n state.statusMessageSlice.findIndex((s) => s.id === action.meta.arg),\r\n 1,\r\n );\r\n });\r\n\r\n builder.addCase(deleteStausMessages.pending, (state, action) => {\r\n state.isSuccess = false;\r\n state.pending = true;\r\n });\r\n\r\n builder.addCase(deleteStausMessages.rejected, (state, action) => {\r\n state.isSuccess = false;\r\n state.pending = false;\r\n });\r\n },\r\n});\r\n\r\n// eslint-disable-next-line\r\nexport const {} = statusMessagesSlice.actions;\r\nexport default statusMessagesSlice.reducer;\r\n","import {createAsyncThunk} from '@reduxjs/toolkit';\r\nimport {OrganizationClient, User, UserClient} from '../../../api/api';\r\nimport {localized} from '../../../i18n/i18n';\r\nimport {AsyncOperationHandler} from '../../../utilities/platform-helpers/api-helper';\r\nimport {organizationClient, userClient} from '../../api-clients';\r\nimport {store} from '../../store';\r\nimport {showErrorSnackbar, showSuccessSnackbar} from '../snackbar/snackbar-slice';\r\n\r\nexport const getUser = createAsyncThunk('user/getUser', () => {\r\n return AsyncOperationHandler((client) => (client as UserClient).getByAuthId(), userClient);\r\n});\r\n\r\nexport const SetUserActive = createAsyncThunk('user/setUserActive', (active: boolean) => {\r\n return active;\r\n});\r\n\r\nexport const createUser = createAsyncThunk('user/createUser', async (data: {user: User; organizationId: number}) => {\r\n let response = await AsyncOperationHandler(\r\n (client) => (client as UserClient).createUserWithOrganizationId(data.user, data.organizationId),\r\n userClient,\r\n );\r\n const dispatch = store.dispatch;\r\n\r\n if (response) {\r\n dispatch(showSuccessSnackbar(localized('Success')));\r\n return response;\r\n } else {\r\n dispatch(showErrorSnackbar(localized('InvalidEmailFormat')));\r\n return null;\r\n }\r\n});\r\n\r\nexport const deleteUserFromOrganization = createAsyncThunk(\r\n 'user/deleteUserFromOrganization',\r\n (data: {userId: number | undefined; organizationId: number | undefined}) => {\r\n return AsyncOperationHandler(\r\n (client) => (client as OrganizationClient).deleteUserOrganization(data.userId, data.organizationId),\r\n organizationClient,\r\n );\r\n },\r\n);\r\n\r\nexport const getUsersByOrganizationId = createAsyncThunk(\r\n 'user/getUsersByOrganizationId',\r\n (organizationId: number | undefined) => {\r\n return AsyncOperationHandler(\r\n (client) => (client as UserClient).getUsersByOrganizationId(organizationId),\r\n userClient,\r\n );\r\n },\r\n);\r\n\r\nexport const updateLastOpenedMarketingPage = createAsyncThunk(\r\n 'user/updateLastOpenedMarketingPage',\r\n (organizationId: number) => {\r\n return AsyncOperationHandler(\r\n (client) => (client as UserClient).updateLastOpenedMarketingPage(organizationId),\r\n userClient,\r\n );\r\n },\r\n);\r\n\r\nexport const resendInvitationEmail = createAsyncThunk('user/resendInvitationEmail', (user: User) => {\r\n return AsyncOperationHandler(\r\n (client) => (client as UserClient).resendInvitationEmail(user),\r\n userClient,\r\n true,\r\n () => {\r\n const dispatch = store.dispatch;\r\n dispatch(showSuccessSnackbar(localized('Success')));\r\n },\r\n );\r\n});\r\n","import {createSlice} from '@reduxjs/toolkit';\r\nimport {createUser, deleteUserFromOrganization, getUser, getUsersByOrganizationId, SetUserActive} from './operation';\r\nimport {UserState} from './types';\r\n\r\nconst initialState: UserState = {\r\n user: undefined,\r\n pending: false,\r\n isSuccess: false,\r\n userOrganizations: [\r\n\r\n ],\r\n};\r\n\r\nexport const usersSlice = createSlice({\r\n name: 'user',\r\n initialState,\r\n reducers: {},\r\n extraReducers: (builder) => {\r\n // Get\r\n\r\n builder.addCase(SetUserActive.fulfilled, (state, action) => {\r\n state.userPageActive = action.payload;\r\n });\r\n builder.addCase(getUser.fulfilled, (state, action) => {\r\n state.pending = false;\r\n state.user = action.payload;\r\n });\r\n builder.addCase(getUser.pending, (state, action) => {\r\n state.pending = true;\r\n });\r\n\r\n builder.addCase(getUser.rejected, (state, action) => {\r\n state.pending = false;\r\n });\r\n builder.addCase(getUsersByOrganizationId.fulfilled, (state, action) => {\r\n state.userOrganizations = action.payload? action.payload: []\r\n });\r\n builder.addCase(getUsersByOrganizationId.pending, (state, action) => {\r\n state.pending = true;\r\n });\r\n\r\n builder.addCase(getUsersByOrganizationId.rejected, (state, action) => {\r\n state.pending = false;\r\n });\r\n builder.addCase(createUser.fulfilled, (state, action) => {\r\n state.userOrganizations = action.payload? state.userOrganizations\r\n ? [...state.userOrganizations, action.payload]\r\n : [action.payload] : state.userOrganizations\r\n });\r\n builder.addCase(createUser.pending, (state, action) => {\r\n state.pending = true;\r\n });\r\n\r\n builder.addCase(createUser.rejected, (state, action) => {\r\n state.pending = false;\r\n });\r\n builder.addCase(deleteUserFromOrganization.fulfilled, (state, action) => {\r\n state.userOrganizations = state.userOrganizations?state.userOrganizations.filter(uo=> uo.id !== action.meta.arg.userId) :[] \r\n });\r\n builder.addCase(deleteUserFromOrganization.pending, (state, action) => {\r\n state.pending = true;\r\n });\r\n\r\n builder.addCase(deleteUserFromOrganization.rejected, (state, action) => {\r\n state.pending = false;\r\n });\r\n },\r\n});\r\n\r\n// eslint-disable-next-line\r\nexport const {} = usersSlice.actions;\r\n\r\nexport default usersSlice.reducer;\r\n","import {createSlice, PayloadAction} from '@reduxjs/toolkit';\r\n\r\nconst initialState = {\r\n open: false,\r\n showOverlaySpinner: false,\r\n};\r\n\r\nexport const webappSlice = createSlice({\r\n name: 'webapp',\r\n initialState,\r\n reducers: {\r\n toggleDrawer: (state) => {\r\n state.open = !state.open;\r\n },\r\n setOverlaySpinner: (state, action: PayloadAction) => {\r\n state.showOverlaySpinner = action.payload;\r\n },\r\n },\r\n});\r\n\r\nexport const {toggleDrawer, setOverlaySpinner} = webappSlice.actions;\r\n\r\nexport default webappSlice.reducer;\r\n","import { createAsyncThunk } from '@reduxjs/toolkit';\r\nimport { NewsClient } from '../../../api/api';\r\nimport { AsyncOperationHandler } from '../../../utilities/platform-helpers/api-helper';\r\nimport { newsClient } from '../../api-clients';\r\nexport const GetAllNewsItems = createAsyncThunk('news/getAllNewsItems', () => {\r\n return AsyncOperationHandler((client) => (client as NewsClient).getNews(), newsClient);\r\n});\r\n\r\nexport const GetSingleBlog = createAsyncThunk('news/getSingleBlog', (blog: string) => {\r\n return AsyncOperationHandler((client) => (client as NewsClient).getSingleBlog(blog), newsClient);\r\n});\r\n\r\n","import {createSlice} from '@reduxjs/toolkit';\r\nimport {GetAllNewsItems, GetSingleBlog} from './operation';\r\nimport {NewsState} from './types';\r\n\r\nconst initialState: NewsState = {\r\n newsItems: [],\r\n pending: false,\r\n fetchedAll: false,\r\n};\r\n\r\nexport const NewsSlice = createSlice({\r\n name: 'News',\r\n initialState,\r\n reducers: {},\r\n extraReducers: (builder) => {\r\n builder.addCase(GetAllNewsItems.fulfilled, (state, action) => {\r\n state.pending = false;\r\n state.fetchedAll = true;\r\n state.newsItems = action.payload ? action.payload : [];\r\n });\r\n\r\n builder.addCase(GetAllNewsItems.pending, (state, action) => {\r\n state.pending = true;\r\n });\r\n\r\n builder.addCase(GetAllNewsItems.rejected, (state, action) => {\r\n state.pending = false;\r\n });\r\n builder.addCase(GetSingleBlog.fulfilled, (state, action) => {\r\n state.pending = false;\r\n const newsItems = [...state.newsItems];\r\n if (action.payload) {\r\n newsItems.push(action.payload);\r\n state.newsItems = newsItems;\r\n }\r\n });\r\n\r\n builder.addCase(GetSingleBlog.pending, (state, action) => {\r\n state.pending = true;\r\n });\r\n\r\n builder.addCase(GetSingleBlog.rejected, (state, action) => {\r\n state.pending = false;\r\n });\r\n },\r\n});\r\n\r\n// eslint-disable-next-line\r\nexport const {} = NewsSlice.actions;\r\n\r\nexport default NewsSlice.reducer;\r\n","import {createAsyncThunk} from '@reduxjs/toolkit';\r\nimport {MarketingMaterialsClient} from '../../../api/api';\r\nimport {AsyncOperationHandler} from '../../../utilities/platform-helpers/api-helper';\r\nimport {marketingMaterialsClient} from '../../api-clients';\r\n\r\nexport const getMarketingMaterials = createAsyncThunk(\r\n 'MarketingMaterials/getMarketingMaterialsByOrganizationId',\r\n\r\n (input: {organizationId: number}) => {\r\n return AsyncOperationHandler(\r\n (client) => (client as MarketingMaterialsClient).getMarketingMaterialsByOrganizationId(input.organizationId),\r\n marketingMaterialsClient,\r\n );\r\n },\r\n);\r\n\r\nexport async function downloadMarketingMaterial(MaterialIds: number[], organizationId: number) {\r\n return AsyncOperationHandler(\r\n (client) => (client as MarketingMaterialsClient).getMarketingMaterialsByIds(MaterialIds, organizationId),\r\n marketingMaterialsClient,\r\n );\r\n}\r\n","import {MarketingMaterialCategories} from '../../../api/api';\r\nimport {localized, localizedInterpolation} from '../../../i18n/i18n';\r\nimport {\r\n BigMaterialCardPropsFromParent,\r\n DownloadLink,\r\n SmallMaterialCardPropsFromParent,\r\n} from '../../../view-scan-energi/components/marketing-material/Interfaces';\r\n\r\nexport interface MarketingMaterialCategoryPageDatas {\r\n Category: MarketingMaterialCategories;\r\n MarketingMaterialPageData: MarketingMaterialPageData;\r\n}\r\nexport const DefaultDownLoadLinks: DownloadLink[] = [\r\n {\r\n title: undefined,\r\n type: 'JPG',\r\n id: 0,\r\n disabled: true,\r\n },\r\n {\r\n title: undefined,\r\n type: 'PNG',\r\n id: 0,\r\n disabled: true,\r\n },\r\n {\r\n title: undefined,\r\n type: 'PDF',\r\n id: 0,\r\n disabled: true,\r\n },\r\n];\r\n\r\nexport interface MarketingMaterialPageData {\r\n banners: BigMaterialCardPropsFromParent;\r\n diploma: SmallMaterialCardPropsFromParent;\r\n soMeTexts: SmallMaterialCardPropsFromParent;\r\n cSRTexts: SmallMaterialCardPropsFromParent;\r\n}\r\n\r\nexport function DefaultMarketingMaterialPageData(\r\n marketingMaterialCategory: MarketingMaterialCategories,\r\n): MarketingMaterialPageData {\r\n return {\r\n banners: {\r\n access: false,\r\n title: localized('BannerTitle'),\r\n description: localizedInterpolation('BannerDescription', {\r\n product: GetCategoryName(marketingMaterialCategory),\r\n }),\r\n wideImgSrc: 'grey',\r\n squareImgSrc: 'grey',\r\n wideDownLoadLinks: DefaultDownLoadLinks,\r\n squareDownLoadLinks: DefaultDownLoadLinks,\r\n isNewToUser: false,\r\n organizationId: 0,\r\n },\r\n diploma: {\r\n access: false,\r\n title: localized('DiplomaTitle'),\r\n description: localizedInterpolation('DiplomaDescription', {\r\n product: GetCategoryName(marketingMaterialCategory),\r\n }),\r\n downLoadLinks: [\r\n {\r\n type: 'PDF',\r\n id: 0,\r\n title: localized('DiplomaTitle'),\r\n },\r\n ],\r\n isNewToUser: false,\r\n organizationId: 0,\r\n },\r\n soMeTexts: {\r\n access: false,\r\n title: localized('SoMeTitle'),\r\n description: localized('SoMeDescription'),\r\n downLoadLinks: [\r\n {\r\n type: 'Word',\r\n id: 0,\r\n title: localized('SoMeTitle'),\r\n },\r\n ],\r\n isNewToUser: false,\r\n organizationId: 0,\r\n },\r\n cSRTexts: {\r\n access: false,\r\n title: localized('CSRTextsTitle'),\r\n description: localized('CSRTextsDescription'),\r\n downLoadLinks: [\r\n {\r\n type: 'Word',\r\n id: 0,\r\n title: localized('CSRTextsTitle'),\r\n },\r\n ],\r\n isNewToUser: false,\r\n organizationId: 0,\r\n }\r\n };\r\n}\r\n\r\nexport const GetCategoryName = (marketingMaterialCategory: MarketingMaterialCategories) => {\r\n switch (marketingMaterialCategory) {\r\n case MarketingMaterialCategories.Co2Mapping:\r\n return localized('CO2mapping');\r\n case MarketingMaterialCategories.ClimateAction:\r\n return localized('ClimateAction');\r\n case MarketingMaterialCategories.EnergyConsulting:\r\n return localized('EnergyConsulting');\r\n case MarketingMaterialCategories.WindPower:\r\n return localized('WindPower');\r\n case MarketingMaterialCategories.ClimateForest:\r\n return localized('CLIMATEForest');\r\n default:\r\n return '';\r\n }\r\n};\r\n","import {createSlice, PayloadAction} from '@reduxjs/toolkit';\r\nimport {MarketingMaterialCategories, MarketingMaterialDto, MaterialFormats, MaterialTypes} from '../../../api/api';\r\nimport {localized} from '../../../i18n/i18n';\r\nimport {getMarketingMaterials} from './operation';\r\nimport {\r\n DefaultMarketingMaterialPageData,\r\n GetCategoryName,\r\n MarketingMaterialCategoryPageDatas,\r\n MarketingMaterialPageData,\r\n} from './types';\r\n\r\nconst initialNotifications: MarketingMaterialCategories[] = [];\r\nexport const InitialMarketingMaterialState: MarketingMaterialCategoryPageDatas[] = [\r\n {\r\n Category: MarketingMaterialCategories.WindPower,\r\n MarketingMaterialPageData: DefaultMarketingMaterialPageData(MarketingMaterialCategories.WindPower),\r\n },\r\n {\r\n Category: MarketingMaterialCategories.ClimateAction,\r\n MarketingMaterialPageData: DefaultMarketingMaterialPageData(MarketingMaterialCategories.ClimateAction),\r\n },\r\n {\r\n Category: MarketingMaterialCategories.Co2Mapping,\r\n MarketingMaterialPageData: DefaultMarketingMaterialPageData(MarketingMaterialCategories.Co2Mapping),\r\n },\r\n {\r\n Category: MarketingMaterialCategories.EnergyConsulting,\r\n MarketingMaterialPageData: DefaultMarketingMaterialPageData(MarketingMaterialCategories.EnergyConsulting),\r\n },\r\n {\r\n Category: MarketingMaterialCategories.ClimateForest,\r\n MarketingMaterialPageData: DefaultMarketingMaterialPageData(MarketingMaterialCategories.ClimateForest),\r\n },\r\n];\r\n\r\nexport const InitialActiveIds = [\r\n {\r\n Category: MarketingMaterialCategories.WindPower,\r\n ActiveIds: [] as number[],\r\n },\r\n {\r\n Category: MarketingMaterialCategories.ClimateAction,\r\n ActiveIds: [] as number[],\r\n },\r\n {\r\n Category: MarketingMaterialCategories.Co2Mapping,\r\n ActiveIds: [] as number[],\r\n },\r\n {\r\n Category: MarketingMaterialCategories.EnergyConsulting,\r\n ActiveIds: [] as number[],\r\n },\r\n {\r\n Category: MarketingMaterialCategories.ClimateForest,\r\n ActiveIds: [] as number[],\r\n },\r\n];\r\n\r\nexport const MarketingMaterialsSlice = createSlice({\r\n name: 'marketingMaterials',\r\n initialState: {\r\n marketingMaterials: InitialMarketingMaterialState,\r\n activeCategorys: [MarketingMaterialCategories.NotSet],\r\n activeMaterials: InitialActiveIds,\r\n unreadMMNotification: false,\r\n notifications: initialNotifications,\r\n materialDownloaded: false,\r\n },\r\n reducers: {\r\n addNotification: (state, action: PayloadAction) => {\r\n state.notifications.push(action.payload);\r\n\r\n if (state.notifications.length > 0) {\r\n state.unreadMMNotification = true;\r\n }\r\n },\r\n removeNotification: (state, action: PayloadAction) => {\r\n state.notifications = state.notifications.filter((notification) => notification !== action.payload);\r\n\r\n if (state.notifications.length === 0) {\r\n state.unreadMMNotification = false;\r\n }\r\n },\r\n resetMarketingMaterialNotifications: (state) => {\r\n state.notifications = [];\r\n state.unreadMMNotification = false;\r\n },\r\n },\r\n extraReducers: (builder) => {\r\n builder.addCase(getMarketingMaterials.pending, (state, action) => {\r\n state.marketingMaterials = InitialMarketingMaterialState;\r\n state.activeMaterials = InitialActiveIds;\r\n state.materialDownloaded = false;\r\n });\r\n builder.addCase(getMarketingMaterials.fulfilled, (state, action) => {\r\n if (action.payload) {\r\n state.activeCategorys = [] as MarketingMaterialCategories[];\r\n\r\n action.payload.forEach((marketingMaterialDto) => {\r\n const category = marketingMaterialDto.marketingMaterialCategory;\r\n\r\n //add ID to active materials\r\n const activeCategoryIndex = state.activeMaterials.findIndex(\r\n (activeMaterial) => activeMaterial.Category === category,\r\n );\r\n if (activeCategoryIndex > -1) {\r\n state.activeMaterials[activeCategoryIndex].ActiveIds.push(marketingMaterialDto?.id);\r\n }\r\n\r\n //add marketing material to state\r\n const categoryIndex = state.marketingMaterials.findIndex(\r\n (marketingMaterial) => marketingMaterial.Category === category,\r\n );\r\n state.activeCategorys.push(category);\r\n\r\n if (categoryIndex > -1) {\r\n const MarketingPage = state.marketingMaterials[categoryIndex].MarketingMaterialPageData;\r\n switch (marketingMaterialDto.materialType) {\r\n //small cards\r\n case MaterialTypes.CSRTexts:\r\n smallCardMapper(marketingMaterialDto, 'cSRTexts', MarketingPage, 'CSR Texts');\r\n break;\r\n case MaterialTypes.Diploma:\r\n smallCardMapper(\r\n marketingMaterialDto,\r\n 'diploma',\r\n MarketingPage,\r\n GetCategoryName(marketingMaterialDto.marketingMaterialCategory) + localized('DiplomaTitle'),\r\n );\r\n break;\r\n case MaterialTypes.SoMeTexts:\r\n smallCardMapper(marketingMaterialDto, 'soMeTexts', MarketingPage, localized('SoMeTitle'));\r\n break;\r\n //Big cards\r\n case MaterialTypes.WideBanner:\r\n bigCardMapper(marketingMaterialDto, 'banners', MarketingPage, 'wideDownLoadLinks', '');\r\n break;\r\n case MaterialTypes.SquareBanner:\r\n bigCardMapper(marketingMaterialDto, 'banners', MarketingPage, 'squareDownLoadLinks', '');\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n }\r\n });\r\n state.materialDownloaded = true;\r\n }\r\n });\r\n },\r\n});\r\n\r\nexport default MarketingMaterialsSlice.reducer;\r\n\r\nexport const {\r\n addNotification,\r\n removeNotification,\r\n resetMarketingMaterialNotifications,\r\n} = MarketingMaterialsSlice.actions;\r\n\r\nconst smallCardMapper = (\r\n marketingMaterialDto: MarketingMaterialDto,\r\n materialType: keyof MarketingMaterialPageData,\r\n marketingMaterialPageData: MarketingMaterialPageData,\r\n linkTitle: string,\r\n) => {\r\n if (materialType !== 'banners') {\r\n marketingMaterialPageData[materialType].access = true;\r\n\r\n marketingMaterialPageData[materialType].downLoadLinks = [\r\n {\r\n title: linkTitle,\r\n id: marketingMaterialDto.id,\r\n type: getFormatName(marketingMaterialDto.materialFormat),\r\n disabled: false,\r\n },\r\n ];\r\n marketingMaterialPageData[materialType].isNewToUser = marketingMaterialDto.newToUser;\r\n }\r\n};\r\n\r\nconst bigCardMapper = (\r\n marketingMaterialDto: MarketingMaterialDto,\r\n materialType: keyof MarketingMaterialPageData,\r\n marketingMaterialPageData: MarketingMaterialPageData,\r\n bannerType: 'squareDownLoadLinks' | 'wideDownLoadLinks',\r\n linkTitle: string,\r\n) => {\r\n if (materialType === 'banners') {\r\n marketingMaterialPageData[materialType].access = true;\r\n const DownloadLinkIndex = marketingMaterialPageData[materialType][bannerType].findIndex(\r\n (DownloadLink) => DownloadLink.type === getFormatName(marketingMaterialDto.materialFormat),\r\n );\r\n marketingMaterialPageData[materialType][bannerType][DownloadLinkIndex] = {\r\n title: linkTitle,\r\n id: marketingMaterialDto.id,\r\n type: getFormatName(marketingMaterialDto.materialFormat),\r\n disabled: false,\r\n };\r\n\r\n if (!marketingMaterialPageData[materialType].isNewToUser)\r\n marketingMaterialPageData[materialType].isNewToUser = marketingMaterialDto.newToUser;\r\n }\r\n};\r\n\r\nexport const getFormatName = (format: MaterialFormats) => {\r\n switch (format) {\r\n case MaterialFormats.PDF:\r\n return 'PDF';\r\n case MaterialFormats.Word:\r\n return 'Word';\r\n case MaterialFormats.JPG:\r\n return 'JPG';\r\n case MaterialFormats.PNG:\r\n return 'PNG';\r\n case MaterialFormats.MP4:\r\n return 'MP4';\r\n case MaterialFormats.NotSet:\r\n return '';\r\n default:\r\n return '';\r\n }\r\n};\r\n","import {Action, configureStore, getDefaultMiddleware, Reducer, ThunkAction} from '@reduxjs/toolkit';\r\nimport {PersistConfig, persistReducer} from 'redux-persist';\r\nimport {PersistPartial} from 'redux-persist/lib/persistReducer';\r\nimport storage from 'redux-persist/lib/storage';\r\nimport {Monitor} from '../services/telemetry-service';\r\nimport {isTokenExpired} from '../utilities/platform-helpers/auth-helper';\r\nimport authReducerBase, {setTriggerSignOut} from './features/auth/auth-slice';\r\nimport contactsReducer from './features/contact/contact-slice';\r\nimport selectedContractsReducer from './features/contract/contract-selected-slice';\r\nimport contractsReducer from './features/contract/contract-slice';\r\nimport documentsReducer from './features/document/document-slice';\r\nimport energyConsumptionReducer from './features/energy-consumption/energy-consumption-slice';\r\nimport greenOptimizationReducer from './features/green-optimization/green-optimization-slice';\r\nimport debtorPostingReducer from './features/invoice/invoice-slice';\r\nimport organizationReducer from './features/organization/organization-slice';\r\nimport pageSettingReducerBase from './features/page-header-setting/page-header-setting-slice';\r\nimport snackbarReducer from './features/snackbar/snackbar-slice';\r\nimport statusMessageReducer from './features/status-message/status-messages-slice';\r\nimport userReducer from './features/user/user-slice';\r\nimport webAppReducerBase from './features/webapp/webapp-slice';\r\nimport newsReducer from './features/news/news-slice';\r\nimport marketingMaterialReducer from './features/marketing-material/marketing-material-slice';\r\n\r\nexport type AppState = ReturnType;\r\n\r\nexport const authInterceptor = (dispatch: any) => (next: any) => (action: any) => {\r\n if (action.error && action.error.code === '401') {\r\n //Handle unauthorized\r\n if (isTokenExpired()) {\r\n Monitor.logTrace('Unauthorized: Token has expired');\r\n } else {\r\n Monitor.logTrace(\"Unauthorized: User don't have the requiered permissions\");\r\n }\r\n store.dispatch(setTriggerSignOut(true));\r\n //store.dispatch(setNewToken(''));\r\n } else {\r\n return next(action);\r\n }\r\n};\r\n\r\nconst createPersistReducer = >>(config: PersistConfig, reducer: T) => {\r\n return persistReducer(config, reducer) as typeof reducer & PersistPartial;\r\n};\r\n\r\nconst customizedMiddleware = getDefaultMiddleware({\r\n // This is needed because Date objects are considered non-serializable\r\n serializableCheck: false,\r\n immutableCheck: false,\r\n});\r\n\r\n// Make sure that authInterceptor is the first middleware to be executed to ensure unwanted sideeffects\r\ncustomizedMiddleware.unshift(authInterceptor);\r\n\r\n// Create persisted reducers\r\nconst webappPersistConfig: PersistConfig = {\r\n key: 'webAppReducer',\r\n storage,\r\n whitelist: ['open'],\r\n blacklist: ['showOverlaySpinner'],\r\n};\r\nconst webAppReducer = createPersistReducer(webappPersistConfig, webAppReducerBase);\r\n\r\nconst pageSettingPersistConfig: PersistConfig = {\r\n key: 'pageSettingReducer',\r\n storage,\r\n whitelist: ['pageSettings'],\r\n};\r\n\r\nconst pageSettingReducer = createPersistReducer(pageSettingPersistConfig, pageSettingReducerBase);\r\n\r\nconst authPersistConfig: PersistConfig = {\r\n key: 'authReducer',\r\n storage,\r\n whitelist: ['token'],\r\n};\r\nconst authReducer = createPersistReducer(authPersistConfig, authReducerBase);\r\n\r\nexport const store = configureStore({\r\n reducer: {\r\n snackbarReducer,\r\n authReducer,\r\n webAppReducer,\r\n pageSettingReducer,\r\n statusMessageReducer,\r\n greenOptimizationReducer,\r\n energyConsumptionReducer,\r\n organizationReducer,\r\n documentsReducer,\r\n contractsReducer,\r\n contactsReducer,\r\n selectedContractsReducer,\r\n userReducer,\r\n debtorPostingReducer,\r\n newsReducer,\r\n marketingMaterialReducer,\r\n },\r\n middleware: customizedMiddleware,\r\n});\r\nexport type AppThunk = ThunkAction>;\r\n","import { useEffect, useRef } from \"react\";\r\n\r\nexport const usePrevious = (value: T): T | undefined => {\r\n const ref = useRef();\r\n useEffect(() => {\r\n ref.current = value;\r\n });\r\n return ref.current;\r\n};","import * as msal from '@azure/msal-browser';\r\nimport {localized} from '../../i18n/i18n';\r\nimport {decodeToken} from '../../utilities/platform-helpers/auth-helper';\r\nimport {B2CConfig, TOKEN_ROLE_IDENTIFIER, TOKEN_STORAGE_KEY} from './../auth-constants';\r\nimport { Monitor } from '../../services/telemetry-service';\r\ndeclare const window: any;\r\n\r\n// AD b2c specific configs\r\nconst authConfig: msal.Configuration = {\r\n auth: {\r\n authority: `https://${B2CConfig.Tenant}.b2clogin.com/tfp/${B2CConfig.TenantUrl}/${B2CConfig.SignInPolicy}`,\r\n clientId: B2CConfig.ClientId,\r\n knownAuthorities: [`https://${B2CConfig.Tenant}.b2clogin.com/tfp/${B2CConfig.TenantUrl}/${B2CConfig.SignInPolicy}`],\r\n redirectUri: B2CConfig.RedirectUri,\r\n },\r\n cache: {\r\n cacheLocation: B2CConfig.CacheLocation,\r\n storeAuthStateInCookie: false,\r\n },\r\n};\r\nconst authParameters = {\r\n scopes: ['openid', B2CConfig.Scope],\r\n};\r\n\r\nlet accountId = '';\r\n// General auth helper functions\r\n\r\nexport const initAuthSettings = async (setWaitForResponse: (waitForResponse: boolean) => void) => {\r\n const msalPublicClient: msal.IPublicClientApplication = await new msal.PublicClientApplication(authConfig);\r\n const handleResponse = (resp: any) => {\r\n if (resp !== null) {\r\n accountId = resp.account.homeAccountId;\r\n } else {\r\n /**\r\n * See here for more info on account retrieval:\r\n * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-common/docs/Accounts.md\r\n */\r\n const currentAccounts = msalPublicClient.getAllAccounts();\r\n if (currentAccounts === null) {\r\n return;\r\n } else if (currentAccounts.length > 1) {\r\n accountId = currentAccounts[0].homeAccountId;\r\n console.log('Multiple accounts detected.');\r\n } else if (currentAccounts.length === 1) {\r\n accountId = currentAccounts[0].homeAccountId;\r\n }\r\n }\r\n setWaitForResponse(true);\r\n };\r\n msalPublicClient\r\n .handleRedirectPromise()\r\n .then(handleResponse)\r\n .catch((err: msal.BrowserAuthError) => {\r\n // If error is password reset redirect to password reset policy\r\n if (err.errorMessage.includes('AADB2C90118')) {\r\n let passwordResetRequest: msal.RedirectRequest = {\r\n scopes: authParameters.scopes,\r\n authority: `https://${B2CConfig.Tenant}.b2clogin.com/tfp/${B2CConfig.TenantUrl}/${B2CConfig.PasswordResetPolicy}`,\r\n }\r\n msalPublicClient.loginRedirect(passwordResetRequest);\r\n // Error is user returning from aborted password redirect, redirect to login page\r\n } else if (err.errorMessage.includes('AADB2C90091')) {\r\n msalPublicClient.loginRedirect();\r\n } else {\r\n // Application insights logging in case of unhandled error\r\n Monitor.logException(err);\r\n // Console logging\r\n console.error(err);\r\n }\r\n });\r\n return msalPublicClient;\r\n};\r\nexport async function clientIsAuthenticated(authClient: any) {\r\n return accountId ? true : false;\r\n}\r\n\r\nexport async function clientGetUser(authClient: any) {\r\n let token = localStorage.getItem('token');\r\n if (token) {\r\n let jwtToken = decodeToken(token);\r\n let user: any = {\r\n name: jwtToken.name,\r\n role: localized(jwtToken[TOKEN_ROLE_IDENTIFIER]),\r\n };\r\n return user;\r\n }\r\n return {} as any;\r\n}\r\n\r\nexport async function clientLoginWithPopup(authClient: any, params: any) {\r\n const msalClient = authClient as msal.IPublicClientApplication;\r\n await msalClient.loginPopup(params);\r\n}\r\nexport const clientLoginWithRedirect = async (authClient: any, params: any) => {\r\n const msalClient = authClient as msal.IPublicClientApplication;\r\n try {\r\n msalClient.loginRedirect(authParameters);\r\n } catch (err) {\r\n // handle error\r\n }\r\n};\r\n// msal handles redirect\r\nexport async function clientHandleRedirectCallback(authClient: any) {}\r\n\r\n// Get token silently\r\nexport const clientGetTokenSilently = async (authClient: any, params: any) => {\r\n const msalClient = authClient as msal.IPublicClientApplication;\r\n let currentAccount = msalClient.getAccountByHomeId(accountId);\r\n\r\n let redirectRequest: msal.RedirectRequest = {\r\n scopes: authParameters.scopes,\r\n };\r\n\r\n let silentRequest: msal.SilentRequest = {\r\n scopes: [B2CConfig.Scope],\r\n account: currentAccount!,\r\n forceRefresh: true,\r\n };\r\n return msalClient\r\n .acquireTokenSilent(silentRequest)\r\n .then((response) => {\r\n if (response.accessToken && response.accessToken === '') {\r\n throw new msal.InteractionRequiredAuthError();\r\n }\r\n return response.accessToken;\r\n })\r\n .catch((error: any) => {\r\n console.log('silent token acquisition fails. acquiring token using redirect');\r\n if (error instanceof msal.InteractionRequiredAuthError) {\r\n // fallback to interaction when silent call fails\r\n return msalClient.acquireTokenRedirect(redirectRequest);\r\n } else if (error instanceof msal.BrowserAuthError) {\r\n return msalClient.acquireTokenRedirect(redirectRequest);\r\n } else {\r\n console.log('unhandled auth error', error);\r\n }\r\n });\r\n};\r\n// Extracts userole from token\r\nexport function getUserRole(tokenId: string = 'token') {\r\n let token = localStorage.getItem(tokenId);\r\n\r\n if (token) {\r\n let jwtToken = decodeToken(token);\r\n\r\n if (jwtToken[TOKEN_ROLE_IDENTIFIER]) {\r\n return jwtToken[TOKEN_ROLE_IDENTIFIER];\r\n } else {\r\n return undefined;\r\n }\r\n }\r\n return '';\r\n}\r\n// Starts the logout process.\r\nexport const clientLogout = (authClient: any, params: any) => {\r\n const msalClient = authClient as msal.IPublicClientApplication;\r\n localStorage.removeItem(TOKEN_STORAGE_KEY);\r\n msalClient.logout();\r\n};\r\n","// src/react-auth0-spa.js\r\nimport React, {useContext, useEffect, useState} from 'react';\r\nimport {useDispatch, useSelector} from 'react-redux';\r\nimport {logOutAuth, setNewToken, setTriggerSignOut, setIsInitialized} from '../state/features/auth/auth-slice';\r\nimport {AppState, store} from '../state/store';\r\nimport {usePrevious} from '../utilities/use-previous-hook';\r\nimport {\r\n clientGetTokenSilently,\r\n clientGetUser,\r\n clientHandleRedirectCallback,\r\n clientIsAuthenticated,\r\n clientLoginWithPopup,\r\n clientLoginWithRedirect,\r\n clientLogout,\r\n getUserRole,\r\n initAuthSettings,\r\n} from './b2c/ad-b2c-auth-helper';\r\n\r\nconst DEFAULT_REDIRECT_CALLBACK = () => window.history.replaceState({}, document.title, window.location.pathname);\r\nlet getTokenCounter = 0;\r\nexport const AuthContext = React.createContext({} as any);\r\nexport const useAuth = () => useContext(AuthContext);\r\n\r\nexport const AuthProvider = ({children, onRedirectCallback = DEFAULT_REDIRECT_CALLBACK, ...initOptions}: any) => {\r\n const [isAuthenticated, setIsAuthenticated] = useState();\r\n const [user, setUser] = useState();\r\n const [role, setRole] = useState('');\r\n const [authSettings, setAuthSettings] = useState();\r\n const [loading, setLoading] = useState(true);\r\n const [popupOpen, setPopupOpen] = useState(false);\r\n const [waitForResponse, setWaitForResponse] = useState(false);\r\n const {triggerSignOut} = useSelector((store: AppState) => store.authReducer);\r\n const prevTriggerSignOut = usePrevious(triggerSignOut);\r\n\r\n const dispatch = useDispatch();\r\n const logout = (p: any) => {\r\n store.dispatch(logOutAuth());\r\n clientLogout(authSettings, p);\r\n };\r\n useEffect(() => {\r\n const initAuth = async () => {\r\n try {\r\n const tmpAuthSettings = await initAuthSettings(setWaitForResponse);\r\n setAuthSettings(tmpAuthSettings);\r\n } catch (error) {}\r\n };\r\n initAuth();\r\n // eslint-disable-next-line\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (triggerSignOut && triggerSignOut !== prevTriggerSignOut) {\r\n logout({returnTo: window.location.origin});\r\n dispatch(setTriggerSignOut(false));\r\n }\r\n // eslint-disable-next-line\r\n }, [dispatch, logout, setTriggerSignOut, triggerSignOut, prevTriggerSignOut]);\r\n\r\n useEffect(() => {\r\n const loadingChanged = async () => {\r\n if (waitForResponse && authSettings) {\r\n const tmpIsAuthenticated = await clientIsAuthenticated(authSettings);\r\n setIsAuthenticated(tmpIsAuthenticated);\r\n if (tmpIsAuthenticated) {\r\n const tmpUser = await clientGetUser(authSettings);\r\n setUser(tmpUser);\r\n getTokenSilently(authSettings).then((newToken) => {\r\n dispatch(setNewToken(newToken));\r\n setRole(getUserRole());\r\n dispatch(setIsInitialized(true));\r\n });\r\n }\r\n\r\n setLoading(false);\r\n }\r\n };\r\n\r\n loadingChanged();\r\n\r\n // eslint-disable-next-line\r\n }, [waitForResponse, authSettings]);\r\n\r\n const loginWithPopup = async (params = {}) => {\r\n setPopupOpen(true);\r\n try {\r\n await clientLoginWithPopup(authSettings, params);\r\n } catch (error) {\r\n console.error(error);\r\n } finally {\r\n setPopupOpen(false);\r\n }\r\n\r\n const tmpUser = await clientGetUser(authSettings);\r\n setUser(tmpUser);\r\n setRole(getUserRole());\r\n setIsAuthenticated(true);\r\n };\r\n\r\n const handleRedirectCallback = async () => {\r\n await clientHandleRedirectCallback(authSettings);\r\n };\r\n\r\n const loginWithRedirect = (p: any) => {\r\n clientLoginWithRedirect(authSettings, p);\r\n };\r\n\r\n const getIdTokenClaims = (p: any) => authSettings.getIdTokenClaims(p);\r\n\r\n const getTokenSilently = async (p: any) => {\r\n // This secures endless get access tokens retry. e.g if frontend Auth doesn't match backend Auth\r\n resetTokenCounter();\r\n getTokenCounter++;\r\n if (getTokenCounter > 15) {\r\n logout(p);\r\n }\r\n\r\n let item = await clientGetTokenSilently(authSettings, p);\r\n setRole(getUserRole());\r\n const tmpUser = await clientGetUser(authSettings);\r\n setUser(tmpUser);\r\n return item;\r\n };\r\n\r\n const getTokenWithPopup = (p: any) => authSettings.getTokenWithPopup(p);\r\n\r\n let getTokenTimeout: NodeJS.Timeout | undefined;\r\n function resetTokenCounter() {\r\n if (getTokenTimeout) {\r\n clearTimeout(getTokenTimeout);\r\n getTokenTimeout = undefined;\r\n }\r\n getTokenTimeout = setTimeout(() => {\r\n getTokenCounter = 0;\r\n }, 2000);\r\n }\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n","import {Box, Button, SvgIconTypeMap} from '@material-ui/core';\r\nimport {OverridableComponent} from '@material-ui/core/OverridableComponent';\r\nimport React, {FC, useCallback} from 'react';\r\n\r\ninterface PropsFromParent {\r\n text: string;\r\n onClick: (e: any) => void;\r\n icon?: OverridableComponent>;\r\n containerClasses?: any;\r\n disabled?: boolean;\r\n type?: 'button' | 'submit' | 'reset' | undefined;\r\n buttonColor?: 'inherit' | 'default' | 'primary' | 'secondary' | undefined;\r\n}\r\n\r\ntype Props = PropsFromParent;\r\n\r\nexport const BasicButton: FC = React.memo(\r\n ({icon, onClick, text, containerClasses, disabled, type, buttonColor = 'primary'}) => {\r\n const onClickLocal = useCallback(\r\n (e) => {\r\n onClick(e);\r\n },\r\n [onClick],\r\n );\r\n\r\n return (\r\n \r\n \r\n {text}\r\n \r\n \r\n );\r\n },\r\n);\r\n","import {createStyles, makeStyles, Theme} from '@material-ui/core';\r\nimport React from 'react';\r\nimport {FC} from 'react';\r\nimport {localized} from '../i18n/i18n';\r\nimport {BasicButton} from '../view/components/default-components/buttons/basic-button';\r\nimport {useAuth} from './general-auth-provider';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n container: {\r\n heigth: '100%',\r\n width: '100%',\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n flexDirection: 'column',\r\n },\r\n title: {\r\n fontSize: 50,\r\n },\r\n subTitle: {\r\n fontSize: 30,\r\n margin: 10,\r\n },\r\n }),\r\n);\r\n\r\nconst NoPermissionPage: FC = () => {\r\n const {logout} = useAuth();\r\n const signOut = () => logout({returnTo: window.location.href});\r\n const classes = useStyles();\r\n\r\n return (\r\n
\r\n
{localized('NoPermission')}
\r\n {localized('NoPermissionSubTitle')\r\n .split('\\n')\r\n .map((text, index) => (\r\n
\r\n {text}\r\n
\r\n ))}\r\n\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default NoPermissionPage;\r\n","export const routes = {\r\n userManagement: '/user-management',\r\n userManagementCreate: '/user-management/create',\r\n userManagementEdit: '/user-management/:userId/edit',\r\n\r\n organization: '/organization',\r\n organizationCreate: '/organization/create',\r\n organizationEdit: '/organization/:organizationId',\r\n\r\n template: '/template',\r\n dashboard: '/',\r\n sustainableInitiatives: '/sustainable-initiatives',\r\n economy: '/economy',\r\n contact: '/contact',\r\n contracts: '/contracts',\r\n documents: '/documents',\r\n eBooks: '/e-books',\r\n energyConsumption: '/energy-consumption',\r\n news: '/blog',\r\n singleNewsItem: '/blog/*',\r\n userInfo: '/user-info',\r\n marketingMaterial: '/marketing-materials',\r\n\r\n callback: '/callback',\r\n\r\n noPermission: '/no-permission',\r\n};\r\n\r\nexport const defaultRoute = routes.dashboard;\r\n","// Theme colors\r\nexport const primaryColor = '#006e64';\r\nexport const primaryTextColor = '#000000';\r\nexport const primaryColorLighter = '#4B887E';\r\n\r\n\r\nexport const secondaryColor = primaryColor;\r\nexport const secondaryColorActive = primaryColorLighter;\r\nexport const secondaryTextColor = '#103933';\r\nexport const whiteTextColor = '#FCFCFC';\r\n\r\nexport const disabledColor = '#C6C6C6';\r\nexport const disabledImageColor = '#F2F2F2';\r\n\r\nexport const backgroundColor = '#F2F2F2';\r\n\r\nexport const environmentGreen = '#00C370';\r\nexport const validColor = primaryColor;\r\nexport const invalidColor = '#f44336';\r\nexport const warningColor = '#FF9E02';\r\nexport const warningIconColor = '#FF9E02';\r\n\r\n// Component colors\r\n\r\n// Headline and sub - card\r\nexport const cardHeadline = primaryTextColor;\r\nexport const cardSubText = '#5D5D5D';\r\n\r\n// Header\r\nexport const headerBackgroundColor = backgroundColor;\r\nexport const headerIconColor = secondaryTextColor;\r\nexport const headerTextColor = secondaryTextColor;\r\nexport const headerSelectedTextColor = primaryTextColor;\r\nexport const headerSelectedIconColor = primaryTextColor;\r\n\r\n// Sidebar\r\nexport const sidebarBackgroundColor = backgroundColor;\r\nexport const sidebarIconBorder = '2px solid #3333331';\r\nexport const sidebarTextColor = primaryTextColor;\r\nexport const sidebarBackgroundSelectedColor = primaryColor;\r\nexport const sidebarItemSelectedColor = whiteTextColor;\r\n\r\n// Content Wrapper\r\nexport const contentWrapperBackgroundColor = secondaryColor;\r\nexport const contentWrapperTextColor = secondaryTextColor;\r\n\r\n// Basic Card\r\nexport const basicCardBgColor = '#FCFCFC';\r\nexport const basicCardBoxShadow = '3px 3px 10px #838D9B33';\r\nexport const basicCardTextColor = '#5D5D5D';\r\n\r\n// Tooltip\r\nexport const tooltipPrimaryTextColor = primaryTextColor;\r\nexport const tooltipSecondaryTextColor = '#959595';\r\n\r\n// Customer Service Help\r\nexport const speechBubbleShadow = '3px 3px 3px 3px #838D9B33';\r\n\r\n// Button\r\nexport const btnBackgroundColor = primaryColor;\r\nexport const btnTextColor = '#5D5D5D';\r\nexport const btnDisabledColor = '#838D9B33';\r\nexport const btnHoverBackgroundColor = btnDisabledColor;\r\nexport const btnHoverTextColor = primaryTextColor;\r\nexport const btnBorderColor = '1px solid #E0E0E0'\r\n\r\n// Arrow Button\r\nexport const arrowColor = '#959595'\r\n\r\n// Input\r\nexport const inputTextColor = secondaryTextColor;\r\n\r\n// Toggle\r\nexport const toggleButtonColor = primaryTextColor;\r\nexport const toggleButtonColorSelected = primaryColor;\r\nexport const toggleButtonTextColor = '#FFFFFF';\r\n\r\n// Switch\r\nexport const switchThumbOnColor = '#FFFFFF';\r\nexport const switchThumbOffColor = primaryTextColor;\r\nexport const switchTrackOnColor = primaryColor;\r\nexport const switchTrackOffColor = '#FFFFFF';\r\nexport const switchBorderOnColor = primaryColor;\r\nexport const switchBorderOffColor = primaryTextColor;\r\n\r\n// Info item\r\nexport const infoItemBackgroundColor = secondaryColor;\r\nexport const infoItemTextColor = secondaryTextColor;\r\n\r\n// Textfield\r\nexport const textFieldInputColor = secondaryTextColor;\r\nexport const textFieldLabelColor = primaryTextColor;\r\nexport const textFieldSuffixColor = primaryTextColor;\r\nexport const textFieldPrefixColor = primaryTextColor;\r\n\r\n// Checkbox Filter\r\nexport const checkboxFilterBg = '#FAFAFA';\r\nexport const checkboxChecked = primaryColor;\r\nexport const checkBoxUnChecked = primaryTextColor;\r\n\r\n// SearchInput\r\nexport const searchBgColor = '#E6E6E6';\r\nexport const searchTextColor = secondaryTextColor;\r\n\r\n// List Table\r\nexport const ListTableBgColor = secondaryColor;\r\nexport const ListTableTextColor = secondaryTextColor;\r\n\r\n// Info item 2\r\nexport const infoItem2BackgroundColor = '#FAFAFA';\r\nexport const infoItem2TextColor = secondaryTextColor;\r\n\r\n// Navigation icon color\r\nexport const navigationIconColor = '#c6c6c6'\r\n\r\n// Chart\r\nexport const primaryChartColor = primaryColor;\r\nexport const secondaryChartColor = '#93B7B1';\r\nexport const primaryAverageChartColor = primaryTextColor;\r\nexport const secondaryAverageChartColor = primaryColorLighter;\r\nexport const primaryAverageLabelColor = primaryColorLighter;\r\nexport const secondaryAverageLabelColor = '#FFD873';\r\n\r\n// Code input\r\nexport const inputCodeBoarderColor = navigationIconColor\r\nexport const inputCodeBackgroundColor = checkboxFilterBg\r\nexport const inputCodeTextColor = primaryTextColor\r\n\r\n// Checkmark\r\nexport const checkmarkColor = '#00C370';\r\n","import {Grid, GridProps} from '@material-ui/core';\r\nimport React, {FC} from 'react';\r\n\r\n// Creating a custom grid-breakpoint\r\n// Inspiration: https://stackoverflow.com/questions/57773595/react-material-ui-grid-is-it-possible-to-add-breakpoints\r\n\r\ndeclare module '@material-ui/core/styles/createBreakpoints' {\r\n export interface BreakpointOverrides {\r\n xs: true; // removes the `xs` breakpoint\r\n sm: true;\r\n m: true;\r\n md: true;\r\n lg: true;\r\n xl: true;\r\n betweenlgandxl: true;\r\n }\r\n}\r\n\r\ninterface PropsCostumGrid {}\r\nexport const GridWithCustomBreakpoints: FC = React.memo(({children, ...others}) => {\r\n const betweenlgandxlBreakpoint = `MuiGrid-grid-betweenlgandxl-${others.betweenlgandxl}`;\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n});\r\n","export const h1 = '32px';\r\nexport const h2 = '20px';\r\nexport const h3 = '18px';\r\nexport const h4 = '16px';\r\nexport const h5 = '14px';\r\nexport const h6 = '12px';\r\n\r\nexport const body1 = '16px';\r\nexport const body2 = '14px';\r\nexport const body3 = '12px';","import ReactDOMServer from \"react-dom/server\";\r\n\r\nconst videoRegex = /\\{% video_player.*%\\}/g;\r\n \r\nconst playerIdRegex = /player_id='[0-9]+'/g;\r\n\r\nconst number_regex = /[0-9]+/g;\r\n\r\n export const replaceVideoTextWithIFrame = (text: string, iFrameFn: (playerIdNumber: number) => JSX.Element) => {\r\n return text.replaceAll(videoRegex, (text) => {\r\n const playerIdTextString = text.match(playerIdRegex);\r\n if (playerIdTextString == null) return '';\r\n\r\n const playerIdString = playerIdTextString[0].match(number_regex);\r\n const playerIdNumber = Number(playerIdString);\r\n\r\n const iFrameElement = iFrameFn(playerIdNumber);\r\n const iFrameElementHTML = ReactDOMServer.renderToStaticMarkup(iFrameElement);\r\n return iFrameElementHTML;\r\n });\r\n };","import {Box, BoxProps, createStyles, makeStyles, Theme} from '@material-ui/core';\r\nimport clsx from 'clsx';\r\nimport React, {FC} from 'react';\r\nimport {basicCardBgColor, basicCardBoxShadow} from '../../../../styles/color-constants';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n responseiveBox: {\r\n transition: 'color 0.1s ease-in-out, background-color 0.1s ease-in-out',\r\n [theme.breakpoints.down('sm')]: {\r\n margin: '5px 5px 5px 5px',\r\n },\r\n [theme.breakpoints.down('xs')]: {\r\n margin: '5px 0 5px 0',\r\n },\r\n },\r\n }),\r\n);\r\n\r\nexport const BasicCard: FC = React.memo((props) => {\r\n const classes = useStyles();\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n});\r\n","import {Box, Button, createStyles, makeStyles, Theme} from '@material-ui/core';\r\nimport LabelIcon from '@material-ui/icons/Label';\r\nimport PersonIcon from '@material-ui/icons/Person';\r\nimport React, {FC} from 'react';\r\nimport {localized} from '../../../i18n/i18n';\r\nimport {primaryColor, secondaryColor} from '../../../styles/color-constants';\r\nimport {h5} from '../../../styles/font-size-constants';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n documnetFooter: {\r\n fontSize: h5,\r\n alignItems: 'center',\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n flexDirection: 'row',\r\n width: (props: PropsFromParent) => props.minWidth,\r\n flexWrap: 'wrap',\r\n },\r\n documnetFooterContentContainer: {\r\n fontSize: h5,\r\n alignItems: 'center',\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n flexDirection: 'row',\r\n flexWrap: 'wrap',\r\n width: 'fit-content',\r\n maxWidth: '500px',\r\n },\r\n flexItems: {\r\n margin: '0 5px 0 0',\r\n display: 'flex',\r\n },\r\n icons: {\r\n alignSelf: 'center',\r\n color: primaryColor,\r\n fontSize: '20',\r\n margin: '0 3px 0 0',\r\n },\r\n root: {\r\n minWidth: '80px',\r\n minHeight: '32px',\r\n borderRadius: '10px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n backgroundColor: secondaryColor,\r\n margin: '10px 0px 10px 10px',\r\n color: '#fff',\r\n boxShadow: '3px 3px 10px #838D9B33',\r\n border: '1px solid #E0E0E0',\r\n fontSize: h5,\r\n textTransform: 'none',\r\n '&:hover': {\r\n backgroundColor: '#3333',\r\n color: '#FFF',\r\n },\r\n '&.Mui-disabled': {\r\n backgroundColor: secondaryColor,\r\n color: '#FFF',\r\n },\r\n },\r\n }),\r\n);\r\ninterface PropsFromParent {\r\n category: string;\r\n date?: Date;\r\n author: string;\r\n minWidth?: number;\r\n readMore?: () => void;\r\n}\r\nexport const DashboardFilesCardFooter: FC = React.memo(\r\n ({category, date, author, minWidth, readMore}) => {\r\n const classes = useStyles({minWidth} as PropsFromParent);\r\n\r\n return (\r\n \r\n \r\n {category.length > 0 && (\r\n \r\n \r\n {category}\r\n \r\n )}\r\n {date && {date.toLocaleDateString()}}\r\n {category.length > 0 && (\r\n \r\n \r\n {author}\r\n \r\n )}\r\n \r\n {readMore && (\r\n \r\n )}\r\n \r\n );\r\n },\r\n);\r\n","import {Button, createStyles, Grid, makeStyles, Theme} from '@material-ui/core';\r\nimport KeyboardArrowLeftOutlinedIcon from '@material-ui/icons/KeyboardArrowLeftOutlined';\r\nimport React, {useCallback, useEffect, useMemo, useState} from 'react';\r\nimport {useDispatch, useSelector} from 'react-redux';\r\nimport {useHistory} from 'react-router-dom';\r\nimport {INews} from '../../../api/api';\r\nimport {localized} from '../../../i18n/i18n';\r\nimport {GetSingleBlog} from '../../../state/features/news/operation';\r\nimport {AppState} from '../../../state/store';\r\nimport {arrowColor, primaryTextColor, secondaryColor, whiteTextColor} from '../../../styles/color-constants';\r\nimport {GridWithCustomBreakpoints} from '../../../styles/custom-grid-breakpoints';\r\nimport {h5} from '../../../styles/font-size-constants';\r\nimport {hubspotVideoURL} from '../../../utilities/constants';\r\nimport {replaceVideoTextWithIFrame} from '../../../utilities/platform-helpers/html-video-helper';\r\nimport {BasicCard} from '../../../view/components/default-components/basic-card/basic-card';\r\nimport {DashboardFilesCardFooter} from '../dashboard/dashboard-files-card-footer';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n gridWithMaxWidth: {\r\n maxWidth: 1200,\r\n width: 'calc(100% - 64px )',\r\n '& img': {maxWidth: '100% !important'},\r\n },\r\n headerContainer: {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n justifyContent: 'space-between',\r\n\r\n paddingRight: 10,\r\n\r\n marginRight: 10,\r\n [theme.breakpoints.up('md')]: {\r\n marginLeft: 6,\r\n paddingLeft: 10,\r\n },\r\n },\r\n root: {\r\n minWidth: '110px',\r\n paddingRight: '20px',\r\n minHeight: '32px',\r\n borderRadius: '10px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'space-between',\r\n backgroundColor: whiteTextColor,\r\n marginRight: '5px',\r\n color: primaryTextColor,\r\n boxShadow: '3px 3px 10px #838D9B33',\r\n border: '1px solid #E0E0E0',\r\n fontSize: h5,\r\n textTransform: 'none',\r\n '&:hover': {\r\n backgroundColor: '#3333',\r\n color: '#FFF',\r\n },\r\n '&.Mui-disabled': {\r\n backgroundColor: secondaryColor,\r\n color: '#FFF',\r\n },\r\n },\r\n arrow: {\r\n opacity: 1,\r\n color: arrowColor,\r\n '&:hover': {\r\n color: primaryTextColor,\r\n },\r\n },\r\n containerClassName: {\r\n maxWidth: 'calc(100% - 64px )',\r\n },\r\n contentContainer: {\r\n [theme.breakpoints.up('lg')]: {\r\n paddingRight: 10,\r\n paddingLeft: 10,\r\n },\r\n },\r\n iFrameStyle: {\r\n position: 'absolute',\r\n width: '100% !important',\r\n height: '100% !important',\r\n border: '0 none',\r\n },\r\n }),\r\n);\r\n\r\nexport const SingleNewsContentPage = React.memo(() => {\r\n const history = useHistory();\r\n const classes = useStyles();\r\n const searchParam = history.location.pathname;\r\n const newsItems = useSelector((state: AppState) => state.newsReducer.newsItems);\r\n const [newsItemToUse, setNewsItemToUse] = useState(\r\n newsItems.find((nt) => nt.id && searchParam.includes(nt.id)),\r\n );\r\n const dispatch = useDispatch();\r\n\r\n const iFrameVideoBuilder = useCallback((playerId: number) => {\r\n return (\r\n
\r\n
\r\n \r\n
\r\n
\r\n );\r\n }, [classes.iFrameStyle]);\r\n\r\n const newsItemWithParsedVideo: INews | undefined = useMemo(() => {\r\n if (!newsItemToUse || !newsItemToUse.body) return undefined;\r\n\r\n const newsItemBody = newsItemToUse.body;\r\n\r\n const newBody = replaceVideoTextWithIFrame(newsItemBody, iFrameVideoBuilder);\r\n return {\r\n ...(newsItemToUse as INews),\r\n body: newBody,\r\n };\r\n }, [newsItemToUse, iFrameVideoBuilder]);\r\n\r\n useEffect(() => {\r\n if (newsItemToUse === undefined) {\r\n dispatch(GetSingleBlog(searchParam.slice(1)));\r\n }\r\n }, [dispatch, newsItemToUse, searchParam]);\r\n\r\n const goBack = useCallback(() => {\r\n if (history.action === 'POP') {\r\n window.close();\r\n } else {\r\n history.goBack();\r\n }\r\n }, [history]);\r\n\r\n useEffect(() => {\r\n if (!newsItemToUse) {\r\n setNewsItemToUse(newsItems.find((nt) => nt.id && searchParam.includes(nt.id)));\r\n }\r\n }, [newsItems, newsItemToUse, searchParam, setNewsItemToUse]);\r\n\r\n return (\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n {newsItemWithParsedVideo && newsItemWithParsedVideo.headerImageSrc && (\r\n \"GreenEnergy\"\r\n )}\r\n {newsItemWithParsedVideo &&
}\r\n
\r\n
\r\n
\r\n
\r\n );\r\n});\r\n\r\nfunction setInnerHtml(newsToUse: INews) {\r\n return {__html: newsToUse.body ? newsToUse.body : ''};\r\n}\r\n","import {useRouteMatch, Switch, Route} from 'react-router-dom';\r\nimport {SingleNewsContentPage} from './single-news-content-page';\r\nimport React, {FC} from 'react';\r\n\r\nexport const SingleNewsContentPageRoute: FC = React.memo(() => {\r\n let match = useRouteMatch();\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n});\r\n","import {Box, createStyles, Grid, Hidden, makeStyles, Theme, Typography} from '@material-ui/core';\r\nimport CancelIcon from '@material-ui/icons/Cancel';\r\nimport clsx from 'clsx';\r\nimport React, {FC, useEffect} from 'react';\r\nimport {useDispatch, useSelector} from 'react-redux';\r\nimport {useLayoutStyles} from '../../app-routes';\r\nimport {localized} from '../../i18n/i18n';\r\nimport {getContactsDetails, getCustomerServiceInfo} from '../../state/features/contact/operation';\r\nimport {AppState} from '../../state/store';\r\nimport {basicCardBgColor, secondaryTextColor, speechBubbleShadow} from '../../styles/color-constants';\r\nimport {h5, h6} from '../../styles/font-size-constants';\r\nimport PersonIcon from '@material-ui/icons/Person';\r\nimport {routes} from '../../state/routes';\r\nimport {useState} from 'react';\r\nimport {useLocation} from 'react-router-dom';\r\nconst useStylesBox = makeStyles((theme: Theme) =>\r\n createStyles({\r\n spacer: {\r\n height: 175,\r\n },\r\n box: {\r\n minWidth: 170,\r\n position: 'fixed',\r\n right: '40px',\r\n bottom: '60px',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n\r\n [theme.breakpoints.down('sm')]: {\r\n bottom: '70px',\r\n },\r\n // [theme.breakpoints.up('md')]: {\r\n // right: '40px',\r\n // bottom: '60px',\r\n // },\r\n },\r\n speechBubbleBox: {\r\n margin: 0,\r\n padding: 10,\r\n boxShadow: speechBubbleShadow,\r\n borderRadius: 10,\r\n backgroundColor: basicCardBgColor,\r\n },\r\n smSpeechBubble: {\r\n width: 130,\r\n cursor: 'pointer',\r\n },\r\n image: {\r\n height: '110px',\r\n maxWidth: '165px',\r\n borderRadius: '10px',\r\n boxShadow: speechBubbleShadow,\r\n position: 'relative',\r\n alignSelf: 'flex-end',\r\n cursor: 'pointer',\r\n },\r\n arrowDown: {\r\n width: 0,\r\n height: 0,\r\n marginRight: 70,\r\n alignSelf: 'flex-end',\r\n borderLeft: '10px solid transparent',\r\n borderRight: '10px solid transparent',\r\n borderTop: '10px solid ' + basicCardBgColor,\r\n },\r\n cancelIcon: {\r\n fontSize: 'medium',\r\n color: secondaryTextColor,\r\n cursor: 'pointer',\r\n },\r\n personIcon: {\r\n fontSize: 50,\r\n color: '#D3D3D3',\r\n },\r\n }),\r\n);\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n textHeader: {\r\n fontWeight: 'bold',\r\n fontSize: h5,\r\n color: secondaryTextColor,\r\n margin: '5px',\r\n },\r\n text: {\r\n fontSize: h6,\r\n color: secondaryTextColor,\r\n margin: '10px 5px 0 5px',\r\n },\r\n textBold: {\r\n fontSize: h6,\r\n color: secondaryTextColor,\r\n fontWeight: 'bold',\r\n margin: '0 0 0 5px',\r\n },\r\n textBoldUnderline: {\r\n fontSize: h6,\r\n color: secondaryTextColor,\r\n fontWeight: 'bold',\r\n textDecorationLine: 'underline',\r\n margin: '0 0 0 5px',\r\n },\r\n }),\r\n);\r\n\r\ninterface contactData {\r\n selectedContact: number;\r\n contactText: string;\r\n}\r\n\r\nexport const SupportContact: FC = () => {\r\n const boxClasses = useStylesBox();\r\n const textClasses = useStyles();\r\n const useLayout = useLayoutStyles();\r\n const location = useLocation();\r\n const [checked, setChecked] = React.useState(true);\r\n const [contactLayout, setContactLayout] = useState({\r\n selectedContact: 0,\r\n contactText: localized('CustomerServiceIsReadyToHelpYou'),\r\n });\r\n const handleChange = (event: React.MouseEvent) => {\r\n setChecked((prev) => !prev);\r\n };\r\n\r\n const dispatch = useDispatch();\r\n // We use this component on every page, therefore it needs data\r\n const {organizationId} = useSelector((store: AppState) => store.organizationReducer);\r\n useEffect(() => {\r\n if (organizationId) {\r\n dispatch(getContactsDetails(organizationId));\r\n }\r\n dispatch(getCustomerServiceInfo());\r\n }, [dispatch, organizationId]);\r\n\r\n const {contactsSlice} = useSelector((store: AppState) => store.contactsReducer);\r\n\r\n useEffect(() => {\r\n if (location.pathname === routes.economy) {\r\n setContactLayout({selectedContact: 1, contactText: localized('SettlementAndFinancesAreReadyToHelpYou')});\r\n } else {\r\n setContactLayout({selectedContact: 0, contactText: localized('CustomerServiceIsReadyToHelpYou')});\r\n }\r\n }, [location]);\r\n\r\n return (\r\n \r\n \r\n \r\n <>\r\n {checked ? (\r\n \r\n {localized('NeedHelp')}\r\n \r\n ) : (\r\n \r\n \r\n {localized('NeedHelp')}\r\n
\r\n \r\n
\r\n
\r\n {contactLayout.contactText}\r\n {'Tlf:'}\r\n {contactsSlice[contactLayout.selectedContact]?.phoneNumber ? (\r\n \r\n {'+45 ' +\r\n contactsSlice[contactLayout.selectedContact]?.phoneNumber?.slice(0, 4) +\r\n ' ' +\r\n contactsSlice[contactLayout.selectedContact]?.phoneNumber?.slice(4, 8)}\r\n \r\n ) : null}\r\n {'Email:'}\r\n {contactsSlice[contactLayout.selectedContact]?.email}\r\n
\r\n )}\r\n
\r\n \r\n {!contactsSlice[0]?.image ? (\r\n \r\n \r\n \r\n ) : (\r\n \r\n )}\r\n \r\n \r\n
\r\n
\r\n
\r\n );\r\n};\r\n","import {Box, Theme, withStyles} from '@material-ui/core';\r\n\r\nexport const PageContentContainer = withStyles((theme: Theme) => ({\r\n root: {\r\n width: '100%',\r\n height: 'auto',\r\n paddingTop: theme.spacing(2)\r\n },\r\n}))(Box);\r\n","import React, {FC} from 'react';\r\nimport {Box, BoxProps} from '@material-ui/core';\r\n\r\nexport const FlexColumn: FC = React.memo((props) => {\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n});\r\n","import {Box, createStyles, makeStyles, Theme} from '@material-ui/core';\r\nimport React, {FC, useContext, useEffect, useState} from 'react';\r\nimport {headerBackgroundColor, primaryTextColor} from '../../../../styles/color-constants';\r\nimport {h2} from '../../../../styles/font-size-constants';\r\nimport {FlexColumn} from '../../../components/default-components/flex-column';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n width: '100%',\r\n backgroundColor: headerBackgroundColor,\r\n marginTop: theme.spacing(3),\r\n [theme.breakpoints.up('sm')]: {\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n },\r\n [theme.breakpoints.down('sm')]: {\r\n marginLeft: '8px ',\r\n },\r\n },\r\n title: {\r\n fontSize: h2,\r\n color: primaryTextColor,\r\n fontWeight: 'bold',\r\n marginRight: theme.spacing(3),\r\n\r\n [theme.breakpoints.up('md')]: {\r\n marginLeft: theme.spacing(2),\r\n },\r\n },\r\n }),\r\n);\r\n\r\ninterface PropsFromParent {\r\n title: string;\r\n area: string;\r\n}\r\n\r\nexport const PageHeaderContext = React.createContext({} as any);\r\nexport const UsernameHeaderContext = React.createContext({} as any);\r\nexport const usePageHeader = () => useContext(PageHeaderContext);\r\nexport const useUsernameHeader = () => useContext(UsernameHeaderContext);\r\n\r\nexport const PageHeader: FC = React.memo(({title, area, ...props}) => {\r\n const classes = useStyles();\r\n const [areaId, setAreaId] = useState();\r\n useEffect(() => {\r\n setAreaId(area);\r\n }, [area]);\r\n\r\n return (\r\n \r\n \r\n {title}\r\n {props.children}\r\n \r\n \r\n );\r\n});\r\n","import {Box, createStyles, makeStyles, Theme} from '@material-ui/core';\r\nimport React, {FC} from 'react';\r\nimport {cardHeadline, cardSubText, contentWrapperTextColor} from '../../../styles/color-constants';\r\nimport {body2, h3} from '../../../styles/font-size-constants';\r\n\r\ninterface PropsFromParent {\r\n title?: string;\r\n subTitle?: string;\r\n titleAlign?: 'flex-start' | 'center'\r\n}\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n title: (props: PropsFromParent) => ({\r\n fontSize: h3,\r\n color: cardHeadline,\r\n fontWeight: 'bold',\r\n textAlign: 'left',\r\n alignSelf: props.titleAlign? props.titleAlign: 'flex-start'\r\n }),\r\n subTitle: () => ({\r\n fontSize: body2,\r\n textAlign: 'left',\r\n color: cardSubText,\r\n }),\r\n }),\r\n);\r\n\r\nexport const TitleAndSubCard: FC = React.memo((props) => {\r\n const classes = useStyles(props);\r\n return (\r\n <>\r\n {props.title}\r\n \r\n {props.subTitle}\r\n \r\n \r\n );\r\n});\r\n","import {Box, createStyles, Link, makeStyles, Typography} from '@material-ui/core';\r\nimport WarningIcon from '@material-ui/icons/Warning';\r\nimport React, {memo, useEffect, useState} from 'react';\r\nimport {BasicCard} from '../../view/components/default-components/basic-card/basic-card';\r\nimport {TitleAndSubCard} from '../../view/components/default-components/title-and-sub-card';\r\nimport {localized} from '../../i18n/i18n';\r\nimport {warningIconColor} from '../../styles/color-constants';\r\nimport {routes} from '../../state/routes';\r\nimport {useLocation} from 'react-router-dom';\r\n\r\nconst hrefMailToCustomerService = 'mailto:' + localized('KundeServiceMail');\r\nconst warningSites = [routes.documents, routes.contracts];\r\n\r\nexport const PageWarningMessage = memo(() => {\r\n const classes = useStyles();\r\n const location = useLocation();\r\n const [showWarningOnPage, setShowWarning] = useState(false);\r\n\r\n useEffect(() => {\r\n warningSites.includes(location.pathname) && setShowWarning(true);\r\n }, []);\r\n\r\n if (!showWarningOnPage) return <>;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n {localized('WarningTemporaryDataErrorMessage') + ' '}\r\n \r\n {localized('KundeServiceMail')}\r\n \r\n \r\n \r\n );\r\n});\r\n\r\nconst useStyles = makeStyles(() =>\r\n createStyles({\r\n warningIcon: {\r\n color: warningIconColor,\r\n marginRight: 10,\r\n fontSize: 30,\r\n },\r\n flexBox: {\r\n display: 'flex',\r\n marginBottom: 5,\r\n },\r\n text: {\r\n whiteSpace: 'pre-line', // This enables line breaks from \\n\r\n },\r\n }),\r\n);\r\n","import React, {FC, useEffect} from 'react';\r\nimport {BrandName} from '../../../../utilities/constants';\r\nimport {PageWarningMessage} from '../../../../view-scan-energi/components/page-warning-message';\r\n\r\nexport interface PropsFromParent {\r\n title: string;\r\n shouldPrefixBrandName?: boolean;\r\n}\r\n\r\nexport const PageTitle: FC = React.memo((props) => {\r\n const fullTitle =\r\n props.shouldPrefixBrandName !== false ? (BrandName ? `${BrandName} - ${props.title}` : props.title) : props.title;\r\n\r\n useEffect(() => {\r\n document.title = fullTitle;\r\n }, [fullTitle]);\r\n\r\n return (\r\n <>\r\n \r\n {props.children}\r\n \r\n );\r\n});\r\n","import {createStyles, makeStyles, Theme} from '@material-ui/core';\r\nimport {arrowColor, primaryTextColor} from '../../../styles/color-constants';\r\n\r\nexport const userInfoUseStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n cardClass: {\r\n minWidth: 240,\r\n maxWidth: 'calc(100vw - 64px)',\r\n minHeight: 380,\r\n },\r\n boxClass: {\r\n marginTop: 20\r\n },\r\n cardText: {\r\n flexGrow: 1,\r\n },\r\n cardIcon: {\r\n marginRight: 10,\r\n },\r\n arrow: {\r\n opacity: 1,\r\n color: arrowColor,\r\n '&:hover': {\r\n color: primaryTextColor,\r\n },\r\n },\r\n contentContainer: {display: 'flex', flexDirection: 'row', marginTop: 20},\r\n flexDirectionRow: {display: 'flex', flexDirection: 'row', justifyContent: 'space-between'},\r\n defaultContent: {marginTop: 10, minWidth: 200},\r\n minWidth70: {minWidth: 70},\r\n minWidth150: {minWidth: 150},\r\n minWidth180: {minWidth: 180},\r\n minWidth200: {minWidth: 200},\r\n minWidth250: {\r\n minWidth: 250,\r\n [theme.breakpoints.down('sm')]: {\r\n minWidth: 200,\r\n },\r\n },\r\n marginTopTen: {marginTop: 10},\r\n button: {\r\n display: 'flex',\r\n marginTop: 5,\r\n marginBottom: 5,\r\n width: 160,\r\n justifyContent: 'center',\r\n backgroundColor: '#fff',\r\n borderRadius: 10,\r\n color: primaryTextColor,\r\n boxShadow: 'rgb(131 141 155 / 20%) 3px 3px 10px',\r\n alignItems: 'center',\r\n flexDirection: 'row',\r\n cursor: 'pointer',\r\n '&:hover': {\r\n backgroundColor: '#3333',\r\n color: '#FFF',\r\n },\r\n },\r\n buttonFlexBox: {\r\n display: 'flex',\r\n justifyContent: 'flex-start',\r\n '@media (min-width: 570px)': {\r\n justifyContent: 'flex-end',\r\n },\r\n },\r\n infoContainer: {\r\n marginLeft: 10,\r\n },\r\n contactCardWrapper: {\r\n [theme.breakpoints.up('sm')]: {\r\n width: 500,\r\n },\r\n [theme.breakpoints.down('xs')]: {\r\n width: '100%',\r\n },\r\n },\r\n noTopMargin: {\r\n marginTop: 0,\r\n }\r\n }),\r\n);\r\n","import {Box, createStyles, makeStyles, Theme, Typography} from '@material-ui/core';\r\nimport PersonIcon from '@material-ui/icons/Person';\r\nimport React, {FC} from 'react';\r\nimport {IContactDto} from '../../../api/api';\r\nimport {basicCardBoxShadow} from '../../../styles/color-constants';\r\nimport {h5} from '../../../styles/font-size-constants';\r\nimport {BasicCard} from '../../../view/components/default-components/basic-card/basic-card';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n flexBox: {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'flex-start',\r\n flexWrap: 'wrap',\r\n },\r\n daysText: {\r\n fontWeight: 'bold',\r\n },\r\n contactInfoCard: {},\r\n contactInfoTextBox: {\r\n alignSelf: 'flex-start',\r\n },\r\n contactInfoHeader: {\r\n margin: 0,\r\n },\r\n contactInfoText: {\r\n fontSize: h5,\r\n },\r\n underline: {\r\n textDecorationLine: 'underline',\r\n fontSize: h5,\r\n },\r\n image: {\r\n height: '110px',\r\n maxWidth: '165px',\r\n borderRadius: '10px',\r\n boxShadow: basicCardBoxShadow,\r\n position: 'relative',\r\n alignSelf: 'center',\r\n },\r\n personIcon: {\r\n fontSize: 90,\r\n color: '#D3D3D3',\r\n },\r\n imageContainer: {\r\n marginRight: 20,\r\n },\r\n }),\r\n);\r\ninterface PropsFromParent {\r\n contact: IContactDto;\r\n}\r\n\r\nexport const ContactCard: FC = React.memo(({...props}) => {\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n \r\n
\r\n {props.contact.image ? (\r\n \"Contact_image\"\r\n ) : (\r\n \r\n )}\r\n
\r\n\r\n \r\n

\r\n {props.contact.name ? props.contact.name : props.contact.contactTitle}\r\n

\r\n \r\n {props.contact.contactTitle ? props.contact.contactTitle : ''}\r\n \r\n {props.contact.phoneNumber && (\r\n {'Tlf: ' + props.contact.phoneNumber}\r\n )}\r\n {props.contact.email && (\r\n \r\n {'Email:\\u00A0'}\r\n {props.contact.email ? props.contact.email : ''}\r\n \r\n )}\r\n
\r\n
\r\n
\r\n );\r\n});\r\n","import {Grid} from '@material-ui/core';\r\nimport React, {FC} from 'react';\r\nimport {useSelector} from 'react-redux';\r\nimport {AppState} from '../../../state/store';\r\nimport { userInfoUseStyles } from '../user-info/user-info-helper';\r\nimport {ContactCard} from './contact-card';\r\n\r\nexport const ContactCards: FC = React.memo(() => {\r\n const {contactsSlice} = useSelector((store: AppState) => store.contactsReducer);\r\n const classes = userInfoUseStyles();\r\n return (\r\n \r\n {contactsSlice.map((contact, index) => (\r\n \r\n \r\n \r\n ))}\r\n \r\n );\r\n});\r\n","import {Box, createStyles, Grid, makeStyles, Theme, Typography} from '@material-ui/core';\r\nimport AccessTimeIcon from '@material-ui/icons/AccessTime';\r\nimport clsx from 'clsx';\r\nimport React from 'react';\r\nimport {useSelector} from 'react-redux';\r\nimport {AppState} from '../../../state/store';\r\nimport {BasicCard} from '../../../view/components/default-components/basic-card/basic-card';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n openingHoursCard: {\r\n textAlign: 'left',\r\n width: '100%',\r\n maxWidth: '360px',\r\n flexWrap: 'wrap'\r\n },\r\n daysText: {\r\n fontWeight: 'bold',\r\n },\r\n fridayText: {\r\n minWidth: 80,\r\n alignSelf: 'flex-start',\r\n marginRight: 20,\r\n },\r\n marginRight: {\r\n marginRight: 10\r\n }\r\n\r\n }),\r\n);\r\n\r\nexport const OpeningHoursCard = React.memo(() => {\r\n const classes = useStyles();\r\n const {customerServiceInfo} = useSelector((store: AppState) => store.contactsReducer);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {'Mandag til torsdag'}\r\n {customerServiceInfo && customerServiceInfo.mondayToThursday!}\r\n \r\n \r\n {'Fredag'}\r\n {customerServiceInfo && customerServiceInfo.friday!}\r\n \r\n \r\n \r\n \r\n );\r\n});\r\n","import {Box, createStyles, makeStyles, Theme, Typography} from '@material-ui/core';\r\nimport React, {useEffect} from 'react';\r\nimport {useDispatch, useSelector} from 'react-redux';\r\nimport {localized} from '../../../i18n/i18n';\r\nimport {getContactsDetails, getCustomerServiceInfo} from '../../../state/features/contact/operation';\r\nimport { AppState } from '../../../state/store';\r\nimport {h5} from '../../../styles/font-size-constants';\r\nimport {PageContentContainer} from '../../../view/components/default-components/page-container/page-content-container';\r\nimport {PageHeader} from '../../../view/components/default-components/page-header.tsx/page-header';\r\nimport {PageTitle} from '../../../view/components/default-components/page-title/page-title';\r\nimport {ContactCards} from '../../components/contact/contact-cards';\r\nimport {OpeningHoursCard} from '../../components/contact/opening-hours-card';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n subText: {\r\n fontSize: h5,\r\n margin: '0 0 20px 0px',\r\n [theme.breakpoints.up('md')]: {\r\n marginLeft: '16px',\r\n },\r\n },\r\n flexBox: {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'flex-start',\r\n },\r\n openingHoursCard: {\r\n textAlign: 'center',\r\n minWidth: 350,\r\n maxWidth: 350,\r\n },\r\n daysText: {\r\n fontWeight: 'bold',\r\n },\r\n }),\r\n);\r\n\r\nexport const Contact = React.memo(() => {\r\n const classes = useStyles();\r\n const dispatch = useDispatch();\r\n // Fetch page data\r\n const {organizationId} = useSelector((store: AppState) => store.organizationReducer);\r\n useEffect(() => {\r\n if (organizationId) {\r\n dispatch(getContactsDetails(organizationId));\r\n }\r\n dispatch(getCustomerServiceInfo());\r\n }, [dispatch, organizationId]);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {localized('AtScanenergiWeStriveFor')}\r\n \r\n {localized('BelowYouCanSeeWhichDepartmentsYouCanContact')}\r\n \r\n {localized('AllDepartmentsAreOpenDuringThePeriod')}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n});\r\n","import {useRouteMatch, Switch, Route} from 'react-router-dom';\r\nimport {Contact} from './contact';\r\nimport React, {FC} from 'react';\r\n\r\nexport const ContactRoute: FC = React.memo(() => {\r\n let match = useRouteMatch();\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n});\r\n","import {CircularProgress, createStyles, Grid, makeStyles, Theme} from '@material-ui/core';\r\nimport React, {FC} from 'react';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n circularProgress: {\r\n height: '100%'\r\n }\r\n }),\r\n);\r\n\r\nexport const BasicCircularProgress: FC = React.memo(() => {\r\n const classes = useStyles();\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n});\r\n","import {createStyles, Grid, makeStyles, Theme} from '@material-ui/core';\r\nimport React, {FC} from 'react';\r\nimport { localized } from '../../i18n/i18n';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n nonDocumentsGrid: {\r\n height: '80%',\r\n },\r\n }),\r\n);\r\n\r\nexport const BasicNoDocuments: FC = React.memo(() => {\r\n const classes = useStyles();\r\n return (\r\n <>\r\n \r\n \r\n {localized('WeCurrentlyDoNotKnowTheseDocuments')}\r\n \r\n \r\n \r\n );\r\n});\r\n","import {Box, createStyles, makeStyles, Theme} from '@material-ui/core';\r\nimport React, {FC} from 'react';\r\nimport {BasicCard} from '../../../view/components/default-components/basic-card/basic-card';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n firstLayerCard: {\r\n maxWidth: 'calc(100vw - 64px )',\r\n },\r\n minWidth: {\r\n minWidth: '450px',\r\n },\r\n }),\r\n);\r\n\r\nexport const BasicDocumentList: FC = React.memo(({children}) => {\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n});\r\n","import {createStyles, Grid, makeStyles, Theme} from '@material-ui/core';\r\nimport clsx from 'clsx';\r\nimport React, {FC} from 'react';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n header: {\r\n margin: '20px 0 0 0',\r\n },\r\n }),\r\n);\r\n\r\ninterface Props{\r\n className:string;\r\n}\r\n\r\nexport const BasicDocumentListHeader: FC = React.memo(({children, className}) => {\r\n const classes = useStyles();\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n});\r\n","import {Box, createStyles, makeStyles, Theme} from '@material-ui/core';\r\nimport React, {FC} from 'react';\r\n\r\ninterface PropsFromParent {\r\n documentNumber: number;\r\n}\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n spacer: {\r\n marginTop: theme.spacing(1),\r\n marginBottom: theme.spacing(1),\r\n minWidth: 120,\r\n },\r\n }),\r\n);\r\nexport const BasicDocumentListItemMapSpacer: FC = React.memo(({documentNumber, children}) => {\r\n const classes = useStyles();\r\n return {children};\r\n});\r\n","import React, {FC, useContext, useState} from 'react';\r\n\r\nexport const DocumentContext = React.createContext({} as any);\r\nexport const useDocumentFilter = () => useContext(DocumentContext);\r\n\r\nexport const FilterProvider: FC = React.memo(({children}) => {\r\n const [sortProp, setSortProp] = useState('date');\r\n return {children};\r\n});\r\n","import { createStyles, FormControl, makeStyles, MenuItem, Select, Theme } from '@material-ui/core';\r\nimport React, { FC } from 'react';\r\nimport { localized } from '../../../i18n/i18n';\r\nimport { useDocumentFilter } from '../filterprovider';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n formControl: {\r\n //marginRight: theme.spacing(1),\r\n minWidth: 120,\r\n },\r\n }),\r\n);\r\nexport const SortType: FC = React.memo(() => {\r\n const classes = useStyles();\r\n let {sortProp, setSortProp}= useDocumentFilter();\r\n const sortTypeChanged =(event: React.ChangeEvent<{value: unknown}>) => {\r\n setSortProp(event?.target.value as string)\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n});\r\n","import {FileResponse} from '../api/api';\r\n\r\nexport const promptUserWithFileOptions = (file: FileResponse, filename: string) => {\r\n const url = URL.createObjectURL(file.data);\r\n const link = document.createElement('a');\r\n link.href = url;\r\n link.target= \"_blank\";\r\n link.setAttribute('download', filename);\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n};\r\n","import {Box, createStyles, makeStyles, Theme} from '@material-ui/core';\r\nimport clsx from 'clsx';\r\nimport React, {FC} from 'react';\r\nimport {basicCardBgColor, basicCardBoxShadow, primaryColor, primaryTextColor} from '../../../styles/color-constants';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n documentCardItem: {\r\n backgroundColor: (props: PropsFromParent) => (props.selected ? primaryColor : basicCardBgColor),\r\n color: (props: PropsFromParent) => (props.selected ? basicCardBgColor : primaryTextColor),\r\n boxShadow: basicCardBoxShadow,\r\n borderRadius: '10px',\r\n position: 'relative',\r\n minHeight: '40px',\r\n margin: '10px 0px',\r\n padding: '5px 0px',\r\n },\r\n cursor: {\r\n cursor: 'pointer',\r\n },\r\n }),\r\n);\r\n\r\ninterface PropsFromParent {\r\n selected?: boolean;\r\n contractPage?: boolean;\r\n}\r\n\r\nexport const BasicDocumentListItem: FC = React.memo(({children, ...props}) => {\r\n const classes = useStyles(props);\r\n return {children};\r\n});\r\n","import {createStyles, Grid, makeStyles, Theme, Typography} from '@material-ui/core';\r\nimport CheckCircleTwoToneIcon from '@material-ui/icons/CheckCircleTwoTone';\r\nimport GetAppIcon from '@material-ui/icons/GetApp';\r\nimport React, {FC, useEffect, useMemo, useState} from 'react';\r\nimport {useDispatch, useSelector} from 'react-redux';\r\nimport {IContractDto} from '../../../api/api';\r\nimport {useLayoutStyles} from '../../../app-routes';\r\nimport ContractIconGrey from '../../../assets/icons/menu-icons/contract_grey.png';\r\nimport ContractIconWhite from '../../../assets/icons/menu-icons/contract_white.png';\r\nimport {localized} from '../../../i18n/i18n';\r\nimport {selectedContractSlice} from '../../../state/features/contract/contract-selected-slice';\r\nimport {getContractPDF} from '../../../state/features/contract/operation';\r\nimport {AppState} from '../../../state/store';\r\nimport {arrowColor, checkmarkColor, primaryTextColor} from '../../../styles/color-constants';\r\nimport {promptUserWithFileOptions} from '../../../utilities/file-helper';\r\nimport {BasicDocumentListItem} from '../document/basic-document-list-item';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n statusActive: {\r\n opacity: 1,\r\n color: checkmarkColor,\r\n fontSize: 'large',\r\n },\r\n statusInactive: {\r\n opacity: 1,\r\n color: arrowColor,\r\n fontSize: 'large',\r\n },\r\n documentIcon: {\r\n width: '21px',\r\n height: '26px',\r\n marginLeft: 'auto',\r\n marginRight: 'auto',\r\n display: 'block',\r\n },\r\n flexRow: {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n justifyContent: 'flex-start',\r\n alignItems: 'center',\r\n '& :first-child': {\r\n marginRight: 20,\r\n marginLeft: 10,\r\n },\r\n },\r\n textOverflow: {\r\n textOverflow: 'ellipsis',\r\n overflow: 'hidden',\r\n },\r\n downloadIcon: {\r\n opacity: 1,\r\n cursor: 'pointer',\r\n color: arrowColor,\r\n '&:hover': {\r\n color: primaryTextColor,\r\n },\r\n },\r\n downloadIconContainer: {\r\n height: '24px',\r\n marginLeft: 10,\r\n marginRight: 15,\r\n },\r\n downloadIconContainerMobile: {\r\n height: '24px',\r\n marginLeft: 10,\r\n },\r\n marginLeft30: {\r\n marginLeft: 30,\r\n },\r\n marginLeftt10: {\r\n marginLeft: 10,\r\n },\r\n }),\r\n);\r\n\r\nexport const productEnumToString = (param: number) => {\r\n switch (param) {\r\n case 0:\r\n return 'Elsalg';\r\n case 1:\r\n return 'Grøn Energi';\r\n case 2:\r\n return 'Rådgivning';\r\n default:\r\n return 'Elsalg';\r\n }\r\n};\r\n\r\nexport const subProductEnumToString = (param: number) => {\r\n switch (param) {\r\n case 0:\r\n return localized('Spottime');\r\n case 1:\r\n return localized('SMO');\r\n case 2:\r\n return 'FASTfast';\r\n case 3:\r\n return localized('FASTfastUp');\r\n case 4:\r\n return 'FASTloft';\r\n case 5:\r\n return 'FLEXloft';\r\n case 6:\r\n return 'FLEXfast';\r\n case 7:\r\n return 'FLEXvalg';\r\n case 8:\r\n return 'NONstop';\r\n case 9:\r\n return 'VINDenergi';\r\n case 10:\r\n return localized('ClimateAction');\r\n case 11:\r\n return localized('FASTfastSPOTtime');\r\n case 12:\r\n return localized('FASTfastExclProfilSPOTtime');\r\n case 13:\r\n return localized('FLEXloftSPOTtime');\r\n case 14:\r\n return localized('CO2Mapping');\r\n case 15:\r\n return localized('EnergyCalculation');\r\n case 16:\r\n return localized('EnergyLabeling');\r\n case 17:\r\n return localized('EnergySupervision');\r\n case 18:\r\n return localized('EnergySparring');\r\n case 19:\r\n return 'OmegaEMS';\r\n case 20:\r\n return localized('PriorityList');\r\n case 21:\r\n return localized('RealizationHelp');\r\n case 22:\r\n return localized('RealizationStart');\r\n case 23:\r\n return localized('SubsidiesCase');\r\n case 24:\r\n return localized('HourCase');\r\n case 25:\r\n return localized('FLEXfastExclProfile');\r\n case 26:\r\n return localized('FLEXfastExclProfilSPOTtime');\r\n case 27:\r\n return localized('CLIMATEForest');\r\n case 28:\r\n return localized('SolarCellCalculation');\r\n case 29:\r\n return localized('SubsidiesHelp');\r\n case 30:\r\n return localized('SpottimeNonStopWithWindPower');\r\n case 31:\r\n return localized('EnergyCheck');\r\n case 32:\r\n return localized('EsgReport');\r\n case 33:\r\n return localized('PriceAlert');\r\n case 34:\r\n return localized('FLEXfastFLEXSpot');\r\n case 35:\r\n return localized('TariffCheck');\r\n case 255:\r\n return localized('NewProduct');\r\n default:\r\n return localized('NewProduct');\r\n }\r\n};\r\n\r\ninterface PropsFromParent {\r\n contract: IContractDto;\r\n contractPage?: boolean;\r\n}\r\nexport const ContractListItem: FC = React.memo(({contract, contractPage}) => {\r\n const classes = useStyles();\r\n const layout = useLayoutStyles();\r\n const dispatch = useDispatch();\r\n const {selectedContract} = useSelector((store: AppState) => store.selectedContractsReducer);\r\n const [selected, setSelected] = useState(false);\r\n const [compare] = useState();\r\n\r\n useEffect(() => {\r\n if (JSON.stringify(selectedContract) === JSON.stringify(contract)) {\r\n setSelected(true);\r\n } else {\r\n setSelected(false);\r\n }\r\n }, [selectedContract, compare, contract]);\r\n\r\n const downloadDocument = async () => {\r\n let file;\r\n if (contract) {\r\n file = await getContractPDF(contract?.documentId);\r\n }\r\n if (file && contract?.document?.fileName) {\r\n promptUserWithFileOptions(file, contract?.document?.fileName);\r\n }\r\n };\r\n\r\n const handleContractSelected = (e: any) => {\r\n e.preventDefault();\r\n if (contractPage) {\r\n dispatch(selectedContractSlice.actions.setSelectedContract(contract));\r\n }\r\n };\r\n\r\n const getContractEnd = useMemo(() => {\r\n return contract.contractEnd.getFullYear() === 9999 ? '' : contract.contractEnd.getFullYear();\r\n }, [contract]);\r\n\r\n const showInfoHorizontal = () => {\r\n return (\r\n \r\n \r\n
\r\n \r\n \r\n {subProductEnumToString(contract.productSubcategory)}\r\n \r\n
\r\n
\r\n \r\n {contract.contractStart.getFullYear() + ' - ' + getContractEnd}\r\n \r\n \r\n {contract.active === true ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n {!contractPage && (\r\n \r\n
\r\n \r\n
\r\n
\r\n )}\r\n \r\n );\r\n };\r\n\r\n const showInfoVertical = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n {subProductEnumToString(contract.productSubcategory)}\r\n \r\n \r\n {localized('Period')}: {contract.contractStart.getFullYear() + ' - ' + contract.contractEnd.getFullYear()}\r\n \r\n \r\n \r\n {contract.active === true ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n {!contractPage && (\r\n \r\n
\r\n \r\n
\r\n
\r\n )}\r\n
\r\n );\r\n };\r\n\r\n return (\r\n \r\n \r\n {showInfoVertical()}\r\n {showInfoHorizontal()}\r\n \r\n \r\n );\r\n});\r\n","import {createStyles, Grid, List, makeStyles, Theme, Typography} from '@material-ui/core';\r\nimport clsx from 'clsx';\r\nimport React, {FC, useEffect, useState} from 'react';\r\nimport {useDispatch} from 'react-redux';\r\nimport {IContractDto} from '../../../api/api';\r\nimport {useLayoutStyles} from '../../../app-routes';\r\nimport {localized} from '../../../i18n/i18n';\r\nimport {TitleAndSubCard} from '../../../view/components/default-components/title-and-sub-card';\r\nimport {BasicCircularProgress} from '../basic-circular-progress';\r\nimport {BasicNoDocuments} from '../basic-no-documents';\r\nimport {BasicDocumentList} from '../document/basic-document-list';\r\nimport {BasicDocumentListHeader} from '../document/basic-document-list-header';\r\nimport {BasicDocumentListItemMapSpacer} from '../document/basic-document-list-item-map-spacer';\r\nimport {SortType} from '../document/basic-sort-type';\r\nimport {useDocumentFilter} from '../filterprovider';\r\nimport {ContractListItem} from './contract-list-item';\r\n\r\ninterface PropsFromParent {\r\n title: string;\r\n parentContracts: IContractDto[] | undefined;\r\n pending: boolean;\r\n dateFrom?: Date;\r\n dateTo?: Date;\r\n status?: boolean;\r\n cardHeight?: number;\r\n docuNumber?: number;\r\n contractPage?: boolean;\r\n}\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n firstCategory: {\r\n margin: 0,\r\n },\r\n secoundCategory: {\r\n marginLeft: 20,\r\n },\r\n secoundCategoryContractPage: {\r\n marginLeft: 0,\r\n },\r\n thirdCategory: {\r\n marginLeft: 30,\r\n },\r\n thirdCategoryContractPage: {\r\n marginLeft: -10,\r\n },\r\n contractCardContainer: {\r\n paddingLeft: 5,\r\n paddingRight: 5,\r\n marginLeft: -5,\r\n marginRight: -5,\r\n maxHeight: '500px',\r\n overflow: 'auto',\r\n },\r\n spaceBetweenTitleAndData: {\r\n marginBottom: 20,\r\n },\r\n }),\r\n);\r\n\r\nexport const ContractCard: FC = React.memo(\r\n ({title, parentContracts, pending, dateFrom, dateTo, status, cardHeight, docuNumber, contractPage}) => {\r\n const classes = useStyles();\r\n const dispatch = useDispatch();\r\n const [filteredContracts, setFilteredContracts] = useState(parentContracts);\r\n const {sortProp} = useDocumentFilter();\r\n const layoutStyle = useLayoutStyles();\r\n\r\n useEffect(() => {\r\n let tempArray: IContractDto[] | undefined;\r\n\r\n if (dateFrom === undefined && dateTo === undefined) {\r\n tempArray = parentContracts;\r\n } else {\r\n tempArray =\r\n parentContracts &&\r\n parentContracts.filter(\r\n (doc) =>\r\n (doc.contractStart.valueOf()! >= dateFrom?.valueOf()! &&\r\n doc.contractEnd.valueOf()! <= dateTo?.valueOf()!) ||\r\n (dateFrom?.valueOf()! < doc.contractEnd.valueOf()! && doc.contractEnd.valueOf()! <= dateTo?.valueOf()!),\r\n );\r\n }\r\n tempArray &&\r\n tempArray.sort(\r\n (a, b) =>\r\n (a.active === b.active ? 0 : a.active ? -1 : 1) || a.contractStart.valueOf()! - b.contractStart.valueOf()!,\r\n );\r\n\r\n setFilteredContracts(tempArray);\r\n\r\n if (!contractPage) {\r\n if (sortProp === 'date' || sortProp === '') {\r\n setFilteredContracts(\r\n tempArray && [...tempArray].sort((a, b) => b.contractEnd.valueOf()! - a.contractEnd.valueOf()!),\r\n );\r\n } else {\r\n setFilteredContracts(\r\n tempArray &&\r\n [...tempArray].sort(\r\n (a, b) =>\r\n b.productCategory.toString().localeCompare(a.productCategory.toString()) ||\r\n b.productSubcategory.toString().localeCompare(a.productSubcategory.toString()),\r\n ),\r\n );\r\n }\r\n }\r\n }, [dispatch, parentContracts, dateFrom, dateTo, sortProp, contractPage]);\r\n\r\n return (\r\n \r\n \r\n \r\n {!contractPage && }\r\n \r\n {pending ? (\r\n \r\n ) : (\r\n <>\r\n {filteredContracts === undefined || filteredContracts!.length === 0 ? (\r\n \r\n ) : (\r\n <>\r\n \r\n \r\n {localized('Document')} \r\n \r\n \r\n \r\n {localized('Period')}\r\n \r\n \r\n \r\n \r\n {localized('Status')}\r\n \r\n \r\n \r\n \r\n \r\n {filteredContracts &&\r\n filteredContracts.map((filteredContract) => {\r\n return (\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n )}\r\n \r\n )}\r\n \r\n );\r\n },\r\n);\r\n","import { Button, createStyles, makeStyles, Theme } from '@material-ui/core';\r\nimport React, { FC, useCallback } from 'react';\r\nimport { basicCardBoxShadow, primaryTextColor } from '../../styles/color-constants';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root:{\r\n minWidth: '40px',\r\n minHeight: '40px',\r\n borderRadius: '10px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n backgroundColor: (props: PropsFromParent)=> props.backgroundColor?props.backgroundColor: '#fff',\r\n color: primaryTextColor, \r\n boxShadow: basicCardBoxShadow,\r\n '&:hover': {\r\n backgroundColor: '#3333',\r\n color: '#FFF',\r\n },\r\n },\r\n }),\r\n);\r\ninterface PropsFromParent {\r\n onClick: (e: any) => void;\r\n backgroundColor?: string;\r\n}\r\n\r\nexport const BasicCardButton: FC = React.memo(({children, onClick, backgroundColor}) => {\r\n const classes = useStyles({backgroundColor} as PropsFromParent);\r\n\r\n const onClickLocal = useCallback(\r\n (e) => {\r\n onClick(e);\r\n },\r\n [onClick],\r\n );\r\n\r\n return (\r\n \r\n );\r\n});\r\n","import {createStyles, Grid, makeStyles, Theme, Typography} from '@material-ui/core';\r\nimport React, {FC} from 'react';\r\nimport {h5} from '../../../styles/font-size-constants';\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n itemBox: {\r\n [theme.breakpoints.down('md')]: {\r\n margin: '20px',\r\n },\r\n [theme.breakpoints.up('md')]: {\r\n margin: '20px 40px',\r\n },\r\n minWidth: 140,\r\n\r\n [theme.breakpoints.down('xs')]: {\r\n margin: '10px 20px 10px 20px',\r\n },\r\n },\r\n category: {\r\n fontSize: h5,\r\n fontWeight: 'bold',\r\n },\r\n value: {\r\n fontSize: h5,\r\n },\r\n }),\r\n);\r\n\r\ninterface PropsFromParent {\r\n category?: string | undefined;\r\n valueText?: string | undefined;\r\n valueCeiling?: number | undefined;\r\n valuePrice?: number | undefined;\r\n emptySpace?: boolean;\r\n}\r\n\r\nexport const ContractInfoCardItem: FC = React.memo((props) => {\r\n const classes = useStyles();\r\n return (\r\n \r\n {!props.emptySpace && (\r\n <>\r\n {props.valueText || props.valueCeiling || props.valuePrice ? (\r\n <>\r\n {props.category}\r\n {props.valueText}\r\n {props.valueCeiling ? (\r\n {props.valueCeiling + ' DKK/MWh'}\r\n ) : (\r\n <>\r\n {props.valuePrice ? (\r\n {props.valuePrice + ' DKK'}\r\n ) : null}\r\n \r\n )}\r\n \r\n ) : null}\r\n \r\n )}\r\n \r\n );\r\n});\r\n","import React from 'react';\r\nimport {localized} from '../../../i18n/i18n';\r\nimport {formatToLocalDateAndLeadingZeros} from '../../../utilities/platform-helpers/date-helpers';\r\nimport {ContractInfoCardItem} from './contract-info-card-item';\r\n\r\nexport const getContractStart = (date: Date) => {\r\n return ;\r\n};\r\nexport const getContractEnd = (date: Date) => {\r\n return ;\r\n};\r\nexport const getPriceDistrict = (priceDistrict: string) => {\r\n return ;\r\n};\r\nexport const getPrice = (price: number) => {\r\n return ;\r\n};\r\nexport const getPriceMwh = (price: number) => {\r\n return ;\r\n};\r\nexport const getPremium = (premium: string) => {\r\n return ;\r\n};\r\n\r\n// Original Ceiling\r\nexport const getOriginalCeilingYear1 = (ceilingValue: number) => {\r\n return ;\r\n};\r\nexport const getOriginalCeilingYear2 = (ceilingValue: number) => {\r\n return ;\r\n};\r\nexport const getOriginalCeilingYear3 = (ceilingValue: number) => {\r\n return ;\r\n};\r\nexport const getOriginalCeilingYear4 = (ceilingValue: number) => {\r\n return ;\r\n};\r\nexport const getOriginalCeilingYear5 = (ceilingValue: number) => {\r\n return ;\r\n};\r\nexport const getOriginalCeilingYear6 = (ceilingValue: number) => {\r\n return ;\r\n};\r\n\r\n// Current Ceiling\r\nexport const getExpectedCeilingYear1 = (ceilingValue: number) => {\r\n return ;\r\n};\r\nexport const getExpectedCeilingYear2 = (ceilingValue: number) => {\r\n return ;\r\n};\r\nexport const getExpectedCeilingYear3 = (ceilingValue: number) => {\r\n return ;\r\n};\r\nexport const getExpectedCeilingYear4 = (ceilingValue: number) => {\r\n return ;\r\n};\r\nexport const getExpectedCeilingYear5 = (ceilingValue: number) => {\r\n return ;\r\n};\r\nexport const getExpectedCeilingYear6 = (ceilingValue: number) => {\r\n return ;\r\n};\r\n\r\n\r\nexport const getSupplement = (ceilingValue: number) => {\r\n return ;\r\n};\r\n\r\nexport const getEmptySpace = () => {\r\n return ;\r\n};\r\n\r\n\r\n","import {Button, createStyles, Grid, makeStyles, Theme, Typography} from '@material-ui/core';\r\nimport KeyboardArrowRightIcon from '@material-ui/icons/KeyboardArrowRight';\r\nimport React, {FC} from 'react';\r\nimport {useSelector} from 'react-redux';\r\nimport {localized} from '../../../i18n/i18n';\r\nimport {renewContract} from '../../../state/features/contract/operation';\r\nimport {AppState} from '../../../state/store';\r\nimport {primaryColor, primaryTextColor, whiteTextColor} from '../../../styles/color-constants';\r\nimport {h5} from '../../../styles/font-size-constants';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n renewButton: {\r\n backgroundColor: primaryColor,\r\n borderRadius: '10px',\r\n textTransform: 'none',\r\n padding: '0 20px',\r\n color: whiteTextColor,\r\n '&:hover': {\r\n color: primaryTextColor,\r\n },\r\n },\r\n buttonText: {\r\n fontSize: h5,\r\n },\r\n arrowIcon: {\r\n margin: '10px 0 0 0',\r\n },\r\n }),\r\n);\r\n\r\nexport const RenewContractButton: FC = React.memo(({children}) => {\r\n const classes = useStyles();\r\n const {organizationId} = useSelector((store: AppState) => store.organizationReducer);\r\n const {selectedContract} = useSelector((store: AppState) => store.selectedContractsReducer);\r\n const handleButtonClick = () => {\r\n if (selectedContract) {\r\n if (organizationId) {\r\n renewContract(organizationId, selectedContract);\r\n }\r\n }\r\n };\r\n return (\r\n \r\n );\r\n});\r\n","import {Box, createStyles, Grid, makeStyles, Theme, Typography} from '@material-ui/core';\r\nimport CheckCircleTwoToneIcon from '@material-ui/icons/CheckCircleTwoTone';\r\nimport GetAppIcon from '@material-ui/icons/GetApp';\r\nimport clsx from 'clsx';\r\nimport React, {FC, useEffect, useMemo, useState} from 'react';\r\nimport {useSelector} from 'react-redux';\r\nimport {IContractDto, ProductCategory, ProductSubcategory} from '../../../api/api';\r\nimport {useLayoutStyles} from '../../../app-routes';\r\nimport DocumentIcon from '../../../assets/icons/document.png';\r\nimport {getContractPDF} from '../../../state/features/contract/operation';\r\nimport {AppState} from '../../../state/store';\r\nimport {arrowColor, checkmarkColor} from '../../../styles/color-constants';\r\nimport {h5} from '../../../styles/font-size-constants';\r\nimport {promptUserWithFileOptions} from '../../../utilities/file-helper';\r\nimport {contractNoEndDate, sameDate} from '../../../utilities/helpers/date-helpers';\r\nimport {BasicCard} from '../../../view/components/default-components/basic-card/basic-card';\r\nimport {TitleAndSubCard} from '../../../view/components/default-components/title-and-sub-card';\r\nimport {BasicCardButton} from '../basic-card-button';\r\nimport {\r\n getContractEnd,\r\n getContractStart,\r\n getEmptySpace,\r\n getExpectedCeilingYear1,\r\n getExpectedCeilingYear2,\r\n getExpectedCeilingYear3,\r\n getExpectedCeilingYear4,\r\n getExpectedCeilingYear5,\r\n getExpectedCeilingYear6,\r\n getOriginalCeilingYear1,\r\n getOriginalCeilingYear2,\r\n getOriginalCeilingYear3,\r\n getOriginalCeilingYear4,\r\n getOriginalCeilingYear5,\r\n getOriginalCeilingYear6,\r\n getPremium,\r\n getPrice,\r\n getPriceDistrict,\r\n getPriceMwh,\r\n getSupplement,\r\n} from './contract-info-helper';\r\nimport {subProductEnumToString} from './contract-list-item';\r\nimport {RenewContractButton} from './renew-contract-button';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n documentIcon: {\r\n height: '31px',\r\n width: '36',\r\n },\r\n downloadText: {\r\n fontSize: h5,\r\n marginRight: 10,\r\n },\r\n statusActive: {\r\n opacity: 1,\r\n color: checkmarkColor,\r\n fontSize: 25,\r\n alignSelf: 'center',\r\n top: 45,\r\n left: 50,\r\n },\r\n statusInactive: {\r\n opacity: 1,\r\n color: arrowColor,\r\n fontSize: 25,\r\n alignSelf: 'center',\r\n top: 45,\r\n left: 50,\r\n },\r\n center: {\r\n display: 'flex',\r\n },\r\n titleLeftMargin: {\r\n marginLeft: 20,\r\n },\r\n threeInfoItemsWidth: {\r\n maxWidth: 750,\r\n },\r\n twoInfoItemsWidth: {\r\n maxWidth: 500,\r\n },\r\n }),\r\n);\r\nexport const ContractInfoCard: FC = React.memo(() => {\r\n const classes = useStyles();\r\n const useLayoyut = useLayoutStyles();\r\n const {selectedContract} = useSelector((store: AppState) => store.selectedContractsReducer);\r\n const [selectedContractInfo, setSelectedContractInfo] = useState(selectedContract!);\r\n const [contractInfoCardItems, setContractInfoCardItems] = useState>();\r\n\r\n const downloadDocument = async () => {\r\n let file;\r\n if (selectedContract) {\r\n file = await getContractPDF(selectedContract?.documentId);\r\n }\r\n if (file && selectedContract?.document?.fileName) {\r\n promptUserWithFileOptions(file, selectedContract?.document?.fileName);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n setSelectedContractInfo(selectedContract!);\r\n }, [selectedContract]);\r\n\r\n const contractPeriod = useMemo(() => {\r\n if (selectedContractInfo) {\r\n if (sameDate(selectedContractInfo.contractEnd, contractNoEndDate)) {\r\n return [getContractStart(selectedContractInfo.contractStart)];\r\n } else {\r\n return [getContractStart(selectedContractInfo.contractStart), getContractEnd(selectedContractInfo.contractEnd)];\r\n }\r\n } else return [];\r\n }, [selectedContractInfo]);\r\n\r\n useEffect(() => {\r\n if (\r\n selectedContractInfo?.productSubcategory === ProductSubcategory.Spottime ||\r\n selectedContractInfo?.productSubcategory === ProductSubcategory.SMO ||\r\n selectedContractInfo?.productSubcategory === ProductSubcategory.NONstop ||\r\n selectedContractInfo?.productSubcategory === ProductSubcategory.FLEXvalg\r\n ) {\r\n setContractInfoCardItems([\r\n ...contractPeriod,\r\n getPriceDistrict(selectedContractInfo.priceDistrict!),\r\n getPremium(selectedContractInfo.premium!),\r\n getSupplement(selectedContractInfo.supplement!),\r\n ]);\r\n }\r\n\r\n if (\r\n selectedContractInfo?.productSubcategory === ProductSubcategory.FASTfast ||\r\n selectedContractInfo?.productSubcategory === ProductSubcategory.FASTfastUp\r\n ) {\r\n setContractInfoCardItems([\r\n ...contractPeriod,\r\n getPriceDistrict(selectedContractInfo.priceDistrict!),\r\n getPriceMwh(selectedContractInfo.fixedPricePremium!),\r\n getSupplement(selectedContractInfo.supplement!),\r\n ]);\r\n }\r\n\r\n if (\r\n selectedContractInfo?.productSubcategory === ProductSubcategory.FASTfastSPOTtime ||\r\n selectedContractInfo?.productSubcategory === ProductSubcategory.FASTfastExclProfilSPOTtime\r\n ) {\r\n setContractInfoCardItems([\r\n ...contractPeriod,\r\n getPriceDistrict(selectedContractInfo.priceDistrict!),\r\n getPriceMwh(selectedContractInfo.fixedPricePremium!),\r\n getPremium(selectedContractInfo.premium!),\r\n getSupplement(selectedContractInfo.supplement!),\r\n ]);\r\n }\r\n\r\n if (\r\n selectedContractInfo?.productSubcategory === ProductSubcategory.FASTloft ||\r\n selectedContractInfo?.productSubcategory === ProductSubcategory.FLEXloft ||\r\n selectedContractInfo?.productSubcategory === ProductSubcategory.FLEXloftSPOTtime ||\r\n selectedContractInfo?.productSubcategory === ProductSubcategory.FLEXfastExclProfile ||\r\n selectedContractInfo?.productSubcategory === ProductSubcategory.FLEXfastExclProfilSPOTtime ||\r\n selectedContractInfo?.productSubcategory === ProductSubcategory.SpottimeNonStopWithWindPower\r\n ) {\r\n setContractInfoCardItems([\r\n ...contractPeriod,\r\n getPriceDistrict(selectedContractInfo.priceDistrict!),\r\n getPremium(selectedContractInfo.premium!),\r\n getSupplement(selectedContractInfo.supplement!),\r\n getEmptySpace(),\r\n getOriginalCeilingYear1(selectedContractInfo.originalCeilingYear1!),\r\n getExpectedCeilingYear1(selectedContractInfo.currentCeilingYear1!),\r\n getEmptySpace(),\r\n getOriginalCeilingYear2(selectedContractInfo.originalCeilingYear2!),\r\n getExpectedCeilingYear2(selectedContractInfo.currentCeilingYear2!),\r\n getEmptySpace(),\r\n getOriginalCeilingYear3(selectedContractInfo.originalCeilingYear3!),\r\n getExpectedCeilingYear3(selectedContractInfo.currentCeilingYear3!),\r\n getEmptySpace(),\r\n getOriginalCeilingYear4(selectedContractInfo.originalCeilingYear4!),\r\n getExpectedCeilingYear4(selectedContractInfo.currentCeilingYear4!),\r\n getEmptySpace(),\r\n getOriginalCeilingYear5(selectedContractInfo.originalCeilingYear5!),\r\n getExpectedCeilingYear5(selectedContractInfo.currentCeilingYear5!),\r\n getEmptySpace(),\r\n getOriginalCeilingYear6(selectedContractInfo.originalCeilingYear6!),\r\n getExpectedCeilingYear6(selectedContractInfo.currentCeilingYear6!),\r\n ]);\r\n }\r\n\r\n if (\r\n selectedContractInfo?.productSubcategory === ProductSubcategory.FLEXfast ||\r\n selectedContractInfo?.productSubcategory === ProductSubcategory.FLEXfastFLEXSpot\r\n ) {\r\n setContractInfoCardItems([\r\n ...contractPeriod,\r\n getPriceDistrict(selectedContractInfo.priceDistrict!),\r\n getEmptySpace(),\r\n getPremium(selectedContractInfo.premium!),\r\n getSupplement(selectedContractInfo.supplement!),\r\n getOriginalCeilingYear1(selectedContractInfo?.originalCeilingYear1!),\r\n getExpectedCeilingYear1(selectedContractInfo.currentCeilingYear1!),\r\n getEmptySpace(),\r\n getOriginalCeilingYear2(selectedContractInfo.originalCeilingYear2!),\r\n getExpectedCeilingYear2(selectedContractInfo.currentCeilingYear2!),\r\n getEmptySpace(),\r\n getOriginalCeilingYear3(selectedContractInfo.originalCeilingYear3!),\r\n getExpectedCeilingYear3(selectedContractInfo.currentCeilingYear3!),\r\n getEmptySpace(),\r\n getOriginalCeilingYear4(selectedContractInfo.originalCeilingYear4!),\r\n getExpectedCeilingYear4(selectedContractInfo.currentCeilingYear4!),\r\n getEmptySpace(),\r\n getOriginalCeilingYear5(selectedContractInfo.originalCeilingYear5!),\r\n getExpectedCeilingYear5(selectedContractInfo.currentCeilingYear5!),\r\n getEmptySpace(),\r\n getOriginalCeilingYear6(selectedContractInfo.originalCeilingYear6!),\r\n getExpectedCeilingYear6(selectedContractInfo.currentCeilingYear6!),\r\n ]);\r\n }\r\n\r\n if (\r\n selectedContractInfo?.productSubcategory === ProductSubcategory.VINDenergy ||\r\n selectedContractInfo?.productSubcategory === ProductSubcategory.ClimateAction ||\r\n selectedContractInfo?.productSubcategory === ProductSubcategory.ClimateForest\r\n ) {\r\n setContractInfoCardItems([...contractPeriod, getPremium(selectedContractInfo.premium!)]);\r\n }\r\n\r\n if (\r\n selectedContractInfo?.productSubcategory === ProductSubcategory.CO2Mapping ||\r\n selectedContractInfo?.productSubcategory === ProductSubcategory.EnergyCalculation ||\r\n selectedContractInfo?.productSubcategory === ProductSubcategory.EnergyLabeling ||\r\n selectedContractInfo?.productSubcategory === ProductSubcategory.EnergySparring ||\r\n selectedContractInfo?.productSubcategory === ProductSubcategory.EnergySupervision ||\r\n selectedContractInfo?.productSubcategory === ProductSubcategory.OmegaEMS ||\r\n selectedContractInfo?.productSubcategory === ProductSubcategory.PriorityList ||\r\n selectedContractInfo?.productSubcategory === ProductSubcategory.RealizationHelp ||\r\n selectedContractInfo?.productSubcategory === ProductSubcategory.RealizationStart ||\r\n selectedContractInfo?.productSubcategory === ProductSubcategory.SubsidiesCase ||\r\n selectedContractInfo?.productSubcategory === ProductSubcategory.HourCase ||\r\n selectedContractInfo?.productSubcategory === ProductSubcategory.SolarCell ||\r\n selectedContractInfo?.productSubcategory === ProductSubcategory.SubsidiesHelp ||\r\n selectedContractInfo?.productSubcategory === ProductSubcategory.EnergyCheck ||\r\n selectedContractInfo?.productSubcategory === ProductSubcategory.EsgReport ||\r\n selectedContractInfo?.productSubcategory === ProductSubcategory.TariffCheck\r\n ) {\r\n setContractInfoCardItems([...contractPeriod, getPrice(selectedContractInfo.price!)]);\r\n }\r\n\r\n // Pris alert\r\n if (selectedContractInfo?.productSubcategory === ProductSubcategory.PriceAlert) {\r\n setContractInfoCardItems([\r\n ...contractPeriod,\r\n getEmptySpace(),\r\n getEmptySpace(),\r\n getSupplement(selectedContractInfo.supplement!),\r\n ]);\r\n }\r\n\r\n // Default for new product (255)\r\n if (selectedContractInfo?.productSubcategory === ProductSubcategory.NewProduct) {\r\n switch (selectedContractInfo.productCategory) {\r\n case ProductCategory.ElectricitySales:\r\n setContractInfoCardItems([...contractPeriod, getPriceDistrict(selectedContractInfo.priceDistrict!)]);\r\n break;\r\n case ProductCategory.GreenEnergy:\r\n setContractInfoCardItems([...contractPeriod, getPremium(selectedContractInfo.premium!)]);\r\n break;\r\n case ProductCategory.Counseling:\r\n setContractInfoCardItems([...contractPeriod, getPrice(selectedContractInfo.price!)]);\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n if (!selectedContractInfo) {\r\n setContractInfoCardItems([]);\r\n }\r\n }, [selectedContractInfo, contractPeriod]);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {'Document-icon-black'}\r\n {selectedContract?.active ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n {'Download pdf'}\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n {contractInfoCardItems}\r\n \r\n \r\n \r\n \r\n
\r\n );\r\n});\r\n","import {\r\n createStyles,\r\n FormControl,\r\n Grid,\r\n GridDirection,\r\n makeStyles,\r\n MenuItem,\r\n Select,\r\n Theme,\r\n Typography,\r\n} from '@material-ui/core';\r\nimport clsx from 'clsx';\r\nimport React, {useEffect, useLayoutEffect, useState} from 'react';\r\nimport {useDispatch, useSelector} from 'react-redux';\r\nimport {IContractDto, ProductCategory} from '../../../api/api';\r\nimport {useLayoutStyles} from '../../../app-routes';\r\nimport {localized} from '../../../i18n/i18n';\r\nimport {selectedContractSlice} from '../../../state/features/contract/contract-selected-slice';\r\nimport {getContractsDetails} from '../../../state/features/contract/operation';\r\nimport {AppState} from '../../../state/store';\r\nimport {h5} from '../../../styles/font-size-constants';\r\nimport {BasicCard} from '../../../view/components/default-components/basic-card/basic-card';\r\nimport {PageContentContainer} from '../../../view/components/default-components/page-container/page-content-container';\r\nimport {PageHeader} from '../../../view/components/default-components/page-header.tsx/page-header';\r\nimport {PageTitle} from '../../../view/components/default-components/page-title/page-title';\r\nimport {ContractCard} from '../../components/contract/contract-card';\r\nimport {ContractInfoCard} from '../../components/contract/contract-info-card';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n subText: {\r\n fontSize: h5,\r\n width: '650px',\r\n margin: '0 0 0 16px',\r\n },\r\n dropDownSort: {\r\n width: 150,\r\n padding: '5px 20px',\r\n },\r\n contractInfo: {\r\n width: '950px',\r\n height: '320px',\r\n },\r\n formControl: {\r\n margin: theme.spacing(1),\r\n minWidth: 95,\r\n },\r\n cardGrid: {\r\n // Don't know why, but without this, the two cards will have a big margin\r\n width: '100%',\r\n },\r\n }),\r\n);\r\n\r\nexport function useWindowSize() {\r\n const [size, setSize] = useState([0, 0]);\r\n useLayoutEffect(() => {\r\n function updateSize() {\r\n setSize([window.innerWidth, window.innerHeight]);\r\n }\r\n window.addEventListener('resize', updateSize);\r\n updateSize();\r\n return () => window.removeEventListener('resize', updateSize);\r\n }, []);\r\n return size;\r\n}\r\n\r\nexport const Contracts = React.memo(() => {\r\n const classes = useStyles();\r\n const dispatch = useDispatch();\r\n const {pending, contractsSlice} = useSelector((store: AppState) => store.contractsReducer);\r\n const [contractDocs, setContractDocs] = useState();\r\n const [greenDocs, setGreenDocs] = useState();\r\n const [sortType, setSortType] = useState('all');\r\n const [direction, setDirection] = useState('column');\r\n const [width] = useWindowSize();\r\n const layoutClasses = useLayoutStyles();\r\n\r\n // Fetch page data\r\n const {organizationId} = useSelector((store: AppState) => store.organizationReducer);\r\n useEffect(() => {\r\n if (organizationId) {\r\n dispatch(getContractsDetails(organizationId));\r\n }\r\n }, [dispatch, organizationId]);\r\n\r\n const sortTypeChanged = (event: React.ChangeEvent<{value: unknown}>) => {\r\n setSortType(event?.target.value as string);\r\n };\r\n useEffect(() => {\r\n if (960 < width && width < 1920) {\r\n setDirection('row');\r\n } else {\r\n setDirection('column');\r\n }\r\n }, [width]);\r\n\r\n useEffect(() => {\r\n return () => {\r\n dispatch(selectedContractSlice.actions.setSelectedContract(undefined));\r\n };\r\n }, [dispatch]);\r\n\r\n useEffect(() => {\r\n if (sortType === 'active') {\r\n setContractDocs(\r\n contractsSlice.filter(\r\n (d) =>\r\n (d.productCategory === ProductCategory.ElectricitySales ||\r\n d.productCategory === ProductCategory.Counseling) &&\r\n d.active === true,\r\n ),\r\n );\r\n setGreenDocs(\r\n contractsSlice.filter((d) => d.productCategory === ProductCategory.GreenEnergy && d.active === true),\r\n );\r\n }\r\n if (sortType === 'inactive') {\r\n setContractDocs(\r\n contractsSlice.filter(\r\n (d) =>\r\n (d.productCategory === ProductCategory.ElectricitySales ||\r\n d.productCategory === ProductCategory.Counseling) &&\r\n d.active === false,\r\n ),\r\n );\r\n setGreenDocs(\r\n contractsSlice.filter((d) => d.productCategory === ProductCategory.GreenEnergy && d.active === false),\r\n );\r\n }\r\n if (sortType === 'all') {\r\n setContractDocs(contractsSlice.filter((d) => d.productCategory === ProductCategory.ElectricitySales ||\r\n d.productCategory === ProductCategory.Counseling));\r\n setGreenDocs(contractsSlice.filter((d) => d.productCategory === ProductCategory.GreenEnergy));\r\n }\r\n }, [contractsSlice, sortType]);\r\n\r\n useEffect(() => {\r\n if (contractDocs && contractDocs[0]) {\r\n dispatch(selectedContractSlice.actions.setSelectedContract(contractDocs[0]));\r\n }\r\n }, [dispatch, contractDocs]);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {localized('BelowYouWillFindAnOverviewOfAllTheCurrentAgreementsYouHaveWithUs')}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n});\r\n","import {useRouteMatch, Switch, Route} from 'react-router-dom';\r\nimport {Contracts} from './contracts';\r\nimport React, {FC} from 'react';\r\n\r\nexport const ContractsRoute: FC = React.memo(() => {\r\n let match = useRouteMatch();\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n});\r\n","import {Box, createStyles, makeStyles, Theme} from '@material-ui/core';\r\nimport KeyboardArrowRightOutlinedIcon from '@material-ui/icons/KeyboardArrowRightOutlined';\r\nimport React, {FC} from 'react';\r\nimport {arrowColor, primaryTextColor} from '../../../styles/color-constants';\r\nimport {BasicCard} from '../../../view/components/default-components/basic-card/basic-card';\r\nimport {TitleAndSubCard} from '../../../view/components/default-components/title-and-sub-card';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n cardClass: {\r\n height: 180,\r\n cursor: 'pointer',\r\n minWidth: 280,\r\n },\r\n cardText: {\r\n flexGrow: 1,\r\n },\r\n cardIcon: {\r\n marginRight: 20,\r\n },\r\n arrow: {\r\n opacity: 1,\r\n color: arrowColor,\r\n '&:hover': {\r\n color: primaryTextColor,\r\n },\r\n },\r\n }),\r\n);\r\n\r\ninterface PropsFromParent {\r\n icon: any;\r\n title: string;\r\n subTitle?: string;\r\n redirect: any;\r\n}\r\n\r\nexport const DashboardCard: FC = React.memo(\r\n ({icon, title, subTitle, redirect, children, ...props}) => {\r\n const classes = useStyles();\r\n const cardIcon = icon;\r\n\r\n return (\r\n \r\n \r\n {cardIcon}\r\n \r\n \r\n {subTitle ? null :
}\r\n
\r\n \r\n
\r\n {children}\r\n
\r\n );\r\n },\r\n);\r\n","import {Box, Button, createStyles, makeStyles, Theme} from '@material-ui/core';\r\nimport React, {FC} from 'react';\r\nimport {localized} from '../../../i18n/i18n';\r\nimport {basicCardBgColor, btnTextColor, secondaryColor} from '../../../styles/color-constants';\r\nimport {h5} from '../../../styles/font-size-constants';\r\nimport {BasicCard} from '../../../view/components/default-components/basic-card/basic-card';\r\nimport {TitleAndSubCard} from '../../../view/components/default-components/title-and-sub-card';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n firstLayerCard: {\r\n minWidth: 280,\r\n height: 'fit-content',\r\n },\r\n scoundLayerCard: {\r\n backgroundColor: '#FFFFF',\r\n margin: 0,\r\n },\r\n headerAndButton: {\r\n alignItems: 'center',\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n },\r\n header: {\r\n flexGrow: 1,\r\n },\r\n }),\r\n);\r\nexport const useButtonStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n minWidth: '80px',\r\n minHeight: '32px',\r\n borderRadius: '10px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n backgroundColor: basicCardBgColor,\r\n margin: '10px 0px 10px 10px',\r\n color: btnTextColor,\r\n boxShadow: '3px 3px 10px #838D9B33',\r\n border: '1px solid #E0E0E0',\r\n fontSize: h5,\r\n textTransform: 'none',\r\n '&:hover': {\r\n backgroundColor: '#3333',\r\n color: '#FFF',\r\n },\r\n '&.Mui-disabled': {\r\n backgroundColor: secondaryColor,\r\n color: '#FFF',\r\n },\r\n },\r\n }),\r\n);\r\n\r\ninterface PropsFromParent {\r\n title?: string;\r\n redirectButton?: any;\r\n}\r\nexport const DashboardFilesCard: FC = React.memo(({title, redirectButton: redirect, children}) => {\r\n const cardClasses = useStyles();\r\n const buttonClasses = useButtonStyles();\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {children}\r\n \r\n );\r\n});\r\n","import {createStyles, makeStyles, Theme} from '@material-ui/core';\r\nimport React, {useCallback} from 'react';\r\nimport {useDispatch} from 'react-redux';\r\nimport deleteIcon from '../../../assets/icons/delete.svg';\r\nimport {deleteStausMessages} from '../../../state/features/status-message/operation';\r\n\r\nexport const DeleteUserFromOrganizationButtonStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n button: {marginRight: 5, cursor: 'pointer'},\r\n }),\r\n);\r\n\r\ninterface DeletStatusMessageButtonProps {\r\n id: number;\r\n}\r\n\r\nexport const DeletStatusMessageButton = React.memo((props: DeletStatusMessageButtonProps) => {\r\n const classes = DeleteUserFromOrganizationButtonStyles();\r\n\r\n const dispatch = useDispatch();\r\n const onButtonClicked = useCallback(() => {\r\n if (props.id) {\r\n dispatch(deleteStausMessages(props.id));\r\n }\r\n }, [props.id, dispatch]);\r\n\r\n return (\r\n
\r\n \"firm-icon\"\r\n
\r\n );\r\n});\r\n","import { Box, createStyles, makeStyles, Theme, Typography } from '@material-ui/core';\r\nimport WarningIcon from '@material-ui/icons/Warning';\r\nimport React, { FC } from 'react';\r\nimport { warningIconColor } from '../../../styles/color-constants';\r\nimport { isAdmin } from '../../../utilities/platform-helpers/auth-helper';\r\nimport { BasicCard } from '../../../view/components/default-components/basic-card/basic-card';\r\nimport { TitleAndSubCard } from '../../../view/components/default-components/title-and-sub-card';\r\nimport { DeletStatusMessageButton } from './dashboard-delete-statatus-message-button';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n warningIcon: {\r\n color: warningIconColor,\r\n marginRight: 20,\r\n },\r\n messageTitle: {\r\n flexGrow: 1,\r\n },\r\n messageText: {\r\n marginLeft: 44,\r\n },\r\n dateText: {\r\n fontWeight: 'bold',\r\n },\r\n basicPadding: {\r\n margin: '10px 0 10px 0',\r\n },\r\n flexBox: {\r\n display: 'flex',\r\n },\r\n flexBoxSpaceBetween: {\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n },\r\n }),\r\n);\r\n\r\ninterface PropsFromParent {\r\n id: number;\r\n title: string;\r\n text: string;\r\n date: string;\r\n}\r\nexport const StatusMessagesCardItem: FC = React.memo(({title, text, date, id}) => {\r\n const classes = useStyles();\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {date}\r\n \r\n \r\n \r\n {text}\r\n \r\n {isAdmin() && }\r\n \r\n \r\n );\r\n});\r\n","import {\r\n Box,\r\n Button,\r\n CircularProgress,\r\n createStyles,\r\n Dialog,\r\n DialogActions,\r\n DialogContent,\r\n DialogTitle,\r\n Grid,\r\n makeStyles,\r\n TextField,\r\n Theme,\r\n} from '@material-ui/core';\r\nimport CreateIcon from '@material-ui/icons/Create';\r\nimport React, {FC, useEffect, useState} from 'react';\r\nimport {useDispatch, useSelector} from 'react-redux';\r\nimport {IStatusMessageDto} from '../../../api/api';\r\nimport {localized} from '../../../i18n/i18n';\r\nimport {monthNames} from '../../../state/features/invoice/debtor-posting-helper';\r\nimport {saveStausMessages} from '../../../state/features/status-message/operation';\r\nimport {AppState} from '../../../state/store';\r\nimport {basicCardBgColor, btnTextColor} from '../../../styles/color-constants';\r\nimport {h5} from '../../../styles/font-size-constants';\r\nimport {isAdmin} from '../../../utilities/platform-helpers/auth-helper';\r\nimport {BasicCard} from '../../../view/components/default-components/basic-card/basic-card';\r\nimport {TitleAndSubCard} from '../../../view/components/default-components/title-and-sub-card';\r\nimport {StatusMessagesCardItem} from './status-message-card-item';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n cardClass: {\r\n maxWidth: '100%',\r\n height: 'calc(100% - 32px)',\r\n maxHeight: '800px',\r\n minHeight: '200px',\r\n },\r\n nonStatusMsg: {\r\n height: '80%',\r\n },\r\n statusMsgItemBox: {\r\n maxHeight: 350,\r\n overflowY: 'auto',\r\n paddingLeft: 5,\r\n paddingRight: 5,\r\n marginLeft: -5,\r\n marginRight: -5,\r\n },\r\n statusMsgHeader: {\r\n height: '60px',\r\n },\r\n circularProgressBox: {\r\n height: '100%',\r\n },\r\n headerAndButton: {\r\n alignItems: 'center',\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n },\r\n dialogCategorySeperator: {\r\n marginTop: 30,\r\n },\r\n header: {\r\n flexGrow: 1,\r\n },\r\n }),\r\n);\r\n\r\nexport const useButtonStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n minWidth: '80px',\r\n minHeight: '32px',\r\n borderRadius: '10px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n backgroundColor: basicCardBgColor,\r\n margin: '10px 0 10px 0',\r\n color: btnTextColor,\r\n boxShadow: '3px 3px 10px #838D9B33',\r\n border: '1px solid #E0E0E0',\r\n fontSize: h5,\r\n textTransform: 'none',\r\n '&:hover': {\r\n backgroundColor: '#3333',\r\n color: '#FFF',\r\n },\r\n },\r\n statusMessageIcon: {\r\n margin: '0 10px 0 0',\r\n },\r\n }),\r\n);\r\n\r\ninterface PropsFromParent {\r\n redirect?: any;\r\n}\r\n\r\nconst sortStatusMessages = (a: IStatusMessageDto, b: IStatusMessageDto): number =>\r\n b.date?.valueOf()! - a.date?.valueOf()!;\r\n\r\nexport const DashboardStatusMessageCard: FC = React.memo(({redirect}) => {\r\n const classes = useStyles();\r\n const buttonClasses = useButtonStyles();\r\n const dispatch = useDispatch();\r\n\r\n const [open, setOpen] = useState(false);\r\n const [title, setTitle] = useState();\r\n const [text, setText] = useState();\r\n const {pending, statusMessageSlice} = useSelector((store: AppState) => store.statusMessageReducer);\r\n const [statusMessages, setStatusMessages] = useState(statusMessageSlice);\r\n\r\n useEffect(() => {\r\n setStatusMessages(statusMessageSlice);\r\n }, [statusMessageSlice]);\r\n\r\n const handleClickOpen = () => {\r\n setOpen(true);\r\n };\r\n\r\n const handleConfirm = () => {\r\n const newStatusMsg = {\r\n title: title,\r\n text: text,\r\n date: new Date(),\r\n } as IStatusMessageDto;\r\n\r\n dispatch(saveStausMessages(newStatusMsg!));\r\n setStatusMessages([...statusMessages, newStatusMsg]);\r\n setTitle('');\r\n setText('');\r\n setOpen(false);\r\n };\r\n\r\n const handleClose = () => {\r\n setTitle('');\r\n setText('');\r\n setOpen(false);\r\n };\r\n\r\n const headlineInputHandler = (event: any) => {\r\n setTitle(event.target.value);\r\n };\r\n\r\n const textInputHandler = (event: any) => {\r\n setText(event.target.value);\r\n };\r\n\r\n interface IProps {\r\n messages: IStatusMessageDto[];\r\n }\r\n\r\n const StausMessageItemsMapped: FC = ({messages}) => (\r\n <>\r\n {messages.length === 0 ? (\r\n \r\n {localized('EverythingIsAjour')}\r\n \r\n ) : (\r\n \r\n {messages.slice().sort(sortStatusMessages).map(generateStatusMessageCards(monthNames))}\r\n \r\n )}\r\n \r\n );\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n\r\n {isAdmin() ? (\r\n <>\r\n \r\n \r\n {localized('NewStatusMessage')}\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n <>\r\n )}\r\n \r\n {pending ? (\r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n \r\n )}\r\n \r\n );\r\n});\r\n\r\nfunction generateStatusMessageCards(\r\n monthNames: string[],\r\n): (value: IStatusMessageDto, index: number, array: IStatusMessageDto[]) => JSX.Element {\r\n return (messages, index) => {\r\n return (\r\n \r\n );\r\n };\r\n}\r\n","import {Box, createStyles, Grid, makeStyles, Theme} from '@material-ui/core';\r\nimport React, {useEffect} from 'react';\r\nimport {useDispatch, useSelector} from 'react-redux';\r\nimport {useHistory} from 'react-router-dom';\r\nimport {INews} from '../../../api/api';\r\nimport {localized} from '../../../i18n/i18n';\r\nimport {GetAllNewsItems} from '../../../state/features/news/operation';\r\nimport {routes} from '../../../state/routes';\r\nimport {AppState} from '../../../state/store';\r\nimport {primaryColor, primaryTextColor} from '../../../styles/color-constants';\r\nimport {GridWithCustomBreakpoints} from '../../../styles/custom-grid-breakpoints';\r\nimport {h2, h4, h6} from '../../../styles/font-size-constants';\r\nimport {DashboardFilesCard} from '../../components/dashboard/dashboard-files-card';\r\nimport {DashboardFilesCardFooter} from '../../components/dashboard/dashboard-files-card-footer';\r\nimport {DashboardStatusMessageCard} from '../../components/dashboard/dashboard-status-message-card';\r\n\r\nconst useDocumentStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n color: primaryTextColor,\r\n },\r\n documentOrder: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n flexWrap: 'wrap',\r\n justifyContent: 'center',\r\n alignContent: 'stretch',\r\n height: 'fit-content',\r\n cursor: 'pointer',\r\n },\r\n documentHeader: {\r\n fontSize: h2,\r\n textAlign: 'left',\r\n fontWeight: 'bold',\r\n },\r\n documentImage: {\r\n justifyContent: 'center',\r\n maxWidth: '100%',\r\n width: '100%',\r\n },\r\n documentText: {\r\n fontSize: h4,\r\n flexGrow: 1,\r\n },\r\n documnetFooter: {\r\n fontSize: h6,\r\n flexDirection: 'row',\r\n justifyContent: 'space-between',\r\n alignItems: 'center',\r\n },\r\n iconFooter: {\r\n color: primaryColor,\r\n fontSize: '20',\r\n margin: '0 3px 0 0',\r\n },\r\n }),\r\n);\r\n\r\nexport const NewsComponent = React.memo(() => {\r\n const docuClasses = useDocumentStyles();\r\n\r\n let history = useHistory();\r\n let dispatch = useDispatch();\r\n const goToNewsPage = () => {\r\n history.push(routes.news);\r\n };\r\n const news = useSelector((state: AppState) => state.newsReducer.newsItems);\r\n const fetchedAllNews = useSelector((state: AppState) => state.newsReducer.fetchedAll);\r\n useEffect(() => {\r\n if (!fetchedAllNews) {\r\n dispatch(GetAllNewsItems());\r\n }\r\n }, [dispatch, fetchedAllNews]);\r\n const newsToUse = news.length > 0 ? news[0] : undefined;\r\n return (\r\n \r\n \r\n \r\n \r\n {newsToUse && newsToUse.headerImageSrc && (\r\n \"GreenEnergy\"\r\n )}\r\n {newsToUse && newsToUse.summary && (\r\n
\r\n )}\r\n\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n );\r\n});\r\n\r\nfunction setInnerHtml(newsToUse: INews) {\r\n return {__html: newsToUse.summary ? newsToUse.summary : ''};\r\n}\r\n","import {Box, createStyles, Grid, makeStyles, Theme} from '@material-ui/core';\r\nimport moment from 'moment';\r\nimport React, {useEffect, useState} from 'react';\r\nimport {useDispatch, useSelector} from 'react-redux';\r\nimport {useHistory} from 'react-router-dom';\r\nimport Consumption from '../../../assets/icons/consumption_01.svg';\r\nimport Contract from '../../../assets/icons/contract_01.svg';\r\nimport Creditcard from '../../../assets/icons/creditcard_01.svg';\r\nimport {localized} from '../../../i18n/i18n';\r\nimport {getContractsDetails} from '../../../state/features/contract/operation';\r\nimport {getConsumption} from '../../../state/features/energy-consumption/operation';\r\nimport {getDebtorPostings} from '../../../state/features/invoice/operation';\r\nimport {getStatusMessages} from '../../../state/features/status-message/operation';\r\nimport {routes} from '../../../state/routes';\r\nimport {AppState} from '../../../state/store';\r\nimport {secondaryTextColor} from '../../../styles/color-constants';\r\nimport {GridWithCustomBreakpoints} from '../../../styles/custom-grid-breakpoints';\r\nimport {h1} from '../../../styles/font-size-constants';\r\nimport {formatToLocalDateAndLeadingZeros} from '../../../utilities/platform-helpers/date-helpers';\r\nimport {PageContentContainer} from '../../../view/components/default-components/page-container/page-content-container';\r\nimport {PageHeader} from '../../../view/components/default-components/page-header.tsx/page-header';\r\nimport {PageTitle} from '../../../view/components/default-components/page-title/page-title';\r\nimport {DashboardCard} from '../../components/dashboard/dashboard-card';\r\nimport {NewsComponent} from '../../components/dashboard/dashboard-news';\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n highlightedText: {\r\n textAlign: 'center',\r\n fontWeight: 'bold',\r\n padding: '20px',\r\n fontSize: h1,\r\n color: secondaryTextColor,\r\n minWidth: 150,\r\n },\r\n }),\r\n);\r\n\r\nexport const Dashboard = React.memo(() => {\r\n const classes = useStyles();\r\n const dispatch = useDispatch();\r\n\r\n let history = useHistory();\r\n\r\n // Fetch page data\r\n const {organizationId} = useSelector((store: AppState) => store.organizationReducer);\r\n const {currentActiveContract} = useSelector((store: AppState) => store.contractsReducer);\r\n const [consumptionInputs, setConsumptionInputs] = useState(generateComsumptionInputs(organizationId));\r\n\r\n useEffect(() => {\r\n if (consumptionInputs.organizationId !== organizationId) {\r\n setConsumptionInputs(generateComsumptionInputs(organizationId));\r\n }\r\n }, [consumptionInputs, organizationId]);\r\n\r\n useEffect(() => {\r\n if (organizationId) {\r\n dispatch(getContractsDetails(organizationId));\r\n if (consumptionInputs.organizationId && consumptionInputs.toDate && consumptionInputs.fromDate) {\r\n dispatch(getConsumption(consumptionInputs));\r\n }\r\n dispatch(getDebtorPostings(organizationId));\r\n // get News is not implemented yet\r\n dispatch(getStatusMessages());\r\n }\r\n }, [dispatch, consumptionInputs, organizationId]);\r\n\r\n const goToEconomyPage = () => {\r\n history.push(routes.economy);\r\n };\r\n const goToContractPage = () => {\r\n history.push(routes.contracts);\r\n };\r\n const goToConsumptionPage = () => {\r\n history.push(routes.energyConsumption);\r\n };\r\n\r\n const {saldo, thisMonth} = useSelector((state: AppState) => state.debtorPostingReducer);\r\n const {monthlyConsumption} = useSelector((state: AppState) => state.energyConsumptionReducer);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n }\r\n title={localized('Balance')}\r\n redirect={goToEconomyPage}>\r\n \r\n {saldo &&\r\n saldo.toLocaleString(undefined, {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2,\r\n }) + ' kr'}\r\n \r\n \r\n \r\n \r\n }\r\n title={localized('Agreement')}\r\n subTitle={localized('YourCurrentAgreementIsValidFor')}\r\n redirect={goToContractPage}>\r\n \r\n {currentActiveContract?.contractEnd &&\r\n formatToLocalDateAndLeadingZeros(currentActiveContract?.contractEnd)}\r\n \r\n \r\n \r\n \r\n }\r\n title={localized('Consumption')}\r\n subTitle={thisMonth!}\r\n redirect={goToConsumptionPage}>\r\n \r\n {monthlyConsumption.toLocaleString(undefined, {\r\n maximumFractionDigits: monthlyConsumption > 10 ? 0 : 2,\r\n }) + ' kWh'}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n});\r\n\r\nconst generateComsumptionInputs = (organizationId: number | undefined) => ({\r\n fromDate: moment().add(-100, 'days').toDate(),\r\n toDate: new Date(),\r\n organizationId: organizationId,\r\n});\r\n","import {useRouteMatch, Switch, Route} from 'react-router-dom';\r\nimport {Dashboard} from './dashboard';\r\nimport React, {FC} from 'react';\r\n\r\nexport const DashboardRoute: FC = React.memo(() => {\r\n let match = useRouteMatch();\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n});\r\n","import MomentUtils from '@date-io/moment';\r\nimport {KeyboardDatePicker, MuiPickersUtilsProvider} from '@material-ui/pickers';\r\nimport {MaterialUiPickersDate} from '@material-ui/pickers/typings/date';\r\nimport React, {FC, useCallback} from 'react';\r\nimport {localized} from '../../../../i18n/i18n';\r\nimport {DateFormat} from '../../../../utilities/constants';\r\nimport {makeStyles, Theme, createStyles, Box} from '@material-ui/core';\r\nimport {basicCardBgColor, basicCardBoxShadow} from '../../../../styles/color-constants';\r\n\r\ninterface PropsFromParent {\r\n dateFromChanged: (DateFrom: Date) => void;\r\n dateToChanged: (DateTo: Date) => void;\r\n dateFrom: Date;\r\n dateTo: Date;\r\n}\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n datepickerContainer: {\r\n display: 'flex',\r\n\r\n maxHeight: '40px',\r\n },\r\n alignCenterPaddingTop20: {\r\n alignSelf: 'center',\r\n lineHeight: '40px',\r\n },\r\n datePickerToDate: {\r\n marginTop: '0px',\r\n marginBottom: '0px',\r\n marginRight: '5px',\r\n alignSelf: 'center',\r\n '& >p': {\r\n display: 'none',\r\n },\r\n '&>div': {\r\n minWidth: 'fit-content',\r\n flexDirection: 'row-reverse',\r\n '&.MuiInput-underline:before': {\r\n border: 'none !important',\r\n },\r\n '&.MuiInput-underline:after': {\r\n border: 'none !important',\r\n },\r\n '& .MuiInputBase-input': {\r\n width: '70px',\r\n },\r\n '& .MuiInputAdornment-positionEnd': {\r\n marginLeft: '0px',\r\n },\r\n },\r\n },\r\n datePickerFromDate: {\r\n marginTop: '0px',\r\n marginBottom: '0px',\r\n marginRight: '2px',\r\n alignSelf: 'center',\r\n '& >p': {\r\n display: 'none',\r\n },\r\n '&>div': {\r\n minWidth: 'fit-content',\r\n flexDirection: 'row-reverse',\r\n '&.MuiInput-underline:before': {\r\n border: 'none !important',\r\n },\r\n '&.MuiInput-underline:after': {\r\n border: 'none !important',\r\n },\r\n '& .MuiInputBase-input': {\r\n width: '70px',\r\n },\r\n '& .MuiInputAdornment-positionEnd': {\r\n marginLeft: '0px',\r\n },\r\n },\r\n },\r\n documentLayerCard: {\r\n overflow: 'hidden',\r\n maxHeight: '40px',\r\n maxWidth: '260px',\r\n minWidth: '210px',\r\n backgroundColor: basicCardBgColor,\r\n boxShadow: basicCardBoxShadow,\r\n borderRadius: '10px',\r\n position: 'relative',\r\n\r\n padding: '0px 0px 5px',\r\n [theme.breakpoints.up('md')]: {\r\n margin: '16px',\r\n },\r\n [theme.breakpoints.down('sm')]: {\r\n margin: '5px 5px 5px 5px',\r\n },\r\n [theme.breakpoints.down('xs')]: {\r\n margin: '5px 0 5px 0',\r\n },\r\n },\r\n }),\r\n);\r\n\r\nexport const DateRangePicker: FC = React.memo(({dateFrom, dateFromChanged, dateTo, dateToChanged}) => {\r\n const classes = useStyles();\r\n\r\n const dateFromChangedLocal = useCallback(\r\n (d: MaterialUiPickersDate) => {\r\n if (d) {\r\n dateFromChanged(d.toDate());\r\n }\r\n },\r\n [dateFromChanged],\r\n );\r\n\r\n const dateToChangedLocal = useCallback(\r\n (d: MaterialUiPickersDate) => {\r\n if (d) {\r\n dateToChanged(d.toDate());\r\n }\r\n },\r\n [dateToChanged],\r\n );\r\n\r\n return (\r\n \r\n
\r\n \r\n \r\n\r\n {localized('To')}\r\n\r\n \r\n \r\n
\r\n
\r\n );\r\n});\r\n","import {Box, createStyles, Grid, makeStyles, Theme, Typography} from '@material-ui/core';\r\nimport GetAppIcon from '@material-ui/icons/GetApp';\r\nimport React, {FC} from 'react';\r\nimport {useDispatch} from 'react-redux';\r\nimport {FileResponse} from '../../../api/api';\r\nimport {useLayoutStyles} from '../../../app-routes';\r\nimport DocumentIcon from '../../../assets/icons/document.png';\r\nimport {localized} from '../../../i18n/i18n';\r\nimport {getContractPDF} from '../../../state/features/contract/operation';\r\nimport {showErrorSnackbar} from '../../../state/features/snackbar/snackbar-slice';\r\nimport {arrowColor, primaryTextColor} from '../../../styles/color-constants';\r\nimport {promptUserWithFileOptions} from '../../../utilities/file-helper';\r\nimport {saveExccelAs} from '../../../utilities/helpers/general-helpers';\r\nimport {formatToLocalDateAndLeadingZeros} from '../../../utilities/platform-helpers/date-helpers';\r\nimport {DocumentCardTableItem} from './document-card';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n downloadIcon: {\r\n opacity: 1,\r\n cursor: 'pointer',\r\n color: arrowColor,\r\n '&:hover': {\r\n color: primaryTextColor,\r\n },\r\n },\r\n downloadIconContainer: {\r\n height: '24px',\r\n marginLeft: 10,\r\n marginRight: 15,\r\n },\r\n documentIcon: {\r\n width: '21px',\r\n height: '26px',\r\n marginLeft: 'auto',\r\n marginRight: 'auto',\r\n display: 'block',\r\n },\r\n documentIconContainer: {\r\n height: '26px',\r\n paddingLeft: '5px',\r\n },\r\n alignTextBoldTextCenter: {\r\n fontWeight: 800,\r\n },\r\n flexRow: {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n justifyContent: 'flex-start',\r\n alignItems: 'center',\r\n '& div:first-child': {\r\n marginRight: 20,\r\n marginLeft: 10,\r\n },\r\n },\r\n paddingLeftFive: {},\r\n documentContainer: {\r\n marginTop: '10px',\r\n boxShadow: 'rgb(131 141 155 / 20%) 3px 3px 10px',\r\n paddingTop: '5px',\r\n paddingBottom: '5px',\r\n borderRadius: 10,\r\n },\r\n ellipsis: {\r\n textOverflow: 'ellipsis',\r\n overflow: 'hidden',\r\n },\r\n }),\r\n);\r\n\r\ninterface PropsFromParent {\r\n documents: DocumentCardTableItem;\r\n}\r\nexport const DocumentListItem: FC = React.memo(({documents}) => {\r\n const classes = useStyles();\r\n const layout = useLayoutStyles();\r\n const dispatch = useDispatch();\r\n\r\n const downloadDocument = async () => {\r\n try {\r\n let file: FileResponse | null;\r\n\r\n if (documents.id) {\r\n file = await getContractPDF(documents.id);\r\n if (file) {\r\n let fileName = getDocumentName(documents, file);\r\n\r\n if (file.data.type === 'application/octet-stream') {\r\n saveExccelAs(file, fileName + '.xlsx');\r\n } else {\r\n promptUserWithFileOptions(file, fileName);\r\n }\r\n }\r\n } else throw new Error('No document id');\r\n } catch (e) {\r\n dispatch(showErrorSnackbar('Error while downloading document'));\r\n }\r\n };\r\n\r\n const showInfoHorizontal = () => {\r\n return (\r\n \r\n \r\n
\r\n
\r\n {'Document-icon-black'}\r\n
\r\n {documents.name}\r\n
\r\n
\r\n \r\n {documents.date && formatToLocalDateAndLeadingZeros(documents.date)}\r\n \r\n \r\n \r\n {documents.rightHeader ? documents.rightHeader : ''}\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n );\r\n };\r\n const showInfoVertical = () => {\r\n return (\r\n \r\n \r\n {'Document-icon-black'}\r\n \r\n \r\n {documents.name}\r\n \r\n {localized('Date')}: {documents.date && formatToLocalDateAndLeadingZeros(documents.date)}\r\n \r\n \r\n {localized('Amount')}:{' '}\r\n {documents.id.toLocaleString(undefined, {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2,\r\n })}\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n );\r\n };\r\n\r\n return (\r\n \r\n {showInfoVertical()}\r\n {showInfoHorizontal()}\r\n \r\n );\r\n});\r\n\r\nfunction getDocumentName(documents: DocumentCardTableItem, file: FileResponse): string {\r\n let fileName;\r\n if (documents.name !== undefined && documents.name.length !== 0) {\r\n fileName = documents.name;\r\n } else if (file.fileName !== undefined && file.fileName.length !== 0) {\r\n fileName = file.fileName;\r\n } else {\r\n fileName = 'ScanEnergiDocument' + new Date().getTime();\r\n }\r\n\r\n return fileName;\r\n}\r\n","import {createStyles, Grid, makeStyles, Theme, Typography} from '@material-ui/core';\r\nimport React, {FC, useCallback, useEffect, useState} from 'react';\r\nimport {AutoSizer, List, ListRowProps} from 'react-virtualized';\r\nimport {IDocumentDto} from '../../../api/api';\r\nimport {useLayoutStyles} from '../../../app-routes';\r\nimport {i18nTranslationKey, localized} from '../../../i18n/i18n';\r\nimport {TitleAndSubCard} from '../../../view/components/default-components/title-and-sub-card';\r\nimport {BasicCircularProgress} from '../basic-circular-progress';\r\nimport {BasicNoDocuments} from '../basic-no-documents';\r\nimport {useDocumentFilter} from '../filterprovider';\r\nimport {BasicDocumentList} from './basic-document-list';\r\nimport {SortType} from './basic-sort-type';\r\nimport {DocumentListItem} from './document-list-item';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n formControl: {\r\n margin: theme.spacing(1),\r\n minWidth: 120,\r\n },\r\n documentsContainer: {\r\n maxHeight: '500px',\r\n overflow: 'hidden',\r\n marginTop: '10px',\r\n paddingLeft: 5,\r\n paddingRight: 5,\r\n marginLeft: -5,\r\n marginRight: -5,\r\n },\r\n headerDate: {\r\n textAlign: 'center',\r\n },\r\n spaceBetweenTitleAndData: {\r\n marginBottom: 20,\r\n },\r\n }),\r\n);\r\n\r\nexport interface DocumentCardTableItem extends IDocumentDto {\r\n rightHeader?: any;\r\n}\r\n\r\ninterface PropsFromParent {\r\n title: string;\r\n parentDocuments: DocumentCardTableItem[];\r\n pending?: boolean;\r\n dateFrom?: Date;\r\n dateTo?: Date;\r\n status?: boolean;\r\n cardHeight?: number;\r\n docuHeight?: number;\r\n docuNumber?: number;\r\n rightHeader?: keyof i18nTranslationKey;\r\n}\r\n\r\nexport const DocumentCard: FC = React.memo(\r\n ({title, parentDocuments, pending, dateFrom, dateTo, status, cardHeight, docuHeight: documentElementHeight, docuNumber: elementsNumber, rightHeader}) => {\r\n const classes = useStyles();\r\n const layout = useLayoutStyles();\r\n const [filteredDocuments, setFilteredDocuments] = useState(parentDocuments);\r\n const [documents, setDocuments] = useState(filteredDocuments);\r\n const {sortProp} = useDocumentFilter();\r\n const documentsListHeight = cardHeight || (elementsNumber || 5) * (documentElementHeight || 40);\r\n\r\n // Item must have key & style to handle scroll\r\n const rowRenderer = useCallback(\r\n (props: ListRowProps) => {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n },\r\n [documents],\r\n );\r\n\r\n useEffect(() => {\r\n if (dateFrom === undefined || dateTo === undefined) {\r\n setFilteredDocuments(parentDocuments);\r\n } else {\r\n setFilteredDocuments(\r\n parentDocuments &&\r\n parentDocuments.filter(\r\n (doc) => doc.date.valueOf()! >= dateFrom?.valueOf()! && doc.date.valueOf()! <= dateTo?.valueOf()!,\r\n ),\r\n );\r\n }\r\n }, [parentDocuments, dateFrom, dateTo]);\r\n\r\n useEffect(() => {\r\n if (sortProp === 'date') {\r\n setDocuments(filteredDocuments && [...filteredDocuments].sort((a, b) => b.date.valueOf()! - a.date.valueOf()!));\r\n } else {\r\n setDocuments(filteredDocuments && [...filteredDocuments].sort((a, b) => a.name!.localeCompare(b.name!)));\r\n }\r\n }, [sortProp, filteredDocuments]);\r\n\r\n const buildList = useCallback((sizes: {width: number, height: number}) => {\r\n return (\r\n \r\n );\r\n }, [documents, rowRenderer, documentElementHeight])\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {pending ? (\r\n \r\n ) : (\r\n <>\r\n {documents === undefined || documents!.length === 0 ? (\r\n \r\n ) : (\r\n <>\r\n \r\n \r\n {localized('Document')} \r\n \r\n \r\n {localized('Date')} \r\n \r\n \r\n {rightHeader ? rightHeader : ''} {' '}\r\n \r\n \r\n \r\n
\r\n \r\n {buildList}\r\n \r\n
\r\n \r\n )}\r\n \r\n )}\r\n
\r\n );\r\n },\r\n);\r\n\r\n","import {Grid} from '@material-ui/core';\r\nimport moment from 'moment';\r\nimport React, {useEffect, useState} from 'react';\r\nimport {useDispatch, useSelector} from 'react-redux';\r\nimport {IContractDto, IDocumentDto, ProductCategory, DocumentType} from '../../../api/api';\r\nimport {localized} from '../../../i18n/i18n';\r\nimport {getContractsDetails} from '../../../state/features/contract/operation';\r\nimport {getDocumentDetails} from '../../../state/features/document/operation';\r\nimport {AppState} from '../../../state/store';\r\nimport {DateRangePicker} from '../../../view/components/default-components/date-range-picker/date-range-picker';\r\nimport {PageContentContainer} from '../../../view/components/default-components/page-container/page-content-container';\r\nimport {PageHeader} from '../../../view/components/default-components/page-header.tsx/page-header';\r\nimport {PageTitle} from '../../../view/components/default-components/page-title/page-title';\r\nimport {ContractCard} from '../../components/contract/contract-card';\r\nimport {DocumentCard} from '../../components/document/document-card';\r\nimport {FilterProvider} from '../../components/filterprovider';\r\n\r\nexport const Documents = React.memo(() => {\r\n const dispatch = useDispatch();\r\n const [fromDate, setFromDate] = useState(moment().add(-1, 'years').toDate());\r\n const [toDate, setToDate] = useState(\r\n moment()\r\n .add(+10, 'years')\r\n .toDate(),\r\n );\r\n const {pending, documentsSlice} = useSelector((store: AppState) => store.documentsReducer);\r\n const {contractsSlice} = useSelector((store: AppState) => store.contractsReducer);\r\n const [contractDocs, setContractDocs] = useState();\r\n const [greenDocs, setGreenDocs] = useState();\r\n const [reportsDocs, setReportsDocs] = useState();\r\n\r\n // Fetch page data\r\n const {organizationId} = useSelector((store: AppState) => store.organizationReducer);\r\n useEffect(() => {\r\n if (organizationId) {\r\n dispatch(getDocumentDetails(organizationId));\r\n dispatch(getContractsDetails(organizationId));\r\n }\r\n }, [dispatch, organizationId]);\r\n\r\n useEffect(() => {\r\n setContractDocs(contractsSlice.filter((d) => d.productCategory === ProductCategory.ElectricitySales));\r\n setGreenDocs(contractsSlice.filter((d) => d.productCategory === ProductCategory.GreenEnergy));\r\n setReportsDocs(documentsSlice.filter((d) => d.documentType === DocumentType.GreenOptimizationReports));\r\n }, [contractsSlice, documentsSlice]);\r\n\r\n const handleFromDateChanged = (event: Date) => {\r\n setFromDate(event);\r\n };\r\n const handleToDateChanged = (event: Date) => {\r\n setToDate(event);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n});\r\n","import {useRouteMatch, Switch, Route} from 'react-router-dom';\r\nimport {Documents} from './documents';\r\nimport React, {FC} from 'react';\r\n\r\nexport const DocumentsRoute: FC = React.memo(() => {\r\n let match = useRouteMatch();\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n});\r\n","import React from 'react';\r\nimport { localized } from '../../../i18n/i18n';\r\nimport { PageContentContainer } from '../../../view/components/default-components/page-container/page-content-container';\r\nimport { PageTitle } from '../../../view/components/default-components/page-title/page-title';\r\nimport { PageHeader } from '../../../view/components/default-components/page-header.tsx/page-header';\r\n\r\nexport const EBooks = React.memo(() => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n});\r\n","import {useRouteMatch, Switch, Route} from 'react-router-dom';\r\nimport {EBooks} from './e-books';\r\nimport React, {FC} from 'react';\r\n\r\nexport const EbooksRoute: FC = React.memo(() => {\r\n let match = useRouteMatch();\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n});\r\n","import {createStyles, makeStyles, Theme, Typography} from '@material-ui/core';\r\nimport React from 'react';\r\nimport {useLayoutStyles} from '../../../app-routes';\r\nimport {localized} from '../../../i18n/i18n';\r\nimport {h5} from '../../../styles/font-size-constants';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n subText: {\r\n fontSize: h5,\r\n margin: '0 0 0 16px',\r\n lineHeight: '26px',\r\n maxWidth: '648px',\r\n },\r\n }),\r\n);\r\n\r\nexport const EconomyHeader = () => {\r\n const classes = useStyles();\r\n const layoutClasses = useLayoutStyles();\r\n return (\r\n <>\r\n
\r\n {localized('EconomyDefaultText')}\r\n
\r\n \r\n );\r\n};\r\n","import {\r\n Button,\r\n createStyles,\r\n Dialog,\r\n DialogActions,\r\n DialogContent,\r\n DialogTitle,\r\n makeStyles,\r\n Theme,\r\n Typography,\r\n} from '@material-ui/core';\r\nimport React, {useState} from 'react';\r\nimport {Document, Page, pdfjs} from 'react-pdf';\r\nimport QuestionMark from '../../../assets/icons/question_mark.svg';\r\nimport {localized} from '../../../i18n/i18n';\r\nimport {h5} from '../../../styles/font-size-constants';\r\npdfjs.GlobalWorkerOptions.workerSrc = `//cdnjs.cloudflare.com/ajax/libs/pdf.js/${pdfjs.version}/pdf.worker.js`;\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n subTextBorderBottom: {\r\n fontSize: h5,\r\n margin: '0 16px 0 5px',\r\n lineHeight: '26px',\r\n maxWidth: '648px',\r\n borderBottom: '1px solid black',\r\n },\r\n documentIcon: {\r\n width: '21px',\r\n height: '26px',\r\n },\r\n flexDirectionRow: {\r\n marginRight: 10,\r\n display: 'flex',\r\n flexDirection: 'row',\r\n cursor: 'pointer',\r\n '&:hover': {\r\n color: '#3333',\r\n },\r\n },\r\n dialog: {},\r\n }),\r\n);\r\n\r\nexport const HowToReadInvoice = React.memo(() => {\r\n const classes = useStyles();\r\n const [open, setOpen] = React.useState(false);\r\n const [numPages, setNumPages] = useState(null);\r\n const handleClickOpen = () => {\r\n setOpen(true);\r\n };\r\n const handleClose = () => {\r\n setOpen(false);\r\n };\r\n\r\n const handleLoadSuccess = ({numPages}: any) => setNumPages(numPages)\r\n\r\n return (\r\n <>\r\n
\r\n {'Document-icon-black'}\r\n {localized('HowToReadInvoice')}\r\n
\r\n \r\n {localized('HowToReadInvoice')}\r\n \r\n \r\n {Array.apply(null, Array(numPages))\r\n .map((x, i) => i + 1)\r\n .map((page) => (\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n});\r\n","import {Box, createStyles, makeStyles, Theme, Typography} from '@material-ui/core';\r\nimport clsx from 'clsx';\r\nimport React from 'react';\r\nimport {useLayoutStyles} from '../../../app-routes';\r\nimport {localized} from '../../../i18n/i18n';\r\nimport {h5} from '../../../styles/font-size-constants';\r\nimport {HowToReadInvoice} from './how-to-read-invoice';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n subText: {\r\n fontSize: h5,\r\n margin: '0 0 0 16px',\r\n lineHeight: '26px',\r\n maxWidth: '648px',\r\n },\r\n boldText: {\r\n fontWeight: 'bold',\r\n },\r\n flexDirectionRow: {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n cursor: 'pointer',\r\n '&:hover': {\r\n color: '#3333',\r\n },\r\n },\r\n seachHeaderFlexBox: {\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n },\r\n }),\r\n);\r\n\r\nexport const EconomyHeaderHowTo = () => {\r\n const classes = useStyles();\r\n const layoutClasses = useLayoutStyles();\r\n return (\r\n <>\r\n
\r\n \r\n \r\n \r\n {localized('SearchInvoiceHeaderText')}\r\n \r\n \r\n \r\n \r\n
\r\n \r\n );\r\n};\r\n","import React, {FC, useCallback, useContext} from 'react';\r\n\r\ninterface PropsFromParent {\r\n validationMethod: () => boolean;\r\n}\r\n\r\nexport const RequiredContext = React.createContext({} as any);\r\nexport const useRequired = () => useContext(RequiredContext);\r\n\r\nexport const RequiredWrapper: FC = React.memo(({children, validationMethod}) => {\r\n const [showError, setShowError] = React.useState(false);\r\n\r\n const validate = useCallback(() => {\r\n const isValid = validationMethod();\r\n setShowError(!isValid);\r\n return isValid;\r\n }, [validationMethod]);\r\n\r\n const submitHandler = (event: React.FormEvent) => {\r\n event.preventDefault();\r\n };\r\n return (\r\n \r\n
{children}
\r\n
\r\n );\r\n});\r\n","import {Icon, InputAdornment, TextField, TextFieldProps, Theme, withStyles} from '@material-ui/core';\r\nimport React, {FC, useCallback} from 'react';\r\nimport {textFieldInputColor, textFieldLabelColor} from '../../../../styles/color-constants';\r\nimport {MdIcons} from '../../../../utilities/material-design-icons';\r\nimport {useRequired} from '../required/required-provider';\r\nimport {localized} from '../../../../i18n/i18n';\r\n\r\ninterface PropsFromParent {\r\n label?: string;\r\n suffix?: string;\r\n suffixIcon?: MdIcons;\r\n prefixIcon?: MdIcons;\r\n prefix?: string;\r\n text?: string;\r\n textChanged?: (newText: string) => void;\r\n placeholder?: string;\r\n required?: boolean;\r\n requiredText?: string;\r\n disabled?: boolean;\r\n isInvalid?: boolean;\r\n}\r\n\r\nexport const CssTextField = withStyles((theme: Theme) => ({\r\n root: {\r\n margin: theme.spacing(1),\r\n maxWidth: '300px',\r\n width: '100%',\r\n\r\n '& label.Mui-focused': {\r\n color: textFieldLabelColor,\r\n },\r\n '& label': {\r\n color: textFieldLabelColor,\r\n },\r\n '& input': {\r\n color: textFieldInputColor,\r\n },\r\n '& .MuiInput-underline:after': {\r\n borderBottomColor: textFieldLabelColor,\r\n },\r\n },\r\n}))(TextField);\r\n\r\ntype Props = PropsFromParent & TextFieldProps;\r\n\r\nconst shrink = {\r\n shrink: true,\r\n};\r\n\r\nexport const BasicTextField: FC = React.memo(\r\n ({\r\n textChanged,\r\n label,\r\n prefix,\r\n suffix,\r\n text,\r\n suffixIcon,\r\n prefixIcon,\r\n placeholder,\r\n requiredText,\r\n required,\r\n disabled,\r\n isInvalid, // If undefined, text field requirement is if empty.\r\n ...props\r\n }) => {\r\n const {showError} = useRequired();\r\n\r\n const textChangedLocal = useCallback(\r\n (event: React.ChangeEvent) => {\r\n if (textChanged) {\r\n textChanged(event.target.value);\r\n }\r\n },\r\n [textChanged],\r\n );\r\n\r\n const showRequired = showError && required && ((isInvalid === undefined && !text) || isInvalid);\r\n\r\n return (\r\n {prefix ? prefix : {prefixIcon}}\r\n ) : null,\r\n endAdornment:\r\n suffix || suffixIcon ? (\r\n {suffix ? suffix : {suffixIcon}}\r\n ) : null,\r\n }}\r\n />\r\n );\r\n },\r\n);\r\n\r\nBasicTextField.defaultProps = {\r\n requiredText: localized('FieldIsRequired'),\r\n required: false,\r\n};\r\n","import {Checkbox, CheckboxProps, withStyles} from '@material-ui/core';\r\nimport CheckBoxIcon from '@material-ui/icons/CheckBox';\r\nimport CheckBoxOutlineBlankIcon from '@material-ui/icons/CheckBoxOutlineBlank';\r\nimport React from 'react';\r\nimport {checkboxChecked, checkBoxUnChecked} from '../../../../styles/color-constants';\r\n\r\nconst icon = ;\r\nconst checkedIcon = ;\r\n\r\nexport const BasicCheckbox = withStyles({\r\n root: {\r\n color: checkBoxUnChecked,\r\n '&$checked': {\r\n color: checkboxChecked,\r\n },\r\n },\r\n checked: {},\r\n})((props: CheckboxProps) => );\r\n\r\nBasicCheckbox.defaultProps = {\r\n checked: false,\r\n};\r\n","import {createStyles, makeStyles, Theme} from '@material-ui/core';\r\nimport {AutocompleteRenderOptionState} from '@material-ui/lab/Autocomplete';\r\nimport clsx from 'clsx';\r\nimport React, {FC} from 'react';\r\nimport { checkboxChecked } from '../../styles/color-constants';\r\nimport { BasicCheckbox } from '../../view/components/default-components/basic-checkbox/basic-checkbox';\r\nimport { FilterItem } from '../../view/components/default-components/checkbox-filtering/checkbox-filtering';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n optionText: {\r\n padding: theme.spacing(1, 0, 1, 0),\r\n width: '100%',\r\n },\r\n outerContainer: {\r\n padding: theme.spacing(0, 1, 0, 1),\r\n height: 45,\r\n },\r\n checkbox: {\r\n paddingLeft: 0,\r\n paddingTop: theme.spacing(0.5),\r\n paddingBottom: theme.spacing(0.5),\r\n },\r\n selected: {\r\n backgroundColor: 'transparent',\r\n color: checkboxChecked,\r\n },\r\n lastChild: {\r\n borderBottomWidth: 0,\r\n },\r\n }),\r\n);\r\n\r\ninterface PropsFromParent {\r\n option: FilterItem;\r\n optionState?: AutocompleteRenderOptionState;\r\n onClick?: () => void;\r\n isLastChild?: boolean;\r\n}\r\n\r\nexport const BasicCardCheckbox: FC = React.memo(\r\n ({option, optionState, onClick, isLastChild}) => {\r\n const classes = useStyles();\r\n return (\r\n
\r\n \r\n \r\n {option.title}\r\n
\r\n
\r\n );\r\n },\r\n);\r\n","import {Box, BoxProps, createStyles, makeStyles, Theme, Typography} from '@material-ui/core';\r\nimport React, {FC} from 'react';\r\nimport {localized} from '../../../i18n/i18n';\r\nimport {h5} from '../../../styles/font-size-constants';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n resetButton: {\r\n fontSize: h5,\r\n msAlignSelf: 'flex-end',\r\n lineHeight: '26px',\r\n maxWidth: '648px',\r\n borderBottom: '1px solid black',\r\n cursor: 'pointer',\r\n alignSelf: 'center',\r\n '&:hover': {\r\n color: '#3333',\r\n },\r\n },\r\n box: {\r\n margin: '16px 8px',\r\n },\r\n }),\r\n);\r\n\r\nexport const ResetFilterButton: FC = React.memo(({...props}) => {\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n {localized('Reset')}\r\n \r\n );\r\n});\r\n","import {Box, createStyles, Grid, makeStyles, Theme} from '@material-ui/core';\r\nimport moment from 'moment';\r\nimport React, {useCallback, useEffect, useState} from 'react';\r\nimport {useDispatch, useSelector} from 'react-redux';\r\nimport {DebtorPostingType} from '../../../api/api';\r\nimport {useLayoutStyles} from '../../../app-routes';\r\nimport {localized} from '../../../i18n/i18n';\r\nimport {SetCurrentFilter} from '../../../state/features/invoice/operation';\r\nimport {DebtorPostingFilter} from '../../../state/features/invoice/types';\r\nimport {AppState} from '../../../state/store';\r\nimport {basicCardBgColor, basicCardBoxShadow} from '../../../styles/color-constants';\r\nimport {DateRangePicker} from '../../../view/components/default-components/date-range-picker/date-range-picker';\r\nimport {BasicTextField} from '../../../view/components/default-components/text-fields/basic-text-field';\r\nimport {BasicCardCheckbox} from '../basic-card-checkbox';\r\nimport {ResetFilterButton} from './reset-filter-button';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n searchInvoiceTextField: {\r\n margin: '0px',\r\n '& .MuiInput-underline:before': {\r\n border: 'none',\r\n },\r\n '& .MuiInput-underline:after': {\r\n border: 'none',\r\n },\r\n '& .MuiInput-underline:hover:not(.mui-disabled):before': {\r\n border: 'none',\r\n },\r\n '& .MuiFormHelperText-root': {display: 'none'},\r\n '& .MuiInputBase-input': {\r\n lineHeight: '40px',\r\n height: '40px',\r\n padding: '0px 0px 0px 10px',\r\n },\r\n },\r\n searchInvoiceContainer: {\r\n margin: '16px 10px 16px 16px',\r\n maxHeight: '40px',\r\n maxWidth: '170px',\r\n backgroundColor: basicCardBgColor,\r\n boxShadow: basicCardBoxShadow,\r\n borderRadius: '10px',\r\n },\r\n optionText: {\r\n borderBottom: 'none',\r\n },\r\n flexDirectionRow: {\r\n flexDirection: 'row',\r\n display: 'flex',\r\n marginLeft: '10px',\r\n },\r\n searchPopUp: {\r\n marginLeft: 10,\r\n },\r\n }),\r\n);\r\n\r\nexport const FilterInvoices = React.memo(() => {\r\n const classes = useStyles();\r\n const layoutClasses = useLayoutStyles();\r\n const dispatch = useDispatch();\r\n const {currentFilter} = useSelector((state: AppState) => state.debtorPostingReducer);\r\n\r\n const setFilterDateFromTo = useCallback(\r\n (fDate: Date, tDate: Date) => {\r\n const filter = {...currentFilter} as DebtorPostingFilter;\r\n if (fDate) {\r\n filter.DateFrom = fDate;\r\n }\r\n if (tDate) {\r\n filter.DateTo = moment(tDate, 'DD/MM/YYYY').endOf('day').toDate();\r\n }\r\n dispatch(SetCurrentFilter(filter));\r\n },\r\n [currentFilter, dispatch],\r\n );\r\n\r\n const [fromDate, setFromDate] = useState(undefined);\r\n const [toDate, setToDate] = useState(new Date());\r\n\r\n const handleFromDateChanged = useCallback(\r\n (event: Date) => {\r\n setFromDate(event);\r\n setFilterDateFromTo(event, toDate!);\r\n },\r\n [setFromDate, toDate, setFilterDateFromTo],\r\n );\r\n\r\n const handleToDateChanged = useCallback(\r\n (event: Date) => {\r\n setToDate(event);\r\n setFilterDateFromTo(fromDate!, event);\r\n },\r\n [setToDate, fromDate, setFilterDateFromTo],\r\n );\r\n\r\n const setFilterInvoiceType = useCallback(\r\n (type?: DebtorPostingType) => {\r\n const filter = {...currentFilter} as DebtorPostingFilter;\r\n filter.DebtorPostingType = type;\r\n dispatch(SetCurrentFilter(filter));\r\n },\r\n [currentFilter, dispatch],\r\n );\r\n const setFilterInvoiceNumber = useCallback(\r\n (num?: string) => {\r\n const filter = {...currentFilter} as DebtorPostingFilter;\r\n\r\n filter.InvoiceNumber = num;\r\n dispatch(SetCurrentFilter(filter));\r\n },\r\n [currentFilter, dispatch],\r\n );\r\n\r\n const handleInvoiceTypeInvoiceChanged = useCallback(() => {\r\n setInvoiceType(currentFilter, DebtorPostingType.Invoice, setFilterInvoiceType);\r\n }, [setFilterInvoiceType, currentFilter]);\r\n const handleInvoiceTypeCreditChanged = useCallback(() => {\r\n setInvoiceType(currentFilter, DebtorPostingType.Credit, setFilterInvoiceType);\r\n }, [setFilterInvoiceType, currentFilter]);\r\n const handleInvoiceTypeOtherChanged = useCallback(() => {\r\n setInvoiceType(currentFilter, DebtorPostingType.Other, setFilterInvoiceType);\r\n }, [setFilterInvoiceType, currentFilter]);\r\n useEffect(() => {\r\n return function cleanup() {\r\n dispatch(SetCurrentFilter({DateFrom: undefined, DateTo: new Date()}));\r\n };\r\n }, [dispatch]);\r\n\r\n const handleResetButtonPressed = useCallback(() => {\r\n let resetFilter: DebtorPostingFilter = {\r\n DateFrom: undefined,\r\n DateTo: new Date(),\r\n };\r\n setFromDate(resetFilter.DateFrom!);\r\n setToDate(resetFilter.DateTo!);\r\n\r\n dispatch(SetCurrentFilter(resetFilter));\r\n \r\n // eslint-disable-next-line\r\n }, [dispatch, SetCurrentFilter]);\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n
{currentFilter.InvoiceNumber! && localized('SearchInvoice')}
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n});\r\nconst generateInvoiceSelectedItem = (debtorPostingType: DebtorPostingType) => ({\r\n selected: true,\r\n inputValue: debtorPostingType.toString(),\r\n});\r\n\r\nconst facturaCheckBoxOption = () => ({title: localized('Invoice'), id: 'Invoice'});\r\nconst creditNoteCheckBoxOption = () => ({title: localized('CreditNote'), id: 'CreditNote'});\r\nconst othersCheckBoxOption = () => ({title: localized('Others'), id: 'Others'});\r\n\r\nfunction setInvoiceType(\r\n currentFilter: DebtorPostingFilter,\r\n type: DebtorPostingType,\r\n setFilterInvoiceType: (type?: DebtorPostingType | undefined) => void,\r\n) {\r\n if (currentFilter.DebtorPostingType !== undefined && currentFilter.DebtorPostingType === type) {\r\n setFilterInvoiceType(undefined);\r\n } else {\r\n setFilterInvoiceType(type);\r\n }\r\n}\r\n","import React, {useEffect, useState} from 'react';\r\nimport {useSelector} from 'react-redux';\r\nimport {DocumentType, IDebtorPostingDocumentDto} from '../../../api/api';\r\nimport {localized} from '../../../i18n/i18n';\r\nimport {DebtorPostingFilter} from '../../../state/features/invoice/types';\r\nimport {AppState} from '../../../state/store';\r\nimport {GridWithCustomBreakpoints} from '../../../styles/custom-grid-breakpoints';\r\nimport {DocumentCard, DocumentCardTableItem} from '../document/document-card';\r\nimport {FilterProvider} from '../filterprovider';\r\n\r\nexport const DebtorPostingDocumentCard = React.memo(() => {\r\n const debtorPostingsDocuments = useSelector((state: AppState) => state.documentsReducer.debtorPostingDocuments);\r\n const debtorPostingsDocumentsFilter = useSelector((state: AppState) => state.debtorPostingReducer.currentFilter);\r\n const pending = useSelector((state: AppState) => state.documentsReducer.pending);\r\n const [documentsToUse, setDocumentsToUse] = useState([]);\r\n\r\n useEffect(() => {\r\n const documents = debtorPostingsDocuments.filter(documentFilter(debtorPostingsDocumentsFilter)).map(\r\n (dp) =>\r\n ({\r\n ...dp,\r\n rightHeader: dp.amount && dp.amount.toLocaleString(undefined, {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2,\r\n }),\r\n } as DocumentCardTableItem),\r\n );\r\n setDocumentsToUse(documents);\r\n }, [debtorPostingsDocuments, debtorPostingsDocumentsFilter, setDocumentsToUse]);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n});\r\n\r\nconst documentFilter = (debtorPostingsFilter: DebtorPostingFilter) => (doc: IDebtorPostingDocumentDto) => {\r\n let useDocument = doc.documentType === DocumentType.Invoice;\r\n if (\r\n debtorPostingsFilter.DebtorPostingType !== undefined &&\r\n debtorPostingsFilter.DebtorPostingType !== doc.debtorPostingType\r\n ) {\r\n return false;\r\n }\r\n if (debtorPostingsFilter.InvoiceNumber) {\r\n const docNameLowerCase = doc.invoiceNumber?.toLowerCase();\r\n const invoiceNameLowerCase = debtorPostingsFilter.InvoiceNumber.toLowerCase();\r\n if (!docNameLowerCase?.includes(invoiceNameLowerCase)) {\r\n return false;\r\n }\r\n }\r\n return useDocument;\r\n};\r\n","import React, {FC} from 'react';\r\nimport {Box, BoxProps} from '@material-ui/core';\r\n\r\nexport const FlexRow: FC = React.memo((props) => {\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n});\r\n","import {Box, createStyles, makeStyles, Theme} from '@material-ui/core';\r\nimport clsx from 'clsx';\r\nimport React, {FC, useCallback} from 'react';\r\nimport {ListTableTextColor} from '../../../../styles/color-constants';\r\nimport {body2} from '../../../../styles/font-size-constants';\r\nimport {FlexRow} from '../../../components/default-components/flex-row';\r\n\r\ninterface PropsFromsParent {\r\n columnSizes?: number[];\r\n objectValues: any[];\r\n itemSelected?: (item: T) => void;\r\n contentItem?: T;\r\n maxWidth?: (number | undefined)[];\r\n textAlign?: 'center';\r\n}\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n itemContainer: {\r\n height: 30,\r\n alignItems: 'center',\r\n margin: theme.spacing(1),\r\n marginLeft: 0,\r\n marginRight: 0,\r\n },\r\n itemText: {\r\n fontSize: body2,\r\n color: ListTableTextColor,\r\n },\r\n firstColumnMargin: {\r\n margin: '0px -5px 0px 5px',\r\n },\r\n lastColumnMargin: {\r\n margin: '0px 15px 0px -30px',\r\n },\r\n rightAlignColumMargin: {\r\n margin: '0px 30px 0px -30px',\r\n },\r\n showCursor: {\r\n cursor: 'pointer',\r\n },\r\n }),\r\n);\r\n\r\ntype Props = PropsFromsParent;\r\n\r\nexport const ListTableItem: FC = React.memo(\r\n ({columnSizes, objectValues, itemSelected, contentItem, maxWidth, textAlign}) => {\r\n const classes = useStyles();\r\n const itemSelectedLocal = useCallback(() => {\r\n if (itemSelected && contentItem) {\r\n itemSelected(contentItem);\r\n }\r\n }, [itemSelected, contentItem]);\r\n\r\n return (\r\n \r\n {objectValues.map((objectValue, index) => {\r\n const flex = columnSizes && columnSizes[index];\r\n let width = maxWidth && maxWidth[index];\r\n if (!width && (index === 0 || index === objectValues.length - 1)) {\r\n width = 50;\r\n }\r\n return (\r\n 2 ? 'right' : textAlign}\r\n flex={flex}\r\n className={clsx(\r\n classes.itemText,\r\n index === 0 ? classes.firstColumnMargin : null,\r\n index > 2 ? (index === 5 ? classes.lastColumnMargin : classes.rightAlignColumMargin) : null,\r\n )}>\r\n {objectValue}\r\n
\r\n );\r\n })}\r\n \r\n );\r\n },\r\n);\r\n","import {Box, createStyles, makeStyles, Theme} from '@material-ui/core';\r\nimport {ClassNameMap} from '@material-ui/styles';\r\nimport clsx from 'clsx';\r\nimport React, {FC} from 'react';\r\nimport {ListTableTextColor} from '../../../../styles/color-constants';\r\nimport {body2} from '../../../../styles/font-size-constants';\r\nimport {ListItemHeaderWidth, ListItemWidth} from '../../../../styles/styling-constants';\r\nimport {FlexRow} from '../../../components/default-components/flex-row';\r\n\r\ninterface PropsFromParent {\r\n columnSizes?: number[];\r\n headers: string[];\r\n maxWidth?: (number | undefined)[];\r\n minWidth?: number;\r\n width?: any;\r\n listHasScroll: boolean;\r\n textAlign?: 'center';\r\n}\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n headerContainer: (props: PropsFromParent) => ({\r\n height: 40,\r\n alignItems: '',\r\n width: props.listHasScroll ? ListItemHeaderWidth : ListItemWidth,\r\n }),\r\n headerText: {\r\n fontSize: body2,\r\n textAlign: (props: PropsFromParent) => (props.textAlign ? props.textAlign : 'left'),\r\n color: ListTableTextColor,\r\n fontWeight: 'bold',\r\n },\r\n firstColumnMargin: {\r\n margin: '0px -5px 0px 5px',\r\n },\r\n rightAlignColumMargin: {\r\n margin: '0px -30px 0px 30px',\r\n },\r\n }),\r\n);\r\n\r\ntype Props = PropsFromParent;\r\n\r\nexport const ListTableHeader: FC = React.memo(\r\n ({columnSizes, headers, maxWidth, minWidth, listHasScroll, textAlign}) => {\r\n const classes = useStyles({listHasScroll, headers, textAlign});\r\n return (\r\n \r\n {headers.map(generateHeaders(columnSizes, maxWidth, headers, classes))}\r\n \r\n );\r\n },\r\n);\r\nfunction generateHeaders(\r\n columnSizes: number[] | undefined,\r\n maxWidth: (number | undefined)[] | undefined,\r\n headers: string[],\r\n classes: ClassNameMap<'headerContainer' | 'headerText' | 'firstColumnMargin' | 'rightAlignColumMargin'>,\r\n): (value: string, index: number, array: string[]) => JSX.Element {\r\n return (header, index) => {\r\n const flex = columnSizes && columnSizes[index];\r\n let width = maxWidth && maxWidth[index];\r\n if (!width && (index === 0 || index === headers.length - 1)) {\r\n width = 50;\r\n }\r\n return (\r\n 2 ? classes.rightAlignColumMargin : null,\r\n )}\r\n flex={flex}>\r\n {header}\r\n \r\n );\r\n };\r\n}\r\n","export const VirtualizedContentBoxHeight = 'calc(100vh - 145px) !important';\r\nexport const VirtualizedListTableBoxHeight = 'calc(100vh - 210px) !important';\r\n\r\nexport const ListItemWidth = 'calc(100% - 0px)';\r\nexport const ListItemHeaderWidth = 'calc(100% - 17px)';\r\n\r\nexport const NoMarginPageWrapper = {\r\n marginTop: -24,\r\n}","import {Box, createStyles, makeStyles, Theme} from '@material-ui/core';\r\nimport React, {FC, useEffect, useRef, useState} from 'react';\r\nimport {List, ListRowRenderer} from 'react-virtualized';\r\nimport {VirtualizedListTableBoxHeight} from '../../../../styles/styling-constants';\r\nimport {ListTableHeader} from '../list-table/list-table-header';\r\n\r\ninterface PropsFromParent {\r\n columnSizes: number[];\r\n columnHeaders: string[];\r\n maxWidth?: (number | undefined)[];\r\n maxHeight?: number;\r\n minWidth?: number;\r\n textAlign?: 'center';\r\n items: any[];\r\n rowRenderer: ListRowRenderer;\r\n}\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n margin: theme.spacing(1),\r\n width: 'auto',\r\n },\r\n list: (props: PropsFromParent) => ({\r\n height: VirtualizedListTableBoxHeight, // subtract page header,\r\n maxHeight: props.maxHeight ? props.maxHeight : 'unset',\r\n minWidth: props.minWidth ? props.minWidth : 'unset',\r\n overflowY: 'auto',\r\n outline: 'none',\r\n width: 'auto !important',\r\n }),\r\n scrollContainer: {\r\n overflow: 'hidden',\r\n },\r\n }),\r\n);\r\n\r\ntype Props = PropsFromParent;\r\n\r\nexport const VirtualizedListTable: FC = React.memo((props) => {\r\n const classes = useStyles(props);\r\n const divRef = useRef(null);\r\n const [height, setHeight] = useState(divRef.current?.clientHeight || 1000);\r\n const [width, setWidth] = useState(divRef.current?.clientWidth || 4000);\r\n const [hasScroll, setHasScroll] = useState(false);\r\n\r\n // handles scroll bar, to align tableheader and tablerow\r\n useEffect(() => {\r\n const handler = () => {\r\n if (divRef && divRef.current) {\r\n const h = divRef.current.clientHeight;\r\n const w = divRef.current.clientWidth;\r\n if (height !== h) {\r\n setHeight(h);\r\n }\r\n const showScroll = h / 64 < props.items.length;\r\n\r\n if (showScroll !== hasScroll) {\r\n setHasScroll(showScroll);\r\n }\r\n\r\n if (width !== w) {\r\n setWidth(w);\r\n }\r\n }\r\n };\r\n handler();\r\n window.addEventListener('resize', handler);\r\n return () => window.removeEventListener('resize', handler);\r\n // eslint-disable-next-line\r\n }, [props.items, hasScroll, height, width]);\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n );\r\n});\r\n","import {createStyles, makeStyles, Theme} from '@material-ui/core';\r\nimport {ClassNameMap} from '@material-ui/styles';\r\nimport React, {useCallback} from 'react';\r\nimport {ListRowProps} from 'react-virtualized';\r\nimport {localized} from '../../../i18n/i18n';\r\nimport {formatToLocalDateAndLeadingZeros} from '../../../utilities/platform-helpers/date-helpers';\r\nimport {ListTableItem} from '../../../view/components/default-components/list-table/list-table-item';\r\nimport {VirtualizedListTable} from '../../../view/components/default-components/virtual-list-table/virtual-list-table';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n rowEven: {backgroundColor: '#e4e4e4', minWidth: (props: PropsFromParent) => props.minWidth},\r\n rowOdd: {minWidth: (props: PropsFromParent) => props.minWidth},\r\n \r\n }),\r\n);\r\n\r\ninterface PropsFromParent {\r\n items: any[];\r\n keysToRender: string[];\r\n columnHeaders: string[];\r\n columnSizes: number[];\r\n maxHeight: number;\r\n minWidth: number;\r\n textAlign?: 'center';\r\n}\r\n\r\nexport const ScanEnergyTable = React.memo((props: PropsFromParent) => {\r\n const classes = useStyles(props);\r\n const renderRow = useCallback(\r\n () => rowRenderer(props.items ? props.items : [], props.keysToRender, classes, props.columnSizes, props),\r\n [classes, props],\r\n );\r\n\r\n return (\r\n <>\r\n {props.items && (\r\n \r\n )}\r\n \r\n );\r\n});\r\n\r\nfunction rowRenderer(\r\n data: T[],\r\n keys: string[],\r\n classes: ClassNameMap<'rowEven' | 'rowOdd'>,\r\n columnSizes: number[],\r\n propsFromParent: PropsFromParent,\r\n) {\r\n return (props: ListRowProps) => (\r\n
\r\n {generateData(data, props, keys as (keyof T)[], columnSizes, propsFromParent)}\r\n
\r\n );\r\n}\r\n\r\nfunction generateData(\r\n data: T[],\r\n props: ListRowProps,\r\n keys: (keyof T)[],\r\n columnSizes: number[],\r\n propsFromParent: PropsFromParent,\r\n) {\r\n return (\r\n (data, props))}\r\n />\r\n );\r\n}\r\nfunction generateListItems(\r\n data: T[],\r\n props: ListRowProps,\r\n): (value: keyof T, index: number, array: (keyof T)[]) => string | T[keyof T] {\r\n return (dataKey) => {\r\n if (data[props.index][dataKey] === undefined || data[props.index][dataKey] === null) {\r\n return '';\r\n }\r\n\r\n return data[props.index][dataKey] instanceof Date\r\n ? formatToLocalDateAndLeadingZeros((data[props.index][dataKey] as unknown) as Date)\r\n : data[props.index][dataKey] instanceof Boolean\r\n ? data[props.index][dataKey]\r\n ? localized('Yes')\r\n : localized('No')\r\n : data[props.index][dataKey] &&\r\n !isNaN(data[props.index][dataKey] as any)\r\n ? ((data[props.index][dataKey] as unknown) as number).toLocaleString(undefined, {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2,\r\n })\r\n : data[props.index][dataKey];\r\n };\r\n}\r\n","import React, {FC, useEffect, useState} from 'react';\r\nimport {useSelector} from 'react-redux';\r\nimport {DebtorPostingDto, DebtorPostingType, IDebtorPostingDto} from '../../../api/api';\r\nimport {localized} from '../../../i18n/i18n';\r\nimport {DebtorPostingFilter} from '../../../state/features/invoice/types';\r\nimport {AppState} from '../../../state/store';\r\nimport {ScanEnergyTable} from '../table/table';\r\n\r\nconst invoiceTableColumnSizes = () => [10, 18, 10, 10, 10, 10];\r\n\r\n// Invoices and Currency commented out until Scanenergi finds out what to do with the scroll bar.\r\nconst generateColumnHeaders = () => [\r\n localized('Date'),\r\n //localized('Invoices'),\r\n localized('Description'),\r\n localized('Maturity'),\r\n //localized('Currency'),\r\n localized('Debit'),\r\n localized('Credit'),\r\n localized('Balance'),\r\n];\r\n\r\nconst keysToRender = [\r\n 'date',\r\n //'invoiceNumber',\r\n 'description',\r\n 'dueDate',\r\n //'currency',\r\n 'debet',\r\n 'credit',\r\n 'balance',\r\n] as (keyof DebtorPostingDto)[];\r\n\r\ninterface PropsFromParent {\r\n minWidth: number;\r\n}\r\n\r\nexport const InvoiceTable: FC = React.memo(({minWidth}) => {\r\n const {debtorPostings, currentFilter} = useSelector((state: AppState) => state.debtorPostingReducer);\r\n const [columnSizes] = useState(invoiceTableColumnSizes());\r\n const [columnHeaders] = useState(generateColumnHeaders());\r\n const [debtorPostingsToUse, setDebtorPostingsToUse] = useState([]);\r\n\r\n useEffect(() => {\r\n const filteredDebtorPostings = debtorPostings && debtorPostings.filter(debtorPostingsFilter(currentFilter));\r\n setDebtorPostingsToUse(filteredDebtorPostings!);\r\n \r\n // eslint-disable-next-line\r\n }, [debtorPostings, currentFilter, setDebtorPostingsToUse]);\r\n\r\n return (\r\n <>\r\n {debtorPostingsToUse && (\r\n \r\n )}\r\n \r\n );\r\n});\r\n\r\nconst debtorPostingsFilter = (debtorPostingsFilter: DebtorPostingFilter) => (debtorPosting: IDebtorPostingDto) => {\r\n let useDebtorPosting =\r\n debtorPosting.debtorPostingType === DebtorPostingType.Invoice ||\r\n DebtorPostingType.Credit ||\r\n DebtorPostingType.Other;\r\n if (\r\n debtorPostingsFilter.DebtorPostingType !== undefined &&\r\n debtorPostingsFilter.DebtorPostingType !== debtorPosting.debtorPostingType\r\n ) {\r\n return false;\r\n }\r\n if (debtorPostingsFilter.InvoiceNumber) {\r\n const docNameLowerCase = debtorPosting.invoiceNumber?.toLowerCase();\r\n const invoiceNameLowerCase = debtorPostingsFilter.InvoiceNumber.toLowerCase();\r\n if (!docNameLowerCase?.includes(invoiceNameLowerCase)) {\r\n //Since we dont know what facturaNumber referers to, but need to be added\r\n return false;\r\n }\r\n }\r\n if (debtorPostingsFilter.DateTo! < debtorPosting.date || debtorPosting.date < debtorPostingsFilter.DateFrom!) {\r\n return false;\r\n }\r\n return useDebtorPosting;\r\n};\r\n","import {Box, createStyles, makeStyles, Theme} from '@material-ui/core';\r\nimport React, {useEffect, useRef, useState} from 'react';\r\nimport {useSelector} from 'react-redux';\r\nimport CreditCard from '../../../assets/icons/credit_card.svg';\r\nimport {localized} from '../../../i18n/i18n';\r\nimport {AppState} from '../../../state/store';\r\nimport {cardHeadline, secondaryTextColor} from '../../../styles/color-constants';\r\nimport {GridWithCustomBreakpoints} from '../../../styles/custom-grid-breakpoints';\r\nimport {h1, h4} from '../../../styles/font-size-constants';\r\nimport {BasicCard} from '../../../view/components/default-components/basic-card/basic-card';\r\nimport {TitleAndSubCard} from '../../../view/components/default-components/title-and-sub-card';\r\nimport {InvoiceTable} from './invoice-table';\r\n\r\nexport const useEconomyStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n documentIcon: {\r\n width: '21px',\r\n height: '26px',\r\n },\r\n documentIconContainer: {\r\n height: '26px',\r\n paddingLeft: '5px',\r\n },\r\n alignSelfCenter: {\r\n alignSelf: 'center',\r\n },\r\n alignTextCenter: {\r\n textAlign: 'center',\r\n },\r\n alignTextBoldTextCenter: {\r\n textAlign: 'center',\r\n fontWeight: 800,\r\n fontSize: 20,\r\n },\r\n paddingLeftFive: {},\r\n documentContainer: {\r\n backgroundColor: '#fff',\r\n marginTop: '16px',\r\n boxShadow: 'rgb(131 141 155 / 20%) 3px 3px 10px',\r\n borderRadius: 10,\r\n marginLeft: '16px',\r\n },\r\n amountText: {\r\n marginRight: '10px',\r\n lineHeight: '50px',\r\n fontSize: h1,\r\n\r\n textAlign: 'left',\r\n fontWeight: 800,\r\n\r\n color: secondaryTextColor,\r\n [theme.breakpoints.up('md')]: {\r\n fontSize: 30,\r\n },\r\n [theme.breakpoints.down('sm')]: {\r\n fontSize: 22,\r\n },\r\n },\r\n title: {\r\n lineHeight: '25px',\r\n fontSize: h4,\r\n color: cardHeadline,\r\n fontWeight: 'bold',\r\n textAlign: 'left',\r\n },\r\n subText: {\r\n lineHeight: '25px',\r\n marginLeft: '5px',\r\n color: cardHeadline,\r\n textAlign: 'left',\r\n },\r\n overflowY: {\r\n overflowY: 'auto',\r\n },\r\n boxStyle: {\r\n maxWidth: 'calc(100vw - 64px)',\r\n [theme.breakpoints.up('md')]: {\r\n maxWidth: 'calc(100vw - 300px - 64px - 64px - 16px - 16px)',\r\n },\r\n },\r\n spaceBetweenTitleAndData: {\r\n marginBottom: 20,\r\n },\r\n accumulatedCardHeader: {\r\n position: 'sticky',\r\n left: 0,\r\n },\r\n iconContainer: {\r\n marginRight: 10,\r\n },\r\n }),\r\n);\r\n\r\nexport const InvoiceTableOverview = React.memo(() => {\r\n const classes = useEconomyStyles();\r\n const divRef = useRef(null);\r\n const [width, setWidth] = useState(divRef.current?.clientWidth || 650);\r\n const {saldo} = useSelector((state: AppState) => state.debtorPostingReducer);\r\n\r\n // handles scroll bar, to align tableheader and tablerow\r\n useEffect(() => {\r\n const handler = () => {\r\n if (divRef && divRef.current) {\r\n const w = divRef.current.clientWidth;\r\n\r\n // Set the minWidth, according to element width - 42px equals icon width with margin\r\n if (w >= 1000 && width !== w) {\r\n setWidth(w - 42);\r\n }\r\n }\r\n };\r\n\r\n handler();\r\n window.addEventListener('resize', handler);\r\n return () => window.removeEventListener('resize', handler);\r\n // eslint-disable-next-line\r\n }, [width, divRef]);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \"firm-icon\"\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {saldo &&\r\n saldo.toLocaleString(undefined, {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2,\r\n }) + ' kr'}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n});\r\n","import {Box, createStyles, Grid, makeStyles, Theme, Typography} from '@material-ui/core';\r\nimport clsx from 'clsx';\r\nimport React, {useEffect} from 'react';\r\nimport {useDispatch, useSelector} from 'react-redux';\r\nimport {useLayoutStyles} from '../../../app-routes';\r\nimport DateIcon from '../../../assets/icons/date_icon.svg';\r\nimport {localized} from '../../../i18n/i18n';\r\nimport {getCustomerServiceInfo} from '../../../state/features/contact/operation';\r\nimport {AppState} from '../../../state/store';\r\nimport {secondaryTextColor} from '../../../styles/color-constants';\r\nimport {h1} from '../../../styles/font-size-constants';\r\nimport {formatToLocalDateAndLeadingZeros} from '../../../utilities/platform-helpers/date-helpers';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n documentIcon: {\r\n [theme.breakpoints.up('md')]: {\r\n width: '42px',\r\n height: '52px',\r\n },\r\n [theme.breakpoints.down('sm')]: {\r\n width: '30px',\r\n height: '40px',\r\n },\r\n },\r\n documentIconContainer: {\r\n height: '52px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n flexDirection: 'row',\r\n },\r\n alignSelfCenter: {\r\n alignSelf: 'center',\r\n },\r\n iconBox: {\r\n alignSelf: 'center',\r\n maxWidth: 50,\r\n },\r\n boldText: {\r\n paddingLeft: '5px',\r\n\r\n fontWeight: 800,\r\n [theme.breakpoints.up('md')]: {\r\n fontSize: 18,\r\n },\r\n [theme.breakpoints.down('sm')]: {\r\n fontSize: 14,\r\n },\r\n },\r\n MinHeight77: {minHeight: 77},\r\n Date: {\r\n marginRight: 20,\r\n textAlign: 'right',\r\n fontWeight: 800,\r\n fontSize: h1,\r\n color: secondaryTextColor,\r\n [theme.breakpoints.up('md')]: {\r\n fontSize: 30,\r\n },\r\n [theme.breakpoints.down('sm')]: {\r\n fontSize: 21,\r\n },\r\n },\r\n paddingLeftFive: {},\r\n documentContainer: {\r\n backgroundColor: '#fff',\r\n\r\n marginTop: '16px',\r\n boxShadow: 'rgb(131 141 155 / 20%) 3px 3px 10px',\r\n borderRadius: 10,\r\n\r\n paddingLeft: 20,\r\n\r\n [theme.breakpoints.up('md')]: {\r\n maxWidth: '700px',\r\n marginLeft: '16px',\r\n marginBottom: '16px',\r\n },\r\n [theme.breakpoints.down('sm')]: {\r\n fontSize: 14,\r\n marginBottom: '16px',\r\n },\r\n },\r\n gridContainer: {overflow: 'hidden'},\r\n }),\r\n);\r\n\r\nexport const NextInvoiceCard = React.memo(() => {\r\n const classes = useStyles();\r\n const dispatch = useDispatch();\r\n const layoutClasses = useLayoutStyles();\r\n const {customerServiceInfo} = useSelector((store: AppState) => store.contactsReducer);\r\n useEffect(() => {\r\n dispatch(getCustomerServiceInfo());\r\n }, [dispatch]);\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n
\r\n {'Document-icon-black'}\r\n \r\n {localized('NextInvoiceDefaultText')}\r\n \r\n \r\n {localized('NextInvoiceTextShort')}\r\n \r\n
\r\n \r\n {customerServiceInfo && formatToLocalDateAndLeadingZeros(customerServiceInfo.nextInvoice)}\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n});\r\n","import React, {useEffect, useState} from 'react';\r\nimport {useSelector} from 'react-redux';\r\nimport {DocumentType, IDocumentDto} from '../../../api/api';\r\nimport {localized} from '../../../i18n/i18n';\r\nimport {AppState} from '../../../state/store';\r\nimport {GridWithCustomBreakpoints} from '../../../styles/custom-grid-breakpoints';\r\nimport {DocumentCard} from '../../components/document/document-card';\r\nimport {FilterProvider} from '../../components/filterprovider';\r\n\r\nexport const AnnualStatementDocumentCard = React.memo(() => {\r\n const [annualStatementDocs, setAnnualStatementDocs] = useState();\r\n const {pending, documentsSlice} = useSelector((store: AppState) => store.documentsReducer);\r\n const {currentFilter} = useSelector((state: AppState) => state.debtorPostingReducer);\r\n useEffect(() => {\r\n setAnnualStatementDocs(documentsSlice.filter((d) => d.documentType === DocumentType.AnnualStatement));\r\n }, [documentsSlice]);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n});\r\n","import {Box, Grid} from '@material-ui/core';\r\nimport React, {useEffect} from 'react';\r\nimport {useDispatch, useSelector} from 'react-redux';\r\nimport {localized} from '../../../i18n/i18n';\r\nimport {getCustomerServiceInfo} from '../../../state/features/contact/operation';\r\nimport {getDebtorPostingDocumentDetails, getDocumentDetails} from '../../../state/features/document/operation';\r\nimport {getDebtorPostings} from '../../../state/features/invoice/operation';\r\nimport {AppState} from '../../../state/store';\r\nimport {PageContentContainer} from '../../../view/components/default-components/page-container/page-content-container';\r\nimport {PageHeader} from '../../../view/components/default-components/page-header.tsx/page-header';\r\nimport {PageTitle} from '../../../view/components/default-components/page-title/page-title';\r\nimport {EconomyHeader} from '../../components/economy/economy-header';\r\nimport {EconomyHeaderHowTo} from '../../components/economy/economy-header-how-to';\r\nimport {FilterInvoices} from '../../components/economy/filter-invoices';\r\nimport {DebtorPostingDocumentCard} from '../../components/economy/invoice-document-card';\r\nimport {InvoiceTableOverview} from '../../components/economy/invoice-table-overview';\r\nimport {NextInvoiceCard} from '../../components/economy/next-invoice-card';\r\nimport {AnnualStatementDocumentCard} from '../../components/economy/annual-statement-document-card';\r\n\r\nexport const Economy = React.memo(() => {\r\n const dispatch = useDispatch();\r\n\r\n // Fetch page data\r\n const {organizationId} = useSelector((store: AppState) => store.organizationReducer);\r\n\r\n useEffect(() => {\r\n if (organizationId) {\r\n dispatch(getDebtorPostings(organizationId));\r\n dispatch(getDebtorPostingDocumentDetails(organizationId));\r\n dispatch(getDocumentDetails(organizationId));\r\n }\r\n\r\n dispatch(getCustomerServiceInfo());\r\n }, [dispatch, organizationId]);\r\n return (\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n});\r\n","import {useRouteMatch, Switch, Route} from 'react-router-dom';\r\nimport {Economy} from './economy';\r\nimport React, {FC} from 'react';\r\n\r\nexport const EconomyRoute: FC = React.memo(() => {\r\n let match = useRouteMatch();\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n});\r\n","import { createStyles, makeStyles, Theme } from '@material-ui/core';\r\nimport KeyboardArrowLeftIcon from '@material-ui/icons/KeyboardArrowLeft';\r\nimport KeyboardArrowRightIcon from '@material-ui/icons/KeyboardArrowRight';\r\nimport React, { FC, useEffect, useState } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { energyConsumptionSlice } from '../../../state/features/energy-consumption/energy-consumption-slice';\r\nimport { FixedPeriodCategory, SortingDays } from '../../../state/features/energy-consumption/types';\r\nimport { AppState } from '../../../state/store';\r\nimport { arrowColor, primaryTextColor } from '../../../styles/color-constants';\r\nimport { h6 } from '../../../styles/font-size-constants';\r\nimport {\r\n addOneDay,\r\n addOneMonth,\r\n addOneMonthToEndOfMonth,\r\n addOneQuarter,\r\n addOneQuarterToEndOfMonth,\r\n addOneWeek,\r\n subtractOneDay,\r\n subtractOneMonth,\r\n subtractOneMonthToEndOfMonth,\r\n subtractOneQuarter,\r\n subtractOneQuarterToEndOfMonth,\r\n subtractOneWeek,\r\n} from '../../../utilities/helpers/date-helpers';\r\nimport {BasicCard} from '../../../view/components/default-components/basic-card/basic-card';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n arrowFlexbox: {\r\n maxHeight: 40,\r\n display: 'flex',\r\n alignItems: 'center',\r\n marginLeft: 5,\r\n marginRight: 5,\r\n },\r\n typogrphy: {\r\n fontSize: h6,\r\n },\r\n arrowIcon: {\r\n opacity: 1,\r\n cursor: 'pointer',\r\n color: arrowColor,\r\n '&:hover': {\r\n color: primaryTextColor,\r\n },\r\n },\r\n arrowDiv: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n }),\r\n);\r\n\r\ninterface PropsFromParent {}\r\n\r\nexport const ConsumptionBackAndForthButtons: FC = React.memo(({children, ...props}) => {\r\n const classes = useStyles();\r\n const dispatch = useDispatch();\r\n const {currentFixedPeriodCategory, sortingDays} = useSelector((store: AppState) => store.energyConsumptionReducer);\r\n const [newSortingDays, setNewSortingDays] = useState(sortingDays);\r\n\r\n useEffect(() => {\r\n setNewSortingDays(sortingDays);\r\n }, [sortingDays, currentFixedPeriodCategory]);\r\n\r\n const handleBackPressed = () => {\r\n let newLocalSortingDays: SortingDays = {\r\n ...newSortingDays,\r\n };\r\n\r\n switch (currentFixedPeriodCategory) {\r\n case FixedPeriodCategory.Day:\r\n newLocalSortingDays.fromDate = subtractOneDay(newSortingDays.fromDate);\r\n newLocalSortingDays.toDate = subtractOneDay(newSortingDays.toDate);\r\n break;\r\n\r\n case FixedPeriodCategory.Week:\r\n newLocalSortingDays.fromDate = subtractOneWeek(newSortingDays.fromDate);\r\n newLocalSortingDays.toDate = subtractOneWeek(newSortingDays.toDate);\r\n break;\r\n\r\n case FixedPeriodCategory.Month:\r\n newLocalSortingDays.fromDate = subtractOneMonth(newSortingDays.fromDate);\r\n newLocalSortingDays.toDate = subtractOneMonthToEndOfMonth(newSortingDays.toDate);\r\n break;\r\n\r\n case FixedPeriodCategory.Quarter:\r\n newLocalSortingDays.fromDate = subtractOneQuarter(newSortingDays.fromDate);\r\n newLocalSortingDays.toDate = subtractOneQuarterToEndOfMonth(newSortingDays.toDate);\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n\r\n dispatch(energyConsumptionSlice.actions.setSortingDays(newLocalSortingDays));\r\n };\r\n\r\n const handleForthPressed = () => {\r\n let newLocalSortingDays: SortingDays = {\r\n ...newSortingDays,\r\n };\r\n\r\n switch (currentFixedPeriodCategory) {\r\n case FixedPeriodCategory.Day:\r\n newLocalSortingDays.fromDate = addOneDay(newSortingDays.fromDate);\r\n newLocalSortingDays.toDate = addOneDay(newSortingDays.toDate);\r\n break;\r\n\r\n case FixedPeriodCategory.Week:\r\n newLocalSortingDays.fromDate = addOneWeek(newSortingDays.fromDate);\r\n newLocalSortingDays.toDate = addOneWeek(newSortingDays.toDate);\r\n break;\r\n\r\n case FixedPeriodCategory.Month:\r\n newLocalSortingDays.fromDate = addOneMonth(newSortingDays.fromDate);\r\n newLocalSortingDays.toDate = addOneMonthToEndOfMonth(newSortingDays.toDate);\r\n break;\r\n\r\n case FixedPeriodCategory.Quarter:\r\n newLocalSortingDays.fromDate = addOneQuarter(newSortingDays.fromDate);\r\n newLocalSortingDays.toDate = addOneQuarterToEndOfMonth(newSortingDays.toDate);\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n\r\n dispatch(energyConsumptionSlice.actions.setSortingDays(newLocalSortingDays));\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n});\r\n","import React, {FC, useEffect, useState} from 'react';\r\nimport {useDispatch, useSelector} from 'react-redux';\r\nimport {DocumentType, IDocumentDto} from '../../../api/api';\r\nimport {localized} from '../../../i18n/i18n';\r\nimport {AppState} from '../../../state/store';\r\nimport {DocumentCard} from '../document/document-card';\r\nimport {FilterProvider} from '../filterprovider';\r\n\r\ninterface PropsFromParent {}\r\n\r\nexport const ConsumptionDocumentsReport: FC = React.memo(({children, ...props}) => {\r\n const dispatch = useDispatch();\r\n const [reportsDocs, setReportDocs] = useState();\r\n const {pending, documentsSlice} = useSelector((store: AppState) => store.documentsReducer);\r\n\r\n useEffect(() => {\r\n setReportDocs(documentsSlice.filter((d) => d.documentType === DocumentType.BasicReports));\r\n }, [documentsSlice, dispatch]);\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n});\r\n","import {createStyles, makeStyles, Theme, Typography} from '@material-ui/core';\r\nimport clsx from 'clsx';\r\nimport React, {FC} from 'react';\r\nimport {useDispatch, useSelector} from 'react-redux';\r\nimport {energyConsumptionSlice} from '../../../state/features/energy-consumption/energy-consumption-slice';\r\nimport {FixedPeriodCategory} from '../../../state/features/energy-consumption/types';\r\nimport {AppState} from '../../../state/store';\r\nimport {basicCardBgColor, primaryColor} from '../../../styles/color-constants';\r\nimport {h6} from '../../../styles/font-size-constants';\r\nimport {BasicCard} from '../../../view/components/default-components/basic-card/basic-card';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n sortFlexbox: {\r\n cursor: 'pointer',\r\n marginLeft: 5,\r\n marginRight: 5,\r\n minWidth:40,\r\n maxHeight: 40,\r\n display: 'flex',\r\n alignItems: 'center',\r\n '&:hover': {\r\n backgroundColor: '#3333',\r\n color: '#FFF',\r\n },\r\n },\r\n selected: {\r\n backgroundColor: primaryColor,\r\n color: basicCardBgColor,\r\n '&:hover': {\r\n backgroundColor: primaryColor,\r\n color: basicCardBgColor,\r\n },\r\n },\r\n typogrphy: {\r\n fontSize: h6,\r\n },\r\n }),\r\n);\r\n\r\ninterface PropsFromParent {\r\n periodCategory: FixedPeriodCategory;\r\n btnText: string;\r\n}\r\n\r\nexport const ConsumptionFixedDaysButton: FC = React.memo(({children, ...props}) => {\r\n const classes = useStyles();\r\n const dispatch = useDispatch();\r\n const {currentFixedPeriodCategory} = useSelector((store: AppState) => store.energyConsumptionReducer);\r\n const handleFixedDatePressed = () => {\r\n dispatch(energyConsumptionSlice.actions.setPeriodCategory(props.periodCategory));\r\n };\r\n\r\n return (\r\n \r\n {props.btnText}\r\n
\r\n );\r\n});\r\n","import {Box, CircularProgress, createStyles, Hidden, makeStyles, Theme} from '@material-ui/core';\r\nimport {Breakpoint} from '@material-ui/core/styles/createBreakpoints';\r\nimport {Chart} from 'chart.js';\r\nimport annotationPlugin from 'chartjs-plugin-annotation';\r\nimport React, {FC, useEffect, useMemo, useState} from 'react';\r\nimport {Bar} from 'react-chartjs-2';\r\nimport IsEqual from 'react-fast-compare';\r\nimport {useDispatch, useSelector} from 'react-redux';\r\nimport {IDailyConsumptionDto} from '../../../api/api';\r\nimport {localized} from '../../../i18n/i18n';\r\nimport {getOneYearPriorSortingDays} from '../../../state/features/energy-consumption/energy-consumption-helper';\r\nimport {energyConsumptionSlice} from '../../../state/features/energy-consumption/energy-consumption-slice';\r\nimport {SortingDays} from '../../../state/features/energy-consumption/types';\r\nimport {AppState} from '../../../state/store';\r\nimport {\r\n basicCardBoxShadow,\r\n primaryAverageChartColor,\r\n primaryAverageLabelColor,\r\n primaryChartColor,\r\n primaryTextColor,\r\n secondaryChartColor,\r\n whiteTextColor,\r\n} from '../../../styles/color-constants';\r\nimport {getDateByStringFormat, getOneYearPrior} from '../../../utilities/helpers/date-helpers';\r\nimport {\r\n countNumberOfDaysBetweenDates,\r\n formatToLocalDateAndLeadingZeros,\r\n} from '../../../utilities/platform-helpers/date-helpers';\r\nimport {BasicCard} from '../../../view/components/default-components/basic-card/basic-card';\r\nimport {TitleAndSubCard} from '../../../view/components/default-components/title-and-sub-card';\r\n\r\nChart.register(annotationPlugin);\r\n\r\ninterface DataPointAccumulated {\r\n date: Date;\r\n consumption: number;\r\n}\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n cardClass: {\r\n maxWidth: 'calc(100vw - 64px)',\r\n minHeight: '94%',\r\n overflow: 'hidden',\r\n },\r\n yAxisUnitText: {\r\n transform: 'rotate(-90deg)',\r\n },\r\n graphFlexbox: {\r\n display: 'flex',\r\n justifyContent: 'center',\r\n height: '100%',\r\n padding: '10px',\r\n width: '94%',\r\n },\r\n circularProgressBox: {\r\n minHeight: '100%',\r\n position: 'absolute',\r\n },\r\n graphContainer: {overflowX: 'auto'},\r\n }),\r\n);\r\nconst firstHidden = ['sm', 'md', 'lg', 'betweenlgandxl', 'xl'] as Breakpoint[];\r\nconst secondHidden = ['xs'] as Breakpoint[];\r\nconst marginLeftTen = {marginLeft: 10};\r\nconst marginZero = {margin: 0};\r\n\r\nexport const ConsumptionGraph: FC = React.memo(({children, ...props}) => {\r\n const classes = useStyles();\r\n const dispatch = useDispatch();\r\n const cardHeight = 430;\r\n const pending = useSelector((store: AppState) => store.energyConsumptionReducer.pending);\r\n const {\r\n consumption,\r\n consumptionOneYearPrior,\r\n sortingDays,\r\n selectedMeasuringPointIds,\r\n periodAverage,\r\n yearPriorSelected,\r\n } = useSelector((store: AppState) => store.energyConsumptionReducer);\r\n const [data, setData] = useState();\r\n\r\n const graphOptions = useMemo(\r\n () => ({\r\n animation: {\r\n duration: 0, // general animation time\r\n },\r\n responsive: true,\r\n maintainAspectRatio: false,\r\n scales: {\r\n x: {\r\n grid: {\r\n display: false,\r\n drawBorder: false,\r\n drawOnChartArea: false,\r\n drawTicks: false,\r\n },\r\n },\r\n y: {\r\n grid: {\r\n display: false,\r\n drawBorder: false,\r\n drawOnChartArea: false,\r\n drawTicks: false,\r\n },\r\n },\r\n },\r\n\r\n plugins: {\r\n legend: {\r\n display: true,\r\n },\r\n tooltip: {\r\n backgroundColor: whiteTextColor,\r\n titleColor: primaryTextColor,\r\n bodyColor: primaryTextColor,\r\n position: 'average',\r\n displayColors: false,\r\n titleAlign: 'center',\r\n bodyAlign: 'center',\r\n bodyFontSize: 30,\r\n bodyFontStyle: 'bold',\r\n borderColor: basicCardBoxShadow,\r\n borderWidth: 0.5,\r\n callbacks: {\r\n label: function (context: any) {\r\n var label = context.dataset.label || '';\r\n if (context.parsed.y !== null) {\r\n label += ': ' + context.parsed.y + ' kWh';\r\n }\r\n return label;\r\n },\r\n },\r\n },\r\n annotation: {\r\n annotations: [\r\n {\r\n type: 'line',\r\n mode: 'horizontal',\r\n yMin: periodAverage,\r\n yMax: periodAverage,\r\n borderColor: primaryAverageChartColor,\r\n borderWidth: 3,\r\n label: {\r\n enabled: true,\r\n content: periodAverage.toFixed(2) + ' kWh',\r\n position: 'end',\r\n backgroundColor: primaryAverageLabelColor,\r\n },\r\n },\r\n ],\r\n },\r\n },\r\n }),\r\n [periodAverage],\r\n );\r\n\r\n useEffect(() => {\r\n const filteredDataPoints = generateFilteredDataPoints(consumption, selectedMeasuringPointIds, sortingDays);\r\n const filteredDataPointsOneYearPrior = generateFilteredDataPoints(\r\n consumptionOneYearPrior,\r\n selectedMeasuringPointIds,\r\n getOneYearPriorSortingDays(sortingDays),\r\n );\r\n\r\n let total = 0;\r\n filteredDataPoints.forEach((dataPoint) => (total += dataPoint.consumption));\r\n dispatch(energyConsumptionSlice.actions.setTotalConsumption(total));\r\n const dataToSet = generateDataFromFilteredDataPoints(\r\n filteredDataPoints,\r\n filteredDataPointsOneYearPrior,\r\n sortingDays,\r\n yearPriorSelected,\r\n );\r\n\r\n if (!IsEqual(data, dataToSet)) {\r\n setData(dataToSet);\r\n }\r\n }, [dispatch, consumption, sortingDays, selectedMeasuringPointIds, yearPriorSelected, consumptionOneYearPrior, data]);\r\n\r\n return (\r\n \r\n \r\n {pending ? (\r\n \r\n \r\n \r\n ) : (\r\n
\r\n \r\n

kWh

\r\n
\r\n \r\n \r\n \r\n

kWh

\r\n
\r\n
\r\n {data && }\r\n
\r\n \r\n

{localized('Date')}

\r\n
\r\n {children}\r\n
\r\n )}\r\n
\r\n );\r\n});\r\n\r\ninterface GraphData {\r\n type: string;\r\n labels: string[];\r\n datasets: {data: string[]; backgroundColor: string}[];\r\n}\r\n\r\nconst generateFilteredDataPoints = (\r\n consumption: IDailyConsumptionDto[],\r\n selectedMeasuringPointIds: string[],\r\n sortingDays: SortingDays,\r\n) => {\r\n let chosenDataPoints = consumption.filter((item) => {\r\n return selectedMeasuringPointIds.includes(item.connectionId!) || item.connectionId === null;\r\n });\r\n\r\n let accumulatedDataPoints: DataPointAccumulated[] = [];\r\n chosenDataPoints.forEach(function (a) {\r\n if (!accumulatedDataPoints[a.date!.valueOf()]) {\r\n accumulatedDataPoints[a.date!.valueOf()] = {date: a.date!, consumption: 0};\r\n accumulatedDataPoints.push(accumulatedDataPoints[a.date!.valueOf()]);\r\n }\r\n accumulatedDataPoints[a.date!.valueOf()].consumption += a.consumptionValue!;\r\n }, Object.create(null));\r\n\r\n let filteredDataPoints: DataPointAccumulated[] = [];\r\n\r\n if (countNumberOfDaysBetweenDates(sortingDays.fromDate, sortingDays.toDate) === 1) {\r\n filteredDataPoints = accumulatedDataPoints!.sort((a, b) => a.date?.valueOf()! - b.date?.valueOf()!);\r\n } else {\r\n filteredDataPoints = accumulatedDataPoints!\r\n .slice()\r\n .filter(\r\n (dataPoint) =>\r\n dataPoint.date.setHours(0, 0, 0, 0)! >= sortingDays.fromDate?.setHours(0, 0, 0, 0)! &&\r\n dataPoint.date.setHours(0, 0, 0, 0)! <= sortingDays.toDate?.setHours(0, 0, 0, 0)!,\r\n )\r\n .sort((a, b) => a.date?.valueOf()! - b.date?.valueOf()!);\r\n }\r\n\r\n return filteredDataPoints;\r\n};\r\n\r\nconst generateDataFromFilteredDataPoints = (\r\n filteredDataPoints: DataPointAccumulated[],\r\n filteredDataPointsOneYearPrior: DataPointAccumulated[],\r\n sortingDays: SortingDays,\r\n yearPriorSelected: boolean,\r\n) => {\r\n let filteredConsumptionData: string[] = [];\r\n let filteredConsumptionDataOneYearPrior: string[] = [];\r\n let filteredDatesData: string[] = [];\r\n let labelForOneDaySelected: Date = new Date();\r\n let useLabelForOneDay: boolean = false;\r\n\r\n if (countNumberOfDaysBetweenDates(sortingDays.fromDate, sortingDays.toDate) === 1) {\r\n filteredDataPoints.forEach((item) => {\r\n filteredConsumptionData.push(item.consumption.toFixed(1));\r\n filteredDatesData.push(item.date.toLocaleTimeString([], {hour: '2-digit', minute: '2-digit'}));\r\n });\r\n filteredDataPointsOneYearPrior.forEach((item) => {\r\n filteredConsumptionDataOneYearPrior.push(item.consumption.toFixed(1));\r\n });\r\n\r\n labelForOneDaySelected = sortingDays.fromDate;\r\n useLabelForOneDay = true;\r\n } else {\r\n filteredDataPoints.forEach((item) => {\r\n filteredConsumptionData.push(item.consumption.toFixed(1));\r\n filteredDatesData.push(formatToLocalDateAndLeadingZeros(item.date));\r\n });\r\n filteredDataPointsOneYearPrior.forEach((item) => {\r\n filteredConsumptionDataOneYearPrior.push(item.consumption.toFixed(1));\r\n });\r\n }\r\n\r\n const dataToSet = generateDataForGraph(\r\n filteredDatesData,\r\n filteredConsumptionData,\r\n filteredConsumptionDataOneYearPrior,\r\n yearPriorSelected,\r\n labelForOneDaySelected,\r\n useLabelForOneDay,\r\n );\r\n\r\n return dataToSet;\r\n};\r\n\r\nconst generateDataForGraph = (\r\n filteredDates: string[],\r\n filteredConsumption: string[],\r\n filteredConsumptionOneYearPrior: string[],\r\n yearPriorSelected: boolean,\r\n dateLabel: Date,\r\n useLabelForOneDay: boolean,\r\n):\r\n | {type: string; labels: string[]; datasets: any[]}\r\n | (() => {type: string; labels: string[]; datasets: {data: string[]; backgroundColor: string}[]}) => {\r\n // Cant only use filteredDates because when day is selected it contains the hours.\r\n if (!useLabelForOneDay) {\r\n dateLabel = getDateByStringFormat(filteredDates[0]);\r\n }\r\n\r\n if (yearPriorSelected) {\r\n return {\r\n type: 'bar',\r\n labels: filteredDates,\r\n datasets: [\r\n {\r\n label: dateLabel.getFullYear() ? dateLabel.getFullYear() : '',\r\n data: filteredConsumption,\r\n backgroundColor: primaryChartColor,\r\n },\r\n {\r\n label: dateLabel.getFullYear() ? getOneYearPrior(dateLabel).getFullYear() : '',\r\n data: filteredConsumptionOneYearPrior,\r\n backgroundColor: secondaryChartColor,\r\n },\r\n ],\r\n };\r\n } else {\r\n return {\r\n type: 'bar',\r\n labels: filteredDates,\r\n datasets: [\r\n {\r\n label: dateLabel.getFullYear() ? dateLabel.getFullYear() : '',\r\n data: filteredConsumption,\r\n backgroundColor: primaryChartColor,\r\n },\r\n ],\r\n };\r\n }\r\n};\r\n","import {Tooltip, TooltipProps, withStyles} from '@material-ui/core';\r\nimport React, {FC} from 'react';\r\n\r\nconst TooltipSetup = withStyles((theme) => ({\r\n tooltip: {\r\n backgroundColor: theme.palette.common.white,\r\n boxShadow: theme.shadows[2],\r\n },\r\n arrow: {\r\n '&::before': {\r\n backgroundColor: theme.palette.common.white,\r\n boxShadow: theme.shadows[2],\r\n },\r\n },\r\n}))(Tooltip);\r\n\r\ninterface PropsFromParent {}\r\n\r\nexport const BasicTooltip: FC = React.memo(({children, ...props}) => {\r\n return (\r\n \r\n
{children}
\r\n
\r\n );\r\n});\r\n","import {Box, createStyles, makeStyles, Theme, Typography} from '@material-ui/core';\r\nimport clsx from 'clsx';\r\nimport React, {FC, useCallback, useEffect, useMemo, useRef} from 'react';\r\nimport {useDispatch, useSelector} from 'react-redux';\r\nimport {localized} from '../../../i18n/i18n';\r\nimport {energyConsumptionSlice} from '../../../state/features/energy-consumption/energy-consumption-slice';\r\nimport {AppState} from '../../../state/store';\r\nimport {\r\n basicCardBgColor,\r\n primaryColor,\r\n tooltipPrimaryTextColor,\r\n tooltipSecondaryTextColor,\r\n} from '../../../styles/color-constants';\r\nimport {h6} from '../../../styles/font-size-constants';\r\nimport {BasicCard} from '../../../view/components/default-components/basic-card/basic-card';\r\nimport {BasicTooltip} from './basic-tooltip';\r\nimport {\r\n getConnectionIdsInPeriod,\r\n getOneYearPriorSortingDays,\r\n isUnitContractInPeriod,\r\n} from '../../../state/features/energy-consumption/energy-consumption-helper';\r\nimport moment from 'moment';\r\nimport {DateFormat} from '../../../utilities/constants';\r\nimport {IUnitDto} from '../../../api/api';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n sortFlexbox: {\r\n cursor: 'pointer',\r\n margin: 6,\r\n padding: 0,\r\n display: 'flex',\r\n textAlign: 'center',\r\n alignSelf: 'center',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n '&:hover': {\r\n backgroundColor: '#3333',\r\n color: '#FFF',\r\n },\r\n },\r\n disabled: {\r\n backgroundColor: '#3333',\r\n color: '#FFF',\r\n },\r\n selected: {\r\n cursor: 'pointer',\r\n backgroundColor: primaryColor,\r\n color: basicCardBgColor,\r\n '&:hover': {\r\n backgroundColor: primaryColor,\r\n color: basicCardBgColor,\r\n },\r\n },\r\n toolTipValueText: {\r\n fontWeight: 'bold',\r\n color: tooltipPrimaryTextColor,\r\n },\r\n toolTipDateText: {\r\n fontSize: h6,\r\n color: tooltipSecondaryTextColor,\r\n },\r\n toolTipBox: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n justifyContent: 'flex-start',\r\n },\r\n }),\r\n);\r\n\r\ninterface PropsFromParent {\r\n numberOfUnitsCallback: (number: number) => void;\r\n}\r\n\r\nexport const ConsumptionUnits: FC = React.memo(({children, ...props}) => {\r\n const classes = useStyles();\r\n const dispatch = useDispatch();\r\n const firstUpdate = useRef(true);\r\n const {\r\n selectedMeasuringPointIds,\r\n units,\r\n sortingDays,\r\n idsInPeriod,\r\n idsInPeriodOneYearPrior,\r\n yearPriorSelected,\r\n } = useSelector((store: AppState) => store.energyConsumptionReducer);\r\n\r\n const handleCheckSinglePressed = useCallback(\r\n (newId: string) => {\r\n if (selectedMeasuringPointIds.includes(newId)) {\r\n let newIds = selectedMeasuringPointIds.filter((item) => {\r\n return item !== newId;\r\n });\r\n dispatch(energyConsumptionSlice.actions.setSelectedMeasuringPointIds(newIds));\r\n } else {\r\n let newIds: string[] = [...selectedMeasuringPointIds, newId];\r\n dispatch(energyConsumptionSlice.actions.setSelectedMeasuringPointIds(newIds));\r\n }\r\n },\r\n [dispatch, selectedMeasuringPointIds],\r\n );\r\n\r\n const unitsToShow = useMemo(() => {\r\n return units\r\n .filter((unit, i, unitList) => unitList.findIndex((t) => t.connectionid === unit.connectionid) === i)\r\n .sort((a, b) => (a.street! < b.street! ? -1 : a.houseNum! > b.houseNum! ? 1 : 0));\r\n }, [units]);\r\n\r\n const combinedUnitIds = useMemo(() => {\r\n return [...idsInPeriod, idsInPeriodOneYearPrior];\r\n }, [idsInPeriod, idsInPeriodOneYearPrior]);\r\n\r\n const isUnitActive = useCallback(\r\n (unit: IUnitDto) => {\r\n if (!combinedUnitIds.includes(unit.connectionid!)) {\r\n return false;\r\n }\r\n\r\n if (yearPriorSelected) {\r\n const oneYearPriorSortingDays = getOneYearPriorSortingDays(sortingDays);\r\n return isUnitContractInPeriod(unit, sortingDays) || isUnitContractInPeriod(unit, oneYearPriorSortingDays);\r\n }\r\n\r\n return true;\r\n },\r\n [combinedUnitIds, yearPriorSelected, sortingDays],\r\n );\r\n\r\n // First time select all units\r\n useEffect(() => {\r\n if (firstUpdate.current) {\r\n firstUpdate.current = false;\r\n\r\n dispatch(\r\n energyConsumptionSlice.actions.setSelectedMeasuringPointIds(getConnectionIdsInPeriod(units, sortingDays)),\r\n );\r\n dispatch(\r\n energyConsumptionSlice.actions.setMeasuringPointIdsInPeriod(getConnectionIdsInPeriod(units, sortingDays)),\r\n );\r\n }\r\n }, [dispatch, units, sortingDays]);\r\n\r\n useEffect(() => {\r\n props.numberOfUnitsCallback(getConnectionIdsInPeriod(unitsToShow, sortingDays).length);\r\n }, [unitsToShow, props, sortingDays]);\r\n\r\n return (\r\n \r\n {unitsToShow &&\r\n unitsToShow.map((unit, index) => {\r\n return (\r\n \r\n \r\n {isUnitActive(unit) ? unit.eanId : localized('YourContractDoseNotCoverSelectedPeriod')}\r\n \r\n \r\n {isUnitActive(unit)\r\n ? localized('EanNumber')\r\n : moment(unit.contractStartDate).format(DateFormat) +\r\n ' - ' +\r\n moment(unit.contractEndDate).format(DateFormat)}\r\n \r\n \r\n }>\r\n isUnitActive(unit) && handleCheckSinglePressed(unit.connectionid!)}>\r\n {unit.street + ' ' + unit.houseNum}\r\n \r\n \r\n );\r\n })}\r\n \r\n );\r\n});\r\n","import {Box, createStyles, Divider, makeStyles, Theme, Typography} from '@material-ui/core';\r\nimport clsx from 'clsx';\r\nimport React, {FC, memo, useCallback, useState} from 'react';\r\nimport {useDispatch, useSelector} from 'react-redux';\r\nimport {localized} from '../../../i18n/i18n';\r\nimport {getConnectionIdsInPeriod} from '../../../state/features/energy-consumption/energy-consumption-helper';\r\nimport {energyConsumptionSlice} from '../../../state/features/energy-consumption/energy-consumption-slice';\r\nimport {AppState} from '../../../state/store';\r\nimport {basicCardBgColor, primaryColor} from '../../../styles/color-constants';\r\nimport {h6} from '../../../styles/font-size-constants';\r\nimport {BasicCard} from '../../../view/components/default-components/basic-card/basic-card';\r\nimport {TitleAndSubCard} from '../../../view/components/default-components/title-and-sub-card';\r\nimport {ConsumptionUnits} from './consumption-measuring-units';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n sortFlexbox: {\r\n cursor: 'pointer',\r\n margin: 6,\r\n padding: 0,\r\n display: 'flex',\r\n textAlign: 'center',\r\n alignSelf: 'center',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n '&:hover': {\r\n backgroundColor: '#3333',\r\n color: '#FFF',\r\n },\r\n },\r\n selected: {\r\n cursor: 'pointer',\r\n backgroundColor: primaryColor,\r\n color: basicCardBgColor,\r\n '&:hover': {\r\n backgroundColor: primaryColor,\r\n color: basicCardBgColor,\r\n },\r\n },\r\n measuringPointButtons: {\r\n fontSize: h6,\r\n },\r\n checkAll: {\r\n padding: 10,\r\n minWidth: 85,\r\n },\r\n divider: {\r\n margin: '10px',\r\n },\r\n chooseAllBox: {\r\n cursor: 'pointer',\r\n display: 'flex',\r\n flexDirection: 'row',\r\n justifyContent: 'space-around',\r\n alignItems: 'center',\r\n margin: '10px 0px',\r\n },\r\n }),\r\n);\r\n\r\nexport const ConsumptionUnitsCard: FC = memo(() => {\r\n const classes = useStyles();\r\n const dispatch = useDispatch();\r\n const [numberOfUnits, setNumberOfUnits] = useState(0);\r\n const {selectedMeasuringPointIds, units, sortingDays} = useSelector(\r\n (store: AppState) => store.energyConsumptionReducer,\r\n );\r\n\r\n const handleCheckAllPressed = () => {\r\n dispatch(energyConsumptionSlice.actions.setSelectedMeasuringPointIds(getConnectionIdsInPeriod(units, sortingDays)));\r\n };\r\n\r\n const handleUncheckAllPressed = () => {\r\n let empty: string[] = [];\r\n dispatch(energyConsumptionSlice.actions.setSelectedMeasuringPointIds(empty));\r\n };\r\n\r\n const setNumberOfUnitsCallback = useCallback((number: number) => setNumberOfUnits(number), []);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {localized('SelectAll')}\r\n \r\n \r\n {localized('DeselectAll')}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n});\r\n","import {createStyles, makeStyles, Theme, Typography} from '@material-ui/core';\r\nimport clsx from 'clsx';\r\nimport React, {FC, useCallback} from 'react';\r\nimport {useDispatch, useSelector} from 'react-redux';\r\nimport {energyConsumptionSlice} from '../../../state/features/energy-consumption/energy-consumption-slice';\r\nimport {AppState} from '../../../state/store';\r\nimport {basicCardBgColor, primaryColor} from '../../../styles/color-constants';\r\nimport {h6} from '../../../styles/font-size-constants';\r\nimport {BasicCard} from '../../../view/components/default-components/basic-card/basic-card';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n sortFlexbox: {\r\n cursor: 'pointer',\r\n marginLeft: 5,\r\n marginRight: 5,\r\n maxHeight: 40,\r\n display: 'flex',\r\n alignItems: 'center',\r\n '&:hover': {\r\n backgroundColor: '#3333',\r\n color: '#FFF',\r\n },\r\n },\r\n selected: {\r\n backgroundColor: primaryColor,\r\n color: basicCardBgColor,\r\n '&:hover': {\r\n backgroundColor: primaryColor,\r\n color: basicCardBgColor,\r\n },\r\n },\r\n typogrphy: {\r\n fontSize: h6,\r\n },\r\n }),\r\n);\r\n\r\ninterface PropsFromParent {\r\n btnText: string;\r\n}\r\n\r\nexport const ConsumptionPriorYearButton: FC = React.memo(({children, ...props}) => {\r\n const classes = useStyles();\r\n const dispatch = useDispatch();\r\n const {yearPriorSelected} = useSelector((store: AppState) => store.energyConsumptionReducer);\r\n\r\n const handlePriorYearToggled = useCallback(() => {\r\n dispatch(energyConsumptionSlice.actions.setYearPriorSelected(!yearPriorSelected));\r\n }, [dispatch, yearPriorSelected]);\r\n\r\n return (\r\n \r\n {props.btnText}\r\n \r\n );\r\n});\r\n","import {Box, createStyles, makeStyles, Theme, Typography} from '@material-ui/core';\r\nimport {FC, default as React} from 'react';\r\nimport {useSelector} from 'react-redux';\r\nimport PowerConsumptionIcon from '../../../assets/icons/power_consumption_01.png';\r\nimport {localized} from '../../../i18n/i18n';\r\nimport {AppState} from '../../../state/store';\r\nimport {secondaryTextColor} from '../../../styles/color-constants';\r\nimport {h1} from '../../../styles/font-size-constants';\r\nimport {BasicCard} from '../../../view/components/default-components/basic-card/basic-card';\r\n\r\nexport const ConsumptionTotalCard: FC = React.memo(() => {\r\n const classes = useStyles();\r\n const {totalConsumption} = useSelector((store: AppState) => store.energyConsumptionReducer);\r\n\r\n return (\r\n \r\n \r\n \r\n {localized('TotalElectricityConsumptionDuringPeriod')}\r\n \r\n \r\n \r\n {totalConsumption.toLocaleString(undefined, {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2,\r\n }) + ' kWh'}\r\n \r\n \r\n );\r\n});\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n summarizingCardIcons: {\r\n margin: '10px 20px 10px 10px',\r\n },\r\n highlightedText: {\r\n textAlign: 'center',\r\n fontWeight: 'bold',\r\n padding: '20px',\r\n fontSize: h1,\r\n color: secondaryTextColor,\r\n },\r\n }),\r\n);\r\n","import {Box, createStyles, Grid, Hidden, makeStyles, Theme, Typography} from '@material-ui/core';\r\nimport {Breakpoint} from '@material-ui/core/styles/createBreakpoints';\r\nimport GetAppIcon from '@material-ui/icons/GetApp';\r\nimport moment from 'moment';\r\nimport React, {useCallback, useEffect} from 'react';\r\nimport {useDispatch, useSelector} from 'react-redux';\r\nimport {Dispatch} from 'redux';\r\nimport {useLayoutStyles} from '../../../app-routes';\r\nimport {localized} from '../../../i18n/i18n';\r\nimport {getContractsDetails} from '../../../state/features/contract/operation';\r\nimport {getDocumentDetails} from '../../../state/features/document/operation';\r\nimport {energyConsumptionSlice} from '../../../state/features/energy-consumption/energy-consumption-slice';\r\nimport {\r\n getConsumption,\r\n getConsumptionByDate,\r\n getConsumptionByDateOneYearPrior,\r\n GetConsumptionExcelExport,\r\n getConsumptionOneYearPrior,\r\n getUnits,\r\n} from '../../../state/features/energy-consumption/operation';\r\nimport {FixedPeriodCategory, SortingDays} from '../../../state/features/energy-consumption/types';\r\nimport {getGreenOptimizationContractsStatus} from '../../../state/features/green-optimization/operation';\r\nimport {routes} from '../../../state/routes';\r\nimport {AppState} from '../../../state/store';\r\nimport {h5, h6} from '../../../styles/font-size-constants';\r\nimport {getOneYearPrior} from '../../../utilities/helpers/date-helpers';\r\nimport {countNumberOfDaysBetweenDates} from '../../../utilities/platform-helpers/date-helpers';\r\nimport {usePrevious} from '../../../utilities/use-previous-hook';\r\nimport {BasicCard} from '../../../view/components/default-components/basic-card/basic-card';\r\nimport {DateRangePicker} from '../../../view/components/default-components/date-range-picker/date-range-picker';\r\nimport {PageContentContainer} from '../../../view/components/default-components/page-container/page-content-container';\r\nimport {PageHeader} from '../../../view/components/default-components/page-header.tsx/page-header';\r\nimport {PageTitle} from '../../../view/components/default-components/page-title/page-title';\r\nimport {ResetFilterButton} from '../../components/economy/reset-filter-button';\r\nimport {ConsumptionBackAndForthButtons} from '../../components/energi-consumption/consumption-back-and-forth-buttons';\r\nimport {ConsumptionDocumentsReport} from '../../components/energi-consumption/consumption-documents-report';\r\nimport {ConsumptionFixedDaysButton} from '../../components/energi-consumption/consumption-fixed-days-button';\r\nimport {ConsumptionGraph} from '../../components/energi-consumption/consumption-graph';\r\nimport {ConsumptionUnitsCard} from '../../components/energi-consumption/consumption-measuring-units-card';\r\nimport {ConsumptionPriorYearButton} from '../../components/energi-consumption/consumption-prior-year-button';\r\nimport {ConsumptionTotalCard} from '../../components/energi-consumption/consumption-total-card';\r\nimport {primaryColor} from '../../../styles/color-constants';\r\nimport { getConnectionIdsInPeriod } from '../../../state/features/energy-consumption/energy-consumption-helper';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n subText: {\r\n fontSize: h5,\r\n margin: '0 0 0 16px',\r\n },\r\n functionalityGrid: {\r\n alignItems: 'flex-end',\r\n },\r\n datepickerGridItem: {\r\n flexGrow: 0,\r\n },\r\n datepickerBox: {\r\n display: 'flex',\r\n [theme.breakpoints.down('sm')]: {\r\n justifyContent: 'space-between',\r\n },\r\n [theme.breakpoints.down('xs')]: {\r\n justifyContent: 'flex-start',\r\n flexWrap: 'wrap',\r\n },\r\n alignItems: 'start',\r\n },\r\n downloadExcel: {\r\n cursor: 'pointer',\r\n maxHeight: 40,\r\n display: 'flex',\r\n alignItems: 'center',\r\n '&:hover': {\r\n backgroundColor: '#3333',\r\n color: '#FFF',\r\n },\r\n },\r\n downloadIcon: {\r\n marginLeft: 5,\r\n height: 18,\r\n },\r\n downloadTypo: {\r\n fontSize: h6,\r\n },\r\n mobileResetBox: {\r\n marginLeft: 10,\r\n alignSelf: 'center',\r\n },\r\n linkStyle: {\r\n color: primaryColor\r\n }\r\n }),\r\n);\r\n\r\nconst firstHidden = ['xs', 'sm', 'm', 'md', 'lg'] as Breakpoint[];\r\nconst secondHidden = ['m', 'betweenlgandxl'] as Breakpoint[];\r\nconst thirdHidden = ['xs', 'lg', 'betweenlgandxl', 'xl'] as Breakpoint[];\r\nconst fourthHidden = ['xs', 'sm', 'm', 'md', 'betweenlgandxl', 'xl'] as Breakpoint[];\r\nconst fifthHidden = ['sm', 'md', 'lg', 'betweenlgandxl', 'xl'] as Breakpoint[];\r\nconst sixthHidden = ['xs'] as Breakpoint[];\r\n\r\nfunction fetchOneYearPrior(sortingDays: SortingDays, dispatch: Dispatch, organizationId: number) {\r\n if (countNumberOfDaysBetweenDates(sortingDays.fromDate, sortingDays.toDate) === 1) {\r\n dispatch(\r\n getConsumptionByDateOneYearPrior({\r\n date: getOneYearPrior(sortingDays.fromDate),\r\n organizationId: organizationId,\r\n }),\r\n );\r\n } else {\r\n dispatch(\r\n getConsumptionOneYearPrior({\r\n fromDate: getOneYearPrior(sortingDays.fromDate),\r\n toDate: getOneYearPrior(sortingDays.toDate),\r\n organizationId: organizationId,\r\n }),\r\n );\r\n }\r\n}\r\n\r\nexport const EnergyConsumption = React.memo(() => {\r\n const classes = useStyles();\r\n const dispatch = useDispatch();\r\n const {sortingDays, consumption, selectedMeasuringPointIds, yearPriorSelected} = useSelector(\r\n (store: AppState) => store.energyConsumptionReducer,\r\n );\r\n const prevYearPriorSelected = usePrevious(yearPriorSelected);\r\n const layoutClasses = useLayoutStyles();\r\n const elOverviewLink = (\r\n \r\n eloverblik.dk\r\n \r\n );\r\n const elDeclarationLink = (\r\n \r\n her\r\n \r\n );\r\n const kontakteOs = (\r\n \r\n {localized('ContactUs')}\r\n \r\n );\r\n\r\n const {organizationId} = useSelector((store: AppState) => store.organizationReducer);\r\n const {units} = useSelector((store: AppState) => store.energyConsumptionReducer);\r\n\r\n // Fetch energy data when date changes\r\n useEffect(() => {\r\n if (organizationId) {\r\n if (sortingDays.toDate && sortingDays.fromDate && yearPriorSelected === prevYearPriorSelected) {\r\n if (countNumberOfDaysBetweenDates(sortingDays.fromDate, sortingDays.toDate) === 1) {\r\n dispatch(getConsumptionByDate({date: sortingDays.fromDate, organizationId: organizationId}));\r\n } else {\r\n dispatch(\r\n getConsumption({\r\n fromDate: sortingDays.fromDate,\r\n toDate: sortingDays.toDate,\r\n organizationId: organizationId,\r\n }),\r\n );\r\n }\r\n if (yearPriorSelected === true) {\r\n fetchOneYearPrior(sortingDays, dispatch, organizationId);\r\n }\r\n }\r\n }\r\n }, [dispatch, organizationId, sortingDays, yearPriorSelected, prevYearPriorSelected]);\r\n\r\n // Fetch energy data when yearPriorSelected changes\r\n useEffect(() => {\r\n if (organizationId && sortingDays.toDate && sortingDays.fromDate) {\r\n if (yearPriorSelected === true && yearPriorSelected !== prevYearPriorSelected) {\r\n fetchOneYearPrior(sortingDays, dispatch, organizationId);\r\n }\r\n }\r\n // eslint-disable-next-line\r\n }, [yearPriorSelected]);\r\n\r\n // Fetch contract data and units\r\n useEffect(() => {\r\n if (organizationId) {\r\n dispatch(getGreenOptimizationContractsStatus(organizationId));\r\n dispatch(getDocumentDetails(organizationId));\r\n dispatch(getContractsDetails(organizationId));\r\n dispatch(getUnits(organizationId));\r\n }\r\n }, [organizationId, dispatch]);\r\n\r\n const handleFromDateChanged = useCallback(\r\n (event: Date) => {\r\n let newLocalSortingDays: SortingDays = {\r\n ...sortingDays,\r\n fromDate: event,\r\n };\r\n\r\n dispatch(energyConsumptionSlice.actions.setSortingDays(newLocalSortingDays));\r\n },\r\n [sortingDays, dispatch],\r\n );\r\n\r\n const handleToDateChanged = useCallback(\r\n (event: Date) => {\r\n let newLocalSortingDays: SortingDays = {\r\n ...sortingDays,\r\n toDate: event,\r\n };\r\n\r\n dispatch(energyConsumptionSlice.actions.setSortingDays(newLocalSortingDays));\r\n },\r\n [sortingDays, dispatch],\r\n );\r\n\r\n const downloadExcel = useCallback(() => {\r\n if (consumption && consumption.length > 0) {\r\n let chosenDataPoints = consumption.filter((item) => {\r\n return selectedMeasuringPointIds.includes(item.connectionId!) || item.connectionId === null;\r\n });\r\n let chosenUnits = units.filter((item) => {\r\n return selectedMeasuringPointIds.includes(item.connectionid!) || item.connectionid === null;\r\n });\r\n\r\n if (countNumberOfDaysBetweenDates(sortingDays.fromDate, sortingDays.toDate) === 1) {\r\n GetConsumptionExcelExport(chosenDataPoints, chosenUnits, true);\r\n } else {\r\n GetConsumptionExcelExport(\r\n chosenDataPoints.filter((dp) => dp.date && dp.date >= sortingDays.fromDate && dp.date <= sortingDays.toDate),\r\n chosenUnits,\r\n false,\r\n );\r\n }\r\n }\r\n }, [consumption, sortingDays, units, selectedMeasuringPointIds]);\r\n\r\n const handleResetButtonPressed = useCallback(() => {\r\n let newLocalSortingDays: SortingDays = {\r\n fromDate: moment().startOf('month').toDate(),\r\n toDate: moment().endOf('month').toDate(),\r\n };\r\n\r\n dispatch(energyConsumptionSlice.actions.setSortingDays(newLocalSortingDays));\r\n dispatch(energyConsumptionSlice.actions.setPeriodCategory(FixedPeriodCategory.Month));\r\n dispatch(energyConsumptionSlice.actions.setYearPriorSelected(false));\r\n dispatch(energyConsumptionSlice.actions.setSelectedMeasuringPointIds(getConnectionIdsInPeriod(units, newLocalSortingDays)));\r\n }, [dispatch, units]);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n {localized('BelowYouWillFindADynamicConsumptionOverview')}\r\n \r\n \r\n \r\n \r\n {localized('IfYouNeedDataRegardingElectricHeatingOrProduction')}\r\n {kontakteOs}\r\n {' ' + localized('OrLookAt') + ' '}\r\n {elOverviewLink}\r\n {'.'}\r\n \r\n \r\n \r\n {localized('SeePowerDecleration') + ' '}\r\n {elDeclarationLink}\r\n {'.'}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {localized('DownloadExcel')}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n});\r\n","import {useRouteMatch, Switch, Route} from 'react-router-dom';\r\nimport {EnergyConsumption} from './energy-consumption';\r\nimport React, {FC} from 'react';\r\n\r\nexport const EnergyConsumptionRoute: FC = React.memo(() => {\r\n let match = useRouteMatch();\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n});\r\n","import {Box, Button, createStyles, makeStyles, Theme} from '@material-ui/core';\r\nimport CheckCircleTwoToneIcon from '@material-ui/icons/CheckCircleTwoTone';\r\nimport React, {FC} from 'react';\r\nimport {useSelector} from 'react-redux';\r\nimport {localized} from '../../../i18n/i18n';\r\nimport {chooseGreenOptimization} from '../../../state/features/green-optimization/operation';\r\nimport {AppState} from '../../../state/store';\r\nimport {arrowColor, checkmarkColor, secondaryColor} from '../../../styles/color-constants';\r\nimport {BasicCard} from '../../../view/components/default-components/basic-card/basic-card';\r\nimport {useButtonStyles} from '../dashboard/dashboard-files-card';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n cardActive: {\r\n minWidth: 250,\r\n minHeight: 570,\r\n boxShadow: (active: boolean) => (active ? 'inset 0px 0px 0px 4px ' + secondaryColor : ''),\r\n padding: 30,\r\n display: 'flex',\r\n flexGrow: 1,\r\n },\r\n iconActive: {\r\n opacity: 1,\r\n fontSize: 30,\r\n float: 'right',\r\n color: (active: boolean) => (active ? checkmarkColor : arrowColor),\r\n },\r\n flexbox: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n textAlign: 'center',\r\n minHeight: '100%',\r\n minWidth: '100%'\r\n },\r\n childrenBox: {\r\n minHeight: 330,\r\n },\r\n buttonBox: {\r\n display: 'flex',\r\n alignItems: 'flex-end',\r\n justifyContent: 'center',\r\n flexGrow: 1,\r\n marginBottom: 10,\r\n },\r\n activeButton: {\r\n textAlign: 'center',\r\n backgroundColor: secondaryColor,\r\n },\r\n greenLeaf: {\r\n float: 'left',\r\n height: 30,\r\n },\r\n }),\r\n);\r\n\r\ninterface PropsFromParent {\r\n active: boolean;\r\n greenOptimizationId: string;\r\n}\r\n\r\nexport const GreenElementCard: FC = React.memo(({active, greenOptimizationId, children}) => {\r\n const classes = useStyles(active);\r\n const buttonClasses = useButtonStyles();\r\n const {organizationId} = useSelector((store: AppState) => store.organizationReducer);\r\n\r\n const handleOnClick = () => {\r\n if (organizationId) {\r\n chooseGreenOptimization(organizationId, greenOptimizationId);\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {children}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n});\r\n","import {Box, createStyles, makeStyles, Theme} from '@material-ui/core';\r\nimport React, {FC} from 'react';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n imageBox: {\r\n display: 'flex',\r\n height: 80,\r\n alignItems: 'flex-end',\r\n justifyContent: 'center',\r\n marginBottom: 10\r\n },\r\n }),\r\n);\r\n\r\nexport const GreenImageItem: FC = React.memo((props) => {\r\n const classes = useStyles();\r\n\r\n return {props.children};\r\n});\r\n","import {createStyles, Grid, makeStyles, Theme, Typography} from '@material-ui/core';\r\nimport clsx from 'clsx';\r\nimport React, {useEffect, useState} from 'react';\r\nimport {useDispatch, useSelector} from 'react-redux';\r\nimport {DocumentType, IContractDto, IDocumentDto, ProductCategory} from '../../../api/api';\r\nimport {useLayoutStyles} from '../../../app-routes';\r\nimport Co2Kortlaegning from '../../../assets/icons/green-optimization/Co2Kortlaegning.svg';\r\nimport KLIMAskov from '../../../assets/icons/green-optimization/KLIMAskov.png';\r\nimport KlimaTiltag from '../../../assets/icons/green-optimization/KlimaTiltag.svg';\r\nimport Raadgivning from '../../../assets/icons/green-optimization/Raadgivning.svg';\r\nimport VINDenergi from '../../../assets/icons/green-optimization/VINDenergi.svg';\r\nimport {localized} from '../../../i18n/i18n';\r\nimport {getContractsDetails} from '../../../state/features/contract/operation';\r\nimport {getDocumentDetails} from '../../../state/features/document/operation';\r\nimport {getGreenOptimizationContractsStatus} from '../../../state/features/green-optimization/operation';\r\nimport {AppState} from '../../../state/store';\r\nimport {cardSubText} from '../../../styles/color-constants';\r\nimport {GridWithCustomBreakpoints} from '../../../styles/custom-grid-breakpoints';\r\nimport {h5} from '../../../styles/font-size-constants';\r\nimport {PageContentContainer} from '../../../view/components/default-components/page-container/page-content-container';\r\nimport {PageHeader} from '../../../view/components/default-components/page-header.tsx/page-header';\r\nimport {PageTitle} from '../../../view/components/default-components/page-title/page-title';\r\nimport {TitleAndSubCard} from '../../../view/components/default-components/title-and-sub-card';\r\nimport {ContractCard} from '../../components/contract/contract-card';\r\nimport {DocumentCard} from '../../components/document/document-card';\r\nimport {FilterProvider} from '../../components/filterprovider';\r\nimport {GreenElementCard} from '../../components/green-optimization/green-element-card';\r\nimport {GreenImageItem} from '../../components/green-optimization/green-image-item';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n subText: {\r\n fontSize: h5,\r\n margin: '0 0 0 16px',\r\n },\r\n cardYouGetText: {\r\n fontSize: h5,\r\n textAlign: 'left',\r\n margin: '15px 0',\r\n whiteSpace: 'pre-wrap',\r\n wordWrap: 'break-word',\r\n color: cardSubText,\r\n },\r\n }),\r\n);\r\n\r\nexport const GreenOptimization = React.memo(() => {\r\n const classes = useStyles();\r\n const dispatch = useDispatch();\r\n const {pending, documentsSlice} = useSelector((store: AppState) => store.documentsReducer);\r\n const {contractsSlice} = useSelector((store: AppState) => store.contractsReducer);\r\n const [greenDocs, setGreenDocs] = useState();\r\n const [reportsDocs, setReportsDocs] = useState();\r\n const {greenOptimizationsContracts} = useSelector((store: AppState) => store.greenOptimizationReducer);\r\n const layoutClasses = useLayoutStyles();\r\n // Fetch page data\r\n const {organizationId} = useSelector((store: AppState) => store.organizationReducer);\r\n useEffect(() => {\r\n if (organizationId) {\r\n dispatch(getDocumentDetails(organizationId));\r\n dispatch(getContractsDetails(organizationId));\r\n dispatch(getGreenOptimizationContractsStatus(organizationId));\r\n }\r\n }, [dispatch, organizationId]);\r\n\r\n useEffect(() => {\r\n setGreenDocs(contractsSlice.filter((d) => d.productCategory === ProductCategory.GreenEnergy));\r\n setReportsDocs(documentsSlice.filter((d) => d.documentType === DocumentType.GreenOptimizationReports));\r\n }, [contractsSlice, documentsSlice]);\r\n return (\r\n \r\n \r\n \r\n \r\n {localized('BelowYouCanSeeWhichGreenInitiativesYouHaveChosen')}\r\n \r\n \r\n {localized('YourGreenOptionsOfCO2NeutralPowerHelpReduceCO2Emissions')}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {'Green_01'}\r\n \r\n \r\n \r\n {localized('ByChoosingCO2NeutralWindEnergyYouGet')}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {'Green_02'}\r\n \r\n \r\n {localized('WithClimateEnergyYouGet')}\r\n \r\n \r\n \r\n \r\n \r\n {'Green_03'}\r\n \r\n \r\n {localized('WithCO2MappingYouGet')}\r\n \r\n \r\n \r\n \r\n \r\n {'Green_04'}\r\n \r\n \r\n {localized('ByChoosingEnergyAdviceYouGet')}\r\n \r\n \r\n \r\n \r\n \r\n {'Green_05'}\r\n \r\n \r\n \r\n {localized('ByChoosingCLIMATEforestYouAreHelpingTo')}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n});\r\n","import {useRouteMatch, Switch, Route} from 'react-router-dom';\r\nimport {GreenOptimization} from './green-optimization';\r\nimport React, {FC} from 'react';\r\n\r\nexport const GreenOptimizationRoute: FC = React.memo(() => {\r\n let match = useRouteMatch();\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n});\r\n","import {Box, Link, Typography} from '@material-ui/core';\r\nimport React from 'react';\r\nimport {localized} from '../../../i18n/i18n';\r\nimport {BasicCard} from '../../../view/components/default-components/basic-card/basic-card';\r\n\r\nexport const ContactFooter = React.memo(() => {\r\n const hrefMail = 'mailto:' + localized('KundeServiceMail');\r\n const hrefPhone = 'tel:' + localized('KundeServicePhone');\r\n return (\r\n \r\n {localized('NeedHelp')}\r\n \r\n \r\n {localized('MarketingContact') + ' ' + localized('MarketingContactInfo') + ' '}\r\n \r\n {localized('KundeServiceMail')}\r\n {' '}\r\n {localized('MarketingContactOrPhone')}\r\n \r\n {' ' + localized('KundeServicePhone')}\r\n {' '}\r\n {' '}\r\n \r\n \r\n );\r\n});\r\n","import {createStyles, makeStyles, Theme, Typography} from '@material-ui/core';\r\nimport {GetApp} from '@material-ui/icons';\r\nimport React, {FC} from 'react';\r\nimport {useDispatch} from 'react-redux';\r\nimport {localized} from '../../../i18n/i18n';\r\nimport {downloadMarketingMaterial} from '../../../state/features/marketing-material/operation';\r\nimport {showErrorSnackbar} from '../../../state/features/snackbar/snackbar-slice';\r\nimport {disabledColor} from '../../../styles/color-constants';\r\nimport {h5} from '../../../styles/font-size-constants';\r\nimport {promptUserWithFileOptions} from '../../../utilities/file-helper';\r\nimport {BasicCard} from '../../../view/components/default-components/basic-card/basic-card';\r\n\r\ninterface PropsFromParent {\r\n name?: string;\r\n organizationId: number;\r\n availableIds?: number[];\r\n}\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n availablestyle: {\r\n cursor: 'pointer',\r\n maxHeight: 40,\r\n gap: '10px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'space-between',\r\n '&:hover': {\r\n backgroundColor: '#3333',\r\n color: '#FFF',\r\n },\r\n },\r\n disabledstyle: {\r\n color: disabledColor,\r\n cursor: 'default',\r\n maxHeight: 40,\r\n gap: '10px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'space-between',\r\n transition: 'flex-grow 500ms ease-in-out',\r\n '&:hover': {\r\n backgroundColor: '#3333',\r\n color: '#FFF',\r\n },\r\n },\r\n ActiveTypo: {\r\n fontSize: h5,\r\n fontFamily: 'Lato',\r\n fontWeight: 'normal',\r\n },\r\n }),\r\n);\r\nexport const DownloadAllButton: FC = React.memo((PropsFromParent) => {\r\n const allIds = PropsFromParent.availableIds ? PropsFromParent.availableIds : [];\r\n const [disabled, setDisabled] = React.useState(false);\r\n const classes = useStyles();\r\n const dispatch = useDispatch();\r\n\r\n const handleDownload = async () => {\r\n if (disabled) return;\r\n setDisabled(true);\r\n try {\r\n let file = await downloadMarketingMaterial(allIds, PropsFromParent.organizationId);\r\n if (file) {\r\n if (allIds.length > 1) {\r\n promptUserWithFileOptions(file, PropsFromParent.name ?? 'AllAvailableFiles');\r\n } else {\r\n promptUserWithFileOptions(file, file.fileName ?? PropsFromParent.name ?? 'File');\r\n }\r\n }\r\n } catch (e) {\r\n dispatch(showErrorSnackbar('Error zipfile...'));\r\n }\r\n setDisabled(false);\r\n };\r\n return (\r\n \r\n {localized('DownloadAll') + ' '}\r\n \r\n \r\n );\r\n});\r\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_30\",\n \"data-name\": \"Group 30\",\n transform: \"translate(-1235 -60.334)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_41\",\n \"data-name\": \"Path 41\",\n d: \"M25.537,0H1.63A1.632,1.632,0,0,0,0,1.631V25.538a1.632,1.632,0,0,0,1.63,1.63H25.537a1.632,1.632,0,0,0,1.63-1.63V1.631A1.632,1.632,0,0,0,25.537,0m.543,25.537a.544.544,0,0,1-.543.543H1.63a.544.544,0,0,1-.543-.543V23.011L6.4,16.328A1.087,1.087,0,0,1,8.078,16.3l3.287,3.831a.543.543,0,0,0,.884-.084l5.622-9.81a1.087,1.087,0,0,1,1.858-.046L26.08,20.1Zm0-7.448L20.643,9.6a2.173,2.173,0,0,0-3.716.092l-5.239,9.142L8.9,15.589a2.173,2.173,0,0,0-3.35.062L1.087,21.265V1.631a.544.544,0,0,1,.543-.543H25.537a.544.544,0,0,1,.543.543Z\",\n transform: \"translate(1235 60.333)\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_42\",\n \"data-name\": \"Path 42\",\n d: \"M83.265,80a3.26,3.26,0,1,0,3.26,3.26A3.264,3.264,0,0,0,83.265,80m0,5.433a2.173,2.173,0,1,1,2.173-2.173,2.176,2.176,0,0,1-2.173,2.173\",\n transform: \"translate(1159.342 -15.324)\"\n}));\n\nvar SvgBannerBlack = function SvgBannerBlack(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 27.167,\n height: 27.167,\n viewBox: \"0 0 27.167 27.167\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgBannerBlack, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/Banner_black.caee5a47.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_21\",\n \"data-name\": \"Group 21\",\n transform: \"translate(-551 -1137.789)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_30\",\n \"data-name\": \"Path 30\",\n d: \"M27.194,9.458a7.751,7.751,0,0,0-1.617-7.112A7.2,7.2,0,0,0,17.653.5a7.442,7.442,0,0,0-2.128,1.321,19.214,19.214,0,0,0-1.8,1.7,15.388,15.388,0,0,0-2.346-2.141A7.1,7.1,0,0,0,8.62.144,7.192,7.192,0,0,0,2.874,1.436,7.289,7.289,0,0,0,.15,5.791a9.477,9.477,0,0,0,.862,5.787,21.588,21.588,0,0,0,3.6,5.284A42.912,42.912,0,0,0,9.52,21.516q1.084.888,2.214,1.719.577.424,1.166.831a1.254,1.254,0,0,0,1.11.319,4.1,4.1,0,0,0,1.035-.659q.619-.439,1.224-.9,1.116-.843,2.188-1.743A40.368,40.368,0,0,0,23.4,16.224,19.239,19.239,0,0,0,26.774,10.8a11.188,11.188,0,0,0,.42-1.337m-11.048,12q-.75.584-1.52,1.141-.37.267-.745.526c-.1.071-.117.106-.224.055a2.369,2.369,0,0,1-.317-.22c-.984-.69-1.941-1.418-2.874-2.175A40.507,40.507,0,0,1,4.88,15.393a15.125,15.125,0,0,1-3.6-6.716A6.371,6.371,0,0,1,3.557,2.388a6.015,6.015,0,0,1,7.3.047,18.976,18.976,0,0,1,1.592,1.425,7.335,7.335,0,0,1,.53.567,1.018,1.018,0,0,0,.61.448c.514.09.766-.328,1.066-.656a17.344,17.344,0,0,1,1.482-1.4A6.276,6.276,0,0,1,20,1.168a6,6,0,0,1,3.488.932,6.258,6.258,0,0,1,2.78,5.935,13.673,13.673,0,0,1-3.321,6.91,38.559,38.559,0,0,1-5.558,5.512q-.613.507-1.241,1\",\n transform: \"translate(551.104 1138)\",\n fill: \"currentColor\",\n strokeWidth: 0.2\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_31\",\n \"data-name\": \"Path 31\",\n d: \"M340.505,52.28a.581.581,0,0,1-.581-.581,4.075,4.075,0,0,0-4.07-4.07.581.581,0,0,1,0-1.163,5.239,5.239,0,0,1,5.233,5.233.581.581,0,0,1-.581.581\",\n transform: \"translate(234.736 1094.154)\",\n fill: \"curretColor\",\n strokeWidth: 0.2\n}));\n\nvar SvgCsrBlack = function SvgCsrBlack(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 27.685,\n height: 24.728,\n viewBox: \"0 0 27.685 24.728\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgCsrBlack, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/CSR_black.4516a1ef.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_17\",\n \"data-name\": \"Group 17\",\n transform: \"translate(-959.5 -168.122)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_18\",\n \"data-name\": \"Path 18\",\n d: \"M43.447,6.667A2.143,2.143,0,0,1,45.59,8.81V32.826H26.667V13.737\",\n transform: \"translate(935.41 161.955)\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 1\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_19\",\n \"data-name\": \"Path 19\",\n d: \"M8.26,6.667A1.592,1.592,0,0,0,6.668,8.259v3.074H23.514V8.744a2.077,2.077,0,0,1,2.077-2.077Z\",\n transform: \"translate(953.332 161.955)\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 1\n}), /*#__PURE__*/React.createElement(\"line\", {\n id: \"Line_14\",\n \"data-name\": \"Line 14\",\n x2: 4.592,\n transform: \"translate(969.419 178.21)\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 1\n}), /*#__PURE__*/React.createElement(\"line\", {\n id: \"Line_15\",\n \"data-name\": \"Line 15\",\n x2: 12.97,\n transform: \"translate(965.23 181.957)\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 1\n}), /*#__PURE__*/React.createElement(\"line\", {\n id: \"Line_16\",\n \"data-name\": \"Line 16\",\n x2: 12.97,\n transform: \"translate(965.23 185.704)\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 1\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_20\",\n \"data-name\": \"Path 20\",\n d: \"M92.862,253.878l-3.307,2.7V247.3h6.614v9.28Z\",\n transform: \"translate(879.054 -53.686)\",\n fill: \"#fff\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_21\",\n \"data-name\": \"Path 21\",\n d: \"M103.135,262.534l-2.394-1.957-2.394,1.957v-6.441h4.787Z\",\n transform: \"translate(871.175 -61.564)\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_22\",\n \"data-name\": \"Path 22\",\n d: \"M84.467,204.465a4.28,4.28,0,1,1,4.28-4.28,4.285,4.285,0,0,1-4.28,4.28\",\n transform: \"translate(887.449 -7.627)\",\n fill: \"#fff\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_23\",\n \"data-name\": \"Path 23\",\n d: \"M95.713,208.064a3.367,3.367,0,1,0-3.367,3.367,3.367,3.367,0,0,0,3.367-3.367\",\n transform: \"translate(879.57 -15.506)\"\n}));\n\nvar SvgDiplomaBlack = function SvgDiplomaBlack(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 22,\n height: 34.774,\n viewBox: \"0 0 22 34.774\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgDiplomaBlack, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/Diploma_black.3c25386e.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_22\",\n \"data-name\": \"Group 22\",\n transform: \"translate(-1174 -1164)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_32\",\n \"data-name\": \"Path 32\",\n d: \"M143.1,81.157a.574.574,0,0,1,0-1.148.415.415,0,0,0,.4-.431.772.772,0,0,0-.127-.443A.574.574,0,0,1,143.487,78c.627,0,1.157.723,1.157,1.579a1.564,1.564,0,0,1-1.545,1.579m.388-2.009h0Z\",\n transform: \"translate(1051.931 1097.195)\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_33\",\n \"data-name\": \"Path 33\",\n d: \"M140.39,95.157a.574.574,0,0,1,0-1.148.415.415,0,0,0,.4-.431.726.726,0,0,0-.168-.453.574.574,0,0,1,.16-1.126c.584,0,1.157.782,1.157,1.579a1.564,1.564,0,0,1-1.546,1.579m.388-2.009h0Z\",\n transform: \"translate(1054.25 1085.204)\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_34\",\n \"data-name\": \"Path 34\",\n d: \"M75.066,109.157H69.027a4.013,4.013,0,0,1-2.167-.634l-.094-.061a2.865,2.865,0,0,0-1.548-.453h-.643a.574.574,0,0,1,0-1.148h.643a4.012,4.012,0,0,1,2.167.634l.095.061a2.864,2.864,0,0,0,1.548.453h6.039a.415.415,0,0,0,.4-.431.729.729,0,0,0-.161-.451A.574.574,0,0,1,75.455,106c.595,0,1.157.767,1.157,1.579a1.564,1.564,0,0,1-1.546,1.579m.388-2.009h0Z\",\n transform: \"translate(1119.185 1073.213)\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_35\",\n \"data-name\": \"Path 35\",\n d: \"M117.343,67.157a.574.574,0,1,1,0-1.148.432.432,0,0,0,0-.861h-4.769a.574.574,0,0,1,0-1.148h4.769a1.579,1.579,0,0,1,0,3.157\",\n transform: \"translate(1078.074 1109.185)\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_36\",\n \"data-name\": \"Path 36\",\n d: \"M65.722,32.037H64.574a.574.574,0,0,1,0-1.148H65.7a11.268,11.268,0,0,0,4.073-4.776C70.236,24.711,70.812,24,71.48,24c.4,0,1.705.166,1.705,2.3A17.818,17.818,0,0,1,72,30.526a.574.574,0,1,1-1.068-.422A17.091,17.091,0,0,0,72.037,26.3c0-1.014-.327-1.133-.5-1.146a3.252,3.252,0,0,0-.68,1.326c-.764,2.292-3.977,5.561-5.136,5.561\",\n transform: \"translate(1119.185 1143.444)\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_37\",\n \"data-name\": \"Path 37\",\n d: \"M44.019,73.181H40.574A.574.574,0,0,1,40,72.607V64.569a.574.574,0,0,1,.574-.574h3.445a.574.574,0,0,1,.574.574v8.037a.574.574,0,0,1-.574.574m-2.87-1.148h2.3V65.144h-2.3Z\",\n transform: \"translate(1139.741 1109.189)\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_38\",\n \"data-name\": \"Path 38\",\n d: \"M24.685,22.963H17.222a.574.574,0,0,1,0-1.148h7.463a1.724,1.724,0,0,0,1.722-1.722V2.87a1.724,1.724,0,0,0-1.722-1.722H2.87A1.724,1.724,0,0,0,1.148,2.87V20.093A1.724,1.724,0,0,0,2.87,21.815h7.463a.574.574,0,0,1,0,1.148H2.87A2.874,2.874,0,0,1,0,20.093V2.87A2.874,2.874,0,0,1,2.87,0H24.685a2.874,2.874,0,0,1,2.87,2.87V20.093a2.874,2.874,0,0,1-2.87,2.87\",\n transform: \"translate(1174 1164)\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_39\",\n \"data-name\": \"Path 39\",\n d: \"M72.019,157.741a.574.574,0,0,1-.459-.23l-3.444-4.593a.574.574,0,1,1,.919-.689l2.985,3.98L75,152.23a.574.574,0,1,1,.919.689l-3.444,4.593a.574.574,0,0,1-.459.23\",\n transform: \"translate(1115.759 1033.814)\"\n}));\n\nvar SvgSocialMediaBlack = function SvgSocialMediaBlack(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 27.556,\n height: 27.556,\n viewBox: \"0 0 27.556 27.556\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgSocialMediaBlack, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/SocialMedia_black.7e54923a.svg\";\nexport { ForwardRef as ReactComponent };","import {createStyles, makeStyles, Theme, Typography} from '@material-ui/core/';\r\nimport {GetApp} from '@material-ui/icons';\r\n\r\nimport React, {FC, useEffect} from 'react';\r\nimport {useDispatch} from 'react-redux';\r\nimport {downloadMarketingMaterial} from '../../../state/features/marketing-material/operation';\r\nimport {showErrorSnackbar} from '../../../state/features/snackbar/snackbar-slice';\r\nimport {disabledColor} from '../../../styles/color-constants';\r\nimport {promptUserWithFileOptions} from '../../../utilities/file-helper';\r\nimport {BasicCard} from '../../../view/components/default-components/basic-card/basic-card';\r\n\r\ninterface PropsFromParent {\r\n name?: string;\r\n id: number;\r\n disabled?: boolean;\r\n type?: string;\r\n organizationId: number;\r\n\r\n setParentImgSrc?: (src: string) => void;\r\n}\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n availablestyle: {\r\n cursor: 'pointer',\r\n maxHeight: 40,\r\n display: 'flex',\r\n alignItems: 'center',\r\n margin: 10,\r\n marginBottom: 0,\r\n justifyContent: 'space-between',\r\n flexGrow: 1,\r\n '&:hover': {\r\n backgroundColor: '#3333',\r\n color: '#FFF',\r\n flexGrow: 1,\r\n },\r\n },\r\n disabledstyle: {\r\n color: disabledColor,\r\n cursor: 'default',\r\n maxHeight: 40,\r\n display: 'flex',\r\n alignItems: 'center',\r\n margin: 10,\r\n marginBottom: 0,\r\n justifyContent: 'space-around',\r\n flexGrow: 1,\r\n },\r\n TypeText: {},\r\n NameText: {\r\n flex: 100,\r\n font: 'normal normal normal 14px/16px lato',\r\n },\r\n }),\r\n);\r\n\r\nconst convertBlobToBase64 = (blob: Blob): Promise =>\r\n new Promise((resolve, reject) => {\r\n const reader = new FileReader();\r\n reader.onerror = reject;\r\n reader.onload = () => {\r\n resolve(reader.result as string);\r\n };\r\n reader.readAsDataURL(blob);\r\n });\r\n\r\nexport const DownloadFileButton: FC = React.memo((props) => {\r\n const [disabled, setDisabled] = React.useState(props.disabled);\r\n const classes = useStyles();\r\n useEffect(() => {\r\n setDisabled(props.disabled);\r\n }, [props.disabled]);\r\n\r\n const dispatch = useDispatch();\r\n const {disabled: Disabled, organizationId, setParentImgSrc, type} = props;\r\n\r\n useEffect(() => {\r\n async function fetchImage() {\r\n if (!Disabled && organizationId && setParentImgSrc !== undefined && (type === 'JPG' || type === 'PNG')) {\r\n try {\r\n let file = await downloadMarketingMaterial([props.id], organizationId);\r\n if (file) {\r\n let data = await convertBlobToBase64(file.data);\r\n setParentImgSrc(data);\r\n }\r\n } catch (e) {\r\n dispatch(showErrorSnackbar('File not found...'));\r\n }\r\n }\r\n }\r\n fetchImage();\r\n }, [setParentImgSrc, props.id, Disabled, organizationId, type, dispatch]);\r\n\r\n const handleDownload = async () => {\r\n if (disabled) return;\r\n\r\n setDisabled(true);\r\n if (props.id) {\r\n try {\r\n let file = await downloadMarketingMaterial([props.id], props.organizationId);\r\n if (file) {\r\n promptUserWithFileOptions(file, file.fileName ?? props.type ?? 'file');\r\n }\r\n } catch (e) {\r\n dispatch(showErrorSnackbar('File not found...'));\r\n }\r\n }\r\n setDisabled(false);\r\n };\r\n\r\n return (\r\n \r\n {props.name && (\r\n \r\n {props.name ?? ''}\r\n \r\n )}\r\n \r\n {props.type ?? ''}\r\n \r\n {!disabled && }\r\n \r\n );\r\n});\r\n","import {Box, createStyles, makeStyles, Theme, Typography} from '@material-ui/core';\r\nimport React, {FC} from 'react';\r\nimport {localized} from '../../../i18n/i18n';\r\nimport {disabledColor, disabledImageColor} from '../../../styles/color-constants';\r\nimport {h5} from '../../../styles/font-size-constants';\r\nimport {BasicCard} from '../../../view/components/default-components/basic-card/basic-card';\r\n\r\ninterface PropsFromParent {\r\n description?: string;\r\n ImgSrc: string;\r\n}\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n squareBanner: {\r\n display: 'flex',\r\n gap: 9,\r\n aspectRatio: '343 / 80',\r\n margin: '10px',\r\n marginBottom: '0px',\r\n marginTop: '30px',\r\n padding: '10px',\r\n overflow: 'auto',\r\n justifyContent: 'space-between',\r\n },\r\n imgBox: {\r\n height: '100%',\r\n aspectRatio: '1 / 1',\r\n objectFit: 'cover',\r\n },\r\n activeTypography: {\r\n color: 'inherit',\r\n fontSize: h5,\r\n fontFamily: 'Lato',\r\n fontWeight: 'normal',\r\n },\r\n inActiveTypography: {\r\n color: disabledColor,\r\n fontSize: h5,\r\n fontFamily: 'Lato',\r\n fontWeight: 'normal',\r\n },\r\n }),\r\n);\r\nexport const SquareBanner: FC = React.memo((PropsFromParent) => {\r\n const classes = useStyles();\r\n return (\r\n \r\n \r\n {PropsFromParent.description ? (\r\n \r\n {PropsFromParent.description}\r\n \r\n ) : (\r\n \r\n {localized('SquareBanner')}\r\n \r\n )}\r\n {PropsFromParent.ImgSrc === 'grey' ? (\r\n \r\n ) : (\r\n \"SquareBanner\"\r\n )}\r\n \r\n \r\n );\r\n});\r\n","import {Box, createStyles, makeStyles, Theme, Typography} from '@material-ui/core';\r\nimport React, {FC} from 'react';\r\nimport {localized} from '../../../i18n/i18n';\r\nimport {disabledColor, disabledImageColor} from '../../../styles/color-constants';\r\nimport {h5} from '../../../styles/font-size-constants';\r\nimport {BasicCard} from '../../../view/components/default-components/basic-card/basic-card';\r\n\r\ninterface PropsFromParent {\r\n ImgSrc: string;\r\n description?: string;\r\n}\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n wideBanner: {\r\n display: 'flex',\r\n gap: 9,\r\n aspectRatio: '343 / 80',\r\n margin: '10px',\r\n marginBottom: '0px',\r\n padding: '10px',\r\n overflow: 'auto',\r\n justifyContent: 'space-between',\r\n },\r\n imgBox: {\r\n height: '100%',\r\n aspectRatio: '3 / 1',\r\n objectFit: 'cover',\r\n },\r\n activeTypography: {\r\n color: 'inherit',\r\n fontSize: h5,\r\n fontFamily: 'Lato',\r\n fontWeight: 'normal',\r\n },\r\n inActiveTypography: {\r\n color: disabledColor,\r\n fontSize: h5,\r\n fontFamily: 'Lato',\r\n fontWeight: 'normal',\r\n },\r\n }),\r\n);\r\n\r\nexport const WideBanner: FC = React.memo((PropsFromParent) => {\r\n const classes = useStyles();\r\n return (\r\n \r\n \r\n {PropsFromParent.description ? (\r\n \r\n {PropsFromParent.description}\r\n \r\n ) : (\r\n \r\n {localized('WideBanner')}\r\n \r\n )}\r\n\r\n {PropsFromParent.ImgSrc === 'grey' ? (\r\n \r\n ) : (\r\n \"wideBanner\"\r\n )}\r\n \r\n \r\n );\r\n});\r\n","import {Badge, Box, createStyles, makeStyles, SvgIcon, Theme, Typography} from '@material-ui/core';\r\nimport React, {FC, useEffect} from 'react';\r\nimport {useDispatch} from 'react-redux';\r\nimport {localized} from '../../../i18n/i18n';\r\nimport {chooseGreenOptimization} from '../../../state/features/green-optimization/operation';\r\nimport {showErrorSnackbar} from '../../../state/features/snackbar/snackbar-slice';\r\nimport {basicCardTextColor, disabledColor, primaryTextColor, secondaryColor} from '../../../styles/color-constants';\r\nimport {h3, h5} from '../../../styles/font-size-constants';\r\nimport {BasicCard} from '../../../view/components/default-components/basic-card/basic-card';\r\nimport {DownloadFileButton} from './download-file-button';\r\nimport {BigMaterialCardPropsFromParent} from './Interfaces';\r\nimport {SquareBanner} from './square-banner';\r\nimport {WideBanner} from './wide-banner';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n GridAroundBigMaterial: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'space-between',\r\n flexGrow: 1,\r\n },\r\n DownloadBoxStyle: {\r\n gridRow: 2,\r\n display: 'flex',\r\n flexWrap: 'nowrap',\r\n justifyContent: 'space-between',\r\n justifyItems: 'stretch',\r\n },\r\n contactMe: {\r\n position: 'absolute',\r\n top: '35%',\r\n zIndex: 1,\r\n cursor: 'pointer',\r\n marginLeft: 0,\r\n marginRight: 5,\r\n minWidth: 50,\r\n maxWidth: 120,\r\n maxHeight: 40,\r\n boxShadow: ' 0px 0px 20px grey',\r\n display: 'flex',\r\n alignItems: 'center',\r\n alignSelf: 'center',\r\n justifyContent: 'center',\r\n transition: 'flex-grow 300ms ease-in-out',\r\n color: primaryTextColor,\r\n '&:hover': {\r\n backgroundColor: '#ccc',\r\n color: '#FFF',\r\n flex: 1,\r\n },\r\n },\r\n SvgIcon: {\r\n overflow: 'visible',\r\n margin: 1,\r\n marginRight: 10,\r\n padding: 2,\r\n minHeight: 27,\r\n minWidth: 27,\r\n float: 'left',\r\n },\r\n headerTypo: {\r\n fontSize: h3,\r\n fontFamily: 'Lato',\r\n fontWeight: 'bold',\r\n },\r\n bodyTypo: {\r\n fontSize: h5,\r\n fontFamily: 'Lato',\r\n fontWeight: 'normal',\r\n },\r\n image: {\r\n padding: '20%',\r\n flex: 1,\r\n },\r\n card: {\r\n boxShadow: (active: boolean) => (active ? 'inset 0px 0px 0px 2px ' + secondaryColor : ''),\r\n },\r\n Badge: {display: 'flex', transform: 'translate(20px, -20px)'},\r\n }),\r\n);\r\n\r\nexport const BigMaterialCard: FC = React.memo(\r\n ({\r\n access,\r\n description,\r\n squareDownLoadLinks,\r\n squareImgSrc,\r\n title,\r\n wideDownLoadLinks,\r\n wideImgSrc,\r\n isNewToUser,\r\n organizationId,\r\n activeCategory,\r\n bannerIcon,\r\n ...props\r\n }) => {\r\n const classes = useStyles(access);\r\n const [localWideImgSrc, setWideImgSrc] = React.useState(wideImgSrc);\r\n const [localSquareImgSrc, setSquareImgSrc] = React.useState(squareImgSrc);\r\n const dispatch = useDispatch();\r\n\r\n //reset images when components links is updated\r\n useEffect(() => {\r\n setWideImgSrc(wideImgSrc);\r\n setSquareImgSrc(squareImgSrc);\r\n }, [wideImgSrc, squareImgSrc, wideDownLoadLinks, squareDownLoadLinks]);\r\n\r\n const SquareDownloadButtons = squareDownLoadLinks.map((link, index) => (\r\n \r\n ));\r\n const WideDownloadButtons = wideDownLoadLinks.map((link, index) => (\r\n \r\n ));\r\n\r\n const BodyTextColor = access ? basicCardTextColor : disabledColor;\r\n const IconHeaderColor = access ? primaryTextColor : disabledColor;\r\n\r\n const [linkDisabled, setLinkDisabled] = React.useState(false);\r\n const handleOnClick = async () => {\r\n if (linkDisabled) return;\r\n if (organizationId) {\r\n setLinkDisabled(true);\r\n try {\r\n await chooseGreenOptimization(organizationId, activeCategory?.toString() ?? '');\r\n } catch (error) {\r\n dispatch(showErrorSnackbar(localized('MailNotSuccessfullSent')));\r\n }\r\n setLinkDisabled(false);\r\n }\r\n };\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {title}\r\n \r\n {description}\r\n \r\n \r\n \r\n \r\n\r\n {WideDownloadButtons}\r\n\r\n \r\n\r\n {SquareDownloadButtons}\r\n \r\n {!linkDisabled && !access && (\r\n \r\n {localized('ContactMe')} \r\n \r\n )}\r\n \r\n \r\n );\r\n },\r\n);\r\n","import {Badge, Box, createStyles, Grid, makeStyles, SvgIcon, Theme, Typography} from '@material-ui/core';\r\nimport React, {FC} from 'react';\r\nimport {useDispatch} from 'react-redux';\r\nimport {localized} from '../../../i18n/i18n';\r\nimport {chooseGreenOptimization} from '../../../state/features/green-optimization/operation';\r\nimport {showErrorSnackbar} from '../../../state/features/snackbar/snackbar-slice';\r\nimport {basicCardTextColor, disabledColor, primaryTextColor, secondaryColor} from '../../../styles/color-constants';\r\nimport {h3, h5} from '../../../styles/font-size-constants';\r\nimport {BasicCard} from '../../../view/components/default-components/basic-card/basic-card';\r\nimport {DownloadFileButton} from './download-file-button';\r\nimport {SmallMaterialCardPropsFromParent} from './Interfaces';\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n DownloadBoxStyle: {\r\n gridRow: 2,\r\n display: 'flex',\r\n flexWrap: 'nowrap',\r\n justifyContent: 'space-between',\r\n justifyItems: 'stretch',\r\n gap: 30,\r\n },\r\n GridAroundSmallMaterial: {\r\n display: 'flex',\r\n minHeight: '100%',\r\n flexDirection: 'column',\r\n justifyContent: 'space-between',\r\n flexGrow: 1,\r\n },\r\n DescriptionStyle: {\r\n height: '90%',\r\n },\r\n smallCard: {\r\n flex: 1,\r\n display: 'flex',\r\n flexDirection: 'column',\r\n boxShadow: (active: boolean) => (active ? 'inset 0px 0px 0px 2px ' + secondaryColor : ''),\r\n },\r\n contactMe: {\r\n position: 'absolute',\r\n [theme.breakpoints.up('xs')]: {\r\n bottom: '15px',\r\n },\r\n [theme.breakpoints.up('md')]: {\r\n bottom: '2%',\r\n },\r\n zIndex: 1,\r\n cursor: 'pointer',\r\n marginLeft: 0,\r\n marginRight: 5,\r\n minWidth: 50,\r\n maxWidth: 120,\r\n maxHeight: 40,\r\n boxShadow: ' 0px 0px 20px grey',\r\n display: 'flex',\r\n alignItems: 'center',\r\n alignSelf: 'center',\r\n justifyContent: 'center',\r\n transition: 'flex-grow 300ms ease-in-out',\r\n color: primaryTextColor,\r\n '&:hover': {\r\n backgroundColor: '#ccc',\r\n color: '#FFF',\r\n flex: 1,\r\n },\r\n },\r\n headerTypo: {\r\n fontSize: h3,\r\n fontFamily: 'Lato',\r\n fontWeight: 'bold',\r\n },\r\n bodyTypo: {\r\n fontSize: h5,\r\n fontFamily: 'Lato',\r\n fontWeight: 'normal',\r\n },\r\n badge: {display: 'flex', transform: 'translate(20px, -20px)'},\r\n SvgIcon: {\r\n overflow: 'visible',\r\n margin: 1,\r\n marginRight: 10,\r\n padding: 2,\r\n minHeight: 27,\r\n minWidth: 27,\r\n float: 'left',\r\n },\r\n }),\r\n);\r\n\r\nexport const SmallMaterialCard: FC = React.memo(\r\n ({\r\n access,\r\n description,\r\n title,\r\n isNewToUser,\r\n organizationId,\r\n activeCategory,\r\n bannerIcon,\r\n downLoadLinks,\r\n ...props\r\n }) => {\r\n const classes = useStyles(access);\r\n const dispatch = useDispatch();\r\n\r\n const downLoadButtons = downLoadLinks.map((link, index) => (\r\n \r\n ));\r\n\r\n const BodyTextColor = access ? basicCardTextColor : disabledColor;\r\n const IconHeaderColor = access ? primaryTextColor : disabledColor;\r\n\r\n const [linkDisabled, setLinkDisabled] = React.useState(false);\r\n const handleOnClick = async () => {\r\n if (linkDisabled) return;\r\n if (organizationId) {\r\n setLinkDisabled(true);\r\n try {\r\n await chooseGreenOptimization(organizationId, activeCategory?.toString() ?? '');\r\n } catch (error) {\r\n dispatch(showErrorSnackbar(localized('MailNotSuccessfullSent')));\r\n }\r\n setLinkDisabled(false);\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n {title}\r\n \r\n {description}\r\n \r\n \r\n \r\n \r\n {downLoadButtons}\r\n \r\n {!linkDisabled && !access && (\r\n \r\n {localized('ContactMe')} \r\n \r\n )}\r\n \r\n \r\n \r\n );\r\n },\r\n);\r\n","import {Box, createStyles, Grid, makeStyles, Theme} from '@material-ui/core';\r\nimport React, {FC, useMemo} from 'react';\r\nimport {MarketingMaterialCategories} from '../../../api/api';\r\nimport {ReactComponent as Banner_black} from '../../../assets/icons/marketing-material/Banner_black.svg';\r\nimport {ReactComponent as CSR_black} from '../../../assets/icons/marketing-material/CSR_black.svg';\r\nimport {ReactComponent as Diploma_black} from '../../../assets/icons/marketing-material/Diploma_black.svg';\r\nimport {ReactComponent as SocialMedia_black} from '../../../assets/icons/marketing-material/SocialMedia_black.svg';\r\nimport {MarketingMaterialPageData} from '../../../state/features/marketing-material/types';\r\nimport {BigMaterialCard} from './big-material-card';\r\nimport {SmallMaterialCard} from './small-material-card';\r\n\r\ninterface PropsFromParent {\r\n selectedMarketingMaterials: MarketingMaterialPageData;\r\n selectedCategory: MarketingMaterialCategories;\r\n organizationId: number;\r\n}\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n Grid: {\r\n [theme.breakpoints.up('xs')]: {\r\n display: 'grid',\r\n gridTemplateColumns: 'minmax(0, 1fr)',\r\n gridTemplateColums: 'repeat(auto-fit, 1fr)',\r\n gridTemplateAreas: '\"Banners\" \"Diploma\" \"CSRTexts\" \"SoMeTexts\"',\r\n },\r\n [theme.breakpoints.up('m')]: {\r\n display: 'grid',\r\n gridTemplateColumns: 'repeat(2, minmax(0, 1fr))',\r\n gridTemplateRows: 'repeat(auto-fit, 1fr)',\r\n gridTemplateAreas: `\r\n \"Banners Diploma\"\r\n \"Banners CSRTexts\"\r\n \"SoMeTexts empty\"`,\r\n },\r\n [theme.breakpoints.up('lg')]: {\r\n display: 'grid',\r\n gridTemplateColumns: 'repeat(3, minmax(0, 1fr))',\r\n gridTemplateRows: 'repeat(2, minmax(0, 1fr))',\r\n gridTemplateAreas: `\r\n \"Banners Diploma SoMeTexts\"\r\n \"Banners CSRTexts empty\"`,\r\n },\r\n [theme.breakpoints.up('betweenlgandxl')]: {\r\n display: 'grid',\r\n gridTemplateColumns: 'repeat(4, minmax(0, 1fr))',\r\n gridTemplateRows: 'repeat(2, minmax(0, 1fr))',\r\n gridTemplateAreas: `\r\n \"Banners Diploma SoMeTexts\"\r\n \"Banners CSRTexts empty\"`,\r\n },\r\n },\r\n GridWithoutBannerAndDiploma: {\r\n [theme.breakpoints.up('xs')]: {\r\n display: 'grid',\r\n gridTemplateColumns: 'minmax(0, 1fr)',\r\n gridTemplateColums: 'repeat(auto-fit, 1fr)',\r\n gridTemplateAreas: '\"CSRTexts\" \"SoMeTexts\"',\r\n },\r\n [theme.breakpoints.up('m')]: {\r\n display: 'grid',\r\n gridTemplateColumns: 'repeat(2, minmax(0, 1fr))',\r\n gridTemplateRows: 'repeat(auto-fit, 1fr)',\r\n gridTemplateAreas: `\r\n \"CSRTexts SoMeTexts\"`,\r\n },\r\n [theme.breakpoints.up('lg')]: {\r\n display: 'grid',\r\n gridTemplateColumns: 'repeat(3, minmax(0, 1fr))',\r\n gridTemplateRows: 'repeat(auto-fit, 1fr)',\r\n gridTemplateAreas: `\r\n \"CSRTexts SoMeTexts\"`,\r\n },\r\n [theme.breakpoints.up('betweenlgandxl')]: {\r\n display: 'grid',\r\n gridTemplateColumns: 'repeat(4, minmax(0, 1fr))',\r\n gridTemplateRows: 'repeat(auto-fit, 1fr)',\r\n gridTemplateAreas: `\r\n \"CSRTexts SoMeTexts\"`,\r\n },\r\n },\r\n }),\r\n);\r\n\r\nexport const MarketingMaterialGridHolder: FC = React.memo(\r\n ({selectedCategory, selectedMarketingMaterials, organizationId}) => {\r\n const classes = useStyles();\r\n const {banners, diploma, cSRTexts, soMeTexts} = selectedMarketingMaterials;\r\n const withoutBannerAndDiploma = useMemo(\r\n () =>\r\n selectedCategory === MarketingMaterialCategories.Co2Mapping ||\r\n selectedCategory === MarketingMaterialCategories.EnergyConsulting,\r\n [selectedCategory],\r\n );\r\n\r\n return (\r\n \r\n {!withoutBannerAndDiploma && (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n },\r\n);\r\n","import {Badge, createStyles, makeStyles, Theme, Typography} from '@material-ui/core';\r\nimport clsx from 'clsx';\r\nimport React, {FC, useCallback} from 'react';\r\nimport {useSelector} from 'react-redux';\r\nimport {MarketingMaterialCategories} from '../../../api/api';\r\nimport {AppState} from '../../../state/store';\r\nimport {basicCardBgColor, disabledColor, primaryTextColor, secondaryColor} from '../../../styles/color-constants';\r\nimport {h5} from '../../../styles/font-size-constants';\r\nimport {BasicCard} from '../../../view/components/default-components/basic-card/basic-card';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n sortFlexbox: {\r\n cursor: 'pointer',\r\n marginLeft: 5,\r\n marginRight: 5,\r\n minWidth: 140,\r\n maxHeight: 40,\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n color: primaryTextColor,\r\n boxShadow: (active: boolean) => (active ? `0px 0px 0px 2px ${secondaryColor}` : 'none'),\r\n '&:hover': {\r\n backgroundColor: '#3333',\r\n color: '#FFF',\r\n },\r\n },\r\n selected: {\r\n backgroundColor: secondaryColor,\r\n color: basicCardBgColor,\r\n },\r\n\r\n typografi: {\r\n fontSize: h5,\r\n fontFamily: 'Lato',\r\n fontWeight: 'normal',\r\n },\r\n\r\n badge: {display: 'flex', transform: 'translate(24px, -20px)'},\r\n }),\r\n);\r\n\r\ninterface PropsFromParent {\r\n MaterialCategory: MarketingMaterialCategories;\r\n btnText: string;\r\n handleFilterChange: (category: MarketingMaterialCategories) => void;\r\n selectedCategory: MarketingMaterialCategories;\r\n}\r\n\r\nexport const MaterialFilterButton: FC = React.memo(({children, ...props}) => {\r\n const {activeCategorys, notifications} = useSelector((store: AppState) => store.marketingMaterialReducer);\r\n const isCategoryActive = activeCategorys.includes(props.MaterialCategory);\r\n const classes = useStyles(isCategoryActive);\r\n const handleFilterButtonPressed = useCallback(() => {\r\n props.handleFilterChange(props.MaterialCategory);\r\n }, [props]);\r\n\r\n const notificationsForCategory = notifications.includes(props.MaterialCategory);\r\n\r\n return (\r\n \r\n {props.btnText}\r\n \r\n \r\n );\r\n});\r\n","import {Box, createStyles, makeStyles, Theme} from '@material-ui/core';\r\nimport React, {FC} from 'react';\r\nimport {MarketingMaterialCategories} from '../../../api/api';\r\nimport {localized} from '../../../i18n/i18n';\r\nimport {MaterialFilterButton} from './material-filter-button';\r\n\r\ninterface PropsFromParent {\r\n handleFilterChange: (category: MarketingMaterialCategories) => void;\r\n selectedCategory: MarketingMaterialCategories;\r\n}\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n responseiveBox: {\r\n marginLeft: '11px ',\r\n transition: 'color 0.1s ease-in-out, background-color 0.1s ease-in-out',\r\n [theme.breakpoints.down('sm')]: {\r\n margin: 0,\r\n },\r\n [theme.breakpoints.down('xs')]: {\r\n margin: '0 -5px 0 -5px ',\r\n },\r\n },\r\n }),\r\n);\r\nexport const MaterialFilterMenu: FC = React.memo(({handleFilterChange, selectedCategory}) => {\r\n const classes = useStyles();\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n});\r\n","import {Box, createStyles, makeStyles, Theme, Typography} from '@material-ui/core';\r\nimport React, {FC, useCallback} from 'react';\r\nimport {useDispatch} from 'react-redux';\r\nimport {MarketingMaterialCategories} from '../../../api/api';\r\nimport Co2Kortlaegning from '../../../assets/icons/green-optimization/Co2Kortlaegning.svg';\r\nimport KLIMAskov from '../../../assets/icons/green-optimization/KLIMAskov.svg';\r\nimport KlimaTiltag from '../../../assets/icons/green-optimization/KlimaTiltag.svg';\r\nimport Raadgivning from '../../../assets/icons/green-optimization/Raadgivning.svg';\r\nimport VINDenergi from '../../../assets/icons/green-optimization/VINDenergi.svg';\r\nimport {localized, localizedInterpolation} from '../../../i18n/i18n';\r\nimport {chooseGreenOptimization} from '../../../state/features/green-optimization/operation';\r\nimport {GetCategoryName} from '../../../state/features/marketing-material/types';\r\nimport {showErrorSnackbar} from '../../../state/features/snackbar/snackbar-slice';\r\nimport {basicCardBgColor, primaryColor} from '../../../styles/color-constants';\r\nimport {h3, h5} from '../../../styles/font-size-constants';\r\nimport {BasicCard} from '../../../view/components/default-components/basic-card/basic-card';\r\n\r\ninterface PropsFromParent {\r\n selectedCategory: MarketingMaterialCategories;\r\n organizationId: number;\r\n}\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n notAvailableCard: {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n maxWidth: '700px',\r\n },\r\n contactButton: {\r\n cursor: 'pointer',\r\n marginLeft: 0,\r\n marginRight: 5,\r\n minWidth: 40,\r\n maxWidth: 120,\r\n maxHeight: 40,\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n '&:hover': {\r\n backgroundColor: '#999',\r\n color: '#FFF',\r\n flex: 1,\r\n },\r\n },\r\n selected: {\r\n backgroundColor: primaryColor,\r\n color: basicCardBgColor,\r\n '&:hover': {\r\n backgroundColor: primaryColor,\r\n color: basicCardBgColor,\r\n },\r\n },\r\n activeTypo: {\r\n fontSize: h5,\r\n fontFamily: 'Lato',\r\n fontWeight: 'bold',\r\n },\r\n headerTypo: {\r\n fontSize: h3,\r\n fontFamily: 'Lato',\r\n fontWeight: 'bold',\r\n },\r\n bodyTypo: {\r\n fontSize: h5,\r\n fontFamily: 'Lato',\r\n fontWeight: 'normal',\r\n },\r\n\r\n image: {\r\n padding: '20%',\r\n flex: 1,\r\n height: '300px',\r\n objectFit: 'contain',\r\n },\r\n }),\r\n);\r\nexport const NotAvailableCard: FC = React.memo(({selectedCategory, organizationId}) => {\r\n const classes = useStyles();\r\n const dispatch = useDispatch();\r\n\r\n const getIcon = useCallback(() => {\r\n switch (selectedCategory) {\r\n case MarketingMaterialCategories.Co2Mapping:\r\n return Co2Kortlaegning;\r\n case MarketingMaterialCategories.ClimateAction:\r\n return KlimaTiltag;\r\n case MarketingMaterialCategories.EnergyConsulting:\r\n return Raadgivning;\r\n case MarketingMaterialCategories.WindPower:\r\n return VINDenergi;\r\n case MarketingMaterialCategories.ClimateForest:\r\n return KLIMAskov;\r\n default:\r\n return Co2Kortlaegning;\r\n }\r\n }, [selectedCategory]);\r\n\r\n const [linkDisabled, setLinkDisabled] = React.useState(false);\r\n const handleOnClick = async () => {\r\n if (linkDisabled) return;\r\n if (organizationId) {\r\n setLinkDisabled(true);\r\n try {\r\n await chooseGreenOptimization(organizationId, selectedCategory?.toString() ?? '');\r\n } catch (error) {\r\n dispatch(showErrorSnackbar(''));\r\n }\r\n setLinkDisabled(false);\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n {localizedInterpolation('MarketingNotAvailable', {product: GetCategoryName(selectedCategory)})}\r\n \r\n {localizedInterpolation('YouNeedToHaveTheRightProduct', {product: GetCategoryName(selectedCategory)})}\r\n \r\n {!linkDisabled && (\r\n \r\n {localized('ContactMe')}\r\n \r\n )}\r\n \r\n \r\n \r\n \"NotAvailableCard\"\r\n \r\n \r\n );\r\n});\r\n","import {CircularProgress, createStyles, makeStyles, Theme} from '@material-ui/core';\r\nimport Box from '@material-ui/core/Box/Box';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport React, {FC, useCallback, useEffect, useState} from 'react';\r\nimport {useDispatch, useSelector} from 'react-redux';\r\nimport {MarketingMaterialCategories} from '../../../api/api';\r\nimport {localized} from '../../../i18n/i18n';\r\nimport {userClient} from '../../../state/api-clients';\r\nimport {removeNotification} from '../../../state/features/marketing-material/marketing-material-slice';\r\nimport {\r\n DefaultMarketingMaterialPageData,\r\n GetCategoryName,\r\n MarketingMaterialPageData,\r\n} from '../../../state/features/marketing-material/types';\r\nimport {AppState} from '../../../state/store';\r\nimport {PageContentContainer} from '../../../view/components/default-components/page-container/page-content-container';\r\nimport {PageHeader} from '../../../view/components/default-components/page-header.tsx/page-header';\r\nimport {PageTitle} from '../../../view/components/default-components/page-title/page-title';\r\nimport {ContactFooter} from '../../components/marketing-material/contact-footer';\r\nimport {DownloadAllButton} from '../../components/marketing-material/download-all-button';\r\nimport {MarketingMaterialGridHolder} from '../../components/marketing-material/marketing-material-grid-holder';\r\nimport {MaterialFilterMenu} from '../../components/marketing-material/material-filter-holder';\r\nimport {NotAvailableCard} from '../../components/marketing-material/not-available-card';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n responseiveBox: {\r\n transition: 'color 0.1s ease-in-out, background-color 0.1s ease-in-out',\r\n [theme.breakpoints.down('sm')]: {\r\n margin: 0,\r\n },\r\n [theme.breakpoints.down('xs')]: {\r\n margin: '0 -5px 0 -5px ',\r\n },\r\n },\r\n headerText: {\r\n marginLeft: '8px ',\r\n [theme.breakpoints.up('md')]: {\r\n marginLeft: theme.spacing(2),\r\n },\r\n },\r\n title: {\r\n marginLeft: '8px ',\r\n fontWeight: 600,\r\n fontSize: '1.5rem',\r\n },\r\n loading: {\r\n display: 'flex',\r\n marginLeft: '16px ',\r\n justifyContent: 'start',\r\n },\r\n }),\r\n);\r\nexport const MarketingMaterial: FC = React.memo(() => {\r\n const dispatch = useDispatch();\r\n const classes = useStyles();\r\n const {marketingMaterials, activeCategorys, activeMaterials, materialDownloaded} = useSelector(\r\n (store: AppState) => store.marketingMaterialReducer,\r\n );\r\n\r\n const {organizationId} = useSelector((store: AppState) => store.organizationReducer);\r\n\r\n const [selectedCategory, setSelectedCategory] = useState(\r\n MarketingMaterialCategories.WindPower,\r\n );\r\n const [selectedMarketingMaterials, setSelectedMarketingMaterials] = useState({\r\n ...DefaultMarketingMaterialPageData(selectedCategory),\r\n });\r\n const isSelectedCategoryActive = activeCategorys.includes(selectedCategory);\r\n\r\n useEffect(() => {\r\n if (activeCategorys.find((category) => category === selectedCategory) === undefined)\r\n activeCategorys[0] && setSelectedCategory(activeCategorys[0]);\r\n //eslint-disable-next-line\r\n }, [activeCategorys]);\r\n\r\n const [accessMarketingMaterialIds, setAccessMarketingMaterialsIds] = useState([]);\r\n\r\n useEffect(() => {\r\n const accessMarketingMaterialIds = activeMaterials.filter(\r\n (ActiveMaterials) => ActiveMaterials.Category === selectedCategory,\r\n );\r\n setAccessMarketingMaterialsIds(accessMarketingMaterialIds[0]?.ActiveIds);\r\n }, [selectedCategory, activeMaterials]);\r\n\r\n useEffect(() => {\r\n setSelectedMarketingMaterials(\r\n marketingMaterials.find((mm) => mm.Category === selectedCategory)?.MarketingMaterialPageData ??\r\n DefaultMarketingMaterialPageData(selectedCategory),\r\n );\r\n }, [selectedCategory, marketingMaterials]);\r\n\r\n useEffect(() => {\r\n dispatch(removeNotification(selectedCategory));\r\n organizationId && userClient.updateLastOpenedMarketingPage(organizationId);\r\n }, [selectedCategory, selectedMarketingMaterials, dispatch, organizationId]);\r\n\r\n const handleCategoryChange = useCallback((category: MarketingMaterialCategories) => {\r\n setSelectedCategory(category);\r\n }, []);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {localized('MarketingMaterialDescription')}\r\n \r\n \r\n\r\n \r\n {materialDownloaded && (\r\n <>\r\n \r\n \r\n {isSelectedCategoryActive ? (\r\n \r\n ) : (\r\n ''\r\n )}\r\n \r\n {isSelectedCategoryActive ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n \r\n )}\r\n {!materialDownloaded && (\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n );\r\n});\r\n","import {useRouteMatch, Switch, Route} from 'react-router-dom';\r\nimport React, {FC} from 'react';\r\nimport {MarketingMaterial} from './marketing-material';\r\n\r\nexport const MarketingMaterialRoute: FC = React.memo(() => {\r\n let match = useRouteMatch();\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n});\r\n","import { Button, createStyles, Grid, makeStyles, Theme } from '@material-ui/core';\r\nimport { ClassNameMap } from '@material-ui/core/styles/withStyles';\r\nimport React, { useCallback, useEffect, useState } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { useHistory } from 'react-router-dom';\r\nimport { INews } from '../../../api/api';\r\nimport Scan_windows from '../../../assets/scan_windows.jpg';\r\nimport { localized } from '../../../i18n/i18n';\r\nimport { GetAllNewsItems } from '../../../state/features/news/operation';\r\nimport { AppState } from '../../../state/store';\r\nimport { primaryTextColor, secondaryColor, whiteTextColor } from '../../../styles/color-constants';\r\nimport { GridWithCustomBreakpoints } from '../../../styles/custom-grid-breakpoints';\r\nimport { h5 } from '../../../styles/font-size-constants';\r\nimport { BasicCard } from '../../../view/components/default-components/basic-card/basic-card';\r\nimport { DashboardFilesCardFooter } from '../dashboard/dashboard-files-card-footer';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n summaryStyles: {\r\n '& h2': {\r\n margin: 0,\r\n },\r\n '& p': {\r\n margin: 0,\r\n },\r\n },\r\n minWidth176: {minHeight: '40px', width: '100%', height: '100%', maxWidth: '176px', maxHeight: '72px', paddingRight: \"5px\"},\r\n summaryContainerStyles: {\r\n height: '100%',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'space-between',\r\n },\r\n root: {\r\n minWidth: '100px',\r\n paddingRight: '10px',\r\n minHeight: '32px',\r\n borderRadius: '10px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n marginLeft: 'auto',\r\n marginRight: 'auto',\r\n backgroundColor: whiteTextColor,\r\n margin: '10px 0px 10px 10px',\r\n color: primaryTextColor,\r\n boxShadow: '3px 3px 10px #838D9B33',\r\n border: '1px solid #E0E0E0',\r\n fontSize: h5,\r\n textTransform: 'none',\r\n '&:hover': {\r\n backgroundColor: '#3333',\r\n color: '#FFF',\r\n },\r\n '&.Mui-disabled': {\r\n backgroundColor: secondaryColor,\r\n color: '#FFF',\r\n },\r\n },\r\n }),\r\n);\r\n\r\nconst generateNewsItems = (\r\n classes: ClassNameMap<'summaryStyles' | 'summaryContainerStyles' | 'minWidth176'>,\r\n history: any,\r\n) => (news: INews, index: number): JSX.Element => {\r\n const goToNewsPage = () => {\r\n if (news.id) {\r\n history.push({pathname: news.id});\r\n }\r\n };\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n
\r\n {news && news.summary && (\r\n
\r\n )}\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\nexport const NewsItemsOverview = React.memo(() => {\r\n const newsItems = useSelector((state: AppState) => state.newsReducer.newsItems);\r\n const fetchedAllNews = useSelector((state: AppState) => state.newsReducer.fetchedAll);\r\n const divStyle = useStyles();\r\n const [news, setNews] = useState(newsItems.slice(0, 4));\r\n const [showFourMore, setShowFourMore] = useState(4);\r\n let dispatch = useDispatch();\r\n\r\n let history = useHistory();\r\n useEffect(() => {\r\n if (!fetchedAllNews) {\r\n dispatch(GetAllNewsItems());\r\n }\r\n }, [dispatch, fetchedAllNews]);\r\n const getShowFourMore = useCallback(() => {\r\n setShowFourMore(showFourMore + 4);\r\n }, [showFourMore, setShowFourMore]);\r\n useEffect(() => {\r\n setNews(newsItems.slice(0, newsItems.length < showFourMore ? newsItems.length : showFourMore));\r\n }, [setNews, showFourMore, newsItems]);\r\n return (\r\n \r\n {fetchedAllNews && news.map(generateNewsItems(divStyle, history))}\r\n {(showFourMore < 9 || showFourMore <= newsItems.length) && (\r\n \r\n )}\r\n \r\n );\r\n});\r\n\r\nfunction setInnerHtml(newsToUse: INews) {\r\n return {__html: newsToUse.summary ? newsToUse.summary : ''};\r\n}\r\n","import {Button, createStyles, makeStyles, Theme, Typography} from '@material-ui/core';\r\nimport React, {useCallback} from 'react';\r\nimport {localized} from '../../../i18n/i18n';\r\nimport {secondaryColor} from '../../../styles/color-constants';\r\nimport {h2, h5} from '../../../styles/font-size-constants';\r\nimport {BasicCard} from '../../../view/components/default-components/basic-card/basic-card';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n subText: {\r\n fontSize: h5,\r\n margin: '0 0 0 16px',\r\n lineHeight: '26px',\r\n maxWidth: '648px',\r\n },\r\n footerText: {\r\n fontSize: h5,\r\n margin: '0 0 0 16px',\r\n color: '#5D5D5D',\r\n lineHeight: '26px',\r\n maxWidth: '648px',\r\n },\r\n headerText: {\r\n fontSize: h2,\r\n fontWeight: 'bold',\r\n margin: '0 0 0 16px',\r\n lineHeight: '26px',\r\n maxWidth: '648px',\r\n },\r\n root: {\r\n minWidth: '80px',\r\n minHeight: '32px',\r\n borderRadius: '10px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n backgroundColor: secondaryColor,\r\n marginLeft: 'auto',\r\n marginRight: 'auto',\r\n marginTop: 15,\r\n marginBottom: 15,\r\n color: '#fff',\r\n boxShadow: '3px 3px 10px #838D9B33',\r\n border: '1px solid #E0E0E0',\r\n fontSize: h5,\r\n textTransform: 'none',\r\n '&:hover': {\r\n backgroundColor: '#3333',\r\n color: '#FFF',\r\n },\r\n '&.Mui-disabled': {\r\n backgroundColor: secondaryColor,\r\n color: '#FFF',\r\n },\r\n },\r\n }),\r\n);\r\n\r\nexport const SignUpNewsRedirectCard = React.memo(() => {\r\n const classes = useStyles();\r\n const onSignUpClicked = useCallback(() => {\r\n const newWindow = window.open('https://www.scanenergi.dk/nyhedsbrev', '_blank', 'noopener,noreferrer');\r\n if (newWindow) newWindow.opener = null;\r\n // eslint-disable-next-line\r\n }, []);\r\n return (\r\n \r\n {localized('NewsLetter')}\r\n {localized('NewsDefaultText')}\r\n \r\n {localized('SignUpNewsLetterSubText')}\r\n {localized('SignUpNewsLetterSubSubText')}\r\n \r\n );\r\n});\r\n","import {createStyles, Grid, makeStyles, Theme, Typography} from '@material-ui/core';\r\nimport React from 'react';\r\nimport {localized} from '../../../i18n/i18n';\r\nimport {GridWithCustomBreakpoints} from '../../../styles/custom-grid-breakpoints';\r\nimport {h2, h5} from '../../../styles/font-size-constants';\r\nimport {PageContentContainer} from '../../../view/components/default-components/page-container/page-content-container';\r\nimport {PageHeader} from '../../../view/components/default-components/page-header.tsx/page-header';\r\nimport {PageTitle} from '../../../view/components/default-components/page-title/page-title';\r\nimport {NewsItemsOverview} from '../../components/news/news-card-item';\r\nimport {SignUpNewsRedirectCard} from '../../components/news/sign-up-news-redirect-card';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n subText: {\r\n fontSize: h5,\r\n margin: '0 0 0 0px',\r\n lineHeight: '26px',\r\n maxWidth: '648px',\r\n [theme.breakpoints.up('md')]: {\r\n marginLeft: '16px',\r\n },\r\n },\r\n headerText: {\r\n fontSize: h2,\r\n fontWeight: 'bold',\r\n margin: '0 0 0 16px',\r\n lineHeight: '26px',\r\n maxWidth: '648px',\r\n },\r\n boldText: {\r\n fontWeight: 'bold',\r\n },\r\n flexDirectionRow: {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n cursor: 'pointer',\r\n '&:hover': {\r\n color: '#3333',\r\n },\r\n },\r\n seachHeaderFlexBox: {\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n },\r\n }),\r\n);\r\n\r\nexport const News = React.memo(() => {\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {localized('NewsDefaultText')}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n});\r\n","import {useRouteMatch, Switch, Route} from 'react-router-dom';\r\nimport {News} from './news';\r\nimport React, {FC} from 'react';\r\n\r\nexport const NewsRoute: FC = React.memo(() => {\r\n let match = useRouteMatch();\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n});\r\n","import {createStyles, makeStyles, Theme, Typography} from '@material-ui/core';\r\nimport React, {FC} from 'react';\r\nimport {localized, Translation} from '../../i18n/i18n';\r\n\r\nconst TitleAndSubTypographyUseStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n textStyle: {\r\n fontWeight: 800,\r\n marginTop: '20px',\r\n },\r\n }),\r\n);\r\n\r\ninterface TitleAndSubtypography {\r\n title: keyof Translation;\r\n subTexts?: string[];\r\n subText?: string;\r\n className?: string;\r\n customSubtitle?: JSX.Element;\r\n}\r\n\r\nexport const TitleAndSubTypography: FC = React.memo((props: TitleAndSubtypography) => {\r\n const classes = TitleAndSubTypographyUseStyles();\r\n return (\r\n
\r\n {localized(props.title)}\r\n {props.subText && {props.subText}}\r\n {props.subTexts && props.subTexts.map(generateSubTexts())}\r\n {props.customSubtitle && props.customSubtitle}\r\n
\r\n );\r\n});\r\nfunction generateSubTexts(): (value: string, index: number, array: string[]) => JSX.Element {\r\n return (st, index) => {st};\r\n}\r\n","import {Box, Grid} from '@material-ui/core';\r\nimport React, {FC} from 'react';\r\nimport {useSelector} from 'react-redux';\r\nimport profile from '../../../assets/icons/profile.svg';\r\nimport {localized} from '../../../i18n/i18n';\r\nimport {AppState} from '../../../state/store';\r\nimport {GridWithCustomBreakpoints} from '../../../styles/custom-grid-breakpoints';\r\nimport {BasicCard} from '../../../view/components/default-components/basic-card/basic-card';\r\nimport {TitleAndSubCard} from '../../../view/components/default-components/title-and-sub-card';\r\nimport {TitleAndSubTypography} from '../basic-card-title-subtext';\r\nimport {userInfoUseStyles} from './user-info-helper';\r\nexport const UserInfoCard: FC = React.memo(() => {\r\n const classes = userInfoUseStyles();\r\n const user = useSelector((state: AppState) => state.userReducer.user);\r\n\r\n return (\r\n \r\n \r\n \r\n \"firm-icon\"\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n {user?.name && (\r\n \r\n {' '}\r\n \r\n )}\r\n\r\n {user?.title && (\r\n \r\n \r\n \r\n )}\r\n \r\n
\r\n \r\n {user?.email && (\r\n \r\n \r\n \r\n )}\r\n \r\n {user?.phonenumber && (\r\n \r\n )}\r\n
\r\n
\r\n
\r\n );\r\n});\r\n","import {Box, Grid} from '@material-ui/core';\r\nimport React, {FC, useEffect, useState} from 'react';\r\nimport {useSelector} from 'react-redux';\r\nimport firmIcon from '../../../assets/icons/firm_icon.svg';\r\nimport {localized} from '../../../i18n/i18n';\r\nimport {AppState} from '../../../state/store';\r\nimport {BasicCard} from '../../../view/components/default-components/basic-card/basic-card';\r\nimport {TitleAndSubCard} from '../../../view/components/default-components/title-and-sub-card';\r\nimport {TitleAndSubTypography} from '../basic-card-title-subtext';\r\nimport {userInfoUseStyles} from './user-info-helper';\r\n\r\nexport const UserOrganizationCard: FC = React.memo(() => {\r\n const classes = userInfoUseStyles();\r\n const orginasation = useSelector((state: AppState) => state.organizationReducer.organization);\r\n const [firmInformation, setfirmInformation] = useState([]);\r\n const [addressInformation, setAddressInformation] = useState([]);\r\n const [phoneInformation, setPhoneInformation] = useState([]);\r\n\r\n useEffect(() => {\r\n if (orginasation) {\r\n if (orginasation.cvr || orginasation.homepage) {\r\n setfirmInformation([\r\n orginasation.cvr ? 'CVR: ' + orginasation.cvr : '',\r\n orginasation.homepage ? orginasation.homepage : '',\r\n ]);\r\n }\r\n if (orginasation.street || orginasation.houseNum || orginasation.city || orginasation.zipcode) {\r\n setAddressInformation([\r\n (orginasation.street ? orginasation.street + ' ' : '') + (orginasation.houseNum ? orginasation.houseNum : ''),\r\n (orginasation.zipcode ? orginasation.zipcode + ' ' : '') + (orginasation.city ? orginasation.city : ''),\r\n ]);\r\n }\r\n if (orginasation.phonenumber || orginasation.fax) {\r\n setPhoneInformation([\r\n orginasation.phonenumber ? localized('PhoneShort') + ': ' + orginasation.phonenumber : '',\r\n orginasation.fax ? localized('Fax') + ': ' + orginasation.fax : '',\r\n ]);\r\n }\r\n }\r\n }, [orginasation]);\r\n\r\n return (\r\n \r\n \r\n \r\n \"firm-icon\"\r\n \r\n \r\n \r\n
\r\n \r\n {addressInformation.length > 0 && (\r\n \r\n )}\r\n {firmInformation.length > 0 && (\r\n \r\n )}\r\n \r\n
\r\n
\r\n \r\n {orginasation?.email && (\r\n \r\n )}\r\n {orginasation?.accountNum && (\r\n \r\n )}\r\n \r\n
\r\n {phoneInformation?.length > 0 && (\r\n \r\n )}\r\n
\r\n
\r\n
\r\n );\r\n});\r\n","import {Box, BoxProps} from '@material-ui/core';\r\nimport clsx from 'clsx';\r\nimport React, {FC} from 'react';\r\nimport {primaryTextColor} from '../../../../styles/color-constants';\r\nimport {h5} from '../../../../styles/font-size-constants';\r\n\r\nexport const TextButton: FC = React.memo((props) => {\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n});\r\n","import {createStyles, makeStyles, Theme, withStyles} from '@material-ui/core';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport Slide from '@material-ui/core/Slide';\r\nimport {TransitionProps} from '@material-ui/core/transitions';\r\nimport React, {FC} from 'react';\r\n\r\nconst Transition = React.forwardRef(function Transition(\r\n props: TransitionProps & {children?: React.ReactElement},\r\n ref: React.Ref,\r\n) {\r\n return ;\r\n});\r\n\r\ninterface PropsFromParent {\r\n open: boolean;\r\n onClose: () => void;\r\n}\r\n\r\nconst StyledDialog = withStyles((theme: Theme) => ({\r\n root: {},\r\n paper: {\r\n minWidth: 400,\r\n padding: theme.spacing(3, 8, 3, 8),\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n maxWidth: 'unset',\r\n },\r\n}))(Dialog);\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n container: {\r\n minWidth: 600,\r\n },\r\n }),\r\n);\r\n\r\nexport const BasicModal: FC = React.memo(({open, onClose, children}) => {\r\n const classes = useStyles();\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n});\r\n","import {createStyles, makeStyles, Theme} from '@material-ui/core';\r\nimport clsx from 'clsx';\r\nimport React, {FC, useCallback, useState} from 'react';\r\nimport {useDispatch, useSelector} from 'react-redux';\r\nimport {User} from '../../../api/api';\r\nimport {localized} from '../../../i18n/i18n';\r\nimport {createUser} from '../../../state/features/user/operation';\r\nimport {AppState} from '../../../state/store';\r\nimport {basicCardBgColor, btnTextColor, secondaryColor, secondaryColorActive} from '../../../styles/color-constants';\r\nimport {h5} from '../../../styles/font-size-constants';\r\nimport {TextButton} from '../../../view/components/default-components/buttons/text-button';\r\nimport {BasicModal} from '../../../view/components/default-components/modal/basic-modal';\r\nimport {BasicTextField} from '../../../view/components/default-components/text-fields/basic-text-field';\r\nimport {TitleAndSubCard} from '../../../view/components/default-components/title-and-sub-card';\r\n\r\ninterface PropsFromParent {\r\n open: boolean;\r\n onClose: () => void;\r\n}\r\n\r\nexport const CreateUserModalStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n flexDirectionRow: {flexDirection: 'row', justifyContent: 'space-between', display: 'flex', marginTop: '10px'},\r\n buttonActiveStyle: {\r\n minWidth: '80px',\r\n minHeight: '32px',\r\n borderRadius: '10px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n backgroundColor: secondaryColor,\r\n margin: '10px 0px 10px 10px',\r\n paddingLeft: '10px',\r\n paddingRight: '10px',\r\n color: '#fff',\r\n boxShadow: '3px 3px 10px #838D9B33',\r\n border: '1px solid #E0E0E0',\r\n fontSize: h5,\r\n textTransform: 'none',\r\n '&:hover': {\r\n backgroundColor: secondaryColorActive,\r\n cursor: 'pointer',\r\n color: '#FFF',\r\n },\r\n },\r\n buttonDisableStyle: {\r\n minWidth: '80px',\r\n minHeight: '32px',\r\n borderRadius: '10px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n backgroundColor: basicCardBgColor,\r\n margin: '10px 0px 10px 10px',\r\n paddingLeft: '10px',\r\n paddingRight: '10px',\r\n color: btnTextColor,\r\n boxShadow: '3px 3px 10px #838D9B33',\r\n border: '1px solid #E0E0E0',\r\n fontSize: h5,\r\n textTransform: 'none',\r\n },\r\n buttonStyle: {\r\n minWidth: '80px',\r\n minHeight: '32px',\r\n borderRadius: '10px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n backgroundColor: basicCardBgColor,\r\n margin: '10px 0px 10px 10px',\r\n color: btnTextColor,\r\n boxShadow: '3px 3px 10px #838D9B33',\r\n border: '1px solid #E0E0E0',\r\n fontSize: h5,\r\n textTransform: 'none',\r\n '&:hover': {\r\n cursor: 'pointer',\r\n backgroundColor: '#3333',\r\n color: '#FFF',\r\n },\r\n },\r\n textField: {\r\n margin: '10px 0px',\r\n border: '1px solid #000',\r\n '& .MuiInput-underline:before': {\r\n border: 'none',\r\n },\r\n '& .MuiInput-underline:after': {\r\n border: 'none',\r\n },\r\n '& .MuiInput-underline:hover:not(.mui-disabled):before': {\r\n border: 'none',\r\n },\r\n '& .MuiFormHelperText-root': {display: 'none'},\r\n '& .MuiInputBase-input': {\r\n lineHeight: '40px',\r\n height: '40px',\r\n padding: '0px 0px 0px 10px',\r\n },\r\n },\r\n }),\r\n);\r\n\r\ninterface INewUser {\r\n name?: string;\r\n phoneNumber?: string;\r\n email?: string;\r\n title?: string;\r\n}\r\n\r\nexport const CreateUserModal: FC = React.memo((props: PropsFromParent) => {\r\n const [newUser, setNewUser] = useState(undefined);\r\n const selectedOrganizationId = useSelector(\r\n (state: AppState) => state.organizationReducer.organization?.organizationId,\r\n );\r\n const dispatch = useDispatch();\r\n const classes = CreateUserModalStyles();\r\n\r\n const handleNameChanged = (e: string) => {\r\n setNewUser({...newUser, name: e});\r\n };\r\n const handleEmailChanged = (e: string) => {\r\n setNewUser({...newUser, email: e});\r\n };\r\n const handlePhonenumberChanged = (e: string) => {\r\n setNewUser({...newUser, phoneNumber: e});\r\n };\r\n const handleTitleChanged = (e: string) => {\r\n setNewUser({...newUser, title: e});\r\n };\r\n\r\n const createUserClicked = useCallback(() => {\r\n if (selectedOrganizationId) {\r\n const data = {\r\n user: {\r\n email: newUser?.email,\r\n name: newUser?.name,\r\n phonenumber: newUser?.phoneNumber,\r\n title: newUser?.title,\r\n isDeleted: false,\r\n } as User,\r\n organizationId: selectedOrganizationId,\r\n };\r\n dispatch(createUser(data));\r\n setNewUser(undefined);\r\n props.onClose();\r\n }\r\n }, [newUser, selectedOrganizationId, dispatch, props]);\r\n\r\n const disableButton = () => {};\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n \r\n {localized('Close')}\r\n \r\n \r\n {localized('CreateUser')}\r\n \r\n
\r\n
\r\n );\r\n});\r\n","import {\r\n Button,\r\n createStyles,\r\n Dialog,\r\n DialogActions,\r\n DialogContent,\r\n DialogContentText,\r\n DialogTitle,\r\n makeStyles,\r\n Theme,\r\n} from '@material-ui/core';\r\nimport React, {useCallback, useState} from 'react';\r\nimport {useDispatch, useSelector} from 'react-redux';\r\nimport {IUser} from '../../../api/api';\r\nimport deleteIcon from '../../../assets/icons/delete.svg';\r\nimport {localized} from '../../../i18n/i18n';\r\nimport {deleteUserFromOrganization} from '../../../state/features/user/operation';\r\nimport {AppState} from '../../../state/store';\r\n\r\nexport const DeleteUserFromOrganizationButtonStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n button: {cursor: 'pointer'},\r\n }),\r\n);\r\n\r\ninterface DeleteUserFromOrganizationButtonProps {\r\n user: IUser;\r\n}\r\n\r\nexport const DeleteUserFromOrganizationButton = React.memo((props: DeleteUserFromOrganizationButtonProps) => {\r\n const classes = DeleteUserFromOrganizationButtonStyles();\r\n const organizationId = useSelector((state: AppState) => state.organizationReducer.organizationId);\r\n const dispatch = useDispatch();\r\n const [open, setOpen] = useState(false);\r\n const handleClickOpen = () => {\r\n setOpen(true);\r\n };\r\n const handleClose = () => {\r\n setOpen(false);\r\n };\r\n const confirmDeleteUser = useCallback(() => {\r\n if (props.user && props.user.id && organizationId) {\r\n dispatch(deleteUserFromOrganization({userId: props.user.id, organizationId}));\r\n }\r\n handleClose();\r\n }, [props.user, organizationId, dispatch]);\r\n\r\n return (\r\n <>\r\n
\r\n \"firm-icon\"\r\n
\r\n \r\n \r\n {localized('RemoveUser')}\r\n \r\n \r\n \r\n {localized('AreYouSureYouWantToRemove') + ' ' + props.user.name + ' ' + localized('FromTheOrganization') + '?'}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n});\r\n","import {Tooltip} from '@material-ui/core';\r\nimport MailOutline from '@material-ui/icons/MailOutline';\r\nimport React, {FC, useCallback, useMemo} from 'react';\r\nimport {useDispatch} from 'react-redux';\r\nimport {User} from '../../../api/api';\r\nimport {localized} from '../../../i18n/i18n';\r\nimport {resendInvitationEmail} from '../../../state/features/user/operation';\r\n\r\ninterface Props {\r\n user: User;\r\n}\r\nexport const ResendInvitationButton: FC = ({user}) => {\r\n const dispatch = useDispatch();\r\n const resendMailDisabled = user.inviteAccepted != null;\r\n\r\n const mailIconStyle: React.CSSProperties = useMemo(() => {\r\n return {\r\n opacity: resendMailDisabled ? 0.5 : 1,\r\n cursor: resendMailDisabled ? '' : 'pointer',\r\n };\r\n }, [resendMailDisabled]);\r\n\r\n const handleResendMail = useCallback(() => {\r\n if (resendMailDisabled) return;\r\n\r\n dispatch(resendInvitationEmail(user));\r\n }, [user, resendMailDisabled, dispatch]);\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n","import React, {FC, useEffect, useState} from 'react';\r\nimport {useSelector} from 'react-redux';\r\nimport {IUser, User} from '../../../api/api';\r\nimport {localized} from '../../../i18n/i18n';\r\nimport {AppState} from '../../../state/store';\r\nimport {ScanEnergyTable} from '../table/table';\r\nimport {DeleteUserFromOrganizationButton} from './delete-user-from-organization-button';\r\nimport {ResendInvitationButton} from './resend-invitation-button';\r\n\r\nconst invoiceTableColumnSizes = () => [30, 50, 30, 20, 30, 30, 10];\r\nconst generateColumnHeaders = () => [\r\n localized('Name'),\r\n localized('Email'),\r\n localized('PhoneNumber'),\r\n localized('Title'),\r\n localized('InviteSent'),\r\n localized('InviteAccepted'),\r\n ' ',\r\n];\r\n\r\nconst keysToRender = [\r\n 'name',\r\n 'email',\r\n 'phonenumber',\r\n 'title',\r\n 'inviteSent',\r\n 'inviteAccepted',\r\n 'deleteButton',\r\n 'resendInvitationButton',\r\n] as (keyof User)[];\r\n\r\ninterface PropsFromParent {\r\n minWidth: number;\r\n}\r\n\r\nexport const UserManagementTable: FC = React.memo(({minWidth}) => {\r\n const userOrganizations = useSelector((state: AppState) => state.userReducer.userOrganizations);\r\n const [columnSizes] = useState(invoiceTableColumnSizes());\r\n const [columnHeaders] = useState(generateColumnHeaders());\r\n const [items, setItems] = useState([]);\r\n\r\n useEffect(() => {\r\n const itemsToUse: UserOrganizationsTableItem[] = [];\r\n if (userOrganizations) {\r\n [...userOrganizations].forEach((elemen: UserOrganizationsTableItem) => {\r\n const elementCopy = {...elemen};\r\n elementCopy.deleteButton = ;\r\n elementCopy.resendInvitationButton = ;\r\n itemsToUse.push(elementCopy);\r\n });\r\n }\r\n setItems(itemsToUse);\r\n }, [userOrganizations, setItems]);\r\n\r\n return (\r\n <>\r\n {items && (\r\n \r\n )}\r\n \r\n );\r\n});\r\n\r\ninterface UserOrganizationsTableItem extends IUser {\r\n deleteButton?: JSX.Element;\r\n resendInvitationButton?: JSX.Element;\r\n}\r\n","import {Box, Grid} from '@material-ui/core';\r\nimport clsx from 'clsx';\r\nimport React, {FC, useCallback, useEffect, useRef, useState} from 'react';\r\nimport people from '../../../assets/icons/people.svg';\r\nimport person_add from '../../../assets/icons/person_add.svg';\r\nimport {localized} from '../../../i18n/i18n';\r\nimport {GridWithCustomBreakpoints} from '../../../styles/custom-grid-breakpoints';\r\nimport {BasicCard} from '../../../view/components/default-components/basic-card/basic-card';\r\nimport {TextButton} from '../../../view/components/default-components/buttons/text-button';\r\nimport {TitleAndSubCard} from '../../../view/components/default-components/title-and-sub-card';\r\nimport { useEconomyStyles } from '../economy/invoice-table-overview';\r\nimport {userInfoUseStyles} from '../user-info/user-info-helper';\r\nimport {CreateUserModal} from './create-user-modal';\r\nimport {UserManagementTable} from './user-management-table';\r\n\r\nexport const UserManagementCard: FC = React.memo(() => {\r\n const classes = userInfoUseStyles();\r\n const economyClasses = useEconomyStyles();\r\n const [modalOpen, setModalOpen] = useState(false);\r\n const divRef = useRef(null);\r\n const [width, setWidth] = useState(divRef.current?.clientWidth || 1000);\r\n\r\n const onCreateAccountClicked = useCallback(() => {\r\n setModalOpen(modalOpen ? false : true);\r\n }, [modalOpen, setModalOpen]);\r\n\r\n // handles scroll bar, to align tableheader and tablerow\r\n useEffect(() => {\r\n const handler = () => {\r\n if (divRef && divRef.current) {\r\n const w = divRef.current.clientWidth;\r\n\r\n // Set the minWidth, according to element width - 42px equals icon width with margin\r\n if (w >= 1000 && width !== w) {\r\n setWidth(w - 42);\r\n }\r\n }\r\n };\r\n\r\n handler();\r\n window.addEventListener('resize', handler);\r\n return () => window.removeEventListener('resize', handler);\r\n // eslint-disable-next-line\r\n }, [width, divRef]);\r\n\r\n return (\r\n \r\n \r\n \r\n \"firm-icon\"\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \"firm-icon\"\r\n {localized('CreateUser')}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n );\r\n});\r\n","import {Box, createStyles, makeStyles, Theme, Typography} from '@material-ui/core';\r\nimport clsx from 'clsx';\r\nimport React, {useEffect, useState} from 'react';\r\nimport {useDispatch, useSelector} from 'react-redux';\r\nimport {useLayoutStyles} from '../../../app-routes';\r\nimport {localized} from '../../../i18n/i18n';\r\nimport {getOrganizationById} from '../../../state/features/organization/operation';\r\nimport {getUser, getUsersByOrganizationId, SetUserActive} from '../../../state/features/user/operation';\r\nimport {AppState} from '../../../state/store';\r\nimport {h5} from '../../../styles/font-size-constants';\r\nimport {PageContentContainer} from '../../../view/components/default-components/page-container/page-content-container';\r\nimport {PageHeader} from '../../../view/components/default-components/page-header.tsx/page-header';\r\nimport {PageTitle} from '../../../view/components/default-components/page-title/page-title';\r\nimport {UserInfoCard} from '../../components/user-info/user-info-card';\r\nimport {UserOrganizationCard} from '../../components/user-info/user-organization-card';\r\nimport { UserManagementCard } from '../../components/user-management/user-management-card';\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n subText: {\r\n fontSize: h5,\r\n margin: '0 0 0 16px',\r\n },\r\n }),\r\n);\r\n\r\nexport const UserInfo = React.memo(() => {\r\n const classes = useStyles();\r\n const dispatch = useDispatch();\r\n const layoutClasses = useLayoutStyles();\r\n const organizationId = useSelector((state: AppState) => state.organizationReducer.organization?.organizationId);\r\n \r\n useEffect(() => {\r\n dispatch(SetUserActive(true));\r\n return () => {\r\n dispatch(SetUserActive(false));\r\n };\r\n }, [dispatch]);\r\n const [accountNum] = useState();\r\n useEffect(() => {\r\n dispatch(getUser());\r\n }, [dispatch]);\r\n useEffect(() => {\r\n dispatch(getUsersByOrganizationId(organizationId));\r\n }, [dispatch, organizationId]);\r\n useEffect(() => {\r\n if (accountNum) {\r\n dispatch(getOrganizationById(accountNum));\r\n }\r\n }, [accountNum, dispatch]);\r\n\r\n return (\r\n \r\n \r\n \r\n {localized('UserInformationDefaultText')}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n});\r\n","import {useRouteMatch, Switch, Route} from 'react-router-dom';\r\nimport {UserInfo} from './user-info';\r\nimport React, {FC} from 'react';\r\n\r\nexport const UserInfoRoute: FC = React.memo(() => {\r\n let match = useRouteMatch();\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n});\r\n","import React, {FC} from 'react';\r\nimport {makeStyles, Theme, createStyles} from '@material-ui/core/styles';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n display: 'flex',\r\n justifyContent: 'center',\r\n },\r\n }),\r\n);\r\n\r\nexport const BasicSpinner: FC = React.memo(() => {\r\n const classes = useStyles();\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n});\r\n","import {Backdrop} from '@material-ui/core';\r\nimport {createStyles, makeStyles, Theme} from '@material-ui/core/styles';\r\nimport React, {FC} from 'react';\r\nimport {useSelector} from 'react-redux';\r\nimport {AppState} from '../../../../state/store';\r\nimport {BasicSpinner} from './basic-spinner';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n backdrop: {\r\n zIndex: theme.zIndex.drawer + 1,\r\n color: '#fff',\r\n },\r\n }),\r\n);\r\n\r\nexport const OverlaySpinner: FC = React.memo(() => {\r\n const classes = useStyles();\r\n const showOverlaySpinner = useSelector((store: AppState) => store.webAppReducer.showOverlaySpinner);\r\n return (\r\n \r\n \r\n \r\n );\r\n});\r\n","import React from 'react';\r\n\r\nexport const GetIcon = (srcUrl: string, width: number, height: number) => {\r\n return {\"logo\"};\r\n};\r\n","import {BottomNavigation, BottomNavigationAction, createStyles, makeStyles, Theme, withStyles} from '@material-ui/core';\r\nimport {Menu} from '@material-ui/icons';\r\nimport React, {FC, useEffect, useState} from 'react';\r\nimport {useDispatch} from 'react-redux';\r\nimport {useHistory, useLocation} from 'react-router-dom';\r\nimport {useLayoutStyles} from '../../../app-routes';\r\nimport DashboardIconGrey from '../../../assets/icons/menu-icons/dashboard_grey.png';\r\nimport DashboardIconWhite from '../../../assets/icons/menu-icons/dashboard_white.png';\r\nimport EconomyIconGrey from '../../../assets/icons/menu-icons/economy_grey.png';\r\nimport EconomyIconWhite from '../../../assets/icons/menu-icons/economy_white.png';\r\nimport EnergyConsumptionIconGrey from '../../../assets/icons/menu-icons/energyconsumption_grey.png';\r\nimport EnergyConsumptionIconWhite from '../../../assets/icons/menu-icons/energyconsumption_white.png';\r\nimport GreenOptimizationIconGrey from '../../../assets/icons/menu-icons/greenoptimization_grey.png';\r\nimport GreenOptimizationIconWhite from '../../../assets/icons/menu-icons/greenoptimization_white.png';\r\nimport {toggleDrawer} from '../../../state/features/webapp/webapp-slice';\r\nimport {routes} from '../../../state/routes';\r\nimport {basicCardBoxShadow, navigationIconColor, primaryColor} from '../../../styles/color-constants';\r\nimport {GetIcon} from '../../../utilities/platform-helpers/icon-helper';\r\n\r\nconst StyledBottomNavigation = withStyles({\r\n root: {\r\n position: 'fixed',\r\n bottom: '0px',\r\n left: 0,\r\n width: 'calc(100vw)',\r\n boxShadow: `0px -4px 6pt ${basicCardBoxShadow}`,\r\n alignItems: 'center',\r\n justifyContent: 'space-between',\r\n overflow: 'hidden',\r\n },\r\n // THIS might be used laster\r\n // root: {\r\n // position: 'fixed',\r\n // bottom: '0px',\r\n // left: 0,\r\n // width: 'calc(100vw - 70px)',\r\n // boxShadow: `0px -4px 6pt ${basicCardBoxShadow}`,\r\n // alignItems: 'center',\r\n // justifyContent: 'flex-start',\r\n // overflowY: 'hidden',\r\n // backgroundImage: `linear-gradient(to right, white, white),\r\n // linear-gradient(to right, white, white),\r\n // linear-gradient(to right, rgba(0, 0, 0, 0.25), rgba(255, 255, 255, 0)),\r\n // linear-gradient(to left, rgba(0, 0, 0, 0.25), rgba(255, 255, 255, 0))`,\r\n // backgroundPosition: 'left center, right center, left center, right center',\r\n // backgroundRepeat: 'no-repeat',\r\n // backgroundColor: 'white',\r\n // backgroundSize: '20px 100%, 20px 100%, 10px 100%, 10px 100%',\r\n // backgroundAttachment: 'local, local, scroll, scroll',\r\n // },\r\n})(BottomNavigation);\r\n\r\nconst StyledBottomNavigationAction = withStyles({\r\n root: {\r\n padding: '15px 5px 15px 5px',\r\n minWidth: 60,\r\n flex: 0,\r\n '&$selected': {\r\n padding: '15px 5px 15px 5px',\r\n '& .MuiBottomNavigationAction-label': {\r\n display: 'none',\r\n },\r\n '& .MuiBottomNavigationAction-wrapper': {\r\n height: 35,\r\n backgroundColor: primaryColor,\r\n },\r\n },\r\n '& .MuiBottomNavigationAction-wrapper': {\r\n height: 35,\r\n borderRadius: 10,\r\n },\r\n },\r\n selected: {},\r\n})(BottomNavigationAction);\r\n\r\nconst StyledMenuBottomNavigationAction = withStyles({\r\n root: {\r\n padding: '15px 5px 15px 5px',\r\n minWidth: 60,\r\n flex: 0,\r\n '&$selected': {\r\n padding: '15px 5px 15px 5px',\r\n '& .MuiBottomNavigationAction-label': {\r\n display: 'none',\r\n },\r\n '& .MuiBottomNavigationAction-wrapper': {\r\n height: 35,\r\n backgroundColor: 'none',\r\n },\r\n },\r\n '& .MuiBottomNavigationAction-wrapper': {\r\n height: 35,\r\n borderRadius: 10,\r\n },\r\n },\r\n selected: {},\r\n})(BottomNavigationAction);\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n menuSelected: {\r\n color: 'white',\r\n fontSize: 30,\r\n },\r\n menu: {\r\n color: navigationIconColor,\r\n fontSize: 30,\r\n },\r\n menuIconContainer: {\r\n background: 'none',\r\n },\r\n // THIS might be used later\r\n // menuIconContainer: {\r\n // position: 'absolute',\r\n // bottom: 0,\r\n // right: 0,\r\n // padding: '13px 20px',\r\n // display: 'flex',\r\n // justifyContent: 'flex-end',\r\n // backgroundColor: 'white',\r\n // flex: 1,\r\n // [theme.breakpoints.up('md')]: {\r\n // display: 'none',\r\n // },\r\n // },\r\n bottomDrawerContainer: {\r\n zIndex: 1000,\r\n left: 0,\r\n width: 'calc(100vw)',\r\n bottom: 0,\r\n position: 'fixed',\r\n },\r\n }),\r\n);\r\n\r\nconst AppDrawer: FC = React.memo(() => {\r\n const [item, setItem] = useState('');\r\n let history = useHistory();\r\n const classes = useStyles();\r\n let location = useLocation();\r\n const dispatch = useDispatch();\r\n const layoutClasses = useLayoutStyles();\r\n\r\n useEffect(() => {\r\n setItem(location.pathname);\r\n }, [location]);\r\n\r\n const onChangeEvent = (event: React.ChangeEvent<{}>, newValue: string) => {\r\n history.push(`${newValue}`);\r\n setItem(newValue);\r\n };\r\n\r\n const bottomNavigationIconHandler = (\r\n route: string,\r\n selectedIcon: string,\r\n notSelectedIcon: string,\r\n width = 25,\r\n height = 25,\r\n ) => {\r\n const isRoute = history.location;\r\n\r\n const icon = isRoute.pathname === route ? selectedIcon : notSelectedIcon;\r\n return GetIcon(icon, width, height);\r\n };\r\n\r\n const toggleDrawerOnClick = () => {\r\n dispatch(toggleDrawer());\r\n };\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n }\r\n onClick={toggleDrawerOnClick}\r\n />\r\n {/* \r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n\r\n {isAdmin() && (\r\n \r\n }\r\n />\r\n )}\r\n {isGlobalAdmin() && (\r\n \r\n }\r\n />\r\n )} */}\r\n \r\n
\r\n );\r\n});\r\n\r\nexport default AppDrawer;\r\n","import {createStyles, makeStyles, Popper, Theme} from '@material-ui/core';\r\nimport {List} from 'react-virtualized';\r\nimport KeyboardArrowDown from '@material-ui/icons/KeyboardArrowDown';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport clsx from 'clsx';\r\nimport React, {FC, useEffect, useState} from 'react';\r\nimport { checkboxFilterBg, secondaryTextColor } from '../../../../styles/color-constants';\r\nimport {CssTextField} from '../../../components/default-components/text-fields/basic-text-field';\r\n\r\nconst ListboxComponent = React.forwardRef((props: any, ref: any) => {\r\n const {children, role, ...other} = props;\r\n const itemCount = Array.isArray(children) ? children.length : 0;\r\n const itemSize = 42;\r\n const renderRow = (renderRowProps: any) => {\r\n const style = {...renderRowProps.style, overflow: 'hidden'}\r\n return React.cloneElement(children[renderRowProps.index], {\r\n style: style,\r\n });\r\n };\r\n\r\n return (\r\n
\r\n
\r\n \r\n
\r\n
\r\n );\r\n});\r\n\r\nconst popper = {\r\n width: \"fit-content\"\r\n }\r\nconst PopperMy = (props: any) => {\r\n return ;\r\n};\r\n\r\ninterface PropsFromParent {\r\n onChange: (item: DropdownOption) => void;\r\n items: DropdownOption[];\r\n label: string;\r\n value: DropdownOption | undefined;\r\n hideUnderline?: boolean;\r\n inputClassName?: string;\r\n}\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n dropdownContainer: {\r\n display: 'contents',\r\n width: 'fit-content'\r\n },\r\n }),\r\n);\r\n\r\nexport const EmptyDropdownOption: DropdownOption = {label: '', value: ''};\r\n\r\nexport class DropdownOption {\r\n label: string;\r\n value: any;\r\n constructor(label: string, value: any) {\r\n this.label = label;\r\n this.value = value;\r\n }\r\n}\r\n\r\nconst listBoxProps = {\r\n style: {\r\n background: checkboxFilterBg,\r\n border: '1px solid ' + secondaryTextColor,\r\n width: 250,\r\n height: 220,\r\n overflow: 'hidden',\r\n },\r\n};\r\nexport const BasicDropdown: FC = React.memo(\r\n ({onChange, items, label, value, hideUnderline, inputClassName}) => {\r\n const classes = useStyles();\r\n const renderInput = (params: any) => (\r\n \r\n );\r\n\r\n const [dropdownOptions, setDropdownOptions] = useState([]);\r\n\r\n // Add an item option in case of\r\n useEffect(() => {\r\n let options = items;\r\n\r\n if (!options || options.length < 1) {\r\n options.unshift(EmptyDropdownOption);\r\n }\r\n\r\n setDropdownOptions(options);\r\n }, [items]);\r\n\r\n const onChangeLocal = (event: any, newValue: any) => {\r\n onChange(newValue);\r\n };\r\n\r\n const getOptionLabel = (option: DropdownOption) => {\r\n return option.label;\r\n };\r\n\r\n const getOptionSelected = (option: DropdownOption, valueOption: DropdownOption) =>\r\n option.value === valueOption.value;\r\n\r\n return (\r\n }\r\n />\r\n );\r\n },\r\n);\r\n","import {createStyles, makeStyles, Theme} from '@material-ui/core';\r\nimport {createSelector} from '@reduxjs/toolkit';\r\nimport React, {FC, useCallback} from 'react';\r\nimport {useDispatch, useSelector} from 'react-redux';\r\nimport {IOrganizationDto} from '../../../api/api';\r\nimport {SelectOrganization, setSelectedOrganization} from '../../../state/features/organization/organization-slice';\r\nimport {AppState} from '../../../state/store';\r\nimport {OrgIdKey} from '../../../utilities/constants';\r\nimport {\r\n BasicDropdown,\r\n DropdownOption,\r\n} from '../../../view/components/default-components/baisc-dropdown/option-dropdown';\r\nimport {BasicCard} from '../../../view/components/default-components/basic-card/basic-card';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n container: {\r\n marginBottom: '70px',\r\n flexDirection: 'row',\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n },\r\n\r\n organizationDropDown: {\r\n maxWidth: 260,\r\n minWidth: 250,\r\n [theme.breakpoints.down('xs')]: {\r\n minWidth: 135,\r\n },\r\n\r\n margin: 0,\r\n padding: '0px 20px 0px 20px',\r\n flex: 1,\r\n display: 'flex',\r\n alignItems: 'center',\r\n flexGrow: 1,\r\n },\r\n dropdownContainer: {\r\n flex: 1,\r\n },\r\n inputContainer: {\r\n margin: 0,\r\n },\r\n }),\r\n);\r\n\r\nconst convertOrganizationToDropdownOption = (organization: IOrganizationDto) => {\r\n return new DropdownOption(organization.accountName ?? '', organization.organizationId);\r\n};\r\n\r\nconst OrganizationOptionSelector = createSelector(\r\n (state: AppState): IOrganizationDto[] => state.organizationReducer.userOrganizations,\r\n (orgs: IOrganizationDto[]): DropdownOption[] => orgs.map(convertOrganizationToDropdownOption),\r\n);\r\n\r\nconst OrganizationDropdown: FC = React.memo((props) => {\r\n const classes = useStyles();\r\n const dispatch = useDispatch();\r\n\r\n const options = useSelector(OrganizationOptionSelector);\r\n const currentOrganization = useSelector((state: AppState) => state.organizationReducer.organization);\r\n\r\n const setOrganization = useCallback(\r\n (orgOption: DropdownOption) => {\r\n localStorage.setItem(OrgIdKey, orgOption.value);\r\n const payload: SelectOrganization = {\r\n organizationId: orgOption.value,\r\n previousOrganizationId: currentOrganization?.organizationId,\r\n };\r\n dispatch(setSelectedOrganization(payload));\r\n },\r\n [currentOrganization, dispatch],\r\n );\r\n\r\n return (\r\n \r\n o.value === currentOrganization?.organizationId)}\r\n inputClassName={classes.inputContainer}\r\n />\r\n \r\n );\r\n});\r\n\r\nexport default OrganizationDropdown;\r\n","import {createStyles, Hidden, makeStyles, Theme} from '@material-ui/core';\r\nimport clsx from 'clsx';\r\nimport React, {FC} from 'react';\r\nimport { useHistory } from 'react-router-dom';\r\nimport {useLayoutStyles} from '../../../app-routes';\r\nimport nrgi_scan_logo from '../../../assets/NRGiScanGreen.png';\r\nimport { routes } from '../../../state/routes';\r\nimport OrganizationDropdown from '../../../view-scan-energi/components/organization/organization-dropdown';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n container: {\r\n flexDirection: 'row',\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n flexWrap: 'wrap',\r\n },\r\n\r\n organizationDropDown: {\r\n maxWidth: 200,\r\n margin: '16px',\r\n padding: '0px 20px 0px 20px',\r\n flex: 1,\r\n },\r\n dropdownContainer: {\r\n flex: 1,\r\n },\r\n\r\n headerLogo: {\r\n // padding: '50px 0 0 0px',\r\n width: 115,\r\n },\r\n cardWidth: {display: 'flex', alignItems: 'center', marginBottom: theme.spacing(1.5)},\r\n }),\r\n);\r\n\r\nconst HeaderBar: FC = React.memo((props) => {\r\n const classes = useStyles();\r\n const layoutClasses = useLayoutStyles();\r\n let history = useHistory();\r\n const goToHomePage = () => {\r\n history.push(routes.dashboard);\r\n };\r\n\r\n return (\r\n \r\n
\r\n
\r\n \"Logo\"\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n );\r\n});\r\n\r\nexport default HeaderBar;\r\n","import {Box, createStyles, Grid, makeStyles, Theme} from '@material-ui/core';\r\nimport AccountCircleOutlinedIcon from '@material-ui/icons/AccountCircleOutlined';\r\nimport ExitToAppIcon from '@material-ui/icons/ExitToApp';\r\nimport clsx from 'clsx';\r\nimport React, {FC, useContext} from 'react';\r\nimport {useSelector} from 'react-redux';\r\nimport {useHistory} from 'react-router-dom';\r\nimport {useLayoutStyles} from '../../../app-routes';\r\nimport ngriScanLogo from '../../../assets/NRGiScanGreen.png';\r\nimport {useAuth} from '../../../auth/general-auth-provider';\r\nimport {localized} from '../../../i18n/i18n';\r\nimport {routes} from '../../../state/routes';\r\nimport {AppState} from '../../../state/store';\r\nimport {primaryColor, secondaryTextColor} from '../../../styles/color-constants';\r\nimport {h4} from '../../../styles/font-size-constants';\r\nimport {BasicCardButton} from '../../../view-scan-energi/components/basic-card-button';\r\nimport OrganizationDropdown from '../../../view-scan-energi/components/organization/organization-dropdown';\r\nimport {BasicCard} from '../../components/default-components/basic-card/basic-card';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n organizationDropDownMargin: {\r\n marginLeft: '16px',\r\n },\r\n organizationHeaderInfo: {\r\n minWidth: 200,\r\n justifyContent: 'flex-start',\r\n whiteSpace: 'nowrap',\r\n padding: '10px 20px 10px 20px',\r\n },\r\n organizationHeaderInfoData: {\r\n fontSize: '14',\r\n fontWeight: 'bold',\r\n },\r\n user: {\r\n fontSize: h4,\r\n color: secondaryTextColor,\r\n fontWeight: 'bold',\r\n margin: '10px',\r\n },\r\n iconBox: {\r\n margin: '10px',\r\n },\r\n icon: {\r\n height: '25px',\r\n width: '25px',\r\n color: secondaryTextColor,\r\n },\r\n iconWhite: {\r\n height: '25px',\r\n width: '25px',\r\n color: '#fff',\r\n },\r\n headerLogo: {\r\n maxWidth: 175,\r\n [theme.breakpoints.down('xs')]: {\r\n width: 100,\r\n },\r\n\r\n cursor: 'pointer',\r\n },\r\n cardWidth: {\r\n width: '300px',\r\n },\r\n userContainer: {\r\n // To align with body\r\n paddingRight: theme.spacing(1),\r\n },\r\n }),\r\n);\r\n\r\nexport const PageHeaderContext = React.createContext({} as any);\r\nexport const UsernameHeaderContext = React.createContext({} as any);\r\nexport const usePageHeader = () => useContext(PageHeaderContext);\r\nexport const useUsernameHeader = () => useContext(UsernameHeaderContext);\r\n\r\nexport const HeaderBar: FC = React.memo(() => {\r\n const classes = useStyles();\r\n const {logout} = useAuth();\r\n const layoutClasses = useLayoutStyles();\r\n let history = useHistory();\r\n\r\n const logOut = () => logout({returnTo: window.location.origin});\r\n const goToUserInfoPage = () => {\r\n history.push(routes.userInfo);\r\n };\r\n const goToHomePage = () => {\r\n history.push(routes.dashboard);\r\n };\r\n const {userPageActive, user} = useSelector((state: AppState) => state.userReducer);\r\n const orgnanization = useSelector((state: AppState) => state.organizationReducer.organization);\r\n\r\n return (\r\n \r\n \r\n
\r\n \"Logo\"\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n {localized('CustomerNo') + ':\\u00A0'}\r\n {orgnanization?.accountNum}\r\n {/* TODO: We migth get debitorNo at some point\r\n \r\n {localized('DebitorNo') + ': '}\r\n \r\n {'000059194134'} */}\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n {user?.name ? user.name : user?.title}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n );\r\n});\r\n","import {ListItem, ListItemIcon, ListItemText, createStyles, makeStyles, Theme, Badge} from '@material-ui/core';\r\nimport React, {FC} from 'react';\r\nimport {Link} from 'react-router-dom';\r\nimport {withStyles} from '@material-ui/core/styles';\r\nimport {\r\n primaryColor,\r\n sidebarTextColor,\r\n sidebarItemSelectedColor,\r\n sidebarIconBorder,\r\n} from '../../../styles/color-constants';\r\nimport {h5} from '../../../styles/font-size-constants';\r\nimport {useDispatch, useSelector} from 'react-redux';\r\nimport {toggleDrawer} from '../../../state/features/webapp/webapp-slice';\r\nimport {AppState} from '../../../state/store';\r\nimport {useCallback} from 'react';\r\n\r\ninterface PropsFromParent {\r\n selected: boolean;\r\n icon?: JSX.Element;\r\n iconSelected?: JSX.Element;\r\n identifier: any;\r\n linkTo: string;\r\n text?: string;\r\n onMenuItemClicked?: (identifier: string) => void;\r\n unReadNotification?: boolean;\r\n}\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n fixFirefox: {\r\n color: sidebarTextColor,\r\n textDecoration: 'none',\r\n },\r\n icon: {\r\n minWidth: 50,\r\n maxWidth: 50,\r\n margin: '0 5px 0 0',\r\n color: sidebarIconBorder,\r\n tintColor: sidebarIconBorder,\r\n },\r\n }),\r\n);\r\n\r\nconst StyledListItem = withStyles({\r\n root: {\r\n margin: '5px 0px',\r\n padding: '10px 10px',\r\n borderRadius: `10px`,\r\n '&$selected': {\r\n borderRadius: `10px`,\r\n backgroundColor: primaryColor,\r\n color: sidebarItemSelectedColor,\r\n '& .makeStyles-icon-32': {\r\n color: sidebarItemSelectedColor,\r\n },\r\n '& .WithStyles(ForwardRef(ListItem))-root-33.WithStyles(ForwardRef(ListItem))-selected-34': {\r\n color: sidebarItemSelectedColor,\r\n },\r\n '&:hover': {\r\n borderRadius: `10px`,\r\n backgroundColor: primaryColor,\r\n color: sidebarItemSelectedColor,\r\n },\r\n },\r\n },\r\n selected: {},\r\n})(ListItem);\r\n\r\nconst StyledBadge = withStyles({\r\n badge: {\r\n position: 'relative',\r\n left: '-45%',\r\n },\r\n})(Badge);\r\n\r\nconst StyledListItemText = withStyles({\r\n root: {\r\n marginLeft: '10px',\r\n whiteSpace: 'nowrap',\r\n '& span': {\r\n fontSize: h5,\r\n },\r\n },\r\n})(ListItemText);\r\n\r\nexport const DrawerItem: FC = React.memo((props) => {\r\n const classes = useStyles();\r\n const dispatch = useDispatch();\r\n const currentToggleState = useSelector((state: AppState) => state.webAppReducer.open);\r\n const onMenuItemClicked = useCallback(() => {\r\n props.onMenuItemClicked && props.onMenuItemClicked(props.identifier);\r\n if (currentToggleState) {\r\n dispatch(toggleDrawer());\r\n }\r\n }, [dispatch, currentToggleState, props]);\r\n\r\n // if there is no unread notification, then the badge is invisible\r\n const invisible = props.unReadNotification ? false : true;\r\n\r\n return (\r\n \r\n \r\n \r\n {props.selected ? props.iconSelected : props.icon}\r\n \r\n \r\n \r\n \r\n );\r\n});\r\n","import {createStyles, Drawer, makeStyles, Theme} from '@material-ui/core';\r\nimport List from '@material-ui/core/List';\r\nimport AccountCircleOutlinedIcon from '@material-ui/icons/AccountCircleOutlined';\r\nimport ExitToAppIcon from '@material-ui/icons/ExitToApp';\r\nimport clsx from 'clsx';\r\nimport React, {FC} from 'react';\r\nimport {useDispatch, useSelector} from 'react-redux';\r\nimport {useLocation} from 'react-router-dom';\r\nimport {useLayoutStyles} from '../../../app-routes';\r\nimport ContactIconGrey from '../../../assets/icons/menu-icons/contact_grey.png';\r\nimport ContractIconGrey from '../../../assets/icons/menu-icons/contract_grey.png';\r\nimport ContractIconWhite from '../../../assets/icons/menu-icons/contract_white.png';\r\nimport DashboardIconGrey from '../../../assets/icons/menu-icons/dashboard_grey.png';\r\nimport DashboardIconWhite from '../../../assets/icons/menu-icons/dashboard_white.png';\r\nimport DocumentsIconGrey from '../../../assets/icons/menu-icons/documents_grey.png';\r\nimport DocumentsIconWhite from '../../../assets/icons/menu-icons/documents_white.png';\r\nimport EconomyIconGrey from '../../../assets/icons/menu-icons/economy_grey.png';\r\nimport EconomyIconWhite from '../../../assets/icons/menu-icons/economy_white.png';\r\nimport EnergyConsumptionIconGrey from '../../../assets/icons/menu-icons/energyconsumption_grey.png';\r\nimport EnergyConsumptionIconWhite from '../../../assets/icons/menu-icons/energyconsumption_white.png';\r\nimport GreenOptimizationIconGrey from '../../../assets/icons/menu-icons/greenoptimization_grey.png';\r\nimport GreenOptimizationIconWhite from '../../../assets/icons/menu-icons/greenoptimization_white.png';\r\nimport ContactIconWhite from '../../../assets/icons/menu-icons/kontakt_hvid.png';\r\nimport MarketingMaterialGrey from '../../../assets/icons/menu-icons/marketing_material_grey.svg';\r\nimport MarketingMaterialWhite from '../../../assets/icons/menu-icons/marketing_material_white.png';\r\nimport NewsIconGrey from '../../../assets/icons/menu-icons/news_grey.png';\r\nimport NewsIconWhite from '../../../assets/icons/menu-icons/news_white.png';\r\nimport {useAuth} from '../../../auth/general-auth-provider';\r\nimport {localized} from '../../../i18n/i18n';\r\nimport {toggleDrawer} from '../../../state/features/webapp/webapp-slice';\r\nimport {routes} from '../../../state/routes';\r\nimport {AppState} from '../../../state/store';\r\nimport {navigationIconColor, sidebarIconBorder} from '../../../styles/color-constants';\r\nimport {BasicCard} from '../../components/default-components/basic-card/basic-card';\r\nimport {DrawerItem} from './drawer-item';\r\n\r\nconst drawerWidth = 270;\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n cardHover: {\r\n transition: theme.transitions.create('width', {\r\n easing: theme.transitions.easing.sharp,\r\n duration: theme.transitions.duration.leavingScreen,\r\n }),\r\n overflowX: 'hidden',\r\n width: 95,\r\n '&:hover': {\r\n width: drawerWidth,\r\n transition: theme.transitions.create('width', {\r\n easing: theme.transitions.easing.sharp,\r\n duration: theme.transitions.duration.enteringScreen,\r\n }),\r\n },\r\n position: 'absolute',\r\n zIndex: 1,\r\n },\r\n drawerIcon: {\r\n color: sidebarIconBorder,\r\n transform: 'scale(1.4)',\r\n },\r\n cardWidth: {\r\n width: '130px',\r\n paddingTop: theme.spacing(5),\r\n },\r\n drawerContainer: {\r\n padding: 10,\r\n },\r\n }),\r\n);\r\n\r\nconst useIconStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n dashboardIcon: {\r\n width: '25px',\r\n height: '22px',\r\n marginLeft: 5,\r\n },\r\n economyIcon: {\r\n width: '25px',\r\n height: '20px',\r\n marginLeft: 5,\r\n },\r\n greenOptimizationIcon: {\r\n width: '22px',\r\n height: '33px',\r\n marginLeft: 6,\r\n },\r\n energyConsumptionIcon: {\r\n width: '29px',\r\n height: '22px',\r\n marginLeft: 2,\r\n },\r\n contractsIcon: {\r\n width: '21px',\r\n height: '26px',\r\n marginLeft: 7,\r\n },\r\n documentsIcon: {\r\n width: '20px',\r\n height: '27px',\r\n marginLeft: 7,\r\n },\r\n newsIcon: {\r\n width: '29px',\r\n height: '29px',\r\n marginLeft: 2,\r\n },\r\n ebooksIcon: {\r\n width: '30px',\r\n height: '26px',\r\n marginLeft: 2,\r\n },\r\n contactIcon: {\r\n width: '25px',\r\n height: '25px',\r\n marginLeft: 5,\r\n },\r\n profileIcon: {\r\n width: '25px',\r\n height: '25px',\r\n fill: 'white',\r\n },\r\n signOutIcon: {\r\n width: '25px',\r\n height: '25px',\r\n fill: 'white',\r\n },\r\n profileIconGrey: {\r\n width: '25px',\r\n height: '25px',\r\n fill: navigationIconColor,\r\n },\r\n signOutIconGrey: {\r\n width: '25px',\r\n height: '25px',\r\n fill: navigationIconColor,\r\n },\r\n groupIconGrey: {\r\n width: '25px',\r\n height: '25px',\r\n fill: navigationIconColor,\r\n marginLeft: 5,\r\n },\r\n groupIcon: {\r\n width: '25px',\r\n height: '25px',\r\n fill: 'white',\r\n marginLeft: 5,\r\n },\r\n competitionIcon: {\r\n width: '25px',\r\n height: '30px',\r\n marginLeft: 5,\r\n },\r\n marketingMaterialIcon: {\r\n width: '30px',\r\n marginLeft: 2,\r\n },\r\n }),\r\n);\r\n\r\nconst MenuDrawer: FC = React.memo(() => {\r\n let location = useLocation();\r\n const classes = useStyles();\r\n const iconClasses = useIconStyles();\r\n const layoutClasses = useLayoutStyles();\r\n const locationBaseString = '/' + location.pathname.split('/')[1];\r\n const drawerIsOpen = useSelector((store: AppState) => store.webAppReducer.open);\r\n const dispatch = useDispatch();\r\n const {logout} = useAuth();\r\n const logOut = () => logout({returnTo: window.location.origin});\r\n\r\n const unreadMarketingMaterial = useSelector((store: AppState) => store.marketingMaterialReducer.unreadMMNotification);\r\n\r\n // Navigation list\r\n const renderDrawerList = (isDesktop = true) => {\r\n return (\r\n \r\n }\r\n iconSelected={\r\n \"Dashboard-icon-white\"\r\n }\r\n text={localized('Overview')}\r\n selected={locationBaseString === routes.dashboard}\r\n identifier={routes.dashboard}\r\n />\r\n }\r\n iconSelected={\"Creditcard-icon-white\"}\r\n text={localized('Economy')}\r\n selected={locationBaseString === routes.economy}\r\n identifier={routes.economy}\r\n />\r\n \r\n }\r\n iconSelected={\r\n \r\n }\r\n text={localized('SustainableInitiatives')}\r\n selected={locationBaseString === routes.sustainableInitiatives}\r\n identifier={routes.sustainableInitiatives}\r\n />\r\n \r\n }\r\n iconSelected={\r\n \r\n }\r\n text={localized('MarketingMaterial')}\r\n selected={locationBaseString === routes.marketingMaterial}\r\n identifier={routes.marketingMaterial}\r\n unReadNotification={unreadMarketingMaterial}\r\n />\r\n\r\n \r\n }\r\n iconSelected={\r\n \r\n }\r\n text={localized('EnergyConsumption')}\r\n selected={locationBaseString === routes.energyConsumption}\r\n identifier={routes.energyConsumption}\r\n />\r\n }\r\n iconSelected={\r\n \"Documents-icon-white\"\r\n }\r\n text={localized('Agreements')}\r\n selected={locationBaseString === routes.contracts}\r\n identifier={routes.contracts}\r\n />\r\n }\r\n iconSelected={\r\n \"Contract-icon-white\"\r\n }\r\n text={localized('Documents')}\r\n selected={locationBaseString === routes.documents}\r\n identifier={routes.documents}\r\n />\r\n }\r\n iconSelected={\"News-icon-white\"}\r\n text={localized('News')}\r\n selected={locationBaseString === routes.news}\r\n identifier={routes.news}\r\n />\r\n }\r\n iconSelected={\"Contact-icon-white\"}\r\n text={localized('Contact')}\r\n selected={locationBaseString === routes.contact}\r\n identifier={routes.contact}\r\n />\r\n {!isDesktop && }\r\n \r\n );\r\n };\r\n\r\n const AddMobileDrawerItems = () => {\r\n return (\r\n <>\r\n }\r\n iconSelected={}\r\n text={localized('Profile')}\r\n selected={locationBaseString === routes.userInfo}\r\n identifier={routes.userInfo}\r\n />\r\n }\r\n iconSelected={}\r\n text={localized('SignOut')}\r\n selected={false}\r\n identifier={''}\r\n onMenuItemClicked={logOut}\r\n />\r\n \r\n );\r\n };\r\n\r\n // Handles toggle on outside click\r\n const toggleDrawerOnClick = (reason: string) => {\r\n dispatch(toggleDrawer());\r\n };\r\n\r\n // Switch between normal navigation menu and and drawer menu\r\n return (\r\n <>\r\n
\r\n
\r\n {renderDrawerList()}\r\n
\r\n
\r\n\r\n \r\n
{renderDrawerList(false)}
\r\n \r\n \r\n );\r\n});\r\n\r\nexport default MenuDrawer;\r\n","import {createStyles, makeStyles, Theme} from '@material-ui/core';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport {useGA4React} from 'ga-4-react';\r\nimport React, {FC, useEffect} from 'react';\r\nimport {useDispatch, useSelector} from 'react-redux';\r\nimport {Route, Switch, useLocation} from 'react-router-dom';\r\nimport {useAuth} from './auth/general-auth-provider';\r\nimport NoPermissionPage from './auth/no-permission-page';\r\nimport {getOrganizationsByUserId} from './state/features/organization/operation';\r\nimport {SelectOrganization, setSelectedOrganization} from './state/features/organization/organization-slice';\r\nimport {getUser} from './state/features/user/operation';\r\nimport {routes} from './state/routes';\r\nimport {AppState} from './state/store';\r\nimport {GoogleAnalyticsKey, OrgIdKey} from './utilities/constants';\r\nimport {isTokenExpired} from './utilities/platform-helpers/auth-helper';\r\nimport {SingleNewsContentPageRoute} from './view-scan-energi/components/news/single-news-content-route';\r\nimport {SupportContact} from './view-scan-energi/components/support-contact';\r\nimport {ContactRoute} from './view-scan-energi/pages/contact/contact-route';\r\nimport {ContractsRoute} from './view-scan-energi/pages/contracts/contracts-route';\r\nimport {DashboardRoute} from './view-scan-energi/pages/dashboard/dashboard-route';\r\nimport {DocumentsRoute} from './view-scan-energi/pages/documents/documents-route';\r\nimport {EbooksRoute} from './view-scan-energi/pages/e-books/e-books-route';\r\nimport {EconomyRoute} from './view-scan-energi/pages/economy/economy-route';\r\nimport {EnergyConsumptionRoute} from './view-scan-energi/pages/energy-consumption/energy-consumption-route';\r\nimport {GreenOptimizationRoute} from './view-scan-energi/pages/green-optimization/green-optimization-route';\r\nimport {MarketingMaterialRoute} from './view-scan-energi/pages/marketing-material/marketing-material-route';\r\nimport {NewsRoute} from './view-scan-energi/pages/news/news-route';\r\nimport {UserInfoRoute} from './view-scan-energi/pages/user-info/user-info-route';\r\nimport {OverlaySpinner} from './view/components/default-components/spinner/overlay-spinner';\r\nimport AppDrawer from './view/navigation/app/app-drawer';\r\nimport AppHeaderBar from './view/navigation/app/header-bar';\r\nimport {HeaderBar} from './view/navigation/desktop/header-bar';\r\nimport MenuDrawer from './view/navigation/desktop/menu-drawer';\r\n\r\nexport const useLayoutStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n mobileOnly: {\r\n [theme.breakpoints.up('md')]: {\r\n display: 'none',\r\n },\r\n },\r\n desktopOnly: {\r\n [theme.breakpoints.down('sm')]: {\r\n display: 'none',\r\n },\r\n },\r\n desktopAndLargeMobile: {\r\n [theme.breakpoints.down('xs')]: {\r\n display: 'none',\r\n },\r\n },\r\n smallMobileOnly: {\r\n [theme.breakpoints.up('sm')]: {\r\n display: 'none',\r\n },\r\n },\r\n bodyContent: {\r\n flex: 1,\r\n [theme.breakpoints.up('md')]: {\r\n paddingTop: theme.spacing(5),\r\n },\r\n },\r\n appContent: {\r\n overflowX: 'auto',\r\n [theme.breakpoints.down('sm')]: {\r\n padding: theme.spacing(4),\r\n },\r\n [theme.breakpoints.up('md')]: {\r\n padding: theme.spacing(8),\r\n },\r\n },\r\n }),\r\n);\r\n\r\nexport const AppRoutes: FC = React.memo(() => {\r\n const classes = useLayoutStyles();\r\n const token = useSelector((store: AppState) => store.authReducer.token);\r\n const {role} = useAuth();\r\n const organizations = useSelector((state: AppState) => state.organizationReducer.userOrganizations);\r\n const ga = useGA4React(GoogleAnalyticsKey);\r\n const location = useLocation();\r\n const dispatch = useDispatch();\r\n\r\n // Log page view to GA\r\n useEffect(() => {\r\n if (ga) {\r\n ga.pageview(location.pathname + location.search);\r\n }\r\n }, [ga, location]);\r\n\r\n // Get organizations and user after token changes\r\n useEffect(() => {\r\n if (token) {\r\n dispatch(getOrganizationsByUserId());\r\n dispatch(getUser());\r\n }\r\n }, [dispatch, token]);\r\n\r\n // Select org id and update local storage\r\n useEffect(() => {\r\n if (organizations.length > 0) {\r\n const id = localStorage.getItem(OrgIdKey);\r\n let idNumber = id ? +id : 0;\r\n\r\n // Set first from list if number from local storage isn't in list\r\n if (organizations.findIndex((org) => org.organizationId === idNumber) === -1) {\r\n idNumber = organizations[0].organizationId;\r\n }\r\n\r\n const payload: SelectOrganization = {\r\n organizationId: idNumber,\r\n previousOrganizationId: undefined,\r\n };\r\n\r\n dispatch(setSelectedOrganization(payload));\r\n\r\n if (id && id.length > 0) {\r\n localStorage.setItem(OrgIdKey, id.toString());\r\n } else {\r\n localStorage.setItem(OrgIdKey, organizations[0].organizationId.toString());\r\n }\r\n }\r\n }, [organizations, dispatch]);\r\n\r\n // Only show page if user is authenticated and has a role\r\n if (!token || isTokenExpired('token') || !role) {\r\n return null;\r\n } else if (role === undefined) {\r\n return ;\r\n }\r\n\r\n return (\r\n
\r\n
\r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n {location.pathname === routes.contact ?
: }\r\n \r\n
\r\n
\r\n );\r\n});\r\n","import React, {FC} from 'react';\r\nimport {Redirect} from 'react-router';\r\nimport {RedirectUriStorageKey} from '../utilities/constants';\r\nimport {useAuth} from './general-auth-provider';\r\n\r\nconst Callback: FC = () => {\r\n const {isAuthenticated, logout} = useAuth();\r\n const signOut = () => logout({returnTo: window.location.href});\r\n let redirectUrl: string | null = window.sessionStorage.getItem(RedirectUriStorageKey);\r\n\r\n if (isAuthenticated && redirectUrl) {\r\n window.sessionStorage.removeItem(RedirectUriStorageKey);\r\n return ;\r\n } else {\r\n signOut();\r\n return null;\r\n }\r\n};\r\n\r\nexport default Callback;\r\n","import * as React from 'react';\r\nimport {connect, useSelector} from 'react-redux';\r\nimport {Route, RouteProps} from 'react-router-dom';\r\nimport {setNewToken} from '../state/features/auth/auth-slice';\r\nimport {AppState} from '../state/store';\r\nimport {RedirectUriStorageKey} from '../utilities/constants';\r\nimport {AuthHelperType, isTokenExpired} from '../utilities/platform-helpers/auth-helper';\r\n\r\ninterface PrivateRouteProps extends RouteProps {\r\n component: any;\r\n path: string;\r\n authHelper: () => AuthHelperType;\r\n}\r\n\r\nconst mapStateToProps = (state: AppState) => {\r\n return {\r\n token: state.authReducer.token,\r\n isLogout: state.authReducer.logout,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {setNewToken};\r\n\r\ntype Props = PrivateRouteProps & typeof mapDispatchToProps & ReturnType;\r\n\r\nconst RENEWAL_TIME_MS = 1800 * 1000; // Renew 30min before\r\n\r\nconst PrivateRoute = (props: Props) => {\r\n const {isLoading, isAuthenticated, loginWithRedirect, getToken} = props.authHelper();\r\n const {component: Component, ...rest} = props;\r\n const isInitialized = useSelector((state: AppState) => state.authReducer.isInitialized);\r\n\r\n React.useEffect(() => {\r\n if (isLoading || isAuthenticated) {\r\n return;\r\n }\r\n const fn = async () => {\r\n window.sessionStorage.setItem(RedirectUriStorageKey, window.location.pathname);\r\n if (loginWithRedirect !== undefined) {\r\n await loginWithRedirect({});\r\n }\r\n };\r\n fn();\r\n }, [isLoading, isAuthenticated, loginWithRedirect, props.path]);\r\n\r\n React.useEffect(() => {\r\n if (props.token) {\r\n scheduleTokenRenewal(props.token);\r\n }\r\n // eslint-disable-next-line\r\n }, [props.token]);\r\n\r\n const GetToken = async () => {\r\n console.log('GetToken');\r\n let token = await getToken();\r\n props.setNewToken(token);\r\n };\r\n\r\n const render = () => {\r\n if (!isInitialized) return null;\r\n\r\n if (!isAuthenticated || props.isLogout) return null;\r\n if (!props.token || isTokenExpired('token')) {\r\n GetToken();\r\n }\r\n\r\n return ;\r\n };\r\n\r\n function scheduleTokenRenewal(token: string) {\r\n unscheduleRenewal();\r\n\r\n if (!isAuthenticated) {\r\n return;\r\n }\r\n\r\n let jwtToken = decodeToken(token);\r\n let expiresAt = jwtToken.exp;\r\n let expiresAtDate = new Date(expiresAt * 1000);\r\n\r\n if (expiresAt && expiresAtDate) {\r\n let timeToRenewal = expiresAtDate.getTime() - new Date().getTime() - RENEWAL_TIME_MS;\r\n if (timeToRenewal < 0) {\r\n timeToRenewal = 0;\r\n }\r\n\r\n renewalTimeout = setTimeout(() => {\r\n if (expiresAtDate.getTime() - new Date().getTime() - RENEWAL_TIME_MS < 0) {\r\n GetToken();\r\n }\r\n }, timeToRenewal);\r\n }\r\n }\r\n\r\n let renewalTimeout: NodeJS.Timeout | undefined;\r\n function unscheduleRenewal() {\r\n if (renewalTimeout) {\r\n clearTimeout(renewalTimeout);\r\n renewalTimeout = undefined;\r\n }\r\n }\r\n\r\n return ;\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(PrivateRoute);\r\n\r\nfunction decodeToken(token: string | null) {\r\n if (token === null || token === '') {\r\n return {upn: ''};\r\n }\r\n const parts = token.split('.');\r\n if (parts.length !== 3) {\r\n throw new Error('JWT must have 3 parts');\r\n }\r\n const decoded = urlBase64Decode(parts[1]);\r\n if (!decoded) {\r\n throw new Error('Cannot decode the token');\r\n }\r\n return JSON.parse(decoded);\r\n}\r\n\r\nfunction urlBase64Decode(str: string) {\r\n let output = str.replace(/-/g, '+').replace(/_/g, '/');\r\n switch (output.length % 4) {\r\n case 0:\r\n break;\r\n case 2:\r\n output += '==';\r\n break;\r\n case 3:\r\n output += '=';\r\n break;\r\n default:\r\n throw new Error('Illegal base64url string!');\r\n }\r\n\r\n return decodeURIComponent((window as any).escape(window.atob(output)));\r\n}\r\n","import {PaletteOptions} from '@material-ui/core/styles/createPalette';\r\nimport {\r\n backgroundColor,\r\n primaryColor,\r\n primaryTextColor,\r\n secondaryColor,\r\n secondaryTextColor,\r\n} from '../../styles/color-constants';\r\n\r\nexport const DefaultPalette: PaletteOptions = {\r\n primary: {\r\n main: primaryColor,\r\n },\r\n secondary: {\r\n main: secondaryColor,\r\n },\r\n background: {\r\n default: backgroundColor,\r\n },\r\n text: {\r\n primary: primaryTextColor,\r\n secondary: secondaryTextColor,\r\n },\r\n};\r\n","import { FC } from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { useAuth } from \"../../../../auth/general-auth-provider\";\r\nimport { AppState } from '../../../../state/store';\r\n\r\nexport const LogoutAuth: FC = (props) => {\r\n const { logout } = useAuth();\r\n const signOut = () => logout({returnTo: window.location.origin});\r\n const shouldLogOut = useSelector((state: AppState) => state.authReducer.logout);\r\n\r\n if (shouldLogOut === true) {\r\n signOut();\r\n }\r\n\r\n return null;\r\n};\r\n","import React, {FC, useRef} from 'react';\r\nimport {useDispatch, useSelector} from 'react-redux';\r\nimport {useSnackbar} from 'notistack';\r\nimport {AppState} from '../../../../state/store';\r\nimport {removeSnackbar} from '../../../../state/features/snackbar/snackbar-slice';\r\n\r\n// Inspiration from https://codesandbox.io/s/github/iamhosseindhv/notistack/tree/master/examples/redux-example?file=/redux/reducers.js\r\nexport const Snackbar: FC = React.memo(() => {\r\n const dispatch = useDispatch();\r\n const notifications = useSelector((store: AppState) => store.snackbarReducer.snackbars || []);\r\n const {enqueueSnackbar, closeSnackbar} = useSnackbar();\r\n const displayed = useRef([]);\r\n\r\n const storeDisplayed = (id: number) => {\r\n displayed.current = [...displayed.current, id];\r\n };\r\n\r\n const removeDisplayed = (id: number) => {\r\n displayed.current = [...displayed.current.filter((key) => id !== key)];\r\n };\r\n\r\n React.useEffect(() => {\r\n notifications.forEach(({key, message, options = {}, dismissed = false}) => {\r\n if (dismissed) {\r\n // dismiss snackbar using notistack\r\n closeSnackbar(key);\r\n return;\r\n }\r\n\r\n // do nothing if snackbar is already displayed\r\n if (displayed.current.includes(key)) return;\r\n\r\n // display snackbar using notistack\r\n enqueueSnackbar(message, {\r\n key,\r\n ...options,\r\n onClose: (event, reason, myKey) => {\r\n if (options.onClose) {\r\n options.onClose(event, reason, myKey);\r\n }\r\n },\r\n onExited: (event, myKey: string | number) => {\r\n // remove this snackbar from redux store\r\n dispatch(removeSnackbar(myKey as number));\r\n removeDisplayed(myKey as number);\r\n },\r\n });\r\n\r\n // keep track of snackbars that we've displayed\r\n storeDisplayed(key);\r\n });\r\n }, [notifications, closeSnackbar, enqueueSnackbar, dispatch]);\r\n\r\n return null;\r\n});\r\n","import {IconButton} from '@material-ui/core';\r\nimport ClearIcon from '@material-ui/icons/Clear';\r\nimport React, {FC} from 'react';\r\nimport {useDispatch} from 'react-redux';\r\nimport {clearSnackbar} from '../../../../state/features/snackbar/snackbar-slice';\r\nimport {localized} from '../../../../i18n/i18n';\r\n\r\nexport const SnackbarCloseButton: FC<{snackKey: number}> = React.memo(({snackKey}) => {\r\n const dispatch = useDispatch();\r\n\r\n const onClickDismiss = () => {\r\n dispatch(clearSnackbar(snackKey));\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n});\r\n","import React, {useContext, useEffect} from 'react';\r\nimport {useDispatch, useSelector} from 'react-redux';\r\nimport {\r\n addNotification,\r\n resetMarketingMaterialNotifications,\r\n} from '../../state/features/marketing-material/marketing-material-slice';\r\nimport {getMarketingMaterials} from '../../state/features/marketing-material/operation';\r\nimport {\r\n MarketingMaterialCategoryPageDatas,\r\n MarketingMaterialPageData,\r\n} from '../../state/features/marketing-material/types';\r\nimport {AppState} from '../../state/store';\r\n\r\nexport const NotificationContext = React.createContext({} as any);\r\nexport const useNoti = () => useContext(NotificationContext);\r\n\r\nexport const NotificationProvider = ({children, ...initOptions}: any) => {\r\n const {organizationId} = useSelector((store: AppState) => store.organizationReducer);\r\n const dispatch = useDispatch();\r\n\r\n const {marketingMaterials} = useSelector((store: AppState) => store.marketingMaterialReducer);\r\n useEffect(() => {\r\n if (organizationId) {\r\n dispatch(getMarketingMaterials({organizationId: organizationId}));\r\n }\r\n }, [organizationId, dispatch]);\r\n\r\n useEffect(() => {\r\n dispatch(resetMarketingMaterialNotifications());\r\n marketingMaterials.forEach((material: MarketingMaterialCategoryPageDatas) => {\r\n if (doesMarketingMaterialHaveNotifications(material.MarketingMaterialPageData)) {\r\n dispatch(addNotification(material.Category));\r\n }\r\n });\r\n }, [marketingMaterials, organizationId, dispatch]);\r\n\r\n return {children};\r\n};\r\n\r\nconst doesMarketingMaterialHaveNotifications = (marketingMaterialPageData: MarketingMaterialPageData) => {\r\n return (\r\n marketingMaterialPageData.banners.isNewToUser ||\r\n marketingMaterialPageData.cSRTexts.isNewToUser ||\r\n marketingMaterialPageData.diploma.isNewToUser ||\r\n marketingMaterialPageData.soMeTexts.isNewToUser\r\n )\r\n};\r\n","import {ThemeProvider} from '@material-ui/core';\r\nimport CssBaseline from '@material-ui/core/CssBaseline';\r\nimport {SnackbarProvider} from 'notistack';\r\nimport React, {FC} from 'react';\r\nimport {Provider} from 'react-redux';\r\nimport {BrowserRouter, Route, Switch} from 'react-router-dom';\r\nimport {persistStore} from 'redux-persist';\r\nimport {PersistGate} from 'redux-persist/integration/react';\r\nimport {AppRoutes} from './app-routes';\r\nimport Callback from './auth/callback';\r\nimport {AuthProvider} from './auth/general-auth-provider';\r\nimport PrivateRoute from './auth/private-route';\r\nimport {store} from './state/store';\r\nimport {colorTheme} from './styles/color-theme';\r\nimport {useAuthHelper} from './utilities/platform-helpers/auth-helper';\r\nimport {LogoutAuth} from './view/components/default-components/logout-auth/logout-auth';\r\nimport {Snackbar} from './view/components/default-components/snackbar/snackbar';\r\nimport {SnackbarCloseButton} from './view/components/default-components/snackbar/snackbar-close-button';\r\nimport {NotificationProvider} from './utilities/helpers/notification-provider';\r\n\r\n// Persist the whole store\r\nconst persistor = persistStore(store);\r\n\r\nconst App: FC = () => {\r\n const getCloseButton = (key: number | string) => {\r\n return ;\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default App;\r\n","import {createMuiTheme} from '@material-ui/core/styles';\r\nimport {DefaultPalette} from '../utilities/platform-helpers/colors-helper';\r\n\r\nexport function colorTheme() {\r\n let theme = createMuiTheme({\r\n palette: DefaultPalette,\r\n typography: {\r\n fontFamily: ['Lato', 'Roboto'].join(','),\r\n },\r\n breakpoints: {\r\n keys: ['xs', 'sm', 'm', 'md', 'lg', 'xl', 'betweenlgandxl'],\r\n values: {\r\n xs: 0,\r\n sm: 600,\r\n m: 750,\r\n md: 960,\r\n lg: 1280,\r\n betweenlgandxl: 1700,\r\n xl: 1920,\r\n },\r\n },\r\n });\r\n return theme;\r\n}\r\n","import { createBrowserHistory } from 'history'\r\n\r\nexport default createBrowserHistory();","import GA4React from 'ga-4-react';\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport App from './app';\r\nimport {Monitor} from './services/telemetry-service';\r\nimport history from './state/history';\r\nimport {GoogleAnalyticsKey, InsightsKey} from './utilities/constants';\r\n\r\ndeclare const window: any;\r\nconst ga4react = new GA4React(GoogleAnalyticsKey);\r\nInsightsKey && Monitor.initialize(InsightsKey, history);\r\n\r\n(async (_) => {\r\n await ga4react.initialize();\r\n\r\n ReactDOM.render(\r\n \r\n \r\n ,\r\n document.getElementById('root'),\r\n );\r\n})();\r\n"],"sourceRoot":""}