{"version":3,"sources":["assets/flags/ch.svg","assets/flags/de.svg","assets/flags/fr.svg","assets/flags/it.svg","assets/flags/at.svg","assets/flags/li.svg","config.js","lib/GlobalContext.js","lib/GetSafe.js","lib/FormatHelper.js","lib/GoogleMapComponent.js","components/CustomSC/CustomSCStateConditions.js","components/HOC/AccessControl.js","components/PopupMessages.js","components/CustomSC/CustomSCDetailAddition.js","pages/Project.js","components/Table/TablePaginationActions.js","components/Onboarding/UserTypes.js","components/BuildingApplicationTypeTabs.js","lib/ProjectManagementAddressDataValidator.js","components/Projects/ProjectsTableRow.js","components/GooglePlacesAutosuggestFields/GooglePlacesAutosuggestAddress.js","components/Projects/ProjectsLocationsHandler.js","components/LocationTabSearchArea.js","components/LocationTab.js","components/LocationTabs.js","lib/User.js","components/Debug/DebugImportantDataFragment.js","components/Debug/DebugProjects.js","pages/Projects.js","components/ProjectsSearch/ProjectsSearchTableRow.js","pages/ProjectsSearch.js","components/ProjectsFree/ProjectsFreeTableRow.js","lib/GooglePlacesAPIHelper.js","components/ZefixCompanyAutocompleteField.js","components/ProjectsFree/ProjectsFreeLocationsHandler.js","lib/CantonShortener.js","pages/ProjectsFree.js","components/Favorites/FavoriteStateConditions.js","components/Favorites/FavoriteStatus.js","components/Favorites/FavoriteDetailAddition.js","lib/Application.js","lib/FormValueErrorsBuilder.js","components/Favorites/FavoriteEmailApplyDialog.js","components/Favorites/FavoriteApplicationPrintDialog.js","components/Favorites/FavoritesTableRow.js","components/Company/CompanyDirectoryNameDialog.js","components/Debug/DebugFavorites.js","pages/Favorites.js","pages/NotFoundPage.js","lib/CmsLinkHandler.js","components/Onboarding/OnboardingFreeUserWelcomeDialog.js","components/Onboarding/OnboardingPremiumUserWelcomeDialog.js","pages/Onboarding.js","components/OnboardingMarketing/OnboardingMarketingLeftPane.js","components/OnboardingMarketing/OnboardingMarketingRightPane.js","pages/OnboardingMarketing.js","pages/OnboardingPasswordReset.js","pages/Login.js","pages/Logout.js","components/Layout/LayoutHeaderSearchfield.js","components/Layout/LayoutHeaderAccount.js","components/Layout/LayoutHeaderAccountFree.js","components/Layout/LayoutHeaderDebugNotice.js","components/Layout/LayoutHeader.js","components/Layout/LayoutFooter.js","components/Layout.js","components/Account/AccountProfile.js","lib/StripePlanIdToNameConverter.js","components/Account/AccountSubscriptions.js","components/Account/AccountInvoices.js","components/Account/AccountUsers.js","pages/Account.js","components/MicrositeDetailsWizard/MicrositeDetailsWizardStepper.js","components/GooglePlacesAutosuggestFields/GooglePlacesAutosuggestCity.js","components/GooglePlacesAutosuggestFields/GooglePlacesAutosuggestStreet.js","components/GooglePlacesAutosuggestFields/GooglePlacesAutosuggestZip.js","components/PhoneField.js","components/Company/CompanyBasicSettingsForm.js","components/LoadingOverlay.js","components/MicrositeDetailsWizard/CompanyProfileStep.js","components/Company/CompanyInfoShared.js","components/Company/CompanyInfoForm.js","components/MicrositeDetailsWizard/CompanyInfoStep.js","components/Company/CompanyBusinessActivitiesForm.js","components/Company/CompanyBasicSettingsShared.js","components/MicrositeDetailsWizard/CompanyBusinessActivitiesStep.js","lib/DataUrlToFileConverter.js","components/Company/CompanyReferencesShared.js","components/Company/CompanyReferencesForm.js","components/MicrositeDetailsWizard/CompanyReferencesStep.js","components/MicrositeDetailsWizard/CompleteWizardStep.js","pages/MicrositeDetailsWizard.js","lib/ConvertJsonToQuery.js","lib/Token.js","components/UpdateCompanyDataDialog.js","components/Company/CompanyBasicSettings.js","components/Company/CompanyInfo.js","components/Company/CompanyBusinessActivities.js","components/Company/CompanyReferences.js","pages/Company.js","i18n.js","lib/ErrorBoundary.js","components/UpgradeToPremium/FreeToPremiumDialogueStep0.js","components/UpgradeToPremium/FreeToPremiumStepper.js","components/UpgradeToPremium/FreeToPremiumDialogueStep1.js","components/UpgradeToPremium/FreeToPremiumDialogueStep2.js","components/UpgradeToPremium/FreeToPremiumDialogueStep3.js","components/Creditcard/CreditCardForm.js","components/Creditcard/CreditCard.js","components/Invoice/InvoiceForm.js","components/Invoice/Invoice.js","components/Payment/Payment.js","components/UpgradeToPremium/FreeToPremiumDialogueStep4.js","components/UpgradeToPremium/FreeToPremiumDialogueStep5.js","components/UpgradeToPremium/UpgradeToPremium.js","components/CustomSC/CustomSCStatus.js","components/CustomSC/CustomSCTableRow.js","pages/CustomSC.js","pages/DossierManagement.js","components/Dossier/DossierBasicSettings.js","components/Dossier/DossierInfo.js","pages/Dossier.js","components/Statistics/Applications.js","components/Statistics/Submissions.js","components/Statistics/DownloadedApplications.js","components/Statistics/SendApplications.js","components/Statistics/Statistics.js","App.js","serviceWorker.js","lib/Exchanges/CacheExchange.js","lib/Exchanges/AuthExchange.js","lib/URQLClientSilverstripe.js","eelConfig.js","index.js"],"names":["module","exports","apiTld","cookieDomain","cookieDomainRedirect","GlobalContext","createContext","getSafe","fn","defaultVal","e","FormatHelper","buildDateObject","date","length","Date","substring","isValidDate","dateObj","isNaN","formatDate","getDate","toString","slice","getMonth","getFullYear","formatDistance","distance","pd","Math","pow","floor","replace","getTimestampFromDate","getTime","formatDirectoryName","directoryName","String","prototype","allReplace","obj","retStr","this","element","RegExp","Ü","Ä","Ö","ü","ä","ö","ß","boolToString","value","VERSION","version","DEFAULT_LOGO_PATH","GOOGLE_API_KEY","CANTON_LIST","AG","AR","BL","BS","BE","FR","GL","GR","LU","NW","OW","SH","SZ","SO","SG","TG","UR","VS","ZG","ZH","DEFAULT_LOCALE_FOR_LANGUAGE","en","de","fr","DOSSIER_AVAILABLE_LOCALES","de_DE","fr_FR","CHARTJS_STATISTIC_OPTIONS","responsive","plugins","legend","position","title","display","text","colors","enabled","zoom","pan","mode","wheel","modifierKey","pinch","drag","scales","y","ticks","stepSize","x","min","max","hostname","window","location","devTld","stageTld","STRIPE_PLAN_IDS","SMART","YEARLY","MONTHLY","PRO","graphQlEndpoint","concat","oAuthApiEndpoint","isDev","isNotLive","googlePlacesApiEndpoint","SILVERSTRIPE_GRAPHQL_API","url","SILVERSTRIPE_OAUTH_API","urls","authorize","refresh","data","grant_type","client_id","ACL_COMPONENTS","ACCOUNT","ACCOUNT_INVOICES","ACCOUNT_PROFILE","ACCOUNT_SUBSCRIPTIONS","ACCOUNT_USERS","COMPANY","COMPANY_BASIC_SETTINGS","COMPANY_INFO","COMPANY_BUSINESS_ACTIVITIES","COMPANY_USERS","COMPANY_REFERENCES","CREDIT_CARD","FAVORITES","CUSTOM_SC","FAVORITES_TABLE_ROW","FAVORITE_DETAIL_ADDITION","FAVORITE_STATUS","FREE_TO_PREMIUM_DIALOGUE_STEP_0","FREE_TO_PREMIUM_DIALOGUE_STEP_1","FREE_TO_PREMIUM_DIALOGUE_STEP_2","FREE_TO_PREMIUM_DIALOGUE_STEP_3","FREE_TO_PREMIUM_DIALOGUE_STEP_4","FREE_TO_PREMIUM_DIALOGUE_STEP_5","FREE_TO_PREMIUM_STEPPER","GOOGLE_PLACES_AUTOSUGGEST_FIELD","LAYOUT","LAYOUT_FOOTER","LAYOUT_HEADER","LAYOUT_HEADER_ACCOUNT","LAYOUT_HEADER_ACCOUNT_FREE","LAYOUT_HEADER_SEARCHFIELD","LOCATION_TABS","ONBOARDING","ONBOARDING_FREE_USER_WELCOME_DIALOG","ONBOARDING_MARKETING","ONBOARDING_MARKETING_LEFT_PANE","ONBOARDING_MARKETING_RIGHT_PANE","ONBOARDING_PREMIUM_USER_WELCOME_DIALOG","POPUP_MESSAGES","PROJECTS","PROJECTS_FREE","PROJECTS_FREE_LOCATION_HANDLER","PROJECTS_FREE_TABLE_ROW","PROJECTS_LOCATION_HANDLER","PROJECTS_TABLE_ROW","TABLE_PAGINATION_ACTIONS","UPGRADE_TO_PREMIUM","USER_TYPES","PHONE_COUNTRIES","id","name","displayText","locale","flag","require","phonePrefix","_regeneratorRuntime","t","r","Object","n","hasOwnProperty","o","defineProperty","i","Symbol","a","iterator","c","asyncIterator","u","toStringTag","define","enumerable","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","type","arg","call","h","f","s","GeneratorFunction","GeneratorFunctionPrototype","p","d","getPrototypeOf","v","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","resolve","__await","then","callInvokeWithMethodAndArg","Error","done","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","return","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","displayName","isGeneratorFunction","constructor","mark","setPrototypeOf","__proto__","awrap","async","Promise","keys","reverse","pop","prev","charAt","stop","rval","handle","complete","finish","catch","delegateYield","useStyles","makeStyles","progress","color","green","top","left","GoogleMapComponent","props","classes","useTranslation","_useContext","useContext","googleMapsIsLoaded","googleMapsLoadError","_useState","useState","_useState2","_slicedToArray","response","setResponse","_useState3","lat","origin","lon","_useState4","coordinates","setCoordinates","useEffect","fetchCoords","_ref","_asyncToGenerator","_callee","_context","fetch","json","apply","arguments","result","results","geometry","lng","directionsCallback","MapResponse","status","ExternalErrorLogger","log","React","createElement","destination","GoogleMap","mapContainerStyle","height","center","parseFloat","DirectionsService","options","travelMode","callback","DirectionsRenderer","directions","Marker","CircularProgress","className","renderMap","CustomSCStateConditions","freeze","ATTENTION","CHECKED","FOLLOWUP","FOLLOWED","THUMB_UP","THUMB_DOWN","EXTERNALAPPLIED","CustomSCStateConditionText","stateCondition","accessDeniedStyle","margin","paddingBottom","allTimeAvailableComponents","parsePermissions","permissionsFromAPI","permissionsArray","Array","isArray","Name","withAccessControl","WrappedComponent","componentName","undefined","fallbackPath","componentNameExists","includes","restrictAccessOutput","Typography","style","Translation","console","error","userPermissions","user","getData","permissions","access","indexOf","warn","navigate","MESSAGE_TYPES","variantIcon","success","CheckCircleIcon","warning","WarningIcon","ErrorIcon","info","InfoIcon","variantDuration","useStylesSnackbarContentWrapper","theme","backgroundColor","palette","dark","amber","icon","fontSize","opacity","marginRight","spacing","message","alignItems","MySnackbarContentWrapper","onClose","variant","other","_objectWithoutProperties","_excluded","Icon","SnackbarContent","assign","aria-describedby","dangerouslySetInnerHTML","__html","action","IconButton","key","aria-label","onClick","CloseIcon","Message","open","setOpen","handleClose","event","reason","Snackbar","anchorOrigin","vertical","horizontal","autoHideDuration","code","removed","undo","primary","main","textDecoration","link","cursor","breakLine","whiteSpace","paper","boxShadow","buttonProgress","marginTop","marginLeft","button","marginBottom","fontWeight","textarea","borderColor","input","list","padding","borderRadius","item","width","border","statusText","statusDate","flex","statusHolder","_props$favorite","_props$favorite$Notes","_props$favorite2","_props$favorite2$Stat","setFavoriteData","setMessage","unsetUser","token","unsetToken","blankNote","newNote","setNewNote","editNote","setEditNote","_useState5","_useState6","formerResult","setFormerResult","_useState7","node","Created","HashID","Removed","Text","User","_useState8","notes","setNotes","_useState9","_useState10","stateHistory","setStateHistory","_useMutation","useMutation","fetchingCreateFavoriteNote","_useMutation3","_useMutation4","fetchingUpdateFavoriteNote","executeUpdateFavoriteNoteMutation","_useQuery","useQuery","query","variables","userHashID","hashID","filterFor","requestPolicy","pause","_useQuery2","executeFavoritesQuery","favorite","Notes","edges","StateHistory","fetching","readFavorites","handleUpdateEditNote","mergedNote","merge","target","handleEditNoteSubmit","JSON","stringify","errorMessage","handleRestoreNote","deletedNoteId","handleNote","historyEntry","isRight","Fragment","TextField","multiline","fullWidth","rowsMax","rows","placeholder","onChange","Button","Paper","ListItemText","InputProps","onFocus","random","firstName","lastName","_toConsumableArray","size","historyListItems","historyMerged","state","note","sort","b","aDate","moment","unix","bDate","_loop","author","dateLocalized","ListItem","secondary","State","Grid","container","clsx","root","lg","handleEditNote","EditIcon","DeleteIcon","RestoreFromTrashIcon","List","HistoryList","Final_title","Canton","Content","Calculated_distance","Distance_calculated_from","Read","Construction_site","Address","Street","Number","Zip","City","Geo","Building_owner","Project_management","Phone","Email","Website","Email_other","originCoordinates","tableCellColumnsbody","minWidth","toggleTitle","toggleTableCell","paddingTop","verticalAlign","toggleTableCellMap","tableInnerRow","borderTop","pointer","tooltipItem","maxWidth","background","textAlign","tooltipInfo","default","lineHeight","tooltipTitle","headerWrapper","paddingRight","paddingLeft","logo","Project","columns","label","align","isProcessable","tableWrapper","Table","table","TableHead","TableRow","tableColumnsHead","map","column","TableCell","tableCellColumnsHeader","TableBody","GetSafe","colSpan","CustomSCDetailAddition","Tooltip","tooltip","PopperProps","Info","disabled","Applied","href","flexShrink","TablePaginationActions","count","page","rowsPerPage","onChangePage","FirstPageIcon","KeyboardArrowLeft","ceil","KeyboardArrowRight","FREE","PROADMIN","flexGrow","tabs","tab","tableTabsHeader","buttonColor","newMarker","right","BUILDING_APPLICATION_TYPE","BuildingApplicationTypeTabs","selectedBuildingApplicationTypeTabValue","setSelectedBuildingApplicationTypeTabValue","AppBar","ToggleButtonGroup","exclusive","handleApplicationTypeTabChange","ToggleButton","hasNewApplications","UserTypes","arrow","hasNewSubmissions","ProjectManagementAddressDataValidator","schemaAddressData","Joi","object","string","allow","required","__typename","isValid","addressData","validate","abortEarly","emptyPropertiesCount","property","airDistance","toggleTableRow","newLabel","applyTooltipItem","tooltipApprovalDate","upgradeToPremiumOpen","setUpgradeToPremiumOpen","row","anchorEl","setAnchorEl","isFavorite","setIsFavorite","favoriteID","setFavoriteID","applyTooltipOpen","setApplyTooltipOpen","_useMutation2","fetchingCreateFavorite","executeCreateFavoriteMutation","fetchingUpdateFavorite","executeUpdateFavoriteMutation","favorites","filter","ProjectHashID","handleTooltipClose","handleTooltipOpen","updateFavoriteExecution","handleUpgradeToPremium","renderPrintAndShare","justify","xs","sm","A","src","alt","LinearProgress","ExpandLess","ExpandMore","stopPropagation","Star","projectHashID","createFavorite","StarBorder","aria-controls","aria-haspopup","currentTarget","MoreHoriz","Menu","keepMounted","Boolean","PaperProps","MenuItem","PHE","printHtml","renderToString","placement","Approval_date","isPro","Construction_sum","Type","ClickAwayListener","onClickAway","split","join","disablePortal","disableFocusListener","disableHoverListener","disableTouchListener","textField","autocompleteResultWrapper","zIndex","autocompleteResult","searchOptions","componentRestrictions","country","googleSearchValue","setGoogleSearchValue","onSuggestionSelect","presetValue","PlacesAutocomplete","onSelect","address","geocodeByAddress","getLatLng","latLng","getInputProps","suggestions","getSuggestionItemProps","loading","autoSuggestError","helperText","dense","suggestion","index","component","description","changeLocation","dialogTitleCloseIcon","addButtonText","editIcon","_defineProperty","breakpoints","up","iconDisabled","iconLonely","listItem","dialogContent","dialogActions","justifyContent","locationText","typography","menu","bold","homeIcon","companyHeader","companyAddress","parseConstructionSumList","gqlEdges","constructionSums","gqlEdge","Code","reverseParseConstructionSumList","constructionSumCodes","constructionSumEdges","constructionSumCode","setUser","setToken","selectedLocationTabValue","setSelectedLocationTabValue","setMarkAsReadByLocation","openDialog","setOpenDialog","listData","setListData","isEditable","setIsEditable","setAutoSuggestError","radiusSelectError","setRadiusSelectError","_useState11","_useState12","saveInProgress","setSaveInProgress","_useState13","Title","Radius","Latitude","Longitude","Sort","ConstructionSums","_useState14","editableElement","setEditableElement","_useState15","_useState16","airDistanceResultList","setAirDistanceResultList","_useState17","_useState18","constructionSumsResultList","setConstructionSumsResultList","_useState19","_useState20","editCompanyLocation","setEditCompanyLocation","fetchingCreateLocation","executeCreateLocationMutation","fetchingUpdateLocation","executeUpdateLocationMutation","_useMutation5","_useMutation6","fetchingUpdateCompany","executeUpdateCompanyMutation","executeQuerySmartconextConf","schema","number","array","editCompanySchema","ConstructionSumList","locations","isSet","readSmartconextConf","air_distance_radius_list","construction_sums","handleCloseManageLocations","handleCloseEditLocations","handleRangeChange","newRange","newElement","LocationDataListDialog","DialogTitle","DialogContent","ListItemIcon","HomeIcon","company","city","street","DragDropContext","onDragEnd","source","reorderedListData","startIndex","endIndex","from","_result$splice","splice","reorder","setData","hashId","email","Droppable","droppableId","provided","ref","innerRef","droppableProps","DragIndicatorIcon","elementId","removedItem","handleUndoDeleteLocation","Draggable","draggableId","draggableProps","dragHandleProps","handleDeleteLocation","DialogActions","ConstructionSum","addLocationButton","AddIcon","getSpinner","handleBuildingSumsCheckboxes","constructionSumsReady","BuildingSumsFilter","FormGroup","FormLabel","FormControlLabel","control","Checkbox","checked","LocationDataEditDialog","GooglePlacesAutosuggestAddress","autosuggestResult","addressArray","trim","range","select","SelectProps","MenuProps","details","context","newListData","zip","long","radius","createLocation","setPage","setChangeType","CHANGE_TYPES","INIT","indexInListData","LocationDataEditCompanyDialog","stripUnknown","Dialog","badgeItem","LocationTabSearchArea","_queryNewSearchAreaBu9","_queryNewSearchAreaBu10","_queryNewSearchAreaBu11","_queryNewSearchAreaBu12","locationHashID","labelTitle","handleTabChange","setHasNewApplications","setHasNewSubmissions","SearchAreaHashIDs","queryNewSearchAreaBuildingApplicationsResult","_queryNewSearchAreaBu","_queryNewSearchAreaBu2","_queryNewSearchAreaBu3","_queryNewSearchAreaBu4","_queryNewSearchAreaBu5","_queryNewSearchAreaBu6","_queryNewSearchAreaBu7","_queryNewSearchAreaBu8","readNewSearchAreaBuildingApplications","NewCountPerSearchArea","find","NewCountSearchArea","NewCountBaugesuche","NewCountSubmission","Tab","newCount","Badge","badgeContent","handleTabLabel","NewCount","LocationTab","_queryNewBuildingAppl9","_queryNewBuildingAppl10","_queryNewBuildingAppl11","_queryNewBuildingAppl12","isCompanyLocation","Locations","IsCompanyLocation","Lat","Lon","queryNewBuildingApplicationsResult","_queryNewBuildingAppl","_queryNewBuildingAppl2","_queryNewBuildingAppl3","_queryNewBuildingAppl4","_queryNewBuildingAppl5","_queryNewBuildingAppl6","_queryNewBuildingAppl7","_queryNewBuildingAppl8","readNewBuildingApplications","NewCountPerLocation","NewCountLocation","overflow","_props$locations$","hasZipSearchAreas","Tabs","indicatorColor","scrollButtons","latitude","longitude","initialData","salutation","appAdmin","isMasquerade","stripePublicKey","searchAreas","chid","contactPerson","phone","mobile","fax","website","employeeCount","legalForm","foundingYear","masterOperation","canton","branchCategory","branchSubs","otherBusinessActivities","otherBusinessSpecialities","trialPossible","micrositeColorScheme","micrositeDescription","micrositeEmailApplicationText","micrositeImages","micrositeLogo","additionalMemberships","micrositeReferences","micrositeCertified","micrositeCertifiedUntil","zipSearchAreas","zipSearchStatistic","applicationFollowUpTimeInDays","dossierTemplates","fulltextSearchRequests","schemaCompanyData","adminUserID","urlSegment","regex","tlds","integer","trainingCompany","items","users","stripeIsTrialing","boolean","stripeTrialingDays","stripePlanId","stripeValidThrough","stripeProductId","stripeCancelAt","stripeFuturePlans","memberships","allMemberships","hasExternalApply","schemaUserData","valid","creditCard","userData","_mergeIntoData","_writeLocalStorage","_objectSpread","localStorage","setItem","deleteLocalStorage","_deleteAppAdminMaskCookie","removeItem","cookies","Cookies","get","remove","path","domain","mergedData","getHash","hash","unsetData","isFree","isAbleToUpgrade","isAppAdmin","hasAddress","hasZipSearchStatistic","hasApplicationFollowUpTimInDays","getSchemaUserData","getSchemaCompanyData","getLocalStorage","localStoreUserData","getItem","parse","writeLocalStorage","debugHolder","debugListWrapper","debugListTitle","debugDataList","debugTitle","DebugImportantDataFragment","debugList","flexWrap","debugLink","debugInfo","masqueradeId","setMasqueradeId","amount","setAmount","isMutating","setIsMutating","handleMutationAddElasticBuildingApplicationsNewStatus","executeMutationAddElasticBuildingApplicationsNewStatus","handleMutationReindexElasticIndividualIndicesOfCompany","executeMutationReindexElasticIndividualIndicesOfCompany","isInteger","Amount","reload","Link","parseInt","cookieLifetimeDate","setDate","set","expires","SameSite","handleMasquerade","keyIndex","currentPageRowsDataChunkCache","_searchFilterItem","_searchFilterButton","overflowX","tableHead","tableCellHeader","tableCellHeaderInner","tableCellColumnsBody","tableCell","tableRows","locationHead","locationHandler","listContent","paginationInput","paginationSelectIcon","dashed","borderBottom","searchFilterGroup","down","flexDirection","searchFilterItem","searchFilterButtonGroup","searchFilterButton","PAGE","TAB","shownProjects","projectData","setProjectData","setVisibleProjects","visibleProjects","debugToolsEnabled","setRowsPerPage","queryVariables","setQueryVariables","localSelectedLocationTabValue","setLocalSelectedLocationTabValue","showNoResultMessage","setShowNoResultMessage","changeType","querySearchFilter","setQuerySearchFilter","queryElasticProjectsResult","_useQuery3","_useQuery4","favoritesResult","executeMutationUpdateElasticBuildingApplicationsNewStatus","executemutationUpdateSearchAreaBuildingApplicationsNewStatus","emptyShownProjects","prevQuerySearchFilter","useRef","current","queryVariablesHandler","markVisibleProjectsRead","types","currentApplicationTabValue","limit","offset","locationID","isMainLocation","searchArea","api","currentPageRowsDataChunk","getProjectRowsChunkForCurrentPage","toMarkRead","userCompanyHashID","indexCurrentPageRowsDataChunk","reduce","curr","indexCurrentPageRowsDataChunkCache","currentPageProject","searchAreaHashIDs","ProjectIDsToMarkAsRead","readElasticProjects","readElasticProjectsByZipSearchArea","actualResult","updatedProjectData","project","existingProject","newProject","filteredNewProjects","findIndex","updatedProject","toggleQuerySearchFilterValue","filterValue","newQuerySearchFilter","currentQuerySearchFilter","LocationTabs","newValue","ProjectsLocationsHandler","tableHeadSearchBody","tableCellHeaderSearchBody","Chip","clickable","DoneIcon","fontStyle","scope","projectRows","projectRowData","favoritesData","ProjectsTableRow","getRenderedProjectRowsChunkForCurrentPage","TableFooter","TablePagination","rowsPerPageOptions","native","renderValue","labelDisplayedRows","to","labelRowsPerPage","selectIcon","newPage","scrollTo","onChangeRowsPerPage","ActionsComponent","DebugProjects","submissionIcon","CardMembershipIcon","Notice_number","transform","tableHeadSearch","tableCellHeaderSearch","iconCloseSearch","usePath","setRemoveProjectSearchParameter","projectSearchParameter","setProjectSearchParameter","querySearchVariables","setQuerySearchVariables","querySearchSortBy","setQuerySearchSortBy","searchResult","executeProjectsSearchQuery","triggerProjectSearch","entries","readSearchProjects","mergedArray","Set","unionArray","has","add","sortBy","searchParameter","sortByFirstField","sortByFirstDirection","sortBySecondField","sortBySecondDirection","sortByThirdField","sortByThirdDirection","ProjectsSearchTableRow","handleOpenPremiumUpgrade","tooltipAppendage","planTrialData","isPossible","trialDays","queryTimeout","GooglePlacesAPIHelper","getCantonByCity","apiUrl","headers","Headers","_x","getCoordsByAddress","_ref2","_callee2","_context2","_x2","rootNotice","content","setCanton","executeMutation","handleChangeCanton","menuItemArray","menuItems","getCantonShort","foundShort","localCanton","setLocalCanton","setPlanTrialData","executeProjectsQuery","productsQueryResult","executeProductsQuery","readProduct","product","plans","trial_period_days","trial_possible","ProjectsFreeLocationsHandler","ProjectsFreeTableRow","FavoriteStateConditions","FavoriteStateConditionText","handleStatusChange","newStateCondition","statusIconAttention","NewReleases","fill","statusIconChecked","CheckCircle","statusIconFollowUp","RotateRight","statusIconExternalApplied","MailOutline","statusIconFollowed","OfflinePin","statusIconThumbUp","ThumbUp","statusIconThumbDown","ThumbDown","getActiveStatusIcon","executeCreateFavoriteNoteMutation","favoriteHashID","parseApplicationText","applicationTextTemplate","businessActivities","conjunctionWord","companyData","competencesString","applicationTextParsed","search","businessSpecialties","BusinessSpecialities","specialty","ID","lastElementIndex","commaElements","lastElement","replaceAll","FormValueErrorsBuilder","formErrors","errorItem","errorKey","hasError","dialogRoot","dialogTitle","dialog","watermarkLogo","gridContainer","gridItem","itemHeader","startButton","initialFormValueErrorsState","ApplicationText","SubjectLine","DossierTemplate","Recipient","FavoriteEmailApplyDialog","emailApplyDialog","setEmailApplyDialog","favoriteHashId","setBusinessActivities","emailApplicationText","setEmailApplicationText","sendEmailFetching","setSendEmailFetching","subjectLine","setSubjectLine","formValueErrors","setFormValueErrors","emailRecipient","setEmailRecipient","selectedDossierTemplate","setSelectedDossierTemplate","setDossierTemplates","dossierTemplatesByHashID","setDossierTemplatesByHashID","selectedLanguage","setSelectedLanguage","_useState21","_useState22","enableLanguageSelector","setEnableLanguageSelector","executeApplicationSubmissionMutation","fetchingUpdateApplicationSubmission","queryBusinessActivitiesResult","executeBusinessActivitiesQuery","_useQuery5","language","queryDossierTemplatesResult","parseEmailApplicationText","dossierTemplatesList","applicationText","getDossierTemplateByHashIdAndLanguage","MicrositeEmailApplicationText","dossiersByLocale","dossiersByHashID","languageDependantDossierTemplates","readDossierTemplates","dossierTemplate","Locale","getUniqueDossierTemplatesByHashID","uniqueDossierTemplates","foundForLanguage","emailApplicationTextTemplate","readBusinessActivities","closeDialogue","getCurrentDate","today","padStart","TemplateName","changeStatus","applied","direction","handleDossierTemplateChange","handleSelectedLanguageChange","avalableLanguages","getDossierTemplateAvailableLanguages","formData","SubmissionType","RecipientName","ProjectIDHash","ProjectName","ProjectLocation","Type_of_building","Type_of_construction","TemplateHashID","Language","submitApplication","Status","recipient","textFieldSmall","queryBusinessActivities","initialAddressData","RecipientCity","RecipientStreet","RecipientZip","FavoriteApplicationPrintDialog","applicationPrintDialog","setApplicationPrintDialog","projectManagementData","buildingOwnerData","setApplicationText","sendDownloadFetching","setSendDownloadFetching","setAddressData","isFetching","scrollIntoView","behavior","block","PDFLink","externalLink","favoriteData","setRemoved","handleFavoriteRemoveToggle","toggledRemoved","removedClass","handleApplyButton","setVerifyDialogOpen","handleApplicationPrintButton","iconIgnoreRemoved","FavoriteStatus","FavoriteDetailAddition","URL","rel","footer","CompanyDirectoryNameDialog","formValues","setFormValues","setDirectoryName","checkUrlSegment","setCheckUrlSegment","showDoubleOptInContent","setShowDoubleOptInContent","directoryNameError","setDirectoryNameError","showExplanation","setShowExplanation","executeCreateMicrositeMutation","access_token","executeMyselfQuery","readMyself","Company","_user$getData$company","contextDirectoryName","contextCompanyName","formattedCompanyName","toLowerCase","handleSubmit","match","isDirectoryNameValid","URLSegment","CheckURLSegment","createMicrosite","verifyDialogOpen","Trans","i18nKey","startAdornment","InputAdornment","preventDefault","noBottomBorder","export","exportHolder","exportLink","textTransform","resultCsvLink","executeFavoritesCsvLinkQuery","handleFavoritesResult","handleCSVResult","readFavoritesCsvLink","AbsoluteLink","FavoritesTableRow","CloudDownloadIcon","exportIcon","DebugFavorites","NotFoundPage","externalLinkTitles","getAbsoluteLink","cmsLinks","category","j","Links","itemPassword","itemCanton","setOpenWelcomeDialog","password","showPassword","CantonShortener","termsPolicy","disableButton","setDisableButton","resultMyself","invalid","branchSubsData","Memberships","AllMemberships","locationData","constructionSum","companyUsersData","dossierTemplatesData","DossierTemplates","Firstname","productItem","Surname","Salutation","FeatureSet","StripePublicKey","CreditCard","Distance","Mobile","Fax","NumberOfEmployees","LegalForm","FoundingYear","MasterBusiness","TrainingCompany","BusinessActivityID","StripeIsTrialing","StripeTrialingDays","StripePlanID","StripeValidThrough","StripeProductID","StripeCancelAt","StripeFuturePlans","ZipSearchAreas","ZipSearchStatistic","ApplicationFollowUpTimeInDays","Permissions","FulltextSearchRequests","SearchAreas","endAdornment","edge","VisibilityOff","Visibility","FormControl","formControl","checkboxControl","FormHelperText","futurePlanID","updateCompanyMutationResult","upgradeToPremiumClose","setUpgradeToPremiumClose","mutationDone","setMutationDone","openWelcomeDialog","setRefreshToken","refreshToken","featureSet","onboardingType","OnboardingType","toLocaleLowerCase","AdminUserID","LoadingIndicator","UserNotFoundDialog","OnboardingFreeUserWelcomeDialog","OnboardingPremiumUserWelcomeDialog","getDialogByUserMode","searchField","menuList","ZefixCompanyAutocompleteField","zefixCompanySearchParameter","setZefixCompanySearchParameter","zefixCompanyCHIDParameter","setZefixCompanyCHIDParameter","zefixCompanies","setZefixCompanies","zefixCompanyDetails","setZefixCompanyDetails","csrfToken","companyHashID","resultSuggest","executeZefixCompanySuggestQuery","chidParameter","resultDetails","executeZefixCompanyDetailsQuery","setTimeout","readZefixCompanySuggest","readZefixCompanyDetails","onAutocompleteSelect","handleClickAway","clearTimeout","focus","autoFocus","Clear","CHID","handleCompanySelect","dialogLeft","textFieldLong","intro","introData","itemSmall","itemBox","boxText","boxTextBold","buttonContainer","termsPolicyCheckbox","hyphens","loadingProgress","alertBox","red","initialFormValues","profession","triggerMyselfHandling","OnboardingMarketingLeftPane","rightCompany","setRightCompany","branchData","setBranchData","resultBranchQuery","executeBranchesQuery","mutationFetching","executeBranchesQueryCallback","useCallback","resultMyselfQuery","isRegistered","determineDisabled","renderCircularProgress","renderSelectTextField","handleBranchCategoryChange","branchCategories","Box","underline","AddressInformation","SwissZipCode","Town","setIsRegistered","cantonItems","Password","CompanyHashID","Token","authorizationResponseData","dialogRight","iconSmallHolder","nestedList","nestedItem","CustomArrowForwardIcon","withStyles","ArrowForwardIcon","OnboardingMarketingRightPane","md","LockOutlinedIcon","RoomOutlinedIcon","StarBorderIcon","disablePadding","override","MuiCircularProgress","dialogContainer","loadingIndicator","setCsrfToken","userNotFound","setUserNotFound","executeMarketingCompanyQuery","readMarketingCompany","MarketingCompany","IsRegistered","marketingCompanyData","googlePlacesResult","ContactPersonEmail","ContactPersonFirstName","ContactPersonLastName","canton_short","scroll","PasswordResetDialog","itemNoAccount","notice","card","form","Login","authorizing","setAuthorizing","initialFormErrors","login","tokenHash","showPasswordForgotDialog","setShowPasswordForgotDialog","showMailSendMessage","setShowMailSendMessage","passwordForgotSchema","myselfResult","passwordLostResult","executePasswordLostQuery","triggerLoginError","loginUser","_schema$validate","setAppRedirectCookie","t0","toUTCString","myselfData","OtherBusinessActivities","otherBusinessSpecialties","OtherBusinessSpecialities","MicrositeImages","_item$node","_item$node2","Src","MicrositeReferences","referenceImages","MicrositeReferencesImages","image","_image$node","_image$node2","ApiAccess","RequestUrl","AppAdmin","IsMasquerade","readMyselfResult","ContactPerson","MicrositeColorScheme","MicrositeDescription","MicrositeLogo","AdditionalMemberships","MicrositeCertified","MicrositeCertifiedUntil","passwordLost","handleEmailChange","handlePasswordForgotSubmit","_passwordForgotSchema","PasswordForgotDialogContent","Card","CardContent","LoginDialogContent","onSubmit","Logout","searchTextHolder","alignSelf","iconButtonStartHolder","iconButtonCloseHolder","autocompleteResultList","listResultHeader","listResultItems","trigger","localProjectSearchParameter","setLocalProjectSearchParameter","searchHistoryOverlay","setSearchHistoryOverlay","searchHistoryContent","setSearchHistoryContent","removeProjectSearchParameter","resultReadMyselfQuery","executeReadMyselfQuery","fulltextSearchRequest","updateSearchHistoryContent","handleSearchfieldChange","onMouseLeave","searchText","onKeyDown","SearchIcon","searchTermListElements","searchTermIds","searchTermValue","searchTermId","handleSearchTermSelect","renderSearchTermListElements","userNameHolder","avatar","headerAccount","initialAccountData","initials","componentAccountData","setComponentAccountData","hoveredStyle","actions","ArrowDropDown","Avatar","getContentAnchorEl","transformOrigin","headerFree","userName","LocalOffer","letterSpacing","handleEndMasquerade","LayoutHeaderDebugNotice","NavTabs","minHeight","indicator","NavTab","selected","_renewLink","header","logoItem","flexBasis","logoImage","accountItem","navList","statusBar","renewLink","menuItem","micrositeLink","LayoutHeader","setValue","showStatusBar","setShowStatusBar","showTrialPossibleBar","setShowTrialPossibleBar","handleChange","handleToMicrositeButton","elevation","Container","disableGutters","LayoutHeaderAccountFree","LayoutHeaderAccount","LayoutHeaderSearchfield","drawer","footerContainer","transition","LayoutFooter","getReferralProgramLink","setDebugToolsEnabled","sheet","children","Layout","setCmsLinks","executeCmsLinksQuery","readLinks","updatePasswordLink","languageToggle","languageToggleBox","languageToggleBoxItem","languageStatus","appearance","currentPassword","passwordRepeat","showCurrentPassword","showPasswordRepeat","showPasswordField","setShowPasswordField","fetchingWithPassword","executeWithPasswordMutation","passwordValidationSchema","handleMutationResult","modifiedUserData","gutterBottom","StripePlanIdToNameConverter","h5","deleteAccountLink","strikePrice","planData","setPlanData","stripePlanName","openDeleteAccountDialog","setOpenDeleteAccountDialog","nextPaymentAttempt","setNextPaymentAttempt","amountDue","setAmountDue","futurePlans","setFuturePlans","actualUserData","setActualUserData","resultStripeProducts","executeStripeProductsQuery","fetchingUpdateMyself","executeUpdateMyselfMutation","resultStripeCustomerPortalLink","executeStripeCustomerPortalLinkQuery","plan","readMyselfUpcomingInvoice","next_payment_attempt","amount_due","readStripeCustomerPortalLink","SessionUrl","handleCloseDeleteAccount","handleAccountDeleteConfirm","showTrialNotice","determineRemainingDays","nowTimestamp","difference","round","currency","toUpperCase","toFixed","interval","showAutomaticRenewal","showNextPaymentAttempt","_gridItem","gridItemHeader","listItemText","listItemLink","listItemDate","invoices","setInvoices","executeInvoicesQuery","readMyselfInvoices","invoiceList","DescriptionOutlinedIcon","hosted_invoice_url","period_start","format","created","getInvoiceList","gridContainerWrapper","gridInnerContainer","itemAvatar","itemName","itemButtons","itemDivider","itemDelete","buttonWhite","textButton","itemDialog","itemButtonContainer","messageHint","DIALOGTYPE","dossierTemplatesSelect","setDossierTemplatesSelect","dialogType","setDialogType","zipSearchArea","companyUsers","setCompanyUsers","executeCreateUserMutation","fetchingUpdateUser","executeUpdateUserMutation","initialDefaultFormValues","dossierTemplatesParsed","dossierTemplatesGrouped","dossierHashId","languages","dossier","newUsersList","buildUserMutationData","selectedZipSearchAreaExtension","searchAreaIds","defaultCreateUserData","companyID","ManageUserDialog","createUserMutationData","createUser","updateUser","handleFormSubmit","handleUndoDeleteUser","Divider","handleDeleteUser","accountTabValue","setAccountTabValue","getWorkingPath","AccountInvoices","AccountSubscriptions","AccountUsers","AccountProfile","getContentRelatedToActiveTab","stepper","stepperMobile","labelTextMobile","iconText","labelText","MicrositeDetailsWizardStepper","step","useTheme","matches","useMediaQuery","steps","Stepper","nonLinear","activeStep","alternativeLabel","Step","completed","StepLabel","StepIconProps","orientation","addressObject","formValue","formValueSetter","address_components","long_name","autoComplete","formattedSuggestion","mainText","itemImage","itemField","itemTextField","flagSelect","outline","flagListContainer","flagListItem","flagArrow","borderStyle","borderWidth","PhoneField","defaultCountry","textFieldProps","countryState","setCountryState","preSelectCountry","AsYouType","getCountryByCode","filterOutCountryPrefix","phoneNumber","ReactCustomFlagSelect","tabIndex","animate","optionList","classNameSelect","classNameOptionListContainer","classNameOptionListItem","customStyleContainer","customStyleSelect","maxHeight","customStyleOptionListContainer","countryId","getCountryById","selectHtml","CompanyBasicSettingsForm","streetFormValue","setStreetFormValue","zipFormValue","setZipFormValue","cityFormValue","setCityFormValue","_ref$readOnly","readOnly","activePhone","setActivePhone","activeMobile","setActiveMobile","activeFax","setActiveFax","GooglePlacesAutosuggestStreet","GooglePlacesAutosuggestZip","GooglePlacesAutosuggestCity","itemPhone","itemMobile","itemFax","fetchingProgress","overlay","bottom","LoadingOverlay","introItem","introContainer","itemStepper","buttonNext","initialFormValuesState","CompanyProfileStep","setStep","loadingOverlayOpen","setLoadingOverlayOpen","companyIsUpdating","executeCompanyUpdateMutation","determineCountry","isInCH","addressComponent","short_name","InfoOutlinedIcon","addressString","showLoadingOverlayTimeout","foundZip","comp","determineZip","prevActiveStep","error_message","colorScheme","furtherMemberships","Alt","createFileFromUrl","metadata","filename","blob","File","readFile","file","reject","reader","FileReader","onload","onerror","abort","readAsDataURL","formatImagesArray","formattedImagesArray","updateCompanyMutation","forms","CompanyInfoForm","currentFileObjects","setCurrentFileObjects","colorSchemes","currentImagesObject","setCurrentImagesObject","logoUploadDialogOpen","setLogoUploadDialogOpen","imageUploadDialogOpen","setImageUploadDialogOpen","logoData","setLogoData","hasLogoSrc","handleLogoUploadDialog","getColorBlocks","colorSchemeName","convertColorSchemeNames","handleImageUploadDialog","_ref3","_callee3","initialFiles","fileObjs","_context3","all","_ref4","initialFile","membershipsChecked","membershipID","handleMembershipChange","filteredMembership","TooltipInputAdornment","_ref5","titleString","membershipElement","IsBadge","checkboxGridItem","membershipsLogo","LogoUrl","inputEmailApplicationTextHelperText","legalForms","formLabel","RadioGroup","Radio","radioButtonHelperText","inputProps","maxLength","logoImg","buttonImg","DropzoneDialogBase","dropzoneText","acceptedFiles","filesLimit","fileObjects","cancelButtonText","submitButtonText","maxFileSize","onAdd","newFileObjs","onDelete","deleteFileObj","clearedArray","onSave","showPreviews","showFileNamesInPreview","alertSnackbarProps","getFileAddedMessage","fileName","getFileRemovedMessage","getFileLimitExceedMessage","getDropRejectMessage","rejectedFile","colorSchemesMenuItems","getColorSchemes","internalID","listItemPointer","newFiles","membershipElementTooltipped","buttonBack","CompanyInfoStep","setColorSchemes","microsite_color_schemes","handleButtonNext","convertedImagesArray","logoArray","logoFile","convertedLogoArray","numberOfEmployees","masterBusiness","images","updateCompany","CompanyBusinessActivitiesForm","hasBranchSubData","setHasBranchSubData","isSubBranchChecked","subBranches","isChecked","otherBranchSubIsChecked","handleOtherBranchChange","branchID","handleOtherBranchAdd","handleOtherBranchRemove","branchSubIsChecked","branchSubId","otherBranchIsChecked","branchSubID","branchId","newBranchesArray","handleBranchSubChange","handleBranchSubAdd","handleBranchSubRemove","otherActivities","subs","handleOtherBranchSubChange","mainBranchID","getAttribute","otherSpecialities","handleOtherBranchSubAdd","handleOtherBranchSubRemove","preciseTag","branchSubCategories","branchCategorySubs","branches","checkboxControlIndented","main_branch_id","otherBranchCategories","queryBranches","CompanyBusinessActivitiesStep","branchSubsRefined","otherBranchesRefined","otherBusinessSpecialitiesRefined","businessActivityID","dataURLtoFile","dataUrl","arr","mime","biteStr","atob","u8arr","Uint8Array","charCodeAt","ButtonLink","ButtonTitle","Location","Month","Year","CompanyReferencesForm","references","setReferences","introText","editReferenceDialogOpen","setEditReferenceDialogOpen","referenceImagesObjects","setReferenceImagesObjects","months","handleReferenceImagesSave","Images","formatImagesObject","asyncRes","convertImagesToBase64","completedReorderedList","onImagesDragEnd","handleReferenceTitleChange","handleReferenceButtonTitleChange","handleReferenceButtonLinkChange","handleReferenceContentChange","handleReferenceLocationChange","handleMonthChange","handleYearChange","referenceListData","referenceImage","_x3","formattedImagesObject","_item$file","_item$file2","_callee4","_context4","_x4","convertedReferences","_formValues$Month","_formValues$Year","newReferences","highestSortValue","cityAndDate","img","reformattedImages","DataUrlToFileConverter","handleEditReference","handleDeleteReference","_formValues$Content","getMonths","years","getYears","imagesError","editReferenceDialog","addReferenceButton","CompanyReferencesStep","CompleteWizardStep","MicrositeDetailsWizard","wizardStep","setWizardStep","getDialogByStep","convertJsonToQuery","flatJsonObject","encodeURIComponent","expires_in","refresh_token","token_type","expired_timestamp","schemaTokenData","_isSetRefreshToken","tokenData","_updateExpiredTimestamp","addExpireTime","time","localStoreTokenData","loadFromLocalStorage","_inRefresh","username","fulfilledResult","cache","credentials","redirect","referrer","body","t1","t2","refreshOnDemand","setStateFunction","force","currTime","tokenEndOfLife","newToken","_args3","isRefreshing","styles","dialogButton","UpdateCompanyDataDialog","aria-labelledby","handleUpdateCompanyMutation","companyTabValue","setCompanyTabValue","CompanyReferences","CompanyBusinessActivities","CompanyInfo","CompanyBasicSettings","i18n","use","detector","Backend","initReactI18next","init","backend","loadPath","fallbackLng","debug","ns","defaultNS","keySeparator","interpolation","escapeValue","formatSeparator","react","wait","ErrorBoundary","_Component","_inherits","_super","_createSuper","_this","_classCallCheck","_createClass","_this$props$user","setState","ThemeProvider","CssBaseline","Provider","Component","planList","cardContent","gridItemContainer","gridItemLeft","gridItemRight","checkbox","pricing","benefits","taxHint","trialNotificationBox","trialNotification","trialEndedNotification","stripeProductData","setStripeProductData","smart","pro","checkboxState","setCheckboxState","executeUpdateStripePlanMutation","orderedStripeProductData","priority","handlePlanChange","monthlyPlanData","yearlyPlanData","setFormData","step0","monthly","yearly","step2","displayPlans","alignContent","ChevronLeftIcon","onMouseEnter","showSmartTrialNotification","days","SmartPlanCard","ProPlanCard","showTrialHasEnded","FreeToPremiumStepper","zeroBasedStep","autoCompleteCompanyData","setAutoCompleteCompanyData","step1","any","itemSelection","branchCategorySub","initialFormErrorsState","toStep","_container","formControlTerm","itemTerm","itemTermSwitcher","itemTermSwitch","itemLabel","trialHint","AntSwitch","switchBase","common","white","thumb","track","Switch","chosenPlan","terms","termSwitchState","setTermSwitchState","stripeProductsQueryResult","step3","determineChosenPlan","firstPlanID","showPricePerMonth","SmartPlanLabel","ProPlanLabel","showSwitch","showTermSwitch","cardHolder","cardElement","cardItem","stripeElement","InputElement","injectStripe","setPaymentMethodId","stripeSubmitClicked","setStripeSubmitClicked","executeQueryStripeSetupIntent","last4","CardElement","readStripeSetupIntent","client_secret","elements","getElement","cardholderName","document","getElementById","stripe","createPaymentMethod","billing_details","paymentResult","confirmCardSetup","payment_method","paymentConfirmResult","paymentMethod","submitIsDisabled","StripeProvider","apiKey","Elements","CreditCardForm","infoText","InvoiceForm","paymentCardContainer","Payment","invoiceChecked","setInvoiceChecked","creditCardChecked","setCreditCardChecked","Collapse","in","Invoice","paymentCardImage","paymentLabelTop","formFieldContainer","paperContainer","iconButton","paperHeadLeft","paperHeadRight","paperFooter","lock","line","secureText","textPremiumSecure","priceTag","paymentMethodId","paymentMethodID","showPriceWithTax","Lock","initialFormData","step4","cardholder","cardNumber","cardExpiry","cardCVC","notifyBeforeClose","trialPeriodDays","closeButtonVisible","showDialogCloseButton","FreeToPremiumDialogueStep1","FreeToPremiumDialogueStep2","FreeToPremiumDialogueStep3","FreeToPremiumDialogueStep4","FreeToPremiumDialogueStep5","FreeToPremiumDialogueStep0","CustomSCStatus","executeBuildingApplicationsQuery","CustomSCTableRow","DossierManagement","companyLocations","setCompanyLocations","companyHashId","companyLocationsResult","executeCompanyLocationsQuery","readCompanyLocations","companyLocation","companyLocationHashId","DossierBasicSettings","newFormDataSet","setNewFormDataSet","_companyLocationData$","_companyLocationData$2","companyLocationData","newFormData","DossierInfo","back","Dossier","subPage","dossierTabValue","setDossierTabValue","ChartJS","register","CategoryScale","LinearScale","BarElement","Legend","zoomPlugin","BarOptions","Applications","buildingApplicationType","queryReadStatisticSearchAreaResult","useMemo","readStatisticSearchArea","datasets","Bar","Submissions","DownloadApplications","submissionType","queryReadStatisticApplicationsResult","readStatisticApplications","SendApplications","_statisticActiveButto","gridItemStat","statisticActiveButton","Statistics","activeStatisticGroup","setActiveStatisticGroup","tabValue","addEventListener","rootStandard","createMuiTheme","overrides","MuiDialog","paperWidthXs","paperWidthMd","MuiTab","MuiTableCell","MuiTypography","caption","MuiIconButton","MuiInputBase","MuiTooltip","tooltipPlacementBottom","popper","MuiRadio","PrivateTabIndicator","MuiDropzoneSnackbar","errorAlert","successAlert","infoAlert","MuiDropzonePreviewList","A400","userIcon","hover","fontFamily","backgroundImage","backgroundRepeat","backgroundSize","routes","Projects","ProjectsSearch","ProjectsFree","Favorites","CustomSC","Account","Onboarding","OnboardingPasswordReset","OnboardingMarketing","googleLibraries","withTranslation","useRedirect","locationDataMock","setLocationData","componentUser","setComponentUser","userHash","setUserHash","setTokenHash","componentToken","setComponentToken","_useState23","_useState24","_useState25","_useState26","messageState","setMessageState","_useState27","_useState28","_useState29","_useState30","_useState31","_useState32","setGoogleMapsIsLoaded","_useState33","_useState34","setGoogleMapsLoadError","_useState35","_useState36","_useState37","_useState38","_useState39","_useState40","_useState41","_useState42","_useState43","_useState44","markAsReadByLocation","_useState45","_useState46","_useState47","_useState48","_useState49","_useState50","_useState51","_useState52","_useQueryParams","useQueryParams","queryParams","_useLoadScript","useLoadScript","googleMapsApiKey","libraries","isLoaded","loadError","changeLanguage","showUpgrade","setQueryParams","removeAppRedirectCookie","setTokenWithoutRehash","clearMessage","useRoutes","UpgradeToPremium","exchange","cacheExchange","ApplicationInput","BusinessActivityInput","BusinessActivity","BusinessSpecialityInput","BusinessSpeciality","CompanyLocation","ConstructionComponent","ElasticLatestProject","ElasticNewBuildingApplicationLocation","ElasticNewBuildingApplication","ElasticNewBuildingApplicationSearchArea","ElasticProjectAddress","ElasticProjectBuildingOwner","ElasticProjectConstructionSite","ElasticProjectGeo","ElasticProjectProjectManagement","ElasticProject","UserID","LocationID","EnterpriseElasticProject","EnterpriseElasticResult","ExternalApplicationInput","FavoriteHistoryItem","FavoriteInput","FavoriteNoteInput","FavoriteNote","FavoriteState","Favorite","Feature","FulltextSearchRequest","LinkList","LocationInput","MembershipInput","Membership","MicrositeImageInput","MicrositeImage","MicrositeInput","MicrositeLogoInput","MicrositeReferencesImageInput","MicrositeReferencesImage","MicrositeReferencesInput","Novalytica","Plan","ProductMetadata","Product","Result","SearchArea","SmartconextConf","StatisticApplication","StatisticDataset","StripeCustomerPortalLink","StripeSetupIntent","UserInput","ZefixCompanyAddressInformation","ZefixCompanyAddress","ZefixCompanyDetails","ZefixCompanyLegalFormName","ZefixCompanyLegalForm","ZefixCompanySuggest","authExchange","utils","addAuthToOperation","operation","appendHeaders","Authorization","didAuthError","_operation","graphQLErrors","some","refreshAuth","refreshResult","willAuthError","GraphQLClientSilverstripe","createClient","fetchOptions","urqlFetchOptions","exchanges","mapExchange","onError","fetchExchange","configure","ReactDOM","render","Suspense","fallback","URQLProvider","URQLClientSilverstripe","App","navigator","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.3f7381f1.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/ch.f0617e6d.svg\";","module.exports = __webpack_public_path__ + \"static/media/de.b55ae913.svg\";","module.exports = __webpack_public_path__ + \"static/media/fr.0846f86e.svg\";","module.exports = __webpack_public_path__ + \"static/media/it.b46f8792.svg\";","module.exports = __webpack_public_path__ + \"static/media/at.e006579c.svg\";","module.exports = __webpack_public_path__ + \"static/media/li.64c4108b.svg\";","import packageJson from \"../package.json\";\n\n// Client Version\nexport const VERSION = packageJson.version;\n\n// Default Logo path\nexport const DEFAULT_LOGO_PATH = \"/assets/logoBau-white.svg\";\n\n// Google api key\n// export const GOOGLE_API_KEY = 'AIzaSyA50Ne2ovR7pu0vdTTT6o9neTWYtJRoNY0'\n// smartconext API-Key\nexport const GOOGLE_API_KEY = \"AIzaSyA3yyQAIoWs_9qWiN39i2CunJYReMBKCEo\";\n\n// placeholder email for user object consistency\nexport const EMAIL_PLACEHOLDER = \"place@holder345t3drfge5tt3.de\";\n\n// Fallback coordinates in the middle of switzerland\nexport const FallBackCoordinates = {\n lat: 46.818188,\n lon: 8.227512,\n};\n\nexport const MASQ_COOKIE_NAME = 'app-admin-mask';\n\n// Fallback link for referral program\nexport const FallBackReferralProgramLink =\n \"https://www.smartconext-bau.ch/de/empfehlungsprogramm/\";\n\n// Canton list // TODO: get from config API\nexport const CANTON_LIST = {\n AG: \"Aargau\",\n AR: \"Appenzell Ausserrhoden\",\n BL: \"Basel-Landschaft\",\n BS: \"Basel-Stadt\",\n BE: \"Bern\",\n FR: \"Freiburg\",\n GL: \"Glarus\",\n GR: \"Graubünden\",\n LU: \"Luzern\",\n NW: \"Nidwalden\",\n OW: \"Obwalden\",\n SH: \"Schaffhausen\",\n SZ: \"Schwyz\",\n SO: \"Solothurn\",\n SG: \"St. Gallen\",\n TG: \"Thurgau\",\n UR: \"Uri\",\n VS: \"Wallis\",\n ZG: \"Zug\",\n ZH: \"Zürich\",\n};\n\nexport const DEFAULT_LANGUAGE = \"de\";\n\nexport const DEFAULT_LOCALE_FOR_LANGUAGE = {\n en: \"en_GB\",\n de: \"de_DE\",\n fr: \"fr_FR\",\n};\n\nexport const DOSSIER_AVAILABLE_LOCALES = {\n de_DE: \"de\",\n fr_FR: \"fr\",\n};\n\nexport const CHARTJS_STATISTIC_OPTIONS = {\n responsive: true,\n plugins: {\n legend: {\n position: \"top\",\n },\n title: {\n display: true,\n text: \"[[:TITLE_TEXT_PLACEHOLDER:]]\",\n },\n colors: {\n enabled: false,\n },\n zoom: {\n pan: {\n enabled: true,\n mode: \"x\",\n },\n zoom: {\n wheel: {\n enabled: true,\n modifierKey: \"ctrl\",\n },\n pinch: {\n enabled: false,\n },\n drag: {\n enabled: false,\n },\n mode: \"x\",\n },\n },\n },\n scales: {\n y: {\n ticks: {\n stepSize: 1,\n },\n },\n x: {\n position: \"right\",\n min: 10,\n max: 13,\n },\n },\n};\n\nexport const COOKIE_LIFETIME_DAYS = 30;\nexport const companyDirectoryPath = \"/de/experten/\";\n\n// Define API endpoints and cookie-name based on hostname\nconst hostname = window.location.hostname;\nlet devTld = false;\nlet stageTld = false;\nexport let apiTld;\nexport let cookieDomain;\nexport let cookieDomainRedirect;\nexport let STRIPE_PLAN_IDS = {\n SMART: {\n YEARLY: \"yearly\",\n MONTHLY: \"monthly\",\n },\n PRO: {\n YEARLY: \"yearly\",\n MONTHLY: \"monthly\",\n },\n};\n\nswitch (hostname) {\n // dev\n case \"localhost\":\n apiTld = \"http://smartconext.docker:8086\";\n cookieDomain = \".localhost\";\n cookieDomainRedirect = \".smartconext.docker\";\n devTld = true;\n STRIPE_PLAN_IDS.SMART.YEARLY = \"price_1MZVVyAKTM163i3uVYTl38hT\";\n STRIPE_PLAN_IDS.PRO.YEARLY = \"price_1MZ9maAKTM163i3uX8wm04gg\";\n break;\n case \"app.smartconext.docker\":\n apiTld = \"http://smartconext.docker:8086\";\n cookieDomain = \".app.smartconext.docker\";\n cookieDomainRedirect = \".smartconext.docker\";\n devTld = true;\n STRIPE_PLAN_IDS.SMART.YEARLY = \"price_1MZVVyAKTM163i3uVYTl38hT\";\n STRIPE_PLAN_IDS.PRO.YEARLY = \"price_1MZ9maAKTM163i3uX8wm04gg\";\n break;\n // stage\n case \"app.smartconext.ia.ennit.de\":\n apiTld = \"https://smartconext.ia.ennit.de\";\n cookieDomain = \".app.smartconext.ia.ennit.de\";\n cookieDomainRedirect = \".smartconext.ia.ennit.de\";\n stageTld = true;\n STRIPE_PLAN_IDS.SMART.YEARLY = \"price_1MZVVyAKTM163i3uVYTl38hT\";\n STRIPE_PLAN_IDS.PRO.YEARLY = \"price_1MZ9maAKTM163i3uX8wm04gg\";\n break;\n // live\n case \"app.smartconext-bau.ch\":\n default:\n apiTld = \"https://www.smartconext-bau.ch\";\n cookieDomain = \".app.smartconext-bau.ch\";\n cookieDomainRedirect = \".www.smartconext-bau.ch\";\n STRIPE_PLAN_IDS.SMART.YEARLY = \"price_1MYTYmH3mxWGlAeLHXApVu1S\";\n STRIPE_PLAN_IDS.PRO.YEARLY = \"price_1MYTanH3mxWGlAeLh3Ncj4QU\";\n}\n\nconst graphQlEndpoint = `${apiTld}/graphql`;\nconst oAuthApiEndpoint = `${apiTld}/oauth2`;\n\nexport const isDev = devTld;\nexport const isStage = stageTld;\nexport const isNotLive = devTld || stageTld;\nexport const cmsUrl = apiTld;\nexport const googlePlacesApiEndpoint = `${apiTld}/places`;\n\n// Silverstripe GraphQL API\nexport const SILVERSTRIPE_GRAPHQL_API = {\n url: graphQlEndpoint,\n};\n\n// Set a forces feature-set (can be 'free', 'smart', 'pro'), use null for ignoring\n// ATTENTION: Only works if isDev is set to true\nexport const FORCE_MODE = null;\n\n// Silverstripe OAuth API\nconst smartConextClientId = \"smartconext0939024792\";\nexport const SILVERSTRIPE_OAUTH_API = {\n urls: {\n authorize: oAuthApiEndpoint + \"/token/\",\n refresh: oAuthApiEndpoint + \"/refresh/\",\n },\n data: {\n authorize: {\n grant_type: \"password\",\n client_id: smartConextClientId,\n },\n refresh: {\n grant_type: \"refresh_token\",\n client_id: smartConextClientId,\n },\n },\n};\n\n// Acl control\nexport const ACL_ACTIVE = true;\n\n// Acl components\nexport const ACL_COMPONENTS = {\n ACCOUNT: \"Account\",\n ACCOUNT_INVOICES: \"AccountInvoices\",\n ACCOUNT_PROFILE: \"AccountProfile\",\n ACCOUNT_SUBSCRIPTIONS: \"AccountSubscriptions\",\n ACCOUNT_USERS: \"AccountUsers\",\n COMPANY: \"Company\",\n COMPANY_BASIC_SETTINGS: \"CompanyBasicSettings\",\n COMPANY_INFO: \"CompanyInfo\",\n COMPANY_BUSINESS_ACTIVITIES: \"CompanyBusinessActivities\",\n COMPANY_USERS: \"CompanyUsers\",\n COMPANY_REFERENCES: \"CompanyReferences\",\n CREDIT_CARD: \"CreditCard\",\n FAVORITES: \"Favorites\",\n CUSTOM_SC: \"CustomSC\",\n FAVORITES_TABLE_ROW: \"FavoritesTableRow\",\n FAVORITE_DETAIL_ADDITION: \"FavoriteDetailAddition\",\n FAVORITE_STATUS: \"FavoriteStatus\",\n FREE_TO_PREMIUM_DIALOGUE_STEP_0: \"FreeToPremiumDialogueStep0\",\n FREE_TO_PREMIUM_DIALOGUE_STEP_1: \"FreeToPremiumDialogueStep1\",\n FREE_TO_PREMIUM_DIALOGUE_STEP_2: \"FreeToPremiumDialogueStep2\",\n FREE_TO_PREMIUM_DIALOGUE_STEP_3: \"FreeToPremiumDialogueStep3\",\n FREE_TO_PREMIUM_DIALOGUE_STEP_4: \"FreeToPremiumDialogueStep4\",\n FREE_TO_PREMIUM_DIALOGUE_STEP_5: \"FreeToPremiumDialogueStep5\",\n FREE_TO_PREMIUM_STEPPER: \"FreeToPremiumStepper\",\n GOOGLE_PLACES_AUTOSUGGEST_FIELD: \"GooglePlacesAutosuggestField\",\n LAYOUT: \"Layout\",\n LAYOUT_FOOTER: \"LayoutFooter\",\n LAYOUT_HEADER: \"LayoutHeader\",\n LAYOUT_HEADER_ACCOUNT: \"LayoutHeaderAccount\",\n LAYOUT_HEADER_ACCOUNT_FREE: \"LayoutHeaderAccountFree\",\n LAYOUT_HEADER_SEARCHFIELD: \"LayoutHeaderSearchfield\",\n LOCATION_TABS: \"LocationTabs\",\n ONBOARDING: \"Onboarding\",\n ONBOARDING_FREE_USER_WELCOME_DIALOG: \"OnboardingFreeUserWelcomeDialog\",\n ONBOARDING_MARKETING: \"OnboardingMarketing\",\n ONBOARDING_MARKETING_LEFT_PANE: \"OnboardingMarketingLeftPane\",\n ONBOARDING_MARKETING_RIGHT_PANE: \"OnboardingMarketingRightPane\",\n ONBOARDING_PREMIUM_USER_WELCOME_DIALOG: \"OnboardingPremiumUserWelcomeDialog\",\n POPUP_MESSAGES: \"PopupMessages\",\n PROJECTS: \"Projects\",\n PROJECTS_FREE: \"ProjectsFree\",\n PROJECTS_FREE_LOCATION_HANDLER: \"ProjectsFreeLocationsHandler\",\n PROJECTS_FREE_TABLE_ROW: \"ProjectsFreeTableRow\",\n PROJECTS_LOCATION_HANDLER: \"ProjectsLocationsHandler\",\n PROJECTS_TABLE_ROW: \"ProjectsTableRow\",\n TABLE_PAGINATION_ACTIONS: \"TablePaginationActions\",\n UPGRADE_TO_PREMIUM: \"UpgradeToPremium\",\n USER_TYPES: \"UserTypes\",\n};\n\n// Phone/Fax field settings\nexport const PHONE_COUNTRIES = [\n {\n id: \"1\",\n name: \"CH\",\n displayText: \"CH\",\n locale: \"de_CH\",\n flag: require(\"./assets/flags/ch.svg\"),\n phonePrefix: \"+41\",\n },\n {\n id: \"2\",\n name: \"DE\",\n displayText: \"DE\",\n locale: \"de_DE\",\n flag: require(\"./assets/flags/de.svg\"),\n phonePrefix: \"+49\",\n },\n {\n id: \"3\",\n name: \"FR\",\n displayText: \"FR\",\n locale: \"fr_FR\",\n flag: require(\"./assets/flags/fr.svg\"),\n phonePrefix: \"+33\",\n },\n {\n id: \"4\",\n name: \"IT\",\n displayText: \"IT\",\n locale: \"it_IT\",\n flag: require(\"./assets/flags/it.svg\"),\n phonePrefix: \"+39\",\n },\n {\n id: \"5\",\n name: \"AT\",\n displayText: \"AT\",\n locale: \"de_AT\",\n flag: require(\"./assets/flags/at.svg\"),\n phonePrefix: \"+43\",\n },\n {\n id: \"6\",\n name: \"LI\",\n displayText: \"LI\",\n locale: \"de_LI\",\n flag: require(\"./assets/flags/li.svg\"),\n phonePrefix: \"+423\",\n },\n];\n\nexport const buildingSumsCluster = [\n {\n id: 1,\n label: \"weniger als 100 Tsd. CHF\",\n },\n {\n id: 2,\n label: \"100 Tsd. – 1 Mio. CHF\",\n },\n {\n id: 3,\n label: \"1 Mio. – 5 Mio. CHF\",\n },\n {\n id: 4,\n label: \"mehr als 5 Mio. CHF\",\n },\n];\n","import { createContext } from 'react'\n\nconst GlobalContext = createContext()\n\nexport default GlobalContext\n","/**\n * Check object properties without the need to be existent.\n * Returns a default value if not existent!\n *\n * @param fn\n * @param defaultVal\n * @returns {*}\n */\nconst getSafe = (fn, defaultVal) => {\n try {\n return fn()\n } catch (e) {\n return defaultVal\n }\n}\n\nexport default getSafe\n","/**\n * FormatHelper\n *\n * Formats date, distance, directoryName\n *\n * @returns {{formatDate: (function(*=): string), formatDistance: (function(*): string), getTimestampFromDate: (function(*=): number), isValidDate: (function(*=): (boolean)), formatDirectoryName: (function(*): *)}}\n * @constructor\n */\nconst FormatHelper = () => {\n /**\n * buildDateObject\n *\n * @param date\n * @returns {Date|*}\n */\n const buildDateObject = date => {\n if (date !== null && date.length > 10) {\n return new Date(date.substring(0, 10))\n }\n return date\n }\n\n /**\n * isValidDate\n *\n * @param date\n * @returns {boolean|boolean}\n */\n const isValidDate = date => {\n const dateObj = buildDateObject(date)\n return dateObj instanceof Date && !isNaN(dateObj)\n }\n\n /**\n * formatDate\n *\n * @param date\n * @returns {string}\n */\n const formatDate = date => {\n if (isValidDate(date)) {\n const dateObj = buildDateObject(date)\n const day = ('0' + dateObj.getDate().toString(10)).slice(-2)\n const month = ('0' + (dateObj.getMonth() + 1).toString(10)).slice(-2)\n const year = dateObj.getFullYear()\n\n return day + '.' + month + '.' + year\n } else {\n return ''\n }\n }\n\n /**\n * getTimestampFromDate\n *\n * @param date\n * @returns {number}\n */\n const getTimestampFromDate = date => {\n if (isValidDate(date)) {\n const dateObj = buildDateObject(date)\n return dateObj.getTime()\n }\n }\n\n /**\n * formatDistance\n *\n * @param distance\n * @returns {string}\n */\n const formatDistance = distance => {\n const pd = Math.pow(10, 2)\n const roundedDistance = Math.floor(distance * pd) / pd\n return roundedDistance.toString(10).replace('.', ',')\n }\n\n /**\n * formatDirectoryName\n *\n * formats a directory name to be valid as url part\n *\n * @param directoryName\n */\n const formatDirectoryName = directoryName => {\n // eslint-disable-next-line no-extend-native\n String.prototype.allReplace = function (obj) {\n let retStr = this\n for (const element in obj) {\n retStr = retStr.replace(new RegExp(element, 'g'), obj[element])\n }\n return retStr\n }\n\n const replacements = {\n // prettier-ignore\n \\u00dc: 'UE', // Umlaut replacement\n // prettier-ignore\n \\u00c4: 'AE', // Umlaut replacement\n // prettier-ignore\n \\u00d6: 'OE', // Umlaut replacement\n // prettier-ignore\n \\u00fc: 'ue', // Umlaut replacement\n // prettier-ignore\n \\u00e4: 'ae', // Umlaut replacement\n // prettier-ignore\n \\u00f6: 'oe', // Umlaut replacement\n // prettier-ignore\n \\u00df: 'ss', // ß replacement\n '&': '-and-', // & replacements\n '&': '-and-', // & replacements\n '(\\\\s)|\\\\+': '-', // remove whitespace/plus\n '[_.]+': '-', // underscores and dots to dashes\n '[^A-Za-z0-9-]+': '', // remove non-ASCII chars, only allow alphanumeric and dashes\n '[/?=#:]+': '-', // remove forward slashes, question marks, equal signs, hashes and colons in case multibyte is allowed (and non-ASCII chars aren't removed)\n '[-]{2,}': '-', // remove duplicate dashes\n '^[-]+': '', // Remove all leading dashes\n '[-]+$': '' // Remove all trailing dashes\n }\n\n return directoryName.allReplace(replacements)\n }\n\n const boolToString = value => {\n if (typeof value === 'boolean') {\n if (value === true) {\n return '1'\n }\n\n return '0'\n }\n\n return value\n }\n\n /**\n * return\n */\n return {\n formatDate,\n formatDistance,\n isValidDate,\n getTimestampFromDate,\n formatDirectoryName,\n boolToString\n }\n}\n\nexport default FormatHelper()\n","import React, { useContext, useState, useEffect /* , useMemo */ } from 'react'\nimport {\n GoogleMap,\n DirectionsService,\n DirectionsRenderer,\n Marker\n} from '@react-google-maps/api'\nimport CircularProgress from '@material-ui/core/CircularProgress'\nimport { useTranslation } from 'react-i18next'\nimport { makeStyles } from '@material-ui/core'\nimport { green } from '@material-ui/core/colors'\nimport GlobalContext from './GlobalContext'\nimport { GOOGLE_API_KEY } from '../config'\nimport ExternalErrorLogger from '@ennit/react-external-errorlogger'\n\n/**\n * useStyles\n */\nconst useStyles = makeStyles(() => ({\n progress: {\n color: green[500],\n top: '50%',\n left: '50%'\n }\n}))\n\n/**\n * GoogleMapComponent\n *\n * @param props\n * @returns {*}\n * @constructor\n */\nconst GoogleMapComponent = props => {\n const classes = useStyles()\n const { t } = useTranslation()\n const { googleMapsIsLoaded, googleMapsLoadError } = useContext(GlobalContext)\n const [response, setResponse] = useState(null)\n const [coordinates, setCoordinates] = useState({\n lat: props.origin.lat,\n lon: props.origin.lon\n })\n\n /**\n * useEffect\n */\n useEffect(() => {\n const fetchCoords = async () => {\n const response = await window.fetch(\n `https://maps.googleapis.com/maps/api/geocode/json?address=${props.location}®ion=ch&key=${GOOGLE_API_KEY}`\n )\n\n return response.json()\n }\n\n if (coordinates.lat === null || coordinates.lon === null) {\n fetchCoords().then(result => {\n setCoordinates({\n lat: result.results[0].geometry.location.lat,\n lon: result.results[0].geometry.location.lng\n })\n })\n }\n }, [coordinates, props.location])\n\n /**\n * directionsCallback\n *\n * @param MapResponse\n */\n const directionsCallback = MapResponse => {\n if (response === null && MapResponse) {\n if (MapResponse.status === 'OK') {\n setResponse(MapResponse)\n } else {\n ExternalErrorLogger.log({\n text: 'Error in directionsCallback of GoogleMapComponent',\n data: {\n response: MapResponse\n }\n })\n }\n }\n }\n\n /**\n * render the google map, show spinner or handle errors\n */\n const renderMap = () => {\n if (googleMapsLoadError) {\n return
{t('error.loading.map')}
\n }\n\n if (\n googleMapsIsLoaded &&\n (coordinates.lat !== null || coordinates.lon !== null)\n ) {\n if (typeof props.destination !== 'undefined') {\n return (\n \n \n {response !== null && (\n \n )}\n \n )\n }\n\n const position = {\n lat: parseFloat(coordinates.lat),\n lng: parseFloat(coordinates.lon)\n }\n\n return (\n \n \n \n )\n }\n\n return \n }\n\n // TODO: set back to useMemo when tested with API-Data\n return renderMap()\n // /**\n // * return\n // */\n // return useMemo(() => {\n // return renderMap()\n // // eslint-disable-next-line\n // }, [response])\n}\n\nexport default GoogleMapComponent\n","export const CustomSCStateConditions = Object.freeze({\n ATTENTION: 'toedit',\n CHECKED: 'applied',\n FOLLOWUP: 'followup',\n FOLLOWED: 'followed',\n THUMB_UP: 'accepted',\n THUMB_DOWN: 'refused',\n EXTERNALAPPLIED: 'externalapplied'\n})\n\nconst CustomSCStateConditionText = (t, stateCondition) => {\n switch (stateCondition) {\n case CustomSCStateConditions.CHECKED:\n return t('favorites.label.status.checked')\n case CustomSCStateConditions.THUMB_UP:\n return t('favorites.label.status.thumb.up')\n case CustomSCStateConditions.FOLLOWUP:\n return t('favorites.label.status.followup')\n case CustomSCStateConditions.FOLLOWED:\n return t('favorites.label.status.followed')\n case CustomSCStateConditions.THUMB_DOWN:\n return t('favorites.label.status.thumb.down')\n case CustomSCStateConditions.EXTERNALAPPLIED:\n return t('favorites.label.status.externalapplied')\n default:\n return t('favorites.label.status.attention')\n }\n}\n\nexport { CustomSCStateConditions as default, CustomSCStateConditionText }\n","import React, { useContext } from 'react'\nimport GlobalContext from '../../lib/GlobalContext'\nimport { ACL_ACTIVE, ACL_COMPONENTS } from '../../config'\nimport { navigate } from 'hookrouter'\nimport Typography from '@material-ui/core/Typography'\nimport { Translation } from 'react-i18next'\n\nconst accessDeniedStyle = {\n margin: 20,\n paddingBottom: 10\n}\n\nconst allTimeAvailableComponents = [\n 'Login',\n 'Onboarding',\n 'OnboardingMarketing'\n]\n\n/**\n * Parse the permissions array from api to a single-dimensional array\n */\nexport const parsePermissions = permissionsFromAPI => {\n const permissionsArray = []\n if (Array.isArray(permissionsFromAPI)) {\n for (let i = 0; i < permissionsFromAPI.length; i++) {\n permissionsArray.push(permissionsFromAPI[i].Name)\n }\n }\n return permissionsArray\n}\n\n/**\n * AccessControl\n *\n * @param WrappedComponent\n * @param componentName\n * @param fallbackPath\n * @returns {*}\n * @constructor\n */\nconst withAccessControl = (\n WrappedComponent,\n componentName = null,\n fallbackPath = null\n) => {\n return props => {\n const componentNameExists = Object.values(ACL_COMPONENTS).includes(\n componentName\n )\n\n /**\n * restrictAccessOutput\n *\n * @returns {*}\n */\n const restrictAccessOutput = () => {\n return (\n \n {t => t('general.label.access.denied')}\n \n )\n }\n\n if (!componentName) {\n console.error('componentName has to be set')\n restrictAccessOutput()\n }\n\n if (!componentNameExists) {\n console.error('componentName does not exists in ACL')\n restrictAccessOutput()\n }\n\n // Skip acl checking if not active\n if (!ACL_ACTIVE) {\n return \n }\n\n // Start acl checking\n const { user } = useContext(GlobalContext)\n const userPermissions = user.getData().permissions\n const checkAccess = userPermissions.length > 0\n\n // Check users access to the component\n if (checkAccess) {\n // Initial access state\n let access = false\n\n // ACL check\n if (Array.isArray(userPermissions)) {\n // User need to have the correct access-rights to see the component\n if (userPermissions.indexOf(componentName) > -1) {\n access = true\n }\n }\n\n if (!access) {\n console.warn('Access denied to: ' + componentName)\n if (fallbackPath) {\n navigate('/' + fallbackPath)\n } else {\n return (\n \n {t => t('general.label.access.denied')}\n \n )\n }\n }\n return \n } else {\n if (allTimeAvailableComponents.includes(componentName)) {\n return \n } else {\n return (\n \n {t => t('general.label.access.denied')}\n \n )\n }\n }\n }\n}\n\nexport default withAccessControl\n","import React, { useContext, useEffect, useState } from 'react'\nimport CheckCircleIcon from '@material-ui/icons/CheckCircle'\nimport ErrorIcon from '@material-ui/icons/Error'\nimport InfoIcon from '@material-ui/icons/Info'\nimport CloseIcon from '@material-ui/icons/Close'\nimport { amber, green } from '@material-ui/core/colors'\nimport IconButton from '@material-ui/core/IconButton'\nimport Snackbar from '@material-ui/core/Snackbar'\nimport SnackbarContent from '@material-ui/core/SnackbarContent'\nimport WarningIcon from '@material-ui/icons/Warning'\nimport { makeStyles } from '@material-ui/core/styles'\nimport GlobalContext from '../lib/GlobalContext'\n\n/**\n * MESSAGE_TYPES\n */\nexport const MESSAGE_TYPES = {\n SUCCESS: 'success',\n ERROR: 'error',\n INFO: 'info',\n WARNING: 'warning'\n}\n\nconst variantIcon = {\n success: CheckCircleIcon,\n warning: WarningIcon,\n error: ErrorIcon,\n info: InfoIcon\n}\n\nconst variantDuration = {\n success: 6000,\n warning: 6000,\n error: null,\n info: 6000\n}\n\nconst useStylesSnackbarContentWrapper = makeStyles(theme => ({\n success: {\n backgroundColor: green[600]\n },\n error: {\n backgroundColor: theme.palette.error.dark\n },\n info: {\n backgroundColor: '#006A7A'\n },\n warning: {\n backgroundColor: amber[700]\n },\n icon: {\n fontSize: 20,\n opacity: 0.9,\n marginRight: theme.spacing(1)\n },\n message: {\n display: 'flex',\n alignItems: 'center'\n }\n}))\n\n/**\n * MySnackbarContentWrapper\n *\n * @param props\n * @returns {*}\n * @constructor\n */\nconst MySnackbarContentWrapper = props => {\n const classes = useStylesSnackbarContentWrapper()\n const { className, message, onClose, variant, ...other } = props\n const Icon = variantIcon[variant]\n\n return (\n \n \n \n \n }\n action={[\n \n \n \n ]}\n {...other}\n />\n )\n}\n\nconst useStyles = makeStyles(theme => ({\n margin: {\n margin: theme.spacing(1)\n }\n}))\n\n/**\n * Message\n *\n * @returns {*}\n * @constructor\n */\nconst Message = () => {\n const classes = useStyles()\n const [open, setOpen] = useState(false)\n const { message } = useContext(GlobalContext)\n\n /**\n * useEffect\n */\n useEffect(() => {\n if (message) {\n setOpen(true)\n }\n }, [message])\n\n /**\n * handleClose\n *\n * @param event\n * @param reason\n */\n function handleClose (event, reason) {\n if (reason === 'clickaway') {\n return\n }\n\n setOpen(false)\n }\n\n /**\n * return\n */\n return (\n
\n \n \n \n
\n )\n}\n\nexport default Message\n","import React, { useState, useContext, useEffect } from \"react\";\nimport clsx from \"clsx\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport GlobalContext from \"../../lib/GlobalContext\";\nimport { useTranslation } from \"react-i18next\";\nimport TextField from \"@material-ui/core/TextField\";\nimport Button from \"@material-ui/core/Button\";\nimport List from \"@material-ui/core/List\";\nimport ListItem from \"@material-ui/core/ListItem\";\nimport ListItemText from \"@material-ui/core/ListItemText\";\nimport Grid from \"@material-ui/core/Grid\";\nimport EditIcon from \"@material-ui/icons/Edit\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport DeleteIcon from \"@material-ui/icons/Delete\";\nimport RestoreFromTrashIcon from \"@material-ui/icons/RestoreFromTrash\";\nimport { CustomSCStateConditionText } from \"./CustomSCStateConditions\";\nimport Paper from \"@material-ui/core/Paper\";\nimport withAccessControl from \"../HOC/AccessControl\";\nimport { useMutation, useQuery } from \"urql\";\nimport CircularProgress from \"@material-ui/core/CircularProgress\";\nimport { green } from \"@material-ui/core/colors\";\nimport { MESSAGE_TYPES } from \"../PopupMessages\";\nimport merge from \"deepmerge\";\nimport { navigate } from \"hookrouter\";\nimport { ACL_COMPONENTS } from \"../../config\";\nimport FormatHelper from \"../../lib/FormatHelper\";\nimport moment from \"moment\";\nimport ExternalErrorLogger from \"@ennit/react-external-errorlogger\";\n\nconst useStyles = makeStyles((theme) => ({\n removed: {\n opacity: 0.5,\n },\n undo: {\n color: theme.palette.primary.main,\n textDecoration: \"underline\",\n },\n link: {\n cursor: \"pointer\",\n },\n breakLine: {\n margin: 0,\n whiteSpace: \"pre-line\",\n \"& span\": {\n fontSize: 16,\n },\n },\n paper: {\n margin: 0,\n boxShadow: \"none\",\n },\n buttonProgress: {\n color: green[500],\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n marginTop: -12,\n marginLeft: -12,\n },\n button: {\n marginTop: -30,\n marginBottom: 10,\n color: \"#fff\",\n fontWeight: \"bold\",\n },\n textarea: {\n marginTop: 30,\n marginBottom: 40,\n \"& div\": {\n borderColor: \"#999\",\n },\n },\n input: {\n \"&::placeholder\": {\n color: \"#525252\",\n opacity: \"1\",\n },\n },\n list: {\n marginTop: 20,\n padding: \"8px 16px 24px !important\",\n boxShadow:\n \"0px 2px 1px -1px rgba(0,0,0,0.2), 0px 1px 1px 0px rgba(0,0,0,0.14), 0px 1px 3px 0px rgba(0,0,0,0.12)\",\n borderRadius: \"4px\",\n },\n item: {\n width: \"100%\",\n padding: \"0 !important\",\n \"& button\": {\n marginTop: 20,\n },\n \"& div\": {\n boxShadow: \"none\",\n border: 0,\n },\n },\n statusText: {\n \"& span\": {\n fontSize: 14,\n },\n },\n statusDate: {\n flex: \"inherit\",\n width: 85,\n },\n statusHolder: {\n marginTop: 20,\n padding: 0,\n },\n}));\n\nconst createFavoriteNoteMutation = `\n mutation CreateFavoriteNoteMutation (\n $favoriteHashID: String,\n $text: String\n ) {\n createFavoriteNote (FavoriteHashID: $favoriteHashID, Text: $text) {\n HashID\n FavoriteHashID\n Text\n Created\n Removed\n } \n }\n`;\n\nconst updateFavoriteNoteMutation = `\n mutation UpdateFavoriteNoteMutation (\n $hashID: String,\n $text: String,\n $removed: Boolean\n ) {\n updateFavoriteNote (HashID: $hashID, Text: $text, Removed: $removed) {\n HashID\n FavoriteHashID\n Text\n Created\n Removed\n }\n }\n`;\n\nconst queryFavorites = `\n query ReadFavorites (\n $userHashID: ID,\n $filterFor: [String]\n ) {\n readFavorites(ID: $userHashID, ConstructionTypeContains: $filterFor) {\n HashID\n ProjectHashID\n Removed\n State\n Canton\n Calculated_distance\n Content\n Final_title\n Import_date\n Date\n Applied\n Construction_site {\n Address {\n Street\n Number\n Zip\n City\n Geo {\n lat\n lon\n }\n }\n }\n Building_owner {\n Name\n Address {\n Street\n Number\n Zip\n City\n Geo {\n lat\n lon\n }\n }\n }\n Project_management {\n Name\n Phone\n Email\n Website\n Email_other\n Address {\n Street\n Number\n Zip\n City\n Geo {\n lat\n lon\n }\n }\n }\n StateHistory {\n edges {\n node {\n Created\n State\n }\n }\n }\n Notes {\n edges {\n node {\n HashID\n Text\n Created\n Removed\n }\n }\n }\n }\n }\n`;\n\n/**\n * CustomSCDetailAddition\n *\n * @returns {*}\n * @constructor\n */\nconst CustomSCDetailAddition = (props) => {\n const classes = useStyles();\n const {\n setFavoriteData,\n setMessage,\n user,\n unsetUser,\n token,\n unsetToken,\n } = useContext(GlobalContext);\n const { t } = useTranslation();\n const blankNote = {\n id: null,\n text: \"\",\n date: \"\",\n };\n const [newNote, setNewNote] = useState(blankNote);\n const [editNote, setEditNote] = useState(blankNote);\n const [formerResult, setFormerResult] = useState([]);\n\n const [notes, setNotes] = useState([\n {\n node: {\n Created: \"2022-01-27 08:15:22\",\n HashID: \"7R4rrN95ej\",\n Removed: false,\n Text: \"Interessantes Projekt.\",\n User: \"Elvis Padelvis\",\n },\n type: \"note\",\n },\n ]);\n const [stateHistory, setStateHistory] = useState([]);\n\n const [{ fetchingCreateFavoriteNote }] = useMutation(\n createFavoriteNoteMutation\n );\n\n const [{ fetchingUpdateFavoriteNote }, executeUpdateFavoriteNoteMutation] =\n useMutation(updateFavoriteNoteMutation);\n\n // GraphQL query for favorites, gets triggered by calling \"executeFavoritesQuery()\"\n const [result, executeFavoritesQuery] = useQuery({\n query: queryFavorites,\n variables: {\n userHashID: user.getData().hashID,\n filterFor: props.filterFor,\n },\n requestPolicy: \"network-only\",\n pause: true,\n });\n\n // let notes = []\n if (props?.favorite?.Notes?.edges) {\n // notes = props.favorite.Notes.edges\n setNotes(props.favorite.Notes.edges);\n }\n\n // let stateHistory = []\n if (props?.favorite?.StateHistory?.edges) {\n // stateHistory = props.favorite.StateHistory.edges\n setStateHistory(props.favorite.StateHistory.edges);\n }\n\n // GraphQL trigger and result handling\n useEffect(() => {\n if (!result.fetching) {\n if (result.error) {\n // Check if the user need to be logged out\n if (result.error.message.indexOf(\"User forced logout\") !== -1) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.user.forced.logout\"));\n unsetUser();\n unsetToken();\n navigate(\"/\");\n } else {\n // The query did not return any results!\n if (formerResult.length !== 0) {\n setFormerResult([]);\n }\n }\n } else {\n // Query not fetching right now\n if (\n typeof result.data !== \"undefined\" &&\n typeof result.data.readFavorites !== \"undefined\"\n ) {\n // Add the favorites to the global context\n setFavoriteData(result.data.readFavorites);\n }\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [result])\n\n /**\n * save new note change to state\n *\n * @param event\n */\n const handleAddNote = (event) => {\n setNewNote(Object.assign({}, newNote, { text: event.target.value }));\n };\n\n /**\n * save add note-state to context/api\n */\n const handleAddNoteSubmit = () => {\n newNote.node = {\n Created: new Date(),\n HashID: Math.random(),\n Removed: false,\n Text: newNote.text,\n User: user.getData().firstName + \" \" + user.getData().lastName,\n };\n newNote.type = \"note\";\n\n setNotes([...notes, newNote]);\n setNewNote(blankNote);\n };\n\n /**\n * save edited note change to state\n *\n * @param note\n */\n const handleEditNote = (note) => {\n if (editNote.id !== null) {\n if (note.id !== editNote.id) {\n // End text-area-mode\n setEditNote(blankNote);\n // Set current text-area-mode\n setEditNote(note);\n } else {\n // End text-area-mode\n setEditNote(blankNote);\n }\n } else {\n // Start text-area-mode\n setEditNote(note);\n }\n };\n\n /**\n * reset edit mode if a new note is about to be added\n */\n const handleNewNoteFocus = () => {\n setEditNote(blankNote);\n };\n\n /**\n * update edited note to state\n *\n * @param event\n */\n const handleUpdateEditNote = (event) => {\n const mergedNote = merge(editNote, { node: { Text: event.target.value } });\n setEditNote(mergedNote);\n };\n\n /**\n * save edit note-state to context/api\n */\n const handleEditNoteSubmit = () => {\n executeUpdateFavoriteNoteMutation({\n hashID: editNote.node.HashID,\n text: editNote.node.Text,\n }).then((result) => {\n if (result.error) {\n // Check if the user need to be logged out\n if (result.error.message.indexOf(\"User forced logout\") !== -1) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.user.forced.logout\"));\n unsetUser();\n unsetToken();\n navigate(\"/\");\n } else {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.save\"));\n ExternalErrorLogger.log({\n text: \"Error edit note on FavoriteDetailAddition\",\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n errorMessage: JSON.stringify(result.error),\n },\n });\n }\n } else {\n setMessage(\n MESSAGE_TYPES.INFO,\n t(\"favorites.label.details.note.changed\")\n );\n // Reset the note\n setEditNote(blankNote);\n\n executeFavoritesQuery();\n }\n });\n };\n\n /**\n * delete note\n *\n * @param deletedNoteId\n */\n const handleDeleteNote = (deletedNoteId) => {\n executeUpdateFavoriteNoteMutation({\n hashID: deletedNoteId,\n removed: true,\n }).then((result) => {\n if (result.error) {\n // Check if the user need to be logged out\n if (result.error.message.indexOf(\"User forced logout\") !== -1) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.user.forced.logout\"));\n unsetUser();\n unsetToken();\n navigate(\"/\");\n } else {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.save\"));\n ExternalErrorLogger.log({\n text: \"Error delete note on FavoriteDetailAddition\",\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n errorMessage: JSON.stringify(result.error),\n },\n });\n }\n } else {\n setMessage(MESSAGE_TYPES.INFO, t(\"favorites.label.removed\"));\n // Reset the note\n setEditNote(blankNote);\n\n executeFavoritesQuery();\n }\n });\n };\n\n /**\n * restore note\n *\n * @param deletedNoteId\n */\n const handleRestoreNote = (deletedNoteId) => {\n executeUpdateFavoriteNoteMutation({\n hashID: deletedNoteId,\n removed: false,\n }).then((result) => {\n if (result.error) {\n // Check if the user need to be logged out\n if (result.error.message.indexOf(\"User forced logout\") !== -1) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.user.forced.logout\"));\n unsetUser();\n unsetToken();\n navigate(\"/\");\n } else if (\n result.error.message.includes(\n `Favorite note with HashID '${deletedNoteId}' not found`\n )\n ) {\n setMessage(MESSAGE_TYPES.INFO, t(\"error.item.already.deleted\"));\n } else {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.save\"));\n ExternalErrorLogger.log({\n text: \"Error restore note on FavoriteDetailAddition\",\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n errorMessage: JSON.stringify(result.error),\n },\n });\n }\n } else {\n setMessage(MESSAGE_TYPES.INFO, t(\"favorites.label.details.note.added\"));\n // Reset the note\n setEditNote(blankNote);\n executeFavoritesQuery();\n }\n });\n };\n\n /**\n * edit mode of a note\n */\n const EditNote = () => {\n return (\n <>\n \n {editNote.node.Text.length > 0 && (\n \n {t(\"general.label.save\")}\n \n )}\n \n );\n };\n\n /**\n * handleNote\n *\n * @param historyEntry\n * @returns {*}\n */\n const handleNote = (historyEntry) => {\n let isRight = false;\n if (editNote.node) {\n isRight = editNote.node.HashID === historyEntry.node.HashID;\n }\n\n return editNote.node && isRight ? (\n EditNote()\n ) : (\n \n {!historyEntry.node.Removed && (\n \n )}\n {historyEntry.node.Removed && (\n <>\n \n {t(\"favorites.label.removed\")}\n \n  \n {\n handleRestoreNote(historyEntry.node.HashID);\n }}\n >\n {t(\"general.label.undo\")}\n \n \n )}\n \n );\n };\n\n /**\n * favorite details (notes and states-history)\n */\n const HistoryList = () => {\n const historyListItems = [];\n const historyMerged = [];\n\n for (let i = 0; i < stateHistory.length; i++) {\n const state = stateHistory[i];\n state.type = \"state\";\n historyMerged.push(state);\n }\n\n for (let i = 0; i < notes.length; i++) {\n const note = notes[i];\n note.type = \"note\";\n historyMerged.push(note);\n }\n\n // Sort history-entries by date\n historyMerged.sort((a, b) => {\n const aDate = moment(a.node.Created).unix();\n const bDate = moment(b.node.Created).unix();\n return bDate > aDate ? 1 : bDate < aDate ? -1 : 0;\n });\n\n // Put all notes and states into a single storage for sorting\n for (let i = 0; i < historyMerged.length; i++) {\n const historyEntry = historyMerged[i];\n\n // In case we do not have an id yet due to api request-time,\n // generate a temporary random id\n if (historyEntry.id === null) {\n historyEntry.id = Math.random().toString(36).substring(7);\n }\n\n const author = historyEntry.node.User ? historyEntry.node.User : \"\";\n\n // TODO: Add en-US variant\n // Localize date\n const dateLocalized = FormatHelper.formatDate(historyEntry.node.Created);\n\n if (historyEntry.type === \"state\") {\n // State\n historyListItems.push(\n \n \n \n \n );\n } else {\n // Note (may be editable)\n historyListItems.push(\n \n \n \n \n \n \n \n \n {!historyEntry.node.Removed && (\n {\n handleEditNote(historyEntry);\n }}\n >\n \n \n )}\n {historyEntry.node.Removed && (\n \n \n \n )}\n \n \n {!historyEntry.node.Removed && (\n {\n handleDeleteNote(historyEntry.node.HashID);\n }}\n >\n \n \n )}\n {historyEntry.node.Removed && (\n {\n handleRestoreNote(historyEntry.node.HashID);\n }}\n >\n \n \n )}\n \n \n \n \n {handleNote(historyEntry)}\n \n \n \n );\n }\n }\n\n return {historyListItems};\n };\n\n /**\n * return\n */\n return (\n <>\n \n {newNote.text.length > 0 && (\n \n {t(\"general.label.save\")}\n \n )}\n {(fetchingCreateFavoriteNote || fetchingUpdateFavoriteNote) && (\n \n )}\n {HistoryList()}\n \n );\n};\n\nexport default withAccessControl(\n CustomSCDetailAddition,\n ACL_COMPONENTS.FAVORITE_DETAIL_ADDITION\n);\n","import React from 'react'\nimport { makeStyles } from '@material-ui/core/styles'\nimport Table from '@material-ui/core/Table'\nimport TableBody from '@material-ui/core/TableBody'\nimport TableCell from '@material-ui/core/TableCell'\nimport TableHead from '@material-ui/core/TableHead'\nimport TableRow from '@material-ui/core/TableRow'\nimport Paper from '@material-ui/core/Paper'\nimport GetSafe from '../lib/GetSafe'\nimport FormatHelper from '../lib/FormatHelper'\nimport { useTranslation } from 'react-i18next'\nimport clsx from 'clsx'\nimport GoogleMapComponent from '../lib/GoogleMapComponent'\nimport Tooltip from '@material-ui/core/Tooltip'\nimport Button from '@material-ui/core/Button'\nimport Info from '@material-ui/icons/Info'\nimport CustomSCDetailAddition from '../components/CustomSC/CustomSCDetailAddition'\n\nconst props = {\n data: {\n HashID: 'ac77e49d7202bd4afba29339d2fc3bad09806bc4',\n Final_title:\n 'Böschungssicherung mittels Steinkörben, Sihlstrasse, 6313 Menzingen',\n Date: '2021-10-29T00:00:00+02:00',\n Canton: 'ZG',\n Content:\n 'Einwohnergemeinde Menzingen, Rathaus/Postfach, 6313 Menzingen: Böschungssicherung mittels Steinkörben, Sihlstrasse, 6313 Menzingen, Assek.-Nr. -, GS-Nr. 239, GS-Nr. 213. Ausserhalb der Bauzone, Koordinaten 1226320/2687930. Einsprachefrist bis und mit 17. November 2021. Die Profile sind erstellt',\n Calculated_distance: null,\n Distance_calculated_from: null,\n Read: null,\n Construction_site: {\n Address: {\n Street: '',\n Number: '',\n Zip: '',\n City: 'Menzingen',\n Geo: {\n lat: 47.1822236,\n lon: 8.5980911\n }\n }\n },\n Building_owner: {\n Name: 'Einwohnergemeinde Menzingen, Rathaus/Postfach',\n Address: {\n Street: '',\n Number: '',\n Zip: '6313',\n City: 'Menzingen',\n Geo: {\n lat: 47.1758438,\n lon: 8.5919634\n }\n }\n },\n Project_management: {\n Name: '',\n Phone: '',\n Email: '',\n Website: '',\n Email_other: [],\n Address: {\n Street: '',\n Number: '',\n Zip: '',\n City: '',\n Geo: {\n lat: 39.889037,\n lon: -105.9564261\n }\n }\n }\n },\n originCoordinates: {\n lat: 47.378441,\n lon: 8.510033\n },\n destination: {\n lat: 47.2428467,\n lon: 8.7960707\n },\n location: 'Zürich'\n}\n\nconst useStyles = makeStyles(theme => ({\n removed: {\n opacity: 0.5\n },\n undo: {\n color: theme.palette.primary.main,\n textDecoration: 'underline'\n },\n link: {\n cursor: 'pointer'\n },\n icon: {\n padding: 8\n },\n tableCellColumnsbody: {\n // width: 'calc(100% * 1 / 4)',\n minWidth: 120,\n padding: 14,\n '&:nth-child(1)': {\n minWidth: 215\n },\n '&:nth-child(2)': {\n minWidth: 130\n },\n '&:nth-child(3)': {\n minWidth: 130\n },\n '@media (max-width:640px)': {\n '&:first-of-type': {\n minWidth: 'auto'\n },\n '&:nth-child(2)': {\n minWidth: 320\n }\n }\n },\n toggleTitle: {\n color: '#999',\n fontWeight: 'bold'\n },\n toggleTableCell: {\n paddingTop: 0,\n verticalAlign: 'top'\n },\n toggleTableCellMap: {},\n tableInnerRow: {\n borderTop: '2px solid #fff'\n },\n pointer: {\n cursor: 'pointer'\n },\n tooltipItem: {\n width: '100%',\n maxWidth: 350,\n borderRadius: 5,\n background: '#006A7A',\n fontSize: 16,\n textAlign: 'center',\n '& div': {\n margin: 0,\n color: '#fff'\n }\n },\n tooltipInfo: {\n maxWidth: '100%',\n background: theme.palette.background.default,\n '& div': {\n maxWidth: '100%',\n color: theme.palette.text.primary,\n fontSize: 12,\n lineHeight: '20px'\n },\n '@media (min-width:768px)': {\n maxWidth: 450\n }\n },\n tooltipTitle: {\n display: 'flex',\n alignItems: 'center'\n },\n headerWrapper: {\n width: '100%',\n maxWidth: 1320,\n paddingRight: 20,\n paddingLeft: 20,\n backgroundColor: '#4ab3cf',\n '-webkit-print-color-adjust': 'exact'\n },\n logo: {\n paddingLeft: 0\n },\n button: {\n color: '#ffffff',\n width: '60%',\n marginTop: '20px',\n marginBottom: '40px'\n }\n}))\n\nconst Project = ({ id }) => {\n const classes = useStyles()\n const { t } = useTranslation()\n\n const columns = [\n { id: 'projects', label: t('general.label.projects'), maxWidth: 720 },\n {\n id: 'city',\n label: t('general.label.address'),\n maxWidth: 100,\n align: 'left'\n },\n {\n id: 'route',\n label: t('general.label.distance'),\n maxWidth: 100,\n align: 'left'\n },\n {\n id: 'date',\n label: t('general.label.date'),\n maxWidth: 100,\n align: 'left'\n }\n ]\n\n /**\n * isProcessable\n *\n * @param {*} value\n */\n const isProcessable = value => {\n return !(value === null || value === undefined)\n }\n\n /**\n * getDestinationCoordinates\n *\n * @returns {{lon: *, lat: *}}\n */\n const getDestinationCoordinates = () => {\n return {\n lat: GetSafe(\n () => parseFloat(props.data.Construction_site.Address.Geo.lat),\n 0\n ),\n lon: GetSafe(\n () => parseFloat(props.data.Construction_site.Address.Geo.lon),\n 0\n )\n }\n }\n\n return (\n <>\n \n
\n \n \n \n {columns.map(column => (\n \n {column.label}\n \n ))}\n \n \n \n \n {\n <>\n \n {props.data.Final_title}\n \n \n {GetSafe(\n () => props.data.Construction_site.Address.City,\n ''\n )}{' '}\n {GetSafe(\n () => props.data.Construction_site.Address.Street,\n ''\n )}{' '}\n {GetSafe(\n () => props.data.Construction_site.Address.Number,\n ''\n )}\n \n \n {GetSafe(\n () =>\n FormatHelper.formatDistance(\n props.data.Calculated_distance\n ) + ' km',\n ''\n )}\n \n \n {GetSafe(\n () => FormatHelper.formatDate(props.data.Date),\n ''\n )}\n \n \n }\n \n \n \n

\n {t('favorites.label.fastest.route')}\n

\n \n \n \n \n

\n {t('projects.label.owner')}\n

\n

\n {GetSafe(() => props.data.Building_owner.Name, '')}\n
\n {GetSafe(\n () => props.data.Building_owner.Address.Street,\n ''\n )}{' '}\n {GetSafe(\n () => props.data.Building_owner.Address.Number,\n ''\n )}\n
\n {GetSafe(\n () => props.data.Building_owner.Address.Zip,\n ''\n )}{' '}\n {GetSafe(() => props.data.Building_owner.Address.City, '')}\n

\n \n \n \n {t('projects.label.original.project')}\n \n \n {/* {showApplyButton() && ( */}\n {true && (\n \n {/* {getApplyButtonText()} */}\n {t('general.label.apply')}\n \n )}\n \n {/* {getApplicationPrintButtonText()} */}\n {t('company.label.print.application')}\n \n
\n \n

\n {t('projects.label.architect')}\n

\n

\n {GetSafe(() => props.data.Project_management.Name, '')}\n
\n {GetSafe(\n () => props.data.Project_management.Address.Street,\n ''\n )}{' '}\n {GetSafe(\n () => props.data.Project_management.Address.Number,\n ''\n )}\n
\n {GetSafe(\n () => props.data.Project_management.Address.Zip,\n ''\n )}{' '}\n {GetSafe(\n () => props.data.Project_management.Address.City,\n ''\n )}\n
\n {isProcessable(\n GetSafe(() => props.data.Project_management.Phone, '')\n ) && (\n props.data.Project_management.Phone, '')\n }\n >\n {GetSafe(() => props.data.Project_management.Phone, '')}\n \n )}\n
\n {isProcessable(\n GetSafe(() => props.data.Project_management.Email, '')\n ) && (\n props.data.Project_management.Email, '')\n }\n >\n {GetSafe(() => props.data.Project_management.Email, '')}\n \n )}\n

\n
\n \n
\n
\n
\n
\n \n )\n}\n\nexport default Project\n","import { makeStyles } from '@material-ui/core'\nimport IconButton from '@material-ui/core/IconButton'\nimport FirstPageIcon from '@material-ui/icons/FirstPage'\nimport KeyboardArrowLeft from '@material-ui/icons/KeyboardArrowLeft'\nimport KeyboardArrowRight from '@material-ui/icons/KeyboardArrowRight'\nimport React from 'react'\n\nconst useStyles = makeStyles(theme => ({\n root: {\n flexShrink: 0,\n marginLeft: theme.spacing(2.5),\n marginRight: theme.spacing(8)\n }\n}))\n\n/**\n * TablePaginationActions\n *\n * @param props\n * @returns {*}\n * @constructor\n */\nconst TablePaginationActions = props => {\n const classes = useStyles()\n const { count, page, rowsPerPage, onChangePage } = props\n\n /**\n * handleFirstPageButtonClick\n *\n * @param event\n */\n const handleFirstPageButtonClick = event => {\n onChangePage(event, 0)\n }\n\n /**\n * handleBackButtonClick\n *\n * @param event\n */\n const handleBackButtonClick = event => {\n onChangePage(event, page - 1)\n }\n\n /**\n * handleNextButtonClick\n *\n * @param event\n */\n const handleNextButtonClick = event => {\n onChangePage(event, page + 1)\n }\n\n /**\n * return\n */\n return (\n
\n \n \n \n \n \n \n = Math.ceil(count / rowsPerPage) - 1}\n aria-label='next page'\n color='primary'\n >\n \n \n
\n )\n}\n\nexport default TablePaginationActions\n","export default Object.freeze({\n FREE: 'free',\n SMART: 'smart',\n PRO: 'pro',\n PROADMIN: 'proadmin'\n})\n","import React, { useContext, useEffect } from \"react\";\nimport { makeStyles } from \"@material-ui/core\";\nimport GlobalContext from \"../lib/GlobalContext\";\nimport { useTranslation } from \"react-i18next\";\nimport AppBar from \"@material-ui/core/AppBar\";\nimport ToggleButton from \"@material-ui/lab/ToggleButton\";\nimport ToggleButtonGroup from \"@material-ui/lab/ToggleButtonGroup\";\nimport UserTypes from \"./Onboarding/UserTypes\";\nimport Tooltip from \"@material-ui/core/Tooltip\";\n\n/**\n * useStyles\n */\nconst useStyles = makeStyles((theme) => ({\n root: {\n flexGrow: 1,\n width: \"100%\",\n maxWidth: \"calc(100% - 250px)\",\n backgroundColor: theme.palette.background.paper,\n },\n tabs: {\n color: \"#525252\",\n fontSize: 14,\n height: \"100%\",\n width: \"100%\",\n },\n tab: {\n height: 64,\n width: \"100%\",\n maxWidth: 188,\n fontWeight: \"bold\",\n textAlign: \"center\",\n },\n tableTabsHeader: {\n background: \"#F7F9FA\",\n boxShadow: \"none\",\n },\n buttonColor: {\n color: theme.palette.text.primary,\n \"&.Mui-selected\": {\n backgroundColor: theme.palette.primary.main,\n color: \"white\",\n },\n \"&.Mui-selected:hover\": {\n backgroundColor: theme.palette.primary.main,\n },\n },\n newMarker: {\n width: 5,\n height: 5,\n display: \"inline-block\",\n position: \"relative\",\n top: \"-10px\",\n right: \"-3px\",\n borderRadius: \"50%\",\n },\n}));\n\nexport const BUILDING_APPLICATION_TYPE = {\n PROJECT: \"Baugesuch\",\n PUBLICATION: \"Baupublikation\",\n SUBMISSION: \"Submission\",\n};\n\n/**\n * BuildingApplicationTypeTabs\n *\n * @param props\n * @returns {*}\n * @constructor\n */\nconst BuildingApplicationTypeTabs = (props) => {\n const classes = useStyles();\n const { t } = useTranslation();\n const {\n user,\n selectedBuildingApplicationTypeTabValue,\n setSelectedBuildingApplicationTypeTabValue,\n } = useContext(GlobalContext);\n\n /**\n * set selected tab value useEffect\n */\n useEffect(() => {\n if (!selectedBuildingApplicationTypeTabValue) {\n setSelectedBuildingApplicationTypeTabValue(\n BUILDING_APPLICATION_TYPE.PROJECT\n );\n }\n }, [\n selectedBuildingApplicationTypeTabValue,\n setSelectedBuildingApplicationTypeTabValue,\n ]);\n\n /**\n * return\n */\n return (\n
\n \n \n \n {t(\"projects.label\")}\n {props.hasNewApplications && (\n \n )}\n \n {user.getData().mode !== UserTypes.PRO && (\n \n \n \n {t(\"submissions.label\")}\n {props.hasNewSubmissions && (\n \n )}\n \n \n \n )}\n {user.getData().mode === UserTypes.PRO && (\n \n {t(\"submissions.label\")}\n {props.hasNewSubmissions && (\n \n )}\n \n )}\n \n \n
\n );\n};\n\nexport default BuildingApplicationTypeTabs;\n","import Joi from '@hapi/joi'\n/**\n * ProjectManagementAddressDataValidator\n *\n * @returns {{isValid: (function(*): boolean)}}\n * @constructor\n */\nconst ProjectManagementAddressDataValidator = () => {\n /**\n * Joi validation schema tokenData\n */\n const schemaAddressData = Joi.object({\n Street: Joi.string().allow(''),\n Number: Joi.string().allow(''),\n Zip: Joi.string().required(),\n City: Joi.string().allow(''),\n Geo: Joi.object(),\n __typename: Joi.string().allow('')\n })\n\n /**\n * isValid\n *\n * @param addressData\n * @returns {boolean}\n */\n const isValid = addressData => {\n // Check if address data is well-formed\n let { error } = schemaAddressData.validate(addressData, {\n abortEarly: false\n })\n\n if (addressData.Zip === '') {\n error = true\n }\n\n // Check how many properties are empty\n let emptyPropertiesCount = 0\n for (const property in addressData) {\n if (addressData[property] === '') {\n emptyPropertiesCount++\n }\n }\n\n // when only the zip is given, we do not want to get an output\n if (emptyPropertiesCount === 3) {\n error = true\n }\n\n return !error\n }\n\n /**\n * return\n */\n return {\n isValid\n }\n}\n\nexport default ProjectManagementAddressDataValidator()\n","import React, { useState, useContext, useEffect } from \"react\";\nimport clsx from \"clsx\";\nimport Menu from \"@material-ui/core/Menu\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport TableCell from \"@material-ui/core/TableCell\";\nimport TableRow from \"@material-ui/core/TableRow\";\nimport ExpandLess from \"@material-ui/icons/ExpandLess\";\nimport ExpandMore from \"@material-ui/icons/ExpandMore\";\nimport StarBorder from \"@material-ui/icons/StarBorder\";\nimport Star from \"@material-ui/icons/Star\";\nimport MoreHoriz from \"@material-ui/icons/MoreHoriz\";\nimport Info from \"@material-ui/icons/Info\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport { useTranslation } from \"react-i18next\";\nimport Tooltip from \"@material-ui/core/Tooltip\";\nimport GlobalContext from \"../../lib/GlobalContext\";\nimport { MESSAGE_TYPES } from \"../PopupMessages\";\nimport GoogleMapComponent from \"../../lib/GoogleMapComponent\";\nimport withAccessControl from \"../HOC/AccessControl\";\nimport GetSafe from \"../../lib/GetSafe\";\nimport FormatHelper from \"../../lib/FormatHelper\";\nimport PHE from \"print-html-element\";\nimport { BUILDING_APPLICATION_TYPE } from \"../BuildingApplicationTypeTabs\";\nimport { renderToString } from \"react-dom/server\";\nimport {\n ClickAwayListener,\n Button,\n Table,\n TableBody,\n TableHead,\n} from \"@material-ui/core\";\nimport { useMutation } from \"urql\";\nimport LinearProgress from \"@material-ui/core/LinearProgress\";\nimport { A, navigate } from \"hookrouter\";\nimport Typography from \"@material-ui/core/Typography\";\nimport { ACL_COMPONENTS, DEFAULT_LOGO_PATH } from \"../../config\";\nimport Grid from \"@material-ui/core/Grid\";\nimport ExternalErrorLogger from \"@ennit/react-external-errorlogger\";\nimport ProjectManagementAddressDataValidator from \"../../lib/ProjectManagementAddressDataValidator\";\n\nconst useStyles = makeStyles((theme) => ({\n airDistance: {\n // backgroundColor: '#e3e3e3',\n padding: 5,\n },\n icon: {\n padding: 8,\n fontSize: 25,\n },\n tableCellColumnsbody: {\n width: \"calc(100% * 1 / 5)\",\n minWidth: 100,\n padding: 14,\n \"&:nth-child(1)\": {\n minWidth: 215,\n },\n \"&:nth-child(2)\": {\n minWidth: 520,\n },\n \"&:nth-child(3)\": {\n minWidth: 130,\n },\n \"@media (max-width:640px)\": {\n \"&:first-of-type\": {\n minWidth: \"auto\",\n },\n \"&:nth-child(2)\": {\n minWidth: 320,\n },\n },\n },\n toggleTableRow: {\n borderTop: \"2px solid #fff\",\n },\n toggleTableCell: {\n paddingTop: 0,\n verticalAlign: \"top\",\n },\n toggleTableCellMap: {\n paddingLeft: 205,\n \"@media (max-width:640px)\": {\n paddingLeft: 20,\n },\n },\n toggleTitle: {\n color: \"#999\",\n fontWeight: \"bold\",\n },\n newLabel: {\n color: \"#BD3A00\",\n fontWeight: \"bold\",\n },\n tooltipItem: {\n width: \"100%\",\n maxWidth: 350,\n borderRadius: 5,\n background: \"#006A7A\",\n fontSize: 16,\n textAlign: \"center\",\n \"& div\": {\n margin: 0,\n color: \"#fff\",\n },\n },\n applyTooltipItem: {\n width: \"100%\",\n maxWidth: 350,\n borderRadius: 5,\n background: \"#006A7A\",\n fontSize: 16,\n textAlign: \"left\",\n \"& div\": {\n margin: 0,\n color: \"#fff\",\n },\n },\n tooltipInfo: {\n maxWidth: \"100%\",\n background: theme.palette.background.default,\n \"& div\": {\n maxWidth: \"100%\",\n color: theme.palette.text.primary,\n fontSize: 12,\n lineHeight: \"20px\",\n },\n \"@media (min-width:768px)\": {\n maxWidth: 450,\n },\n },\n tooltipApprovalDate: {\n \"@media (min-width:768px)\": {\n maxWidth: 250,\n },\n },\n tooltipTitle: {\n display: \"flex\",\n alignItems: \"center\",\n },\n pointer: {\n cursor: \"pointer\",\n },\n headerWrapper: {\n width: \"100%\",\n maxWidth: 1320,\n paddingRight: 20,\n paddingLeft: 20,\n backgroundColor: \"#4ab3cf\",\n \"-webkit-print-color-adjust\": \"exact\",\n },\n logo: {\n paddingLeft: 0,\n },\n button: {\n color: \"#ffffff\",\n width: \"60%\",\n marginTop: \"20px\",\n marginBottom: \"40px\",\n },\n}));\n\nconst createFavoriteMutation = `\n mutation CreateFavorite (\n $projectHashID: String\n ) {\n createFavorite (ProjectHashID: $projectHashID) {\n HashID\n ProjectHashID\n }\n }\n`;\n\nconst updateFavoriteMutation = `\n mutation UpdateFavorite (\n $hashID: String,\n $removed: Boolean\n ) {\n updateFavorite (HashID: $hashID, Removed: $removed) {\n HashID\n }\n }\n`;\n\n/**\n * ProjectsFreeTableRow\n *\n * @returns {*}\n * @constructor\n */\nconst ProjectsTableRow = (props) => {\n const classes = useStyles();\n const { t } = useTranslation();\n const {\n upgradeToPremiumOpen,\n setUpgradeToPremiumOpen,\n setMessage,\n token,\n unsetUser,\n unsetToken,\n setFavoriteData,\n user,\n } = useContext(GlobalContext);\n const { row } = props;\n const [open, setOpen] = useState(false);\n const [anchorEl, setAnchorEl] = useState(null);\n const [isFavorite, setIsFavorite] = useState(false);\n const [favoriteID, setFavoriteID] = useState(null);\n const [applyTooltipOpen, setApplyTooltipOpen] = useState(false);\n\n const [{ fetchingCreateFavorite }, executeCreateFavoriteMutation] =\n useMutation(createFavoriteMutation);\n const [{ fetchingUpdateFavorite }, executeUpdateFavoriteMutation] =\n useMutation(updateFavoriteMutation);\n\n /**\n * mark favorites useEffect\n */\n useEffect(() => {\n if (props.favorites !== null) {\n const result = props.favorites.filter((item) => {\n return item.ProjectHashID === row.HashID;\n });\n\n if (result.length) {\n setFavoriteID(result[0].HashID);\n if (!result[0].Removed) {\n setIsFavorite(true);\n }\n }\n }\n }, [props.favorites, setIsFavorite, row.HashID]);\n\n /**\n * open context menu\n *\n * @param event\n */\n const handleClick = (event) => {\n event.stopPropagation();\n setAnchorEl(event.currentTarget);\n };\n\n /**\n * close context menu\n */\n const handleClose = (event) => {\n event.stopPropagation();\n setAnchorEl(null);\n };\n\n /**\n * handleTooltipClose\n */\n const handleTooltipClose = () => {\n setApplyTooltipOpen(false);\n };\n\n /**\n * handleTooltipOpen\n */\n const handleTooltipOpen = () => {\n setApplyTooltipOpen(true);\n };\n\n /**\n * updateFavoriteExecution\n *\n * @param removed\n */\n const updateFavoriteExecution = (removed = true) => {\n executeUpdateFavoriteMutation({\n hashID: favoriteID,\n removed: removed,\n }).then((result) => {\n if (result.error) {\n // Check if the user need to be logged out\n if (result.error.message.indexOf(\"User forced logout\") !== -1) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.user.forced.logout\"));\n unsetUser();\n unsetToken();\n navigate(\"/\");\n } else {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.save\"));\n ExternalErrorLogger.log({\n text: \"Error update favorite on ProjectsTableRow\",\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n errorMessage: result.error.message,\n },\n });\n }\n } else {\n setMessage(MESSAGE_TYPES.INFO, t(\"projects.favorites.updated\"));\n setIsFavorite(!removed);\n }\n });\n };\n\n /**\n * handleMakeFavorite\n */\n const handleMakeFavorite = (event) => {\n event.stopPropagation();\n setFavoriteData([]);\n executeCreateFavoriteMutation({\n projectHashID: row.HashID,\n }).then((result) => {\n if (result.error) {\n // Check if the user need to be logged out\n if (result.error.message.indexOf(\"User forced logout\") !== -1) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.user.forced.logout\"));\n unsetUser();\n unsetToken();\n navigate(\"/\");\n } else {\n if (result.error.message.includes(\"already exists\")) {\n updateFavoriteExecution(false);\n } else {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.save\"));\n ExternalErrorLogger.log({\n text: \"Error save new favorite on ProjectsTableRow\",\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n errorMessage: result.error.message,\n },\n });\n }\n }\n } else {\n setMessage(MESSAGE_TYPES.INFO, t(\"projects.add.to.favorites\"));\n setIsFavorite(true);\n setFavoriteID(result.data.createFavorite[0].HashID);\n }\n });\n };\n\n /**\n * handleRemoveFavorite\n */\n const handleRemoveFavorite = (event) => {\n event.stopPropagation();\n setFavoriteData([]);\n updateFavoriteExecution(true);\n };\n\n /**\n * handlePrint\n */\n const handlePrint = (event) => {\n event.stopPropagation();\n PHE.printHtml(renderToString(renderPrintAndShare()));\n };\n\n /**\n * handleShare\n */\n // const handleShare = () => {\n // const body = `${t('location.label.address')}%3A %0D%0A${GetSafe(\n // () => row.Construction_site.Address.Street || '',\n // ''\n // )} ${GetSafe(\n // () => row.Construction_site.Address.Number || '',\n // ''\n // )}%0D%0A${GetSafe(\n // () => row.Construction_site.Address.Zip || '',\n // ''\n // )} ${GetSafe(\n // () => row.Construction_site.Address.City || '',\n // ''\n // )}%0D%0A%0D%0A${t('projects.label.owner')}%3A%0D%0A${GetSafe(\n // () => row.Building_owner.Name || '',\n // ''\n // )}%0D%0A${GetSafe(\n // () => row.Building_owner.Address.Street || '',\n // ''\n // )} ${GetSafe(\n // () => row.Building_owner.Address.Number || '',\n // ''\n // )}%0D%0A${GetSafe(\n // () => row.Building_owner.Address.Zip || '',\n // ''\n // )} ${GetSafe(\n // () => row.Building_owner.Address.City || '',\n // ''\n // )}%0D%0A%0D%0A${t('projects.label.architect')}%3A%0D%0A${GetSafe(\n // () => row.Project_management.Name || '',\n // ''\n // )}%0D%0A${GetSafe(\n // () => row.Project_management.Address.Street || '',\n // ''\n // )} ${GetSafe(\n // () => row.Project_management.Address.Number || '',\n // ''\n // )}%0D%0A${GetSafe(\n // () => row.Project_management.Address.Zip || '',\n // ''\n // )} ${GetSafe(() => row.Project_management.Address.City || '', '')}\n // `\n //\n // window.location.href = `mailto:?to=&body=${body}&subject=${GetSafe(\n // () => row.Final_title,\n // ''\n // )}`\n // }\n\n /**\n * showDistance\n *\n * @returns {*}\n */\n const showDistance = () => {\n if (row.Distance_calculated_from === \"Air_distance\") {\n return (\n \n \n {GetSafe(\n () =>\n FormatHelper.formatDistance(row.Calculated_distance) + \" km\",\n \"\"\n )}\n \n \n );\n } else if (\n row.Distance_calculated_from === \"Travel_distance\" &&\n row.Calculated_distance === null\n ) {\n return (\n \n -\n \n );\n } else if (\n row.Distance_calculated_from !== \"Air_distance\" &&\n row.Calculated_distance !== null\n ) {\n return GetSafe(\n () => FormatHelper.formatDistance(row.Calculated_distance) + \" km\",\n \"\"\n );\n }\n };\n\n /**\n * getDestinationCoordinates\n *\n * @returns {{lon: *, lat: *}}\n */\n const getDestinationCoordinates = () => {\n return {\n lat: GetSafe(() => parseFloat(row.Construction_site.Address.Geo.lat), 0),\n lon: GetSafe(() => parseFloat(row.Construction_site.Address.Geo.lon), 0),\n };\n };\n\n /**\n * handleOpenDetailsClick\n */\n const handleOpenDetailsClick = () => {\n setOpen(!open);\n };\n\n /**\n * isProcessable\n *\n * @param {*} value\n */\n const isProcessable = (value) => {\n return !(value === null || value === undefined);\n };\n\n /**\n * showApplyButton\n *\n * @returns boolean\n */\n const showApplyButton = () => {\n return user.getData().mode === \"smart\";\n };\n\n /**\n * getApplyButtonText\n *\n * @returns string\n */\n const getApplyButtonText = () => {\n return t(\"general.label.apply\");\n };\n\n /**\n * getApplyButtonTooltipText\n *\n * @returns sting\n */\n const getApplyButtonTooltipText = () => {\n return (\n <>\n \"),\n }}\n />\n \n {t(\"projects.apply.information.link\")}\n \n \n );\n };\n\n /**\n * handleUpgradeToPremium\n */\n const handleUpgradeToPremium = () => {\n setApplyTooltipOpen(false);\n setUpgradeToPremiumOpen(!upgradeToPremiumOpen);\n };\n\n /**\n * renderPrintAndShare\n **/\n const renderPrintAndShare = () => {\n return (\n \n \n \n \n \n \n \n \"logo\"\n \n \n \n \n \n \n \n \n {GetSafe(() => row.Final_title, \"\")}\n \n {GetSafe(() => row.Construction_site.Address.City, \"\")}{\" \"}\n {GetSafe(() => row.Construction_site.Address.Street, \"\")}{\" \"}\n {GetSafe(() => row.Construction_site.Address.Number, \"\")}\n \n \n {GetSafe(\n () =>\n FormatHelper.formatDistance(row.Calculated_distance) + \" km\",\n \"\"\n )}\n \n \n {GetSafe(() => FormatHelper.formatDate(row.Date), \"\")}\n \n \n \n {/* */}\n {/*

{t('projects.label.fastest.route')}

*/}\n {/* */}\n {/*
*/}\n \n

{t(\"projects.label.owner\")}

\n

\n {GetSafe(() => row.Building_owner.Name, \"\")}\n
\n {GetSafe(() => row.Building_owner.Address.Street, \"\")}{\" \"}\n {GetSafe(() => row.Building_owner.Address.Number, \"\")}\n
\n {GetSafe(() => row.Building_owner.Address.Zip, \"\")}{\" \"}\n {GetSafe(() => row.Building_owner.Address.City, \"\")}\n

\n
\n \n

\n {t(\"projects.label.architect\")}\n

\n

\n {GetSafe(() => row.Project_management.Name, \"\")}\n
\n {GetSafe(() => row.Project_management.Address.Street, \"\")}{\" \"}\n {GetSafe(() => row.Project_management.Address.Number, \"\")}\n
\n {GetSafe(() => row.Project_management.Address.Zip, \"\")}{\" \"}\n {GetSafe(() => row.Project_management.Address.City, \"\")}\n
\n {GetSafe(() => row.Project_management.Phone, \"\")}\n
\n {GetSafe(() => row.Project_management.Email, \"\")}\n

\n
\n
\n \n {row.Content}\n \n
\n
\n );\n };\n\n /**\n * renderApprovalDate\n *\n * @returns {false|JSX.Element}\n */\n const renderApprovalDate = () => {\n return (\n row.Approval_date !== undefined &&\n row.Approval_date !== \"\" &&\n row.Approval_date !== null && (\n

\n {user.isPro() && (\n \n \n {t(\"projects.label.expected.date\")}\n \n {row.Approval_date}\n \n )}\n {!user.isPro() && (\n \n \n {t(\"projects.label.expected.date\")}\n \n \n {t(\"projects.free.route.premium.pro\")}\n \n \n )}\n

\n )\n );\n };\n\n /**\n * renderConstructionSum\n *\n * @returns {false|JSX.Element}\n */\n const renderConstructionSum = () => {\n return (\n row.Construction_sum !== undefined &&\n row.Construction_sum !== \"\" &&\n row.Construction_sum !== null && (\n

\n {user.isPro() && (\n \n \n {t(\"projects.label.construction.sum\")}\n \n \n {row.Construction_sum}\n \n \n )}\n {!user.isPro() && (\n \n \n {t(\"projects.label.construction.sum\")}\n \n \n {t(\"projects.free.route.premium.pro\")}\n \n \n )}\n

\n )\n );\n };\n\n /**\n * render the detail view of a project\n */\n const projectDetails = () => {\n return (\n <>\n \n \n

\n {t(\"projects.label.fastest.route\")}\n

\n \n \n \n

{t(\"projects.label.owner\")}

\n

\n {GetSafe(() => row.Building_owner.Name, \"\")}\n
\n {GetSafe(() => row.Building_owner.Address.Street, \"\")}{\" \"}\n {GetSafe(() => row.Building_owner.Address.Number, \"\")}\n
\n {GetSafe(() => row.Building_owner.Address.Zip, \"\")}{\" \"}\n {GetSafe(() => row.Building_owner.Address.City, \"\")}\n

\n {renderApprovalDate()}\n {renderConstructionSum()}\n {row.Type !== BUILDING_APPLICATION_TYPE.SUBMISSION ? (\n \n \n \n {t(\"projects.label.original.project\")}\n \n \n ) : null}\n
\n \n {ProjectManagementAddressDataValidator.isValid(\n row.Project_management.Address\n ) && (\n \n

\n {t(\"projects.label.architect\")}\n

\n

\n {GetSafe(() => row.Project_management.Name, \"\")}\n
\n {GetSafe(\n () => row.Project_management.Address.Street,\n \"\"\n )}{\" \"}\n {GetSafe(() => row.Project_management.Address.Number, \"\")}\n
\n {GetSafe(() => row.Project_management.Address.Zip, \"\")}{\" \"}\n {GetSafe(() => row.Project_management.Address.City, \"\")}\n
\n {isProcessable(\n GetSafe(() => row.Project_management.Phone, \"\")\n ) && (\n row.Project_management.Phone, \"\")\n }\n >\n {GetSafe(() => row.Project_management.Phone, \"\")}\n \n )}\n
\n {isProcessable(\n GetSafe(() => row.Project_management.Email, \"\")\n ) && (\n row.Project_management.Email, \"\")\n }\n >\n {GetSafe(() => row.Project_management.Email, \"\")}\n \n )}\n

\n
\n )}\n
\n \n \n \n \n \n \n \n \n {showApplyButton() && (\n \n
\n \n \n {getApplyButtonText()}\n \n \n
\n
\n )}\n
\n
\n \n );\n };\n\n /**\n * return\n */\n return (\n <>\n {(fetchingCreateFavorite || fetchingUpdateFavorite) && }\n \n \n setOpen(!open)}\n className={classes.icon}\n >\n {open ? (\n \n ) : (\n \n )}\n \n {isFavorite ? (\n \n \n \n ) : (\n \n \n \n \n \n )}\n \n \n \n \n {/* */}\n {/* {t('general.label.forward')} */}\n {/* */}\n \n {t(\"general.label.print\")}\n \n \n \n \n {GetSafe(() => row.Final_title, \"\")}\n \n \n {GetSafe(() => row.Construction_site.Address.City, \"\")}{\" \"}\n {GetSafe(() => row.Construction_site.Address.Street, \"\")}{\" \"}\n {GetSafe(() => row.Construction_site.Address.Number, \"\")}\n \n \n {showDistance()}\n \n \n {row.Read !== null ? (\n GetSafe(() => FormatHelper.formatDate(row.Date), \"\")\n ) : (\n \n {t(\"general.label.new\")}\n \n )}\n \n \n {open ? projectDetails() : null}\n \n );\n};\n\nexport default withAccessControl(\n ProjectsTableRow,\n ACL_COMPONENTS.PROJECTS_TABLE_ROW\n);\n","import React, { useEffect, useState } from 'react'\nimport { makeStyles } from '@material-ui/core/styles'\nimport List from '@material-ui/core/List'\nimport ListItem from '@material-ui/core/ListItem'\nimport TextField from '@material-ui/core/TextField'\nimport { useTranslation } from 'react-i18next'\nimport Paper from '@material-ui/core/Paper'\nimport PlacesAutocomplete, {\n geocodeByAddress,\n getLatLng\n} from 'react-places-autocomplete'\nimport GetSafe from '../../lib/GetSafe'\nimport withAccessControl from '../HOC/AccessControl'\nimport { ACL_COMPONENTS } from '../../config'\nimport ExternalErrorLogger from '@ennit/react-external-errorlogger'\n\nconst useStyles = makeStyles(theme => ({\n textField: {\n width: '100%',\n marginRight: 0,\n marginLeft: 0\n },\n autocompleteResultWrapper: {\n position: 'relative',\n textAlign: 'center',\n zIndex: 2\n },\n autocompleteResult: {\n position: 'relative', // Could be 'absolute' for hovering autosuggest-result-list\n padding: theme.spacing(3),\n width: '100%'\n }\n}))\n\n// Google search options\nconst searchOptions = {\n componentRestrictions: { country: 'ch' }\n}\n\n/**\n * GooglePlacesAutosuggestAddress\n *\n * @returns {*}\n * @constructor\n */\nconst GooglePlacesAutosuggestAddress = props => {\n const classes = useStyles()\n const { t } = useTranslation()\n const [googleSearchValue, setGoogleSearchValue] = useState('')\n\n // Check for valid callback\n if (typeof props.onSuggestionSelect === 'undefined') {\n throw Error('No onSuggestionSelect defined')\n }\n\n /**\n * useEffect\n */\n useEffect(() => {\n if (typeof props.presetValue !== 'undefined' && props.presetValue !== '') {\n setGoogleSearchValue(props.presetValue)\n }\n }, [props.presetValue])\n\n /**\n * handleAddressSelect\n *\n * @param address\n */\n const handleAddressSelect = address => {\n setGoogleSearchValue(address)\n geocodeByAddress(address)\n .then(results => getLatLng(results[0]))\n .then(latLng => {\n if (props.onSuggestionSelect) {\n props.onSuggestionSelect({\n address,\n latLng\n })\n }\n })\n .catch(error => {\n ExternalErrorLogger.log({\n text: 'Error handle address select on GooglePlacesAutosuggestAddress',\n data: {\n address: JSON.stringify(address),\n error: JSON.stringify(error)\n }\n })\n })\n }\n\n /**\n * return\n */\n return (\n \n {({ getInputProps, suggestions, getSuggestionItemProps, loading }) => (\n
\n props.autoSuggestError, false)}\n helperText={GetSafe(\n () =>\n props.autoSuggestError ? t('error.no.address.results') : '',\n ''\n )}\n />\n {loading && (\n
\n \n \n \n {t('general.label.loading')}\n \n \n \n
\n )}\n {!loading && suggestions.length > 0 && (\n
\n \n \n {suggestions.map((suggestion, index) => (\n \n {suggestion.description}\n \n ))}\n \n \n
\n )}\n
\n )}\n \n )\n}\n\nexport default withAccessControl(\n GooglePlacesAutosuggestAddress,\n ACL_COMPONENTS.GOOGLE_PLACES_AUTOSUGGEST_FIELD\n)\n","import React, { useContext, useState, useEffect } from \"react\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport Button from \"@material-ui/core/Button\";\nimport Dialog from \"@material-ui/core/Dialog\";\nimport { DialogTitle } from \"@material-ui/core\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport CloseIcon from \"@material-ui/icons/Close\";\nimport DialogContent from \"@material-ui/core/DialogContent\";\nimport List from \"@material-ui/core/List\";\nimport ListItem from \"@material-ui/core/ListItem\";\nimport ListItemText from \"@material-ui/core/ListItemText\";\nimport ListItemIcon from \"@material-ui/core/ListItemIcon\";\nimport DialogActions from \"@material-ui/core/DialogActions\";\nimport TextField from \"@material-ui/core/TextField\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport Typography from \"@material-ui/core/Typography\";\nimport AddIcon from \"@material-ui/icons/Add\";\nimport DragIndicatorIcon from \"@material-ui/icons/DragIndicator\";\nimport HomeIcon from \"@material-ui/icons/HomeOutlined\";\nimport EditIcon from \"@material-ui/icons/Edit\";\nimport DeleteIcon from \"@material-ui/icons/Delete\";\nimport GlobalContext from \"../../lib/GlobalContext\";\nimport { DragDropContext, Draggable, Droppable } from \"react-beautiful-dnd\";\nimport { useTranslation } from \"react-i18next\";\nimport GooglePlacesAutosuggestAddress from \"../GooglePlacesAutosuggestFields/GooglePlacesAutosuggestAddress\";\nimport { useMutation, useQuery } from \"urql\";\nimport { MESSAGE_TYPES } from \"../PopupMessages\";\nimport CircularProgress from \"@material-ui/core/CircularProgress\";\nimport { green } from \"@material-ui/core/colors\";\nimport Joi from \"@hapi/joi\";\nimport GetSafe from \"../../lib/GetSafe\";\nimport withAccessControl from \"../HOC/AccessControl\";\nimport { navigate } from \"hookrouter\";\nimport { ACL_COMPONENTS } from \"../../config\";\nimport { CHANGE_TYPES } from \"../../pages/Projects\";\nimport ExternalErrorLogger from \"@ennit/react-external-errorlogger\";\nimport FormGroup from \"@material-ui/core/FormGroup\";\nimport FormControlLabel from \"@material-ui/core/FormControlLabel\";\nimport Checkbox from \"@material-ui/core/Checkbox\";\nimport FormLabel from \"@material-ui/core/FormLabel\";\n\nconst useStyles = makeStyles((theme) => ({\n changeLocation: {\n color: theme.palette.primary.main,\n width: \"auto\",\n height: \"100%\",\n fontWeight: \"bold\",\n },\n dialogTitleCloseIcon: {\n marginLeft: \"auto\",\n padding: 0,\n paddingRight: 23,\n paddingTop: 10,\n },\n root: {\n width: \"100%\",\n maxWidth: 444,\n },\n addButtonText: {\n paddingTop: 3,\n paddingRight: 15,\n paddingBottom: 3,\n paddingLeft: 15,\n fontWeight: \"bold\",\n },\n editIcon: {\n paddingRight: 5,\n },\n icon: {\n color: theme.palette.primary.main,\n fontSize: 24,\n [theme.breakpoints.up(\"sm\")]: {\n fontSize: 30,\n },\n },\n iconDisabled: {\n fontSize: 30,\n },\n iconLonely: {\n marginRight: 0,\n [theme.breakpoints.up(\"sm\")]: {\n marginRight: 35,\n },\n },\n listItem: {\n padding: 0,\n },\n dialogContent: {\n minWidth: \"100%\",\n padding: \"0 20px\",\n [theme.breakpoints.up(\"sm\")]: {\n paddingTop: 0,\n paddingRight: 32,\n paddingBottom: 24,\n paddingLeft: 32,\n },\n },\n dialogActions: {\n justifyContent: \"flex-start\",\n padding: \"0 20px\",\n [theme.breakpoints.up(\"sm\")]: {\n paddingTop: 0,\n paddingRight: 32,\n paddingBottom: 24,\n paddingLeft: 32,\n },\n },\n location: {\n paddingRight: 50,\n color: \"#525252\",\n },\n locationText: {\n fontSize: theme.typography.fontSize,\n },\n textField: {\n width: \"100%\",\n marginRight: 0,\n marginLeft: 0,\n },\n menu: {\n width: 200,\n },\n autocompleteResultWrapper: {\n position: \"relative\",\n textAlign: \"center\",\n zIndex: 2,\n },\n autocompleteResult: {\n position: \"absolute\",\n padding: theme.spacing(3),\n width: \"100%\",\n },\n buttonProgress: {\n color: green[500],\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n marginTop: -12,\n marginLeft: -12,\n },\n undo: {\n color: theme.palette.primary.main,\n textDecoration: \"underline\",\n fontSize: 14,\n },\n link: {\n cursor: \"pointer\",\n },\n removed: {\n opacity: 0.5,\n },\n bold: {\n display: \"block\",\n paddingTop: 12,\n paddingBottom: 12,\n color: \"#525252\",\n fontWeight: \"bold\",\n },\n homeIcon: {\n color: \"#999999\",\n fontSize: 30,\n },\n companyHeader: {\n color: \"#A6A6A6\",\n fontSize: 14,\n marginLeft: 12,\n marginTop: 20,\n },\n companyAddress: {\n color: \"#525252\",\n fontSize: 16,\n marginLeft: 12,\n marginBottom: 30,\n },\n}));\n\nconst createLocationMutation = `\n mutation createLocation(\n $title: String!\n $street: String\n $zip: String\n $city: String\n $long: Float\n $lat: Float\n $radius: Int\n $version: Int\n $userHashID: String!\n $constructionSums: [String]\n ) {\n createLocation(\n Title: $title,\n Street: $street,\n Zip: $zip,\n City: $city,\n Longitude: $long,\n Latitude: $lat,\n Radius: $radius,\n Version: $version,\n UserHashID: $userHashID,\n ConstructionSums: $constructionSums\n ) {\n HashID\n Title\n Street\n Zip\n City\n Radius\n Longitude\n Latitude\n Version\n UserHashID\n ConstructionSumList {\n edges {\n node {\n Code\n }\n }\n }\n }\n }\n`;\n\nconst updateLocationMutation = `\n mutation UpdateUser(\n $hashId: String!,\n $email: String!,\n $locations:[LocationInput]\n ) {\n updateUser(\n HashID: $hashId,\n Email: $email,\n Locations: $locations\n ) {\n HashID\n }\n }\n`;\n\nconst querySmartconextConf = `\n {\n readSmartconextConf {\n air_distance_radius_list\n construction_sums {\n ID,\n Code,\n MinRange,\n MaxRange,\n Title\n }\n }\n }\n`;\n\nconst updateCompanyMutation = `\n mutation UpdateCompany (\n $hashID: String!,\n $distance: Int,\n $constructionSums: [String]\n ) {\n updateCompany (\n HashID: $hashID, \n Distance: $distance,\n ConstructionSums: $constructionSums\n ) {\n Name\n Canton\n Distance\n ConstructionSumList {\n edges {\n node {\n Code\n }\n }\n }\n }\n }\n`;\n// Parse the gql result edge-node list to an location-construction-sum array\nexport const parseConstructionSumList = (gqlEdges = []) => {\n const constructionSums = [];\n\n gqlEdges.forEach((gqlEdge) => {\n constructionSums.push(gqlEdge.node.Code);\n });\n\n return constructionSums;\n};\n\n// Parse the location-construction-sum array to gql result edge-node list\nexport const reverseParseConstructionSumList = (constructionSumCodes) => {\n const constructionSumEdges = [];\n\n constructionSumCodes.forEach((constructionSumCode) => {\n constructionSumEdges.push({ node: { Code: constructionSumCode } });\n });\n\n return { edges: constructionSumEdges };\n};\n\n/**\n * ProjectsLocationsHandler\n *\n * @returns {*}\n * @constructor\n */\nconst ProjectsLocationsHandler = (props) => {\n const classes = useStyles();\n const {\n user,\n setUser,\n token,\n setToken,\n setMessage,\n selectedLocationTabValue,\n setSelectedLocationTabValue,\n unsetUser,\n unsetToken,\n setMarkAsReadByLocation,\n upgradeToPremiumOpen,\n setUpgradeToPremiumOpen,\n } = useContext(GlobalContext);\n const { t } = useTranslation();\n const [openDialog, setOpenDialog] = useState(false);\n const [listData, setListData] = useState([]);\n const [isEditable, setIsEditable] = useState(false);\n const [autoSuggestError, setAutoSuggestError] = useState(false);\n const [radiusSelectError, setRadiusSelectError] = useState(false);\n const [saveInProgress, setSaveInProgress] = useState(false);\n const [editableElement, setEditableElement] = useState({\n HashID: null,\n Title: \"\",\n Street: \"\",\n Radius: \"\",\n Latitude: \"\",\n Longitude: \"\",\n Sort: null,\n ConstructionSums: null,\n });\n const [airDistanceResultList, setAirDistanceResultList] = useState([]);\n const [constructionSumsResultList, setConstructionSumsResultList] = useState(\n []\n );\n const [editCompanyLocation, setEditCompanyLocation] = useState(false);\n const [{ fetchingCreateLocation }, executeCreateLocationMutation] =\n useMutation(createLocationMutation);\n const [{ fetchingUpdateLocation }, executeUpdateLocationMutation] =\n useMutation(updateLocationMutation);\n const [{ fetchingUpdateCompany }, executeUpdateCompanyMutation] = useMutation(\n updateCompanyMutation\n );\n const [result, executeQuerySmartconextConf] = useQuery({\n query: querySmartconextConf,\n pause: true,\n });\n\n /**\n * Joi validation schema\n */\n const schema = Joi.object({\n HashID: Joi.string().allow(null),\n Title: Joi.string().required(),\n Street: Joi.string(),\n Radius: Joi.number().required(),\n Latitude: Joi.number(),\n Longitude: Joi.number(),\n Sort: Joi.number().allow(null),\n ConstructionSums: Joi.array().allow(null),\n });\n\n /**\n * Joi valiation schema for company change\n */\n const editCompanySchema = Joi.object({\n Radius: Joi.number().required(),\n ConstructionSumList: Joi.object().allow(null, {}),\n });\n\n /**\n * useEffect\n */\n useEffect(() => {\n setListData(user.getData().locations);\n executeQuerySmartconextConf();\n }, [\n listData,\n editableElement,\n setEditableElement,\n user,\n executeQuerySmartconextConf,\n token,\n setToken,\n ]);\n\n /**\n * GraphQL trigger and result handling\n */\n useEffect(() => {\n if (!result.fetching && token.isSet()) {\n if (result.error) {\n // Check if the user need to be logged out\n if (result.error.message.indexOf(\"User forced logout\") !== -1) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.user.forced.logout\"));\n unsetUser();\n unsetToken();\n navigate(\"/\");\n } else {\n // Something went very wrong\n ExternalErrorLogger.log({\n text: \"Error fetching smartconext conf on ProjectsLocationsHandler\",\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n errorMessage: result.error.message,\n },\n });\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.general\"));\n }\n } else {\n // Query not fetching right now\n if (\n typeof result.data !== \"undefined\" &&\n typeof result.data.readSmartconextConf !== \"undefined\"\n ) {\n if (airDistanceResultList.length === 0) {\n setAirDistanceResultList(\n result.data.readSmartconextConf[0].air_distance_radius_list\n );\n }\n if (constructionSumsResultList.length === 0) {\n setConstructionSumsResultList(\n result.data.readSmartconextConf[0].construction_sums\n );\n }\n }\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [result, token]);\n\n /**\n * handleClickManageLocations\n */\n const handleClickManageLocations = () => {\n setOpenDialog(true);\n };\n\n /**\n * handleCloseManageLocations\n */\n const handleCloseManageLocations = () => {\n setOpenDialog(false);\n setIsEditable(false);\n };\n\n /**\n * handleDeleteLocation\n */\n const handleDeleteLocation = (elementId) => {\n let removedItem = null;\n const data = listData.map((item) => {\n if (item.HashID === elementId) {\n item.Removed = true;\n removedItem = item;\n }\n return item;\n });\n user.setData({\n locations: data,\n });\n\n executeUpdateLocationMutation({\n hashId: user.getData().hashID,\n email: user.getData().email,\n locations: [\n {\n HashID: removedItem.HashID,\n Removed: removedItem.Removed,\n },\n ],\n }).then((result) => {\n if (result.error) {\n // Check if the user need to be logged out\n if (result.error.message.indexOf(\"User forced logout\") !== -1) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.user.forced.logout\"));\n unsetUser();\n unsetToken();\n navigate(\"/\");\n } else {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.delete\"));\n ExternalErrorLogger.log({\n text: \"Error delete location on ProjectsLocationsHandler\",\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n errorMessage: result.error.message,\n },\n });\n }\n } else {\n setMessage(MESSAGE_TYPES.SUCCESS, t(\"general.label.delete.success\"));\n }\n });\n\n setUser(user);\n if (elementId === selectedLocationTabValue) {\n setSelectedLocationTabValue(false);\n }\n };\n\n /**\n * handleUndoDeleteLocation\n *\n * @param elementId\n */\n const handleUndoDeleteLocation = (elementId) => {\n let removedItem = null;\n const data = listData.map((item) => {\n if (item.HashID === elementId) {\n removedItem = item;\n }\n return item;\n });\n user.setData({\n locations: data,\n });\n\n executeUpdateLocationMutation({\n hashId: user.getData().hashID,\n email: user.getData().email,\n locations: [\n {\n HashID: removedItem.HashID,\n Removed: false,\n },\n ],\n }).then((result) => {\n if (result.error) {\n // Check if the user need to be logged out\n if (result.error.message.indexOf(\"User forced logout\") !== -1) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.user.forced.logout\"));\n unsetUser();\n unsetToken();\n navigate(\"/\");\n } else if (\n result.error.message.includes(\n ` User with HashID '${user.getData().hashID}' not found`\n )\n ) {\n setMessage(MESSAGE_TYPES.INFO, t(\"error.item.already.deleted\"));\n } else {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.save\"));\n ExternalErrorLogger.log({\n text: \"Error undo delete location on ProjectsLocationsHandler\",\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n errorMessage: result.error.message,\n },\n });\n }\n } else {\n setMessage(MESSAGE_TYPES.SUCCESS, t(\"general.label.save.success\"));\n const data = listData.map((item) => {\n if (item.HashID === elementId) {\n item.Removed = false;\n removedItem = item;\n }\n return item;\n });\n user.setData({\n locations: data,\n });\n\n setUser(user);\n }\n });\n };\n\n /**\n * handleEditCompanyLocation\n */\n const handleEditCompanyLocation = () => {\n setEditableElement({\n Radius: user.getData().company.distance,\n ConstructionSums: parseConstructionSumList(\n GetSafe(() => user.getData().company.constructionSums.edges, [])\n ),\n });\n setEditCompanyLocation(true);\n };\n\n /**\n * handleEditLocation\n *\n * @param element\n */\n const handleEditLocation = (element) => {\n setEditableElement(element);\n setIsEditable(true);\n };\n\n /**\n * handleCloseEditLocations\n */\n const handleCloseEditLocations = () => {\n setIsEditable(false);\n setEditCompanyLocation(false);\n };\n\n /**\n * handleAddressChange\n *\n * @param autosuggestResult\n */\n const handleAddressChange = (autosuggestResult) => {\n setAutoSuggestError(false);\n const addressArray = autosuggestResult.address.split(\",\");\n const name = addressArray[addressArray.length - 2];\n const newElement = {\n HashID: editableElement.HashID,\n Title: name.trim(),\n Street: addressArray.join(\", \").trim(),\n Radius: editableElement.range,\n Latitude: autosuggestResult.latLng.lat,\n Longitude: autosuggestResult.latLng.lng,\n Sort: editableElement.Sort,\n ConstructionSums: editableElement.ConstructionSums,\n };\n setEditableElement(newElement);\n };\n\n /**\n * handleRangeChenge\n *\n * @param event\n */\n const handleRangeChange = (event) => {\n setRadiusSelectError(false);\n const newRange = event.target.value;\n const newElement = {\n HashID: editableElement.HashID,\n Title: editableElement.Title,\n Street: editableElement.Street,\n Radius: newRange,\n Latitude: editableElement.Latitude,\n Longitude: editableElement.Longitude,\n Sort: editableElement.Sort,\n ConstructionSums: editableElement.ConstructionSums,\n };\n setEditableElement(newElement);\n };\n\n /**\n * handleSaveEditLocations\n */\n const handleSaveEditLocations = () => {\n setSaveInProgress(true);\n\n // Validate editableElement data\n const { error } = schema.validate(editableElement, { abortEarly: false });\n if (error) {\n error.details.map((item) => {\n if (item.context.label === \"Radius\") {\n setRadiusSelectError(true);\n }\n if (item.context.label === \"Title\") {\n setAutoSuggestError(true);\n }\n setSaveInProgress(false);\n return item;\n });\n return;\n }\n\n let newListData = [];\n\n // If it is a new location HashID will be null\n if (editableElement.HashID === null) {\n listData.forEach((element) => {\n newListData.push(element);\n });\n\n executeCreateLocationMutation({\n title: editableElement.Title,\n street: editableElement.Street,\n zip: \"\",\n city: \"\",\n long: editableElement.Longitude,\n lat: editableElement.Latitude,\n radius: editableElement.Radius,\n version: 1,\n userHashID: user.getData().hashID,\n constructionSums: editableElement.ConstructionSums,\n }).then((result) => {\n setSaveInProgress(false);\n\n if (result.error) {\n // Check if the user need to be logged out\n if (result.error.message.indexOf(\"User forced logout\") !== -1) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.user.forced.logout\"));\n unsetUser();\n unsetToken();\n navigate(\"/\");\n } else {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.save\"));\n ExternalErrorLogger.log({\n text: \"Error save location on ProjectsLocationsHandler\",\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n errorMessage: result.error.message,\n },\n });\n }\n } else {\n setMessage(MESSAGE_TYPES.SUCCESS, t(\"general.label.save.success\"));\n const data = result.data.createLocation[0];\n\n const newElement = {\n HashID: data.HashID,\n Title: data.Title,\n Street: data.Street,\n Radius: data.Radius,\n Latitude: data.Latitude,\n Longitude: data.Longitude,\n ConstructionSums: parseConstructionSumList(\n data.ConstructionSumList.edges\n ),\n };\n\n newListData.push(newElement);\n\n user.setData({\n locations: newListData,\n });\n\n setUser(user);\n\n // setOpenDialog(false)\n setIsEditable(false);\n\n // reset pagination\n props.setPage(0);\n props.setChangeType(CHANGE_TYPES.INIT);\n }\n });\n // Otherwise it is an existing location\n } else {\n listData.forEach((element, indexInListData) => {\n if (element.HashID === editableElement.HashID) {\n executeUpdateLocationMutation({\n hashId: user.getData().hashID,\n email: user.getData().email,\n locations: [\n {\n HashID: editableElement.HashID,\n Title: editableElement.Title,\n Street: editableElement.Street,\n Radius: editableElement.Radius,\n Latitude: editableElement.Latitude,\n Longitude: editableElement.Longitude,\n ConstructionSums: editableElement.ConstructionSums,\n Sort: editableElement.Sort,\n },\n ],\n }).then((result) => {\n setSaveInProgress(false);\n\n if (result.error) {\n // Check if the user need to be logged out\n if (result.error.message.indexOf(\"User forced logout\") !== -1) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.user.forced.logout\"));\n unsetUser();\n unsetToken();\n navigate(\"/\");\n } else {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.save\"));\n ExternalErrorLogger.log({\n text: \"Error update location on ProjectsLocationsHandler\",\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n errorMessage: result.error.message,\n },\n });\n }\n } else {\n setMessage(\n MESSAGE_TYPES.SUCCESS,\n t(\"general.label.save.success\")\n );\n\n setMarkAsReadByLocation({\n hashID: editableElement.HashID,\n });\n\n newListData = user.getData().locations;\n newListData[indexInListData] = editableElement;\n\n user.setData({\n locations: newListData,\n });\n\n setUser(user);\n setIsEditable(false);\n\n // Reset pagination\n props.setPage(0);\n props.setChangeType(CHANGE_TYPES.INIT);\n }\n });\n } else {\n newListData.push(element);\n }\n });\n }\n };\n\n /**\n * handleSaveEditCompanyLocation\n */\n const handleSaveEditCompanyLocation = () => {\n setSaveInProgress(true);\n\n const { error } = editCompanySchema.validate(editableElement, {\n abortEarly: false,\n stripUnknown: true,\n });\n\n if (error) {\n error.details.map((item) => {\n if (item.context.label === \"Radius\") {\n setRadiusSelectError(true);\n }\n setSaveInProgress(false);\n return item;\n });\n return;\n }\n\n executeUpdateCompanyMutation({\n hashID: user.getData().company.hashID,\n distance: editableElement.Radius,\n constructionSums: editableElement.ConstructionSums,\n }).then((result) => {\n setSaveInProgress(false);\n\n if (result.error) {\n // Check if the user need to be logged out\n if (result.error.message.indexOf(\"User forced logout\") !== -1) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.user.forced.logout\"));\n unsetUser();\n unsetToken();\n navigate(\"/\");\n } else {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.save\"));\n ExternalErrorLogger.log({\n text: \"Error update company location on ProjectsLocationsHandler\",\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n errorMessage: result.error.message,\n },\n });\n }\n } else {\n setMessage(MESSAGE_TYPES.SUCCESS, t(\"general.label.save.success\"));\n\n setMarkAsReadByLocation({\n hashID: user.getData().company.hashID,\n });\n\n user.setData({\n company: {\n distance: editableElement.Radius,\n constructionSums: reverseParseConstructionSumList(\n editableElement.ConstructionSums\n ),\n },\n });\n\n setUser(user);\n setIsEditable(false);\n setEditCompanyLocation(false);\n }\n });\n };\n\n /**\n * handleAddLocation\n */\n const handleAddLocation = () => {\n setEditableElement({\n HashID: null,\n Title: \"\",\n Street: \"\",\n Radius: \"\",\n Latitude: \"\",\n Longitude: \"\",\n ConstructionSum: null,\n });\n setIsEditable(true);\n };\n\n /**\n * reorder\n *\n * @param list\n * @param startIndex\n * @param endIndex\n * @returns {unknown[]}\n */\n const reorder = (list, startIndex, endIndex) => {\n const result = Array.from(list);\n const [removed] = result.splice(startIndex, 1);\n result.splice(endIndex, 0, removed);\n\n return result;\n };\n\n /**\n * onDragEnd\n *\n * @param result\n */\n const onDragEnd = (result) => {\n if (!result.destination) {\n return;\n }\n\n if (result.destination.index === result.source.index) {\n return;\n }\n\n const reorderedListData = reorder(\n listData,\n result.source.index,\n result.destination.index\n );\n\n reorderedListData.map((item, index) => {\n item.Sort = index;\n delete item.__typename;\n delete item.ConstructionSumList;\n return item;\n });\n\n user.setData({\n locations: reorderedListData,\n });\n setUser(user);\n\n executeUpdateLocationMutation({\n hashId: user.getData().hashID,\n email: user.getData().email,\n locations: reorderedListData,\n }).then((result) => {\n if (result.error) {\n // Check if the user need to be logged out\n if (result.error.message.indexOf(\"User forced logout\") !== -1) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.user.forced.logout\"));\n unsetUser();\n unsetToken();\n navigate(\"/\");\n } else {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.save\"));\n ExternalErrorLogger.log({\n text: \"Error save location order on ProjectsLocationsHandler\",\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n errorMessage: result.error.message,\n },\n });\n }\n } else {\n setMessage(MESSAGE_TYPES.SUCCESS, t(\"general.label.save.success\"));\n\n user.setData({\n locations: reorderedListData,\n });\n setUser(user);\n }\n });\n };\n\n /**\n * LocationDataListDialog\n */\n const LocationDataListDialog = (\n <>\n \n \n \n \n \n \n {t(\"general.label.my.company\")}\n \n \n \n \n \n \n {\" \"}\n {`${user.getData().company.street}, ${\n user.getData().company.distance\n } ${t(\"location.label.driving.route\")}`}\n \n }\n />\n handleEditCompanyLocation()}\n >\n \n \n \n \n \n {t(\"general.label.further.searchareas\")}\n \n \n {/* eslint-disable-next-line react/jsx-handler-names */}\n \n \n {(provided) => (\n
\n {listData.map((item, index) => {\n if (item.Removed) {\n return (\n \n \n \n \n \n handleUndoDeleteLocation(item.HashID)\n } // eslint-disable-line\n >\n {t(\"general.label.undo\")}\n \n }\n />\n \n );\n } else {\n return (\n \n {(provided) => (\n \n \n \n \n \n {\" \"}\n {`${item.Street}, ${item.Radius} ${t(\n \"location.label.kmRadius\"\n )}`}\n \n }\n />\n handleEditLocation(item)}\n >\n \n \n \n handleDeleteLocation(item.HashID)\n } // eslint-disable-line\n >\n \n \n \n )}\n \n );\n }\n })}\n {provided.placeholder}\n
\n )}\n
\n
\n
\n
\n \n \n \n \n {t(\"general.label.add\")}\n \n \n \n \n );\n\n /**\n * getSpinner\n */\n const getSpinner = (\n \n );\n\n /**\n * handleBuildingSumsCheckboxes\n *\n * @param event\n */\n const handleBuildingSumsCheckboxes = (event) => {\n const constructionSumsReady =\n editableElement.ConstructionSums !== null &&\n typeof editableElement.ConstructionSums !== \"undefined\";\n let constructionSums = [];\n\n if (\n constructionSumsReady &&\n !editableElement.ConstructionSums.includes(event.target.name)\n ) {\n constructionSums = editableElement.ConstructionSums.concat([\n event.target.name,\n ]);\n } else if (\n constructionSumsReady &&\n editableElement.ConstructionSums.includes(event.target.name)\n ) {\n const index = editableElement.ConstructionSums.indexOf(event.target.name);\n editableElement.ConstructionSums.splice(index, 1);\n constructionSums = editableElement.ConstructionSums;\n } else {\n constructionSums = [event.target.name];\n }\n\n const newElement = {\n HashID: editableElement.HashID,\n Title: editableElement.Title,\n Street: editableElement.Street,\n Radius: editableElement.Radius,\n Latitude: editableElement.Latitude,\n Longitude: editableElement.Longitude,\n ConstructionSums: constructionSums,\n };\n setEditableElement(newElement);\n };\n\n /**\n * handleUpgradeToPremium\n */\n const handleUpgradeToPremium = () => {\n setUpgradeToPremiumOpen(!upgradeToPremiumOpen);\n };\n\n /**\n * BuildingSumsFilter\n *\n * @param constructionSums\n * @returns {JSX.Element}\n * @constructor\n */\n const BuildingSumsFilter = ({ constructionSums }) => {\n return (\n \n \n {t(\"general.label.buildingsums\")}\n \n {user.isPro() &&\n constructionSumsResultList.map((item) => {\n return (\n \n }\n label={item.Title}\n />\n );\n })}\n {!user.isPro() && (\n \n {t(\"projects.free.route.premium.pro\")}\n \n )}\n \n );\n };\n\n /**\n * LocationDataEditDialog\n */\n const LocationDataEditDialog = (\n <>\n \n \n {\n handleRangeChange(event);\n }}\n SelectProps={{\n MenuProps: {\n className: classes.menu,\n },\n }}\n margin=\"normal\"\n variant=\"outlined\"\n error={GetSafe(() => radiusSelectError, false)}\n helperText={GetSafe(\n () => (radiusSelectError ? t(\"error.form.empty\") : \"\"),\n \"\"\n )}\n >\n {airDistanceResultList.map((value, key) => (\n \n {value + \" km\"}\n \n ))}\n \n \n \n \n \n \n {t(\"general.label.abort\")}\n \n \n \n \n {t(\"general.label.save\")}\n {fetchingCreateLocation && fetchingUpdateLocation && getSpinner}\n \n {saveInProgress && (\n \n )}\n \n \n \n );\n\n /**\n * LocationDataEditCompanyDialog\n */\n const LocationDataEditCompanyDialog = (\n <>\n \n \n {t(\"general.label.my.company\")}\n \n \n {user.getData().company.city}, {user.getData().company.street}\n \n {\n handleRangeChange(event);\n }}\n SelectProps={{\n MenuProps: {\n className: classes.menu,\n },\n }}\n margin=\"normal\"\n variant=\"outlined\"\n error={GetSafe(() => radiusSelectError, false)}\n helperText={GetSafe(\n () => (radiusSelectError ? t(\"error.form.empty\") : \"\"),\n \"\"\n )}\n >\n {airDistanceResultList.map((value, key) => (\n \n {value + \" km\"}\n \n ))}\n \n \n \n \n \n \n {t(\"general.label.abort\")}\n \n \n \n \n {t(\"general.label.save\")}\n {fetchingUpdateCompany && getSpinner}\n \n {saveInProgress && (\n \n )}\n \n \n \n );\n\n /**\n * return\n */\n return (\n <>\n \n \n {t(\"location.label.manage\")}\n \n \n {!isEditable && !editCompanyLocation && LocationDataListDialog}\n {isEditable && LocationDataEditDialog}\n {!isEditable && editCompanyLocation && LocationDataEditCompanyDialog}\n \n \n );\n};\n\nexport default withAccessControl(\n ProjectsLocationsHandler,\n ACL_COMPONENTS.PROJECTS_LOCATION_HANDLER\n);\n","import React, { useEffect } from \"react\";\nimport Tab from \"@material-ui/core/Tab\";\nimport { makeStyles } from \"@material-ui/core\";\nimport Badge from \"@material-ui/core/Badge\";\nimport { useQuery } from \"urql\";\n\n/**\n * useStyles\n */\nconst useStyles = makeStyles((theme) => ({\n tab: {\n height: 64,\n width: \"auto\",\n minWidth: \"auto\",\n maxWidth: \"inherit\",\n paddingRight: \"35px\",\n paddingLeft: \"35px\",\n fontWeight: \"bold\",\n textAlign: \"center\",\n },\n badgeItem: {\n \"& span\": {\n right: -18,\n width: 25,\n height: 25,\n borderRadius: \"50%\",\n },\n },\n}));\n\nconst queryNewSearchAreaBuildingApplications = `\n query (\n $SearchAreaHashIDs: [String],\n ) {\n readNewSearchAreaBuildingApplications(\n SearchAreaHashIDs: $SearchAreaHashIDs\n ) {\n NewCountPerSearchArea {\n HashID\n NewCount\n NewCountBaugesuch\n NewCountBaupublikation\n NewCountSubmission\n NewCountBaugesuche\n }\n }\n }\n`;\n\n/**\n * LocationTab\n *\n * @param props\n * @returns {*}\n * @constructor\n */\nconst LocationTabSearchArea = ({\n locationHashID,\n labelTitle,\n handleTabChange,\n setHasNewApplications,\n setHasNewSubmissions,\n selectedLocationTabValue\n}) => {\n const classes = useStyles();\n\n const [queryNewSearchAreaBuildingApplicationsResult] = useQuery({\n query: queryNewSearchAreaBuildingApplications,\n variables: {\n SearchAreaHashIDs: [locationHashID],\n },\n });\n\n /* \n * Set the unread state for switch-buttons\n */\n useEffect(() => {\n if (selectedLocationTabValue === locationHashID && !queryNewSearchAreaBuildingApplicationsResult.fetching) {\n if (queryNewSearchAreaBuildingApplicationsResult.data?.readNewSearchAreaBuildingApplications?.NewCountPerSearchArea?.find(NewCountSearchArea => NewCountSearchArea.HashID === locationHashID)?.NewCountBaugesuche > 0) {\n setHasNewApplications(true)\n } else {\n setHasNewApplications(false)\n }\n\n if (queryNewSearchAreaBuildingApplicationsResult.data?.readNewSearchAreaBuildingApplications?.NewCountPerSearchArea?.find(NewCountSearchArea => NewCountSearchArea.HashID === locationHashID)?.NewCountSubmission > 0) {\n setHasNewSubmissions(true)\n } else {\n setHasNewSubmissions(false)\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectedLocationTabValue, queryNewSearchAreaBuildingApplicationsResult])\n\n /**\n * handleTabLabel\n *\n * @returns {*}\n */\n const handleTabLabel = (title, newCount = 0) => {\n if (newCount === 0) {\n return title;\n }\n\n return (\n \n {title}\n \n );\n };\n\n /**\n * return\n */\n return (\n {\n handleTabChange(event, locationHashID);\n }}\n label={handleTabLabel(\n labelTitle,\n queryNewSearchAreaBuildingApplicationsResult.data?.readNewSearchAreaBuildingApplications?.NewCountPerSearchArea?.find(NewCountSearchArea => NewCountSearchArea.HashID === locationHashID)?.NewCount\n )}\n value={locationHashID}\n className={classes.tab}\n />\n );\n};\n\nexport default LocationTabSearchArea;\n","import React, { useEffect } from \"react\";\nimport Tab from \"@material-ui/core/Tab\";\nimport { makeStyles } from \"@material-ui/core\";\nimport Badge from \"@material-ui/core/Badge\";\nimport { useQuery } from \"urql\";\n\n/**\n * useStyles\n */\nconst useStyles = makeStyles((theme) => ({\n tab: {\n height: 64,\n width: \"auto\",\n minWidth: \"auto\",\n maxWidth: \"inherit\",\n paddingRight: \"35px\",\n paddingLeft: \"35px\",\n fontWeight: \"bold\",\n textAlign: \"center\",\n },\n badgeItem: {\n \"& span\": {\n right: -18,\n width: 25,\n height: 25,\n borderRadius: \"50%\",\n },\n },\n}));\n\nconst queryNewBuildingApplications = `\n query (\n $Locations: [InputElasticNewBuildingApplicationLocation],\n ) {\n readNewBuildingApplications(\n Locations: $Locations,\n ) {\n NewCountPerLocation {\n HashID\n NewCount\n NewCountBaugesuch\n NewCountBaupublikation\n NewCountSubmission\n NewCountBaugesuche\n }\n }\n }\n`;\n\n/**\n * LocationTab\n *\n * @param props\n * @returns {*}\n * @constructor\n */\nconst LocationTab = ({\n locationHashID,\n labelTitle,\n isCompanyLocation,\n radius,\n lat,\n lon,\n constructionSums,\n handleTabChange,\n setHasNewApplications,\n setHasNewSubmissions,\n selectedLocationTabValue\n}) => {\n const classes = useStyles();\n\n const [queryNewBuildingApplicationsResult] = useQuery({\n query: queryNewBuildingApplications,\n variables: {\n Locations: [\n {\n IsCompanyLocation: isCompanyLocation,\n HashID: locationHashID,\n Radius: radius,\n Lat: lat,\n Lon: lon,\n ConstructionSums: constructionSums\n },\n ],\n },\n });\n\n /* \n * Set the unread state for switch-buttons\n */\n useEffect(() => {\n if (selectedLocationTabValue === locationHashID && !queryNewBuildingApplicationsResult.fetching) {\n if (queryNewBuildingApplicationsResult.data?.readNewBuildingApplications?.NewCountPerLocation?.find(NewCountLocation => NewCountLocation.HashID === locationHashID)?.NewCountBaugesuche > 0) {\n setHasNewApplications(true)\n } else {\n setHasNewApplications(false)\n }\n\n if (queryNewBuildingApplicationsResult.data?.readNewBuildingApplications?.NewCountPerLocation?.find(NewCountLocation => NewCountLocation.HashID === locationHashID)?.NewCountSubmission > 0) {\n setHasNewSubmissions(true)\n } else {\n setHasNewSubmissions(false)\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectedLocationTabValue, queryNewBuildingApplicationsResult])\n\n /**\n * handleTabLabel\n *\n * @returns {*}\n */\n const handleTabLabel = (title, newCount = 0) => {\n if (newCount === 0) {\n return title;\n }\n\n return (\n \n {title}\n \n );\n };\n\n /**\n * return\n */\n return (\n {\n handleTabChange(event, locationHashID)\n }}\n label={handleTabLabel(\n labelTitle,\n queryNewBuildingApplicationsResult.data?.readNewBuildingApplications?.NewCountPerLocation?.find(NewCountLocation => NewCountLocation.HashID === locationHashID)?.NewCount\n )}\n value={locationHashID}\n className={classes.tab}\n />\n );\n};\n\nexport default LocationTab;\n","import React, { useContext, useEffect } from \"react\";\nimport Tabs from \"@material-ui/core/Tabs\";\nimport { makeStyles } from \"@material-ui/core\";\nimport GlobalContext from \"../lib/GlobalContext\";\nimport withAccessControl from \"./HOC/AccessControl\";\nimport { useTranslation } from \"react-i18next\";\nimport { ACL_COMPONENTS } from \"../config\";\nimport AppBar from \"@material-ui/core/AppBar\";\nimport LocationTabSearchArea from \"./LocationTabSearchArea\";\nimport LocationTab from \"./LocationTab\";\nimport { parseConstructionSumList } from \"./Projects/ProjectsLocationsHandler\";\nimport GetSafe from \"../lib/GetSafe\";\n\n/**\n * useStyles\n */\nconst useStyles = makeStyles((theme) => ({\n root: {\n display: \"flex\",\n flexGrow: 1,\n width: \"100%\",\n maxWidth: \"100%\",\n overflow: \"hidden\",\n backgroundColor: theme.palette.background.paper,\n },\n tabs: {\n color: \"#525252\",\n fontSize: 14,\n height: \"100%\",\n width: \"100%\",\n maxWidth: 1280,\n },\n tableTabsHeader: {\n background: \"#F7F9FA\",\n boxShadow: \"none\",\n },\n}));\n\n/**\n * LocationTabs\n *\n * @param props\n * @returns {*}\n * @constructor\n */\nconst LocationTabs = (props) => {\n const classes = useStyles();\n const { t } = useTranslation();\n const { selectedLocationTabValue, setSelectedLocationTabValue, user } =\n useContext(GlobalContext);\n\n /**\n * useEffect\n */\n useEffect(() => {\n if (!selectedLocationTabValue) {\n if (!user.hasZipSearchAreas()) {\n setSelectedLocationTabValue(props.company.hashID);\n } else {\n setSelectedLocationTabValue(props.locations[0]?.HashID);\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n props.company.hashID,\n selectedLocationTabValue,\n setSelectedLocationTabValue,\n ]);\n\n /**\n * return\n */\n return (\n
\n \n \n {!user.hasZipSearchAreas() && (\n props.company.constructionSums.edges, [])\n )}\n value={props.company.hashID}\n handleTabChange={props.handleTabChange}\n setHasNewApplications={props.setHasNewApplications}\n setHasNewSubmissions={props.setHasNewSubmissions}\n selectedLocationTabValue={selectedLocationTabValue}\n />\n )}\n {props.locations.map((location) => {\n if (!location.Removed) {\n return user.hasZipSearchAreas() ? (\n \n ) : (\n \n );\n } else {\n return null;\n }\n })}\n \n \n
\n );\n};\n\nexport default withAccessControl(LocationTabs, ACL_COMPONENTS.LOCATION_TABS);\n","import Joi from \"@hapi/joi\";\nimport UserTypes from \"../components/Onboarding/UserTypes\";\nimport hash from \"object-hash\";\nimport ExternalErrorLogger from \"@ennit/react-external-errorlogger\";\nimport Cookies from \"universal-cookie\";\nimport { MASQ_COOKIE_NAME, cookieDomain } from \"../config\";\n\n/**\n * User\n * @returns {{unsetData: *, getSchemaUserData: *, writeLocalStorage: *, getHash: *, deleteLocalStorage: *, setData: *, isSet: *, getLocalStorage: *, getSchemaCompanyData: *, getData: *}}\n * @constructor\n */\nconst User = () => {\n const initialData = {\n id: \"\",\n hashID: \"\",\n locale: \"\",\n salutation: 1,\n appAdmin: 0,\n isMasquerade: 0,\n email: \"\",\n firstName: \"\",\n lastName: \"\",\n mode: \"free\",\n stripePublicKey: \"\",\n locations: [],\n searchAreas: [],\n company: {\n id: \"\",\n hashID: \"\",\n distance: 0,\n chid: \"\",\n name: \"\",\n contactPerson: \"\",\n street: \"\",\n zip: \"\",\n city: \"\",\n phone: \"\",\n mobile: \"\",\n fax: \"\",\n email: \"\",\n website: \"\",\n employeeCount: \"\",\n legalForm: \"\",\n foundingYear: \"\",\n masterOperation: \"\",\n canton: \"\",\n branchCategory: 0,\n branchSubs: [],\n otherBusinessActivities: [],\n otherBusinessSpecialities: [],\n trialPossible: false,\n micrositeColorScheme: \"\",\n micrositeDescription: \"\",\n micrositeEmailApplicationText: \"\",\n micrositeImages: [],\n micrositeLogo: {},\n additionalMemberships: \"\",\n micrositeReferences: [],\n micrositeCertified: false,\n micrositeCertifiedUntil: \"\",\n zipSearchAreas: false,\n zipSearchStatistic: false,\n applicationFollowUpTimeInDays: 0\n },\n dossierTemplates: [],\n permissions: [],\n fulltextSearchRequests: [],\n };\n\n let data = initialData;\n\n /**\n * Joi validation schema companyData\n */\n const schemaCompanyData = Joi.object({\n id: Joi.number(),\n hashID: Joi.string().required(),\n adminUserID: Joi.number(),\n chid: Joi.string().allow(\"\"),\n name: Joi.string().required(),\n urlSegment: Joi.string().allow(\"\", null),\n contactPerson: Joi.string().allow(\"\"),\n street: Joi.string().allow(\"\"),\n zip: Joi.string().allow(\"\"),\n city: Joi.string().allow(\"\"),\n phone: Joi.string().allow(\"\"),\n mobile: Joi.string().allow(\"\"),\n website: Joi.string()\n .regex(\n /https?:\\/\\/(www\\.)?[-a-zA-ZöäüÖÄÜ0-9@:%._+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b([-a-zA-Z0-9()@:%_+.~#?&/=]*)/\n )\n .allow(\"\"),\n fax: Joi.string().allow(\"\"),\n email: Joi.string().email({ tlds: false }).allow(\"\"),\n employeeCount: Joi.number().integer().allow(0).allow(\"\"),\n legalForm: Joi.number().min(0).allow(\"\"),\n foundingYear: Joi.string().allow(\"\"),\n masterOperation: Joi.string().allow(\"\"),\n trainingCompany: Joi.string().allow(\"\"),\n canton: Joi.string().allow(\"\"),\n distance: Joi.number().allow(\"\"),\n latitude: Joi.number().allow(null),\n longitude: Joi.number().allow(null),\n branchCategory: Joi.number().min(0).allow(\"\"),\n branchSubs: Joi.array().items(Joi.number()),\n otherBusinessActivities: Joi.array().items(Joi.number()),\n otherBusinessSpecialities: Joi.array().items(Joi.number()),\n users: Joi.array(),\n stripeIsTrialing: Joi.boolean().allow(null),\n stripeTrialingDays: Joi.number().allow(null),\n stripePlanId: Joi.string().allow(null),\n stripeValidThrough: Joi.string().allow(null),\n stripeProductId: Joi.string().allow(null),\n stripeCancelAt: Joi.number(),\n stripeFuturePlans: Joi.array().allow(null),\n trialPossible: Joi.boolean().allow(null),\n memberships: Joi.array(),\n allMemberships: Joi.array(),\n micrositeColorScheme: Joi.string().allow(null, \"\"),\n micrositeDescription: Joi.string().allow(null, \"\"),\n micrositeEmailApplicationText: Joi.string().allow(null, \"\"),\n micrositeImages: Joi.array().allow(null),\n micrositeLogo: Joi.object().allow(null, {}),\n additionalMemberships: Joi.string().allow(null, \"\"),\n micrositeReferences: Joi.array().allow(null),\n micrositeCertified: Joi.boolean().allow(null),\n micrositeCertifiedUntil: Joi.string().allow(null, \"\"),\n hasExternalApply: Joi.boolean().allow(null),\n zipSearchAreas: Joi.boolean().allow(null),\n zipSearchStatistic: Joi.boolean().allow(null),\n applicationFollowUpTimeInDays: Joi.number().allow(null),\n constructionSums: Joi.object().allow(null, {}),\n __typename: Joi.string().allow(\"\"), // For API-Caching-Reasons this is required\n });\n\n /**\n * Joi validation schema userData\n */\n const schemaUserData = Joi.object({\n id: Joi.number(),\n hashID: Joi.string().required(),\n locale: Joi.string().allow(\"\"),\n salutation: Joi.number().allow(\"\"),\n appAdmin: Joi.number(),\n isMasquerade: Joi.number(),\n email: Joi.string().email({ tlds: false }).required(),\n firstName: Joi.string().allow(\"\"),\n lastName: Joi.string().allow(\"\"),\n mode: Joi.string()\n .valid(null, UserTypes.FREE, UserTypes.SMART, UserTypes.PRO)\n .required(),\n stripePublicKey: Joi.string().allow(\"\"),\n creditCard: Joi.object().allow({}),\n company: schemaCompanyData,\n dossierTemplates: Joi.array(),\n locations: Joi.array(),\n permissions: Joi.array(),\n fulltextSearchRequests: Joi.array(),\n searchAreas: Joi.array().allow(null),\n __typename: Joi.string().allow(\"\"), // For API-Caching-Reasons this is required\n });\n\n /**\n * getHash\n * Builds and returns a hash based on data\n * return String\n */\n const getHash = () => {\n return hash(data);\n };\n\n /**\n * getData\n * @returns {{mode: string, firstName: string, lastName: string, stripePublicKey: string, permissions: [], fulltextSearchRequests: [], locations: [], company: {zip: string, website: string, city: string, foundingYear: string, branchCategory: number, trialPossible: boolean, masterOperation: string, hashID: string, employeeCount: string, legalForm: string, chid: string, branchSubs: [], phone: string, street: string, name: string, canton: string, id: string, fax: string, email: string}, id: string, salutation: number, locale: string, hashID: string, email: string}}\n */\n const getData = () => {\n return data;\n };\n\n /**\n * setData\n * Sets and validates data\n * @param userData\n * @returns {boolean}\n */\n const setData = (userData) => {\n if (isValid(userData)) {\n data = _mergeIntoData(userData);\n _writeLocalStorage();\n return true;\n }\n return false;\n };\n\n /**\n * _mergeIntoData\n * Merges provided data into the current data\n * @param userData\n * @returns {{mode, firstName, lastName, company, id, salutation, email}}\n * @private\n */\n const _mergeIntoData = (userData) => {\n if (typeof userData.company === \"undefined\") {\n userData.company = {};\n }\n userData.company = {\n ...initialData.company,\n ...data.company,\n ...userData.company,\n };\n return { ...initialData, ...data, ...userData };\n };\n\n /**\n * isSet\n * Checks if data has been set\n * @returns {boolean}\n */\n const isSet = () => {\n return data.hashID !== \"\" && data.hashID.length > 0;\n };\n\n /**\n * isFree\n * Checks if the user is a free user\n * @returns {boolean}\n */\n const isFree = () => {\n return isSet() && data.mode === UserTypes.FREE;\n };\n\n /**\n * isPro\n * Checks if the user is a pro or proadmin user\n * @returns {boolean|boolean}\n */\n const isPro = () => {\n return (\n isSet() &&\n (data.mode === UserTypes.PRO || data.mode === UserTypes.PROADMIN)\n );\n };\n\n /**\n * isAbleToUpgrade\n * Checks if the user is able to see the upgrade dialog\n * @returns {boolean|boolean}\n */\n const isAbleToUpgrade = () => {\n return isSet() && (data.mode === UserTypes.FREE || data.mode === null);\n };\n\n /**\n * isAppAdmin\n * Checks if the user is app administrator (set in cms user form)\n * @returns {boolean|boolean}\n */\n const isAppAdmin = () => {\n return isSet() && (data.appAdmin === 1);\n };\n\n /**\n * isMasquerade\n * Checks if the user is a masquerade\n * @returns {boolean|boolean}\n */\n const isMasquerade = () => {\n return isSet() && (data.isMasquerade === 1);\n };\n\n /**\n * hasAddress\n *\n * @returns {boolean}\n */\n const hasAddress = () => {\n return (\n isSet() &&\n data.company.name !== \"\" &&\n data.company.street !== \"\" &&\n data.company.zip !== \"\" &&\n data.company.city !== \"\"\n );\n };\n\n const hasZipSearchAreas = () => {\n return isSet() && data.company.zipSearchAreas === true;\n };\n\n const hasZipSearchStatistic = () => {\n return isSet() && data.company.zipSearchStatistic === true;\n };\n\n const hasApplicationFollowUpTimInDays = () => {\n return isSet() && data.company.applicationFollowUpTimeInDays > 0;\n };\n\n /**\n * unsetData\n * Unsets the current data and localStore\n */\n const unsetData = () => {\n data = initialData;\n deleteLocalStorage();\n };\n\n /**\n * getSchemaUserData\n */\n const getSchemaUserData = () => {\n return schemaUserData;\n };\n\n /**\n * getSchemaCompanyData\n */\n const getSchemaCompanyData = () => {\n return schemaCompanyData;\n };\n\n /**\n * getLocalStorage\n * Fetch the data in the localStore\n * @returns {boolean|*|Url|{ext, root, name, dir, base}|null}\n */\n const getLocalStorage = () => {\n const localStoreUserData = window.localStorage.getItem(\"user\");\n if (localStoreUserData && localStoreUserData.length > 0) {\n return JSON.parse(localStoreUserData);\n }\n return false;\n };\n\n /**\n * _writeLocalStorage\n * @private\n */\n const _writeLocalStorage = () => {\n window.localStorage.setItem(\"user\", JSON.stringify(data));\n };\n\n /**\n * writeLocalStorage\n * Writes the provided data to the current data, also writes to the localStore\n * @param userData\n */\n const writeLocalStorage = (userData) => {\n if (setData(userData)) {\n _writeLocalStorage();\n }\n };\n\n /**\n * deleteLocalStorage\n * Removes the user-data from the browsers store, also removes the mask-cookie if present\n */\n const deleteLocalStorage = () => {\n _deleteAppAdminMaskCookie();\n window.localStorage.removeItem(\"user\");\n };\n\n /**\n * _deleteAppAdminMaskCookie\n * Removes the masquerade cookie\n */\n const _deleteAppAdminMaskCookie = () => {\n if (isMasquerade()) {\n const cookies = new Cookies();\n \n if (typeof cookies.get(MASQ_COOKIE_NAME) !== 'undefined') {\n cookies.remove(MASQ_COOKIE_NAME, {\n path: \"/\",\n domain: cookieDomain,\n });\n }\n }\n }\n\n /**\n * isValid\n * @param userData\n * @returns {boolean}\n */\n const isValid = (userData) => {\n const mergedData = _mergeIntoData(userData);\n const { error } = schemaUserData.validate(mergedData, {\n abortEarly: false,\n });\n if (error) {\n ExternalErrorLogger.log({\n text: \"Error user validity\",\n data: {\n error: error,\n userData: userData,\n mergedData: mergedData,\n },\n });\n return false;\n }\n return true;\n };\n\n /**\n * Methods accessible from outside\n */\n return {\n getHash,\n getData,\n setData,\n unsetData,\n isSet,\n isFree,\n isPro,\n isAbleToUpgrade,\n isAppAdmin,\n isMasquerade,\n hasAddress,\n hasZipSearchAreas,\n hasZipSearchStatistic,\n hasApplicationFollowUpTimInDays,\n getSchemaUserData,\n getSchemaCompanyData,\n getLocalStorage: getLocalStorage,\n writeLocalStorage: writeLocalStorage,\n deleteLocalStorage: deleteLocalStorage,\n };\n};\n\n/**\n * Exports the user instance\n */\nexport default User();\n","import React, { useContext } from \"react\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport { isNotLive } from \"../../config\";\nimport { Typography } from \"@material-ui/core\";\nimport GlobalContext from \"../../lib/GlobalContext\";\nimport User from \"../../lib/User\";\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n flexGrow: 1,\n width: \"100%\",\n maxWidth: 1280,\n },\n debugHolder: {\n marginTop: 7,\n paddingTop: 10,\n paddingBottom: 10,\n paddingRight: 20,\n paddingLeft: 20,\n background: \"rgba(255, 255, 255, 0.5)\",\n borderRadius: 3,\n border: \"1px solid #edcc4a\",\n },\n debugListWrapper: {\n paddingTop: 10,\n paddingBottom: 10,\n paddingRight: 20,\n paddingLeft: 20,\n background: \"#fff4db\",\n },\n debugListTitle: {\n fontSize: 20,\n fontWeight: \"bold\",\n marginBottom: 5,\n },\n debugDataList: {\n display: \"block\",\n alignItems: \"center\",\n },\n debugTitle: {\n marginRight: 10,\n },\n}));\n\nconst DebugImportantDataFragment = () => {\n const classes = useStyles();\n\n const { user, selectedLocationTabValue } = useContext(GlobalContext);\n\n /**\n * return\n */\n return (!User.isMasquerade() && (isNotLive || User.isAppAdmin())) ? (\n
\n Important data: \n
\n
\n Current User IDs: {user.getData().id} / {user.getData().hashID}\n
\n
\n Current Company IDs:{\" \"}\n {user.getData().company.id} / {user.getData().company.hashID}\n
\n
\n Current Tab Location-HashID:{\" \"}\n {selectedLocationTabValue || 'No Tab'}\n
\n
\n
\n ) : null;\n};\n\nexport default DebugImportantDataFragment;\n","import React, { useEffect, useState } from \"react\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport { useMutation } from \"urql\";\nimport withAccessControl from \"../../components/HOC/AccessControl\";\nimport { ACL_COMPONENTS, MASQ_COOKIE_NAME, cookieDomain, isNotLive } from \"../../config\";\nimport { Grid, LinearProgress, TextField, Typography } from \"@material-ui/core\";\nimport Link from \"@material-ui/core/Link\";\nimport DebugImportantDataFragment from \"./DebugImportantDataFragment\";\nimport User from \"../../lib/User\";\nimport Cookies from \"universal-cookie\";\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n flexGrow: 1,\n width: \"100%\",\n maxWidth: 1280,\n },\n debugHolder: {\n marginTop: 7,\n paddingTop: 10,\n paddingBottom: 10,\n paddingRight: 20,\n paddingLeft: 20,\n background: 'rgba(255, 255, 255, 0.5)',\n borderRadius: 3,\n border: '1px solid #edcc4a'\n },\n debugListWrapper: {\n paddingTop: 10,\n paddingBottom: 10,\n paddingRight: 20,\n paddingLeft: 20,\n background: \"#fff4db\",\n },\n debugListTitle: {\n fontSize: 20,\n fontWeight: \"bold\",\n marginBottom: 5,\n },\n debugList: {\n display: \"flex\",\n flexWrap: 'wrap',\n alignItems: 'center'\n },\n debugTitle: {\n marginRight: 10,\n },\n debugLink: {\n display: \"inline-block\",\n marginRight: 10,\n paddingTop: 3,\n paddingBottom: 3,\n paddingLeft: 10,\n paddingRight: 10,\n background: \"#ffffff\",\n border: \"1px solid #00b3cf;\",\n borderRadius: 3,\n cursor: \"pointer\",\n },\n debugInfo: {\n display: 'block',\n fontWeight: 'bold',\n color: '#FF0000',\n fontSize: 12\n }\n}));\n\nconst mutationAddElasticBuildingApplicationsNewStatus = `\n mutation ($Amount: Int) {\n debugAddElasticBuildingApplicationsNewStatus(\n Amount: $Amount\n ){\n Success\n }\n }\n`;\n\nconst mutationReindexElasticIndividualIndicesOfCompany = `\n mutation {\n debugReindexElasticIndividualIndicesOfCompany {\n Success\n }\n }\n`;\n\n/**\n * DebugProjects\n *\n * @returns {*}\n * @constructor\n */\nconst DebugProjects = () => {\n const classes = useStyles();\n\n const [masqueradeId, setMasqueradeId] = useState(\"\");\n const [amount, setAmount] = useState(false);\n const [isMutating, setIsMutating] = useState(false);\n\n const [\n handleMutationAddElasticBuildingApplicationsNewStatus,\n executeMutationAddElasticBuildingApplicationsNewStatus,\n ] = useMutation(mutationAddElasticBuildingApplicationsNewStatus);\n\n const [\n handleMutationReindexElasticIndividualIndicesOfCompany,\n executeMutationReindexElasticIndividualIndicesOfCompany,\n ] = useMutation(mutationReindexElasticIndividualIndicesOfCompany);\n\n useEffect(() => {\n setIsMutating(\n (handleMutationAddElasticBuildingApplicationsNewStatus.fetching ||\n handleMutationReindexElasticIndividualIndicesOfCompany.fetching) ??\n false\n );\n }, [\n handleMutationAddElasticBuildingApplicationsNewStatus,\n handleMutationReindexElasticIndividualIndicesOfCompany,\n ]);\n\n useEffect(() => {\n if (Number.isInteger(amount)) {\n executeMutationAddElasticBuildingApplicationsNewStatus({\n Amount: amount,\n }).then(() => {\n window.location.reload();\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [amount]);\n\n const handleReindex = () => {\n executeMutationReindexElasticIndividualIndicesOfCompany().then(() => {\n window.location.reload();\n });\n };\n\n const handleMasquerade = () => {\n if (parseInt(masqueradeId) !== '' && parseInt(masqueradeId) !== 0) {\n const cookies = new Cookies();\n\n const cookieLifetimeDate = new Date();\n cookieLifetimeDate.setDate(\n cookieLifetimeDate.getDate() + 1\n );\n\n cookies.set(MASQ_COOKIE_NAME, masqueradeId, {\n path: \"/\",\n domain: cookieDomain,\n expires: cookieLifetimeDate,\n SameSite: true,\n });\n\n User.deleteLocalStorage()\n window.location.reload();\n }\n }\n\n return (!User.isMasquerade() && (isNotLive || User.isAppAdmin())) ? (\n
\n \n \n Debugging-Tools (Projects-Page){\" \"}\n \n \n
\n \n Set new/unread amount:{\" \"}\n \n {!isMutating && (\n
\n setAmount(0)}>\n {\"None\"}\n \n setAmount(100)}\n >\n {\"Tiny\"}\n \n setAmount(200)}\n >\n {\"Small\"}\n \n setAmount(400)}\n >\n {\"Some\"}\n \n setAmount(800)}\n >\n {\"Many\"}\n \n setAmount(1600)}\n >\n {\"Huge\"}\n \n setAmount(3200)}\n >\n {\"Bulk\"}\n \n setAmount(6400)}\n >\n {\"Collosal\"}\n \n setAmount(12800)}\n >\n {\"Gigantic\"}\n \n setAmount(25600)}\n >\n {\"Titanic\"}\n \n setAmount(51200)}\n >\n {\"Galactic\"}\n \n setAmount(999999)}\n >\n {\"All\"}\n \n
\n )}\n {isMutating && (\n
\n \n
\n )}\n
\n
\n \n Re-Index IDX1 to IDX2 for all users of this company:{\" \"}\n \n {!isMutating && (\n
\n handleReindex()}>\n {\"Start Re-Index\"}\n \n (ATTENTION: This may take some time, be patient!)\n
\n )}\n {isMutating && (\n
\n \n
\n )}\n
\n
\n \n Masquerade as another user:{\" \"}\n \n
\n setMasqueradeId(e.target.value)}\n placeholder=\"UserID\"\n />\n  \n handleMasquerade()}>\n {\"Masquerade now\"}\n \n
\n
\n
\n
\n ) : null;\n};\n\nexport default withAccessControl(DebugProjects, ACL_COMPONENTS.PROJECTS);\n","import React, { useContext, useState, useEffect, useRef } from \"react\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport { useMutation, useQuery } from \"urql\";\nimport Table from \"@material-ui/core/Table\";\nimport TableBody from \"@material-ui/core/TableBody\";\nimport TableCell from \"@material-ui/core/TableCell\";\nimport TableHead from \"@material-ui/core/TableHead\";\nimport TableFooter from \"@material-ui/core/TableFooter\";\nimport TablePagination from \"@material-ui/core/TablePagination\";\nimport TableRow from \"@material-ui/core/TableRow\";\nimport Paper from \"@material-ui/core/Paper\";\nimport LinearProgress from \"@material-ui/core/LinearProgress\";\nimport TablePaginationActions from \"../components/Table/TablePaginationActions\";\nimport ProjectsTableRow from \"../components/Projects/ProjectsTableRow\";\nimport GlobalContext from \"../lib/GlobalContext\";\nimport ProjectsLocationsHandler, {\n parseConstructionSumList,\n} from \"../components/Projects/ProjectsLocationsHandler\";\nimport { useTranslation } from \"react-i18next\";\nimport LocationTabs from \"../components/LocationTabs\";\nimport withAccessControl from \"../components/HOC/AccessControl\";\nimport { MESSAGE_TYPES } from \"../components/PopupMessages\";\nimport { navigate } from \"hookrouter\";\nimport { ACL_COMPONENTS, isNotLive } from \"../config\";\nimport Tooltip from \"@material-ui/core/Tooltip\";\nimport clsx from \"clsx\";\nimport { Chip, Grid } from \"@material-ui/core\";\nimport DoneIcon from \"@material-ui/icons/Done\";\nimport BuildingApplicationTypeTabs, {\n BUILDING_APPLICATION_TYPE,\n} from \"../components/BuildingApplicationTypeTabs\";\nimport GetSafe from \"../lib/GetSafe\";\nimport DebugProjects from \"../components/Debug/DebugProjects\";\nimport User from \"../lib/User\";\n\nlet keyIndex = 0;\nlet currentPageRowsDataChunkCache = [];\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n flexGrow: 1,\n width: \"100%\",\n maxWidth: 1280,\n },\n table: {\n minWidth: \"100%\",\n },\n tableWrapper: {\n overflowX: \"auto\",\n },\n tableHead: {\n width: \"100%\",\n height: 64,\n background: \"#F7F9FA\",\n },\n tableCellHeader: {\n position: \"relative\",\n height: 64,\n fontWeight: \"bold\",\n },\n tableCellHeaderInner: {\n display: \"flex\",\n maxWidth: 1280,\n },\n tableColumnsHead: {\n height: 96,\n },\n tableCellColumnsHeader: {\n padding: \"40px 14px 16px 14px\",\n fontSize: theme.typography.fontSize,\n color: \"#999999\",\n fontWeight: \"bold\",\n \"&:first-of-type\": {\n paddingLeft: 24,\n },\n \"@media (max-width:640px)\": {\n \"&:first-of-type\": {\n paddingLeft: 14,\n },\n },\n },\n tableCellColumnsBody: {\n padding: \"20px 14px\",\n },\n tableCell: {\n height: 64,\n },\n tableRows: {\n paddingLeft: 36,\n },\n locationHead: {\n fontWeight: \"bold\",\n },\n locationHandler: {\n width: \"auto\",\n whiteSpace: \"nowrap\",\n zIndex: \"2\",\n },\n icon: {\n padding: 8,\n },\n listContent: {\n paddingLeft: 36,\n },\n paginationInput: {\n height: 28,\n width: 25,\n },\n paginationSelectIcon: {\n color: theme.palette.primary.main,\n },\n dashed: {\n borderBottom: \"1px dashed #999999\",\n },\n searchFilterGroup: {\n justifyContent: \"flex-end\",\n [theme.breakpoints.down(\"xs\")]: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"flex-start\",\n width: \"auto\",\n maxWidth: 200,\n },\n },\n searchFilterItem: {\n [theme.breakpoints.down(\"xs\")]: {\n display: \"flex\",\n flexDirection: \"column\",\n flexWrap: \"wrap\",\n },\n \"@media (max-width:810px)\": {\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(1),\n },\n },\n searchFilterButtonGroup: {\n display: \"inline-block\",\n marginRight: theme.spacing(1),\n marginLeft: theme.spacing(3),\n [theme.breakpoints.down(\"xs\")]: {\n marginLeft: theme.spacing(1),\n },\n },\n searchFilterButton: {\n marginRight: 4,\n marginLeft: 4,\n fontSize: 14,\n fontWeight: \"normal\",\n [theme.breakpoints.down(\"xs\")]: {\n marginTop: 4,\n marginBottom: 4,\n },\n \"&.MuiChip-colorPrimary\": {\n color: \"#fff\",\n },\n \"&.active\": {\n background: theme.palette.primary.main,\n color: \"#fff\",\n },\n },\n}));\n\nconst queryProjects = `\n query ReadElasticProjects (\n $locationID: ID,\n $isMainLocation: Boolean,\n $radius: Int,\n $lat: Float,\n $long: Float,\n $limit: Int,\n $offset: Int,\n $filterFor: [String],\n $types: [String],\n $constructionSums: [String]\n ) {\n readElasticProjects (\n IsMainLocation: $isMainLocation,\n sortBy: [{field: Date, direction: DESC}, {field: Sc_score, direction: DESC}, {field: Calculated_distance, direction: ASC}],\n Filter: {LocationID: $locationID, Radius: $radius, Lat: $lat, Long: $long, Types: $types},\n limit: $limit,\n offset: $offset,\n ConstructionTypeContains: $filterFor\n ConstructionSums: $constructionSums\n ){\n HashID\n Final_title\n Notice_number\n Type\n Date\n Canton\n Content\n Calculated_distance\n Distance_calculated_from\n Read\n Approval_date\n Construction_sum\n Construction_site {\n Address {\n Street\n Number\n Zip\n City\n Geo {\n lat\n lon\n }\n }\n }\n Building_owner {\n Name\n Address {\n Street\n Number\n Zip\n City\n Geo {\n lat\n lon\n }\n }\n }\n Project_management {\n Name\n Phone\n Email\n Website\n Email_other\n Address {\n Street\n Number\n Zip\n City\n Geo {\n lat\n lon\n }\n }\n }\n }\n }\n`;\n\nconst queryZipSearchAreas = `\n query ReadElasticProjectsByZipSearchArea (\n $searchArea: String,\n $filterFor: [String],\n $types: [String],\n $limit: Int,\n $offset: Int\n ) {\n readElasticProjectsByZipSearchArea(\n Filter: {\n CompanySearchAreaID: $searchArea,\n Types: $types\n },\n ConstructionTypeContains: $filterFor,\n sortBy: [\n {\n field: Date,\n direction: DESC\n }\n ],\n limit: $limit,\n offset: $offset\n )\n {\n HashID\n Final_title\n Import_date\n Canton\n Calculated_distance\n Calculated_duration\n Distance_calculated_from\n Date\n Content\n Read\n Approval_date\n Construction_sum\n Construction_site {\n Address {\n City\n Street\n Number\n Zip\n City\n Geo {\n lat\n lon\n }\n }\n }\n Building_owner {\n Name\n Address {\n City\n Street\n Number\n Zip\n City\n Geo {\n lat\n lon\n }\n }\n }\n Project_management {\n Name\n Phone\n Email\n Website\n Email_other\n Address {\n City\n Street\n Number\n Zip\n City\n Geo {\n lat\n lon\n }\n }\n }\n }\n}\n`;\n\nconst queryFavorites = `\n query ReadFavorites (\n $userHashID: ID\n ) {\n readFavorites(ID: $userHashID) {\n HashID\n ProjectHashID\n Removed\n }\n }\n`;\n\nconst mutationUpdateElasticBuildingApplicationsNewStatus = `\n mutation (\n $Locations: [InputElasticNewBuildingApplicationLocation]!,\n $LocationHashIDsToMarkAsRead: [String],\n $ProjectIDsToMarkAsRead: [String]\n ) {\n updateElasticBuildingApplicationsNewStatus(\n Locations: $Locations,\n LocationHashIDsToMarkAsRead: $LocationHashIDsToMarkAsRead,\n ProjectIDsToMarkAsRead: $ProjectIDsToMarkAsRead\n ) {\n NewCountPerLocation {\n HashID\n NewCount\n NewCountBaugesuch\n NewCountBaupublikation\n NewCountSubmission\n NewCountBaugesuche\n }\n Projects {\n HashID\n Read\n }\n }\n }\n`;\n\nconst mutationUpdateSearchAreaBuildingApplicationsNewStatus = `\n mutation (\n $SearchAreaHashIDs: [String]!,\n $SearchAreaHashIDsToMarkAsRead: [String],\n $ProjectIDsToMarkAsRead: [String]\n ) {\n updateSearchAreaBuildingApplicationsNewStatus(\n SearchAreaHashIDs: $SearchAreaHashIDs,\n SearchAreaHashIDsToMarkAsRead: $SearchAreaHashIDsToMarkAsRead,\n ProjectIDsToMarkAsRead: $ProjectIDsToMarkAsRead\n ) {\n NewCountPerSearchArea {\n HashID\n NewCount\n NewCountBaugesuch\n NewCountBaupublikation\n NewCountSubmission\n NewCountBaugesuche\n }\n Projects {\n HashID\n Read\n }\n }\n }\n`;\n\n/**\n * Projects\n *\n * @returns {*}\n * @constructor\n */\nconst Projects = () => {\n let shownProjects = [];\n const classes = useStyles();\n const {\n projectData,\n setProjectData,\n token,\n setToken,\n user,\n selectedLocationTabValue,\n setVisibleProjects,\n visibleProjects,\n setMessage,\n unsetUser,\n unsetToken,\n setSelectedLocationTabValue,\n selectedBuildingApplicationTypeTabValue,\n setSelectedBuildingApplicationTypeTabValue,\n debugToolsEnabled,\n } = useContext(GlobalContext);\n const { t } = useTranslation();\n const [page, setPage] = useState(0);\n const [rowsPerPage, setRowsPerPage] = useState(10);\n const [queryVariables, setQueryVariables] = useState({});\n const [localSelectedLocationTabValue, setLocalSelectedLocationTabValue] =\n useState(user.getData().company.hashID);\n const [showNoResultMessage, setShowNoResultMessage] = useState(false);\n const [changeType, setChangeType] = useState(CHANGE_TYPES.INIT);\n const [querySearchFilter, setQuerySearchFilter] = useState([]);\n const [hasNewApplications, setHasNewApplications] = useState(false);\n const [hasNewSubmissions, setHasNewSubmissions] = useState(false);\n\n // GraphQL query for projects, gets triggered by calling \"executeProjectsQuery()\"\n const [queryElasticProjectsResult] = useQuery({\n query: user.hasZipSearchAreas() ? queryZipSearchAreas : queryProjects,\n variables: queryVariables,\n });\n\n // GraphQL query for favorites, gets triggered by calling \"executeFavoritesQuery()\"\n const [favoritesResult, executeFavoritesQuery] = useQuery({\n query: queryFavorites,\n variables: user.getData().hashID,\n pause: true,\n });\n\n const [, executeMutationUpdateElasticBuildingApplicationsNewStatus] =\n useMutation(mutationUpdateElasticBuildingApplicationsNewStatus);\n\n const [, executemutationUpdateSearchAreaBuildingApplicationsNewStatus] =\n useMutation(mutationUpdateSearchAreaBuildingApplicationsNewStatus);\n\n const emptyShownProjects = () => {\n shownProjects = [];\n };\n\n const prevQuerySearchFilter = useRef(querySearchFilter);\n\n /* eslint-disable */\n useEffect(() => {\n if (prevQuerySearchFilter.current !== querySearchFilter) {\n const queryVariablesHandler = () => {\n setPage(0);\n setVisibleProjects([]);\n emptyShownProjects();\n setQueryVariables({ ...queryVariables, filterFor: querySearchFilter });\n prevQuerySearchFilter.current = querySearchFilter;\n };\n\n if (!querySearchFilter.includes(\"unread\")) {\n markVisibleProjectsRead(queryVariablesHandler);\n } else {\n queryVariablesHandler();\n }\n }\n }, [querySearchFilter]);\n\n /**\n * setup building application switch and query variables useEffect\n */\n useEffect(() => {\n if (\n selectedBuildingApplicationTypeTabValue ===\n BUILDING_APPLICATION_TYPE.SUBMISSION\n ) {\n setQueryVariables({\n ...queryVariables,\n types: [BUILDING_APPLICATION_TYPE.SUBMISSION],\n });\n } else {\n setQueryVariables({\n ...queryVariables,\n types: [\n BUILDING_APPLICATION_TYPE.PROJECT,\n BUILDING_APPLICATION_TYPE.PUBLICATION,\n ],\n });\n }\n }, [selectedBuildingApplicationTypeTabValue]);\n\n /**\n * Handle tab and pagination changes\n */\n useEffect(() => {\n if (selectedLocationTabValue) {\n if (selectedLocationTabValue !== localSelectedLocationTabValue) {\n setPage(0);\n }\n\n setLocalSelectedLocationTabValue(selectedLocationTabValue);\n\n let currentApplicationTabValue = selectedBuildingApplicationTypeTabValue;\n if (currentApplicationTabValue === BUILDING_APPLICATION_TYPE.PROJECT) {\n currentApplicationTabValue = [\n BUILDING_APPLICATION_TYPE.PROJECT,\n BUILDING_APPLICATION_TYPE.PUBLICATION,\n ];\n }\n\n let lat = user.getData().company.latitude;\n let long = user.getData().company.longitude;\n let radius = user.getData().company.distance;\n let constructionSums = [];\n\n const limit = rowsPerPage * 4;\n const offset = rowsPerPage * (page % 3 == 0 ? page : page - (page % 3));\n\n if (selectedLocationTabValue === user.getData().company.hashID) {\n setQueryVariables({\n locationID: user.getData().company.hashID,\n isMainLocation: true,\n radius: radius,\n lat: lat,\n long: long,\n limit: limit,\n offset: offset,\n filterFor: querySearchFilter,\n types: currentApplicationTabValue,\n searchArea: user.hasZipSearchAreas()\n ? selectedLocationTabValue\n : null,\n constructionSums: parseConstructionSumList(\n GetSafe(() => user.getData().company.constructionSums.edges, [])\n ),\n });\n } else {\n user.getData().locations.map((item) => {\n if (item.HashID === selectedLocationTabValue) {\n radius = item.Radius;\n lat = item.Latitude;\n long = item.Longitude;\n constructionSums = item?.ConstructionSums;\n }\n return item;\n });\n\n setQueryVariables({\n locationID: user.getData().company.hashID,\n radius: radius,\n lat: lat,\n long: long,\n limit: limit,\n offset: offset,\n filterFor: querySearchFilter,\n types: currentApplicationTabValue,\n searchArea: user.hasZipSearchAreas()\n ? selectedLocationTabValue\n : null,\n constructionSums: constructionSums,\n });\n }\n }\n }, [\n selectedLocationTabValue,\n user,\n rowsPerPage,\n page,\n localSelectedLocationTabValue,\n ]);\n /* eslint-enable */\n\n useEffect(() => {\n if (page % 3 === 0 && Object.keys(queryVariables).length !== 0) {\n executeFavoritesQuery();\n }\n }, [executeFavoritesQuery, queryVariables, setToken, token.api, page]);\n\n /**\n * setVisibleProjects useEffect\n */\n useEffect(() => {\n if (shownProjects.length && !visibleProjects.length) {\n setVisibleProjects(shownProjects);\n }\n }, [setVisibleProjects, shownProjects, visibleProjects]);\n\n /**\n * Mark all projects within shownProjects read that are currently not marked read\n */\n const markVisibleProjectsRead = (callback = null) => {\n const currentPageRowsDataChunk = getProjectRowsChunkForCurrentPage();\n\n if (currentPageRowsDataChunk.length > 0) {\n const toMarkRead = [];\n\n const userHashID = user.getData().hashID;\n const userCompanyHashID = user.getData().company.hashID;\n\n const indexCurrentPageRowsDataChunk = currentPageRowsDataChunk.reduce(\n (prev, curr) => `${prev}${curr.HashID}`,\n \"\"\n );\n const indexCurrentPageRowsDataChunkCache =\n currentPageRowsDataChunkCache.reduce(\n (prev, curr) => `${prev}${curr.HashID}`,\n \"\"\n );\n\n currentPageRowsDataChunkCache = currentPageRowsDataChunk;\n\n if (\n indexCurrentPageRowsDataChunk !== indexCurrentPageRowsDataChunkCache\n ) {\n currentPageRowsDataChunk.forEach((currentPageProject) => {\n if (!currentPageProject.Read) {\n toMarkRead.push(\n `${userCompanyHashID}-${userHashID}-${currentPageProject.HashID}`\n );\n }\n });\n\n if (toMarkRead.length) {\n const locations = [];\n\n if (!user.hasZipSearchAreas()) {\n locations.push({\n IsCompanyLocation: true,\n HashID: user.getData().company.hashID,\n Radius: user.getData().company.distance,\n Lat: user.getData().company.latitude,\n Lon: user.getData().company.longitude,\n ConstructionSums: parseConstructionSumList(\n GetSafe(() => user.getData().company.constructionSums.edges, [])\n ),\n });\n\n user.getData().locations.map((item) => {\n locations.push({\n IsCompanyLocation: false,\n HashID: item.HashID,\n Radius: item.Radius,\n Lat: item.Latitude,\n Lon: item.Longitude,\n ConstructionSums: item?.ConstructionSums,\n });\n return true;\n });\n\n // Mark applications as read\n executeMutationUpdateElasticBuildingApplicationsNewStatus({\n Locations: locations,\n ProjectIDsToMarkAsRead: toMarkRead,\n }).then(() => {\n if (callback) {\n callback();\n }\n });\n } else {\n const searchAreaHashIDs = [];\n\n user.getData().searchAreas.map((item) => {\n searchAreaHashIDs.push(item.HashID);\n return true;\n });\n\n // Mark applications as read based on zip search-areas\n executemutationUpdateSearchAreaBuildingApplicationsNewStatus({\n SearchAreaHashIDs: searchAreaHashIDs,\n ProjectIDsToMarkAsRead: toMarkRead,\n }).then(() => {\n if (callback) {\n callback();\n }\n });\n }\n } else {\n if (callback) {\n callback();\n }\n }\n } else {\n if (callback) {\n callback();\n }\n }\n } else {\n if (callback) {\n callback();\n }\n }\n };\n\n /**\n * table column heads\n */\n const columns = [\n { id: \"actions\", label: t(\"general.label.actions\"), minWidth: 200 },\n {\n id: \"projects\",\n label: t(\"general.label.projects\"),\n minWidth: 100,\n fontSize: 16,\n },\n {\n id: \"city\",\n label: t(\"general.label.address\"),\n minWidth: 120,\n align: \"left\",\n },\n !user.hasZipSearchAreas()\n ? {\n id: \"route\",\n label: t(\"general.label.distance\"),\n minWidth: 120,\n align: \"left\",\n }\n : {},\n {\n id: \"date\",\n label: t(\"general.label.date\"),\n minWidth: 120,\n align: \"left\",\n },\n ];\n\n // Unmount effect\n useEffect(\n () => () => {\n markVisibleProjectsRead();\n setSelectedLocationTabValue(false)\n setSelectedBuildingApplicationTypeTabValue(false)\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []\n );\n\n useEffect(() => {\n // Handling project data coming in via graphql\n if (!queryElasticProjectsResult.fetching) {\n if (queryElasticProjectsResult.error) {\n // Check if the user need to be logged out\n if (\n queryElasticProjectsResult.error.message.indexOf(\n \"User forced logout\"\n ) !== -1\n ) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.user.forced.logout\"));\n unsetUser();\n unsetToken();\n navigate(\"/\");\n } else {\n // The query did not return any results!\n if (!showNoResultMessage) {\n setShowNoResultMessage(true);\n }\n }\n } else {\n if (\n typeof queryElasticProjectsResult.data !== \"undefined\" &&\n (typeof queryElasticProjectsResult.data.readElasticProjects !==\n \"undefined\" ||\n typeof queryElasticProjectsResult.data\n .readElasticProjectsByZipSearchArea !== \"undefined\")\n ) {\n // Add the projects to the global context, either we have project results within the readElasticProjects or readElasticProjectsByZipSearchArea property\n const actualResult =\n typeof queryElasticProjectsResult.data.readElasticProjects !==\n \"undefined\"\n ? queryElasticProjectsResult.data.readElasticProjects\n : queryElasticProjectsResult.data\n .readElasticProjectsByZipSearchArea;\n\n if (changeType === CHANGE_TYPES.PAGE) {\n // Prevent duplicates by taking previous data into account\n setProjectData((prev) => {\n const updatedProjectData = prev.map((project) => {\n const existingProject = actualResult.find(\n (newProject) => newProject.HashID === project.HashID\n );\n return existingProject ?? project;\n });\n\n const filteredNewProjects = actualResult.filter((project) => {\n return (\n updatedProjectData.findIndex(\n (updatedProject) => updatedProject.HashID === project.HashID\n ) < 0\n );\n });\n\n return [...updatedProjectData, ...filteredNewProjects];\n });\n } else {\n setProjectData(actualResult);\n }\n\n setShowNoResultMessage(false);\n }\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n queryElasticProjectsResult,\n changeType,\n user,\n token,\n showNoResultMessage,\n ]);\n\n const handleChangePage = (event, newPage) => {\n markVisibleProjectsRead();\n\n if (shownProjects.length) {\n setVisibleProjects(shownProjects);\n shownProjects = [];\n }\n\n setChangeType(CHANGE_TYPES.PAGE);\n window.scrollTo(0, 0);\n setPage(newPage);\n };\n\n /**\n * handleChangeRowsPerPage\n *\n * @param event\n */\n const handleChangeRowsPerPage = (event) => {\n markVisibleProjectsRead();\n\n setChangeType(CHANGE_TYPES.PAGE);\n setRowsPerPage(parseInt(event.target.value, 10));\n\n // Reset the current project-page data\n shownProjects = [];\n setPage(0);\n setProjectData([]);\n setChangeType(CHANGE_TYPES.TAB);\n setVisibleProjects([]);\n emptyShownProjects();\n setQueryVariables({ ...queryVariables, filterFor: querySearchFilter });\n };\n\n /**\n * handleTabChange\n *\n * @param event\n * @param newValue\n */\n const handleTabChange = (event, newValue) => {\n if (selectedLocationTabValue !== newValue) {\n markVisibleProjectsRead();\n\n setSelectedLocationTabValue(newValue);\n setChangeType(CHANGE_TYPES.TAB);\n\n // Reset the current project-page data\n shownProjects = [];\n setPage(0);\n setProjectData([]);\n setChangeType(CHANGE_TYPES.TAB);\n setVisibleProjects([]);\n emptyShownProjects();\n setQueryVariables({ ...queryVariables, filterFor: querySearchFilter });\n }\n };\n\n const handleApplicationTypeTabChange = (event, newValue) => {\n markVisibleProjectsRead();\n\n if (newValue === null) {\n newValue = selectedBuildingApplicationTypeTabValue;\n }\n\n if (selectedBuildingApplicationTypeTabValue !== newValue) {\n setSelectedBuildingApplicationTypeTabValue(newValue);\n setChangeType(CHANGE_TYPES.TAB);\n\n // Reset the current project-page data\n shownProjects = [];\n setPage(0);\n setProjectData([]);\n setChangeType(CHANGE_TYPES.TAB);\n setVisibleProjects([]);\n emptyShownProjects();\n setQueryVariables({ ...queryVariables, filterFor: querySearchFilter });\n }\n };\n\n const addRowToVisibleProjects = (project) => {\n if (project.Read === null) {\n shownProjects.push(project);\n }\n };\n\n const toggleQuerySearchFilterValue = (filterValue) => {\n let newQuerySearchFilter = [];\n const currentQuerySearchFilter = [];\n\n for (let index = 0; index < querySearchFilter.length; index++) {\n currentQuerySearchFilter.push(querySearchFilter[index]);\n }\n\n if (currentQuerySearchFilter.includes(filterValue)) {\n newQuerySearchFilter = currentQuerySearchFilter.filter(\n (element) => element !== filterValue\n );\n } else {\n currentQuerySearchFilter.push(filterValue);\n newQuerySearchFilter = currentQuerySearchFilter;\n }\n\n setQuerySearchFilter(newQuerySearchFilter);\n };\n\n const getProjectRowsChunkForCurrentPage = () => {\n if (!projectData) {\n return [];\n }\n\n return projectData.slice(\n page * rowsPerPage,\n page * rowsPerPage + rowsPerPage\n );\n };\n\n const getRenderedProjectRowsChunkForCurrentPage = () => {\n const projectRows = [];\n const slicedProjectData = getProjectRowsChunkForCurrentPage();\n\n slicedProjectData.map((projectRowData) => {\n addRowToVisibleProjects(projectRowData);\n const favoritesData = favoritesResult.data\n ? favoritesResult.data.readFavorites\n : null;\n\n projectRows.push(\n \n );\n\n return true;\n });\n\n return projectRows;\n };\n\n return (\n \n
\n \n \n \n \n
\n \n {!user.hasZipSearchAreas() && (\n
\n \n
\n )}\n
\n \n
\n \n \n \n \n \n \n \n \n Filter:\n \n \n ) : null\n }\n className={classes.searchFilterButton}\n onClick={(event) => {\n toggleQuerySearchFilterValue(\"unread\");\n }}\n />\n : null\n }\n className={classes.searchFilterButton}\n onClick={(event) => {\n toggleQuerySearchFilterValue(\"new\");\n }}\n />\n \n ) : null\n }\n className={classes.searchFilterButton}\n onClick={(event) => {\n toggleQuerySearchFilterValue(\"modification\");\n }}\n />\n \n ) : null\n }\n className={classes.searchFilterButton}\n onClick={(event) => {\n toggleQuerySearchFilterValue(\"demolition\");\n }}\n />\n \n \n \n \n \n {columns.map((column) => {\n if (column.id === \"route\") {\n return (\n \n \n {column.label}\n \n \n );\n }\n return (\n \n {column.label}\n \n );\n })}\n \n
\n \n {!queryElasticProjectsResult.fetching && showNoResultMessage && (\n \n \n {t(\"general.label.no.projects\")}\n \n \n )}\n {queryElasticProjectsResult.fetching && (\n \n \n \n \n \n \n \n )}\n {!queryElasticProjectsResult.fetching &&\n !showNoResultMessage &&\n projectData && projectData.length !== 0 &&\n getRenderedProjectRowsChunkForCurrentPage()}\n \n \n \n <>,\n }}\n labelDisplayedRows={({ from, to, count }) => {\n return `${from} - ${to === -1 ? count : to}`;\n }}\n labelRowsPerPage={\n <>\n {rowsPerPage} {t(\"general.label.rows\")}\n \n }\n classes={{\n input: classes.paginationInput,\n selectIcon: classes.paginationSelectIcon,\n }}\n onChangePage={handleChangePage}\n onChangeRowsPerPage={handleChangeRowsPerPage}\n ActionsComponent={TablePaginationActions}\n />\n \n \n
\n
\n {(!User.isMasquerade() && (isNotLive || User.isAppAdmin())) && debugToolsEnabled && }\n
\n );\n};\n\nexport const CHANGE_TYPES = {\n INIT: \"init\",\n PAGE: \"page\",\n TAB: \"tab\",\n};\n\nexport default withAccessControl(\n Projects,\n ACL_COMPONENTS.PROJECTS,\n \"projects-free\"\n);\n","import React, { useState, useContext, useEffect } from \"react\";\nimport clsx from \"clsx\";\nimport Menu from \"@material-ui/core/Menu\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport TableCell from \"@material-ui/core/TableCell\";\nimport TableRow from \"@material-ui/core/TableRow\";\nimport ExpandLess from \"@material-ui/icons/ExpandLess\";\nimport ExpandMore from \"@material-ui/icons/ExpandMore\";\nimport StarBorder from \"@material-ui/icons/StarBorder\";\nimport Star from \"@material-ui/icons/Star\";\nimport MoreHoriz from \"@material-ui/icons/MoreHoriz\";\nimport Info from \"@material-ui/icons/Info\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport { useTranslation } from \"react-i18next\";\nimport Tooltip from \"@material-ui/core/Tooltip\";\nimport GlobalContext from \"../../lib/GlobalContext\";\nimport { MESSAGE_TYPES } from \"../PopupMessages\";\nimport GoogleMapComponent from \"../../lib/GoogleMapComponent\";\nimport withAccessControl from \"../HOC/AccessControl\";\nimport GetSafe from \"../../lib/GetSafe\";\nimport FormatHelper from \"../../lib/FormatHelper\";\nimport PHE from \"print-html-element\";\nimport { renderToString } from \"react-dom/server\";\nimport { Table, TableBody, TableHead } from \"@material-ui/core\";\nimport { useMutation } from \"urql\";\nimport LinearProgress from \"@material-ui/core/LinearProgress\";\nimport { A, navigate } from \"hookrouter\";\nimport Typography from \"@material-ui/core/Typography\";\nimport { ACL_COMPONENTS, DEFAULT_LOGO_PATH } from \"../../config\";\nimport Grid from \"@material-ui/core/Grid\";\nimport ExternalErrorLogger from \"@ennit/react-external-errorlogger\";\nimport { BUILDING_APPLICATION_TYPE } from \"../BuildingApplicationTypeTabs\";\nimport CardMembershipIcon from \"@material-ui/icons/CardMembership\";\n\nconst useStyles = makeStyles((theme) => ({\n airDistance: {\n // backgroundColor: '#e3e3e3',\n padding: 5,\n },\n icon: {\n padding: 8,\n fontSize: 25,\n },\n tableCellColumnsbody: {\n width: \"calc(100% * 1 / 5)\",\n minWidth: 185,\n padding: 14,\n // '&:nth-child(1)': {\n // minWidth: 215\n // },\n \"&:nth-child(2)\": {\n minWidth: 520,\n },\n \"&:nth-child(3)\": {\n minWidth: 130,\n },\n \"@media (max-width:640px)\": {\n width: \"auto\",\n \"&:first-of-type\": {\n minWidth: \"auto\",\n },\n \"&:nth-child(2)\": {\n minWidth: 320,\n },\n },\n },\n toggleTableRow: {\n borderTop: \"2px solid #fff\",\n },\n toggleTableCell: {\n paddingTop: 0,\n verticalAlign: \"top\",\n },\n toggleTableCellMap: {\n paddingLeft: 205,\n \"@media (max-width:640px)\": {\n paddingLeft: 20,\n },\n },\n toggleTitle: {\n color: \"#999\",\n fontWeight: \"bold\",\n },\n newLabel: {\n color: \"#BD3A00\",\n fontWeight: \"bold\",\n },\n tooltipItem: {\n width: \"100%\",\n maxWidth: 350,\n borderRadius: 5,\n background: \"#006A7A\",\n fontSize: 16,\n textAlign: \"center\",\n \"& div\": {\n margin: 0,\n color: \"#fff\",\n },\n },\n tooltipInfo: {\n maxWidth: \"100%\",\n background: theme.palette.background.default,\n \"& div\": {\n maxWidth: \"100%\",\n color: theme.palette.text.primary,\n fontSize: 12,\n lineHeight: \"20px\",\n },\n \"@media (min-width:768px)\": {\n maxWidth: 450,\n },\n },\n tooltipTitle: {\n display: \"flex\",\n alignItems: \"center\",\n },\n pointer: {\n cursor: \"pointer\",\n },\n headerWrapper: {\n width: \"100%\",\n maxWidth: 1320,\n paddingRight: 20,\n paddingLeft: 20,\n backgroundColor: \"#4ab3cf\",\n \"-webkit-print-color-adjust\": \"exact\",\n },\n logo: {\n paddingLeft: 0,\n },\n submissionIcon: {\n paddingTop: 5,\n paddingRight: 4,\n position: \"relative\",\n top: 5,\n color: theme.palette.text.secondary,\n },\n}));\n\nconst createFavoriteMutation = `\n mutation CreateFavorite (\n $projectHashID: String\n ) {\n createFavorite (ProjectHashID: $projectHashID) {\n HashID\n ProjectHashID\n }\n }\n`;\n\nconst updateFavoriteMutation = `\n mutation UpdateFavorite (\n $hashID: String,\n $removed: Boolean\n ) {\n updateFavorite (HashID: $hashID, Removed: $removed) {\n HashID\n }\n }\n`;\n\n/**\n * ProjectsFreeTableRow\n *\n * @returns {*}\n * @constructor\n */\nconst ProjectsTableRow = (props) => {\n const classes = useStyles();\n const { t } = useTranslation();\n const {\n upgradeToPremiumOpen,\n setUpgradeToPremiumOpen,\n setMessage,\n token,\n unsetUser,\n unsetToken,\n setFavoriteData,\n user,\n } = useContext(GlobalContext);\n const { row } = props;\n const [open, setOpen] = useState(false);\n const [anchorEl, setAnchorEl] = useState(null);\n const [isFavorite, setIsFavorite] = useState(false);\n const [favoriteID, setFavoriteID] = useState(null);\n\n const [{ fetchingCreateFavorite }, executeCreateFavoriteMutation] =\n useMutation(createFavoriteMutation);\n const [{ fetchingUpdateFavorite }, executeUpdateFavoriteMutation] =\n useMutation(updateFavoriteMutation);\n\n /**\n * mark favorites useEffect\n */\n useEffect(() => {\n if (props.favorites !== null) {\n const result = props.favorites.filter((item) => {\n return item.ProjectHashID === row.HashID;\n });\n\n if (result.length) {\n setFavoriteID(result[0].HashID);\n if (!result[0].Removed) {\n setIsFavorite(true);\n }\n }\n }\n }, [props.favorites, setIsFavorite, row.HashID]);\n\n /**\n * open context menu\n *\n * @param event\n */\n const handleClick = (event) => {\n event.stopPropagation();\n setAnchorEl(event.currentTarget);\n };\n\n /**\n * close context menu\n */\n const handleClose = (event) => {\n event.stopPropagation();\n setAnchorEl(null);\n };\n\n /**\n * updateFavoriteExecution\n *\n * @param removed\n */\n const updateFavoriteExecution = (removed = true) => {\n executeUpdateFavoriteMutation({\n hashID: favoriteID,\n removed: removed,\n }).then((result) => {\n if (result.error) {\n // Check if the user need to be logged out\n if (result.error.message.indexOf(\"User forced logout\") !== -1) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.user.forced.logout\"));\n unsetUser();\n unsetToken();\n navigate(\"/\");\n } else {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.save\"));\n ExternalErrorLogger.log({\n text: \"Error update favorite on ProjectsSearchTableRow\",\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n errorMessage: result.error.message,\n },\n });\n }\n } else {\n setMessage(MESSAGE_TYPES.INFO, t(\"projects.favorites.updated\"));\n setIsFavorite(!removed);\n }\n });\n };\n\n /**\n * handleMakeFavorite\n */\n const handleMakeFavorite = (event) => {\n event.stopPropagation();\n setFavoriteData([]);\n executeCreateFavoriteMutation({\n projectHashID: row.HashID,\n }).then((result) => {\n if (result.error) {\n // Check if the user need to be logged out\n if (result.error.message.indexOf(\"User forced logout\") !== -1) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.user.forced.logout\"));\n unsetUser();\n unsetToken();\n navigate(\"/\");\n } else {\n if (result.error.message.includes(\"already exists\")) {\n updateFavoriteExecution(false);\n } else {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.save\"));\n ExternalErrorLogger.log({\n text: \"Error save new favorite on ProjectsSearchTableRow\",\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n errorMessage: result.error.message,\n },\n });\n }\n }\n } else {\n setMessage(MESSAGE_TYPES.INFO, t(\"projects.add.to.favorites\"));\n setIsFavorite(true);\n setFavoriteID(result.data.createFavorite[0].HashID);\n }\n });\n };\n\n /**\n * handleRemoveFavorite\n */\n const handleRemoveFavorite = (event) => {\n event.stopPropagation();\n setFavoriteData([]);\n updateFavoriteExecution(true);\n };\n\n /**\n * handlePrint\n */\n const handlePrint = (event) => {\n event.stopPropagation();\n PHE.printHtml(renderToString(renderPrintAndShare()));\n };\n\n /**\n * showDistance\n *\n * @returns {*}\n */\n const showDistance = () => {\n if (row.Distance_calculated_from === \"Air_distance\") {\n return (\n \n \n {GetSafe(\n () =>\n FormatHelper.formatDistance(row.Calculated_distance) + \" km\",\n \"\"\n )}\n \n \n );\n } else if (\n row.Distance_calculated_from === \"Travel_distance\" &&\n row.Calculated_distance === null\n ) {\n return (\n \n -\n \n );\n } else if (\n row.Distance_calculated_from !== \"Air_distance\" &&\n row.Calculated_distance !== null\n ) {\n return GetSafe(\n () => FormatHelper.formatDistance(row.Calculated_distance) + \" km\",\n \"\"\n );\n }\n };\n\n /**\n * renderApprovalDate\n *\n * @returns {false|JSX.Element}\n */\n const renderApprovalDate = () => {\n return (\n row.Approval_date !== undefined &&\n row.Approval_date !== \"\" &&\n row.Approval_date !== null && (\n

\n {user.isPro() && (\n \n \n {t(\"projects.label.expected.date\")}\n \n {row.Approval_date}\n \n )}\n {!user.isPro() && (\n \n \n {t(\"projects.label.expected.date\")}\n \n \n {t(\"projects.free.route.premium.pro\")}\n \n \n )}\n

\n )\n );\n };\n\n /**\n * renderConstructionSum\n *\n * @returns {false|JSX.Element}\n */\n const renderConstructionSum = () => {\n return (\n row.Construction_sum !== undefined &&\n row.Construction_sum !== \"\" &&\n row.Construction_sum !== null && (\n

\n {user.isPro() && (\n \n \n {t(\"projects.label.construction.sum\")}\n \n \n {row.Construction_sum}\n \n \n )}\n {!user.isPro() && (\n \n \n {t(\"projects.label.construction.sum\")}\n \n \n {t(\"projects.free.route.premium.pro\")}\n \n \n )}\n

\n )\n );\n };\n\n /**\n * handleUpgradeToPremium\n */\n const handleUpgradeToPremium = () => {\n setUpgradeToPremiumOpen(!upgradeToPremiumOpen);\n };\n\n /**\n * getDestinationCoordinates\n *\n * @returns {{lon: *, lat: *}}\n */\n const getDestinationCoordinates = () => {\n return {\n lat: GetSafe(() => parseFloat(row.Construction_site.Address.Geo.lat), 0),\n lon: GetSafe(() => parseFloat(row.Construction_site.Address.Geo.lon), 0),\n };\n };\n\n /**\n * handleOpenDetailsClick\n */\n const handleOpenDetailsClick = () => {\n setOpen(!open);\n };\n\n /**\n * isProcessable\n *\n * @param {*} value\n */\n const isProcessable = (value) => {\n return !(value === null || value === undefined);\n };\n\n /**\n * renderPrintAndShare\n **/\n const renderPrintAndShare = () => {\n return (\n \n \n \n \n \n \n \n \"logo\"\n \n \n \n \n \n \n \n \n {GetSafe(() => row.Final_title, \"\")}\n \n {GetSafe(() => row.Construction_site.Address.City, \"\")}{\" \"}\n {GetSafe(() => row.Construction_site.Address.Street, \"\")}{\" \"}\n {GetSafe(() => row.Construction_site.Address.Number, \"\")}\n \n \n {GetSafe(\n () =>\n FormatHelper.formatDistance(row.Calculated_distance) + \" km\",\n \"\"\n )}\n \n \n {GetSafe(() => FormatHelper.formatDate(row.Date), \"\")}\n \n \n \n {/* */}\n {/*

{t('projects.label.fastest.route')}

*/}\n {/* */}\n {/*
*/}\n \n

{t(\"projects.label.owner\")}

\n

\n {GetSafe(() => row.Building_owner.Name, \"\")}\n
\n {GetSafe(() => row.Building_owner.Address.Street, \"\")}{\" \"}\n {GetSafe(() => row.Building_owner.Address.Number, \"\")}\n
\n {GetSafe(() => row.Building_owner.Address.Zip, \"\")}{\" \"}\n {GetSafe(() => row.Building_owner.Address.City, \"\")}\n

\n
\n \n

\n {t(\"projects.label.architect\")}\n

\n

\n {GetSafe(() => row.Project_management.Name, \"\")}\n
\n {GetSafe(() => row.Project_management.Address.Street, \"\")}{\" \"}\n {GetSafe(() => row.Project_management.Address.Number, \"\")}\n
\n {GetSafe(() => row.Project_management.Address.Zip, \"\")}{\" \"}\n {GetSafe(() => row.Project_management.Address.City, \"\")}\n
\n {GetSafe(() => row.Project_management.Phone, \"\")}\n
\n {GetSafe(() => row.Project_management.Email, \"\")}\n

\n
\n
\n \n {row.Content}\n \n
\n
\n );\n };\n\n /**\n * render the detail view of a project\n */\n const projectDetails = () => {\n return (\n <>\n \n \n

\n {t(\"projects.label.fastest.route\")}\n

\n \n \n \n

{t(\"projects.label.owner\")}

\n

\n {GetSafe(() => row.Building_owner.Name, \"\")}\n
\n {GetSafe(() => row.Building_owner.Address.Street, \"\")}{\" \"}\n {GetSafe(() => row.Building_owner.Address.Number, \"\")}\n
\n {GetSafe(() => row.Building_owner.Address.Zip, \"\")}{\" \"}\n {GetSafe(() => row.Building_owner.Address.City, \"\")}\n

\n {renderApprovalDate()}\n {renderConstructionSum()}\n {/*

*/}\n {/* */}\n {/* Original Baugesuch */}\n {/*

*/}\n
\n \n

\n {t(\"projects.label.architect\")}\n

\n

\n {GetSafe(() => row.Project_management.Name, \"\")}\n
\n {GetSafe(() => row.Project_management.Address.Street, \"\")}{\" \"}\n {GetSafe(() => row.Project_management.Address.Number, \"\")}\n
\n {GetSafe(() => row.Project_management.Address.Zip, \"\")}{\" \"}\n {GetSafe(() => row.Project_management.Address.City, \"\")}\n
\n {isProcessable(\n GetSafe(() => row.Project_management.Phone, \"\")\n ) && (\n row.Project_management.Phone, \"\")\n }\n >\n {GetSafe(() => row.Project_management.Phone, \"\")}\n \n )}\n
\n {isProcessable(\n GetSafe(() => row.Project_management.Email, \"\")\n ) && (\n row.Project_management.Email, \"\")\n }\n >\n {GetSafe(() => row.Project_management.Email, \"\")}\n \n )}\n

\n
\n \n \n \n \n {row.Type === BUILDING_APPLICATION_TYPE.SUBMISSION ? (\n

\n \n {t(\"favorite.submission.id.label\")}\n \n
\n {row.Notice_number}\n

\n ) : null}\n {row.Type !== BUILDING_APPLICATION_TYPE.SUBMISSION ? (\n \n \n \n {t(\"projects.label.original.project\")}\n \n \n ) : null}\n
\n
\n \n );\n };\n\n /**\n * return\n */\n return (\n <>\n {(fetchingCreateFavorite || fetchingUpdateFavorite) && }\n \n \n setOpen(!open)}\n className={classes.icon}\n >\n {open ? (\n \n ) : (\n \n )}\n \n {isFavorite ? (\n \n \n \n ) : (\n \n \n \n \n \n )}\n \n \n \n \n {/* */}\n {/* {t('general.label.forward')} */}\n {/* */}\n \n {t(\"general.label.print\")}\n \n \n \n \n {row.Type === BUILDING_APPLICATION_TYPE.SUBMISSION ? (\n \n \n \n ) : null}\n {GetSafe(() => row.Final_title, \"\")}\n \n \n {GetSafe(() => row.Construction_site.Address.City, \"\")}{\" \"}\n {GetSafe(() => row.Construction_site.Address.Street, \"\")}{\" \"}\n {GetSafe(() => row.Construction_site.Address.Number, \"\")}\n \n \n {showDistance()}\n \n \n {row.Read !== null ? (\n GetSafe(() => FormatHelper.formatDate(row.Date), \"\")\n ) : (\n \n {t(\"general.label.new\")}\n \n )}\n \n \n {open ? projectDetails() : null}\n \n );\n};\n\nexport default withAccessControl(\n ProjectsTableRow,\n ACL_COMPONENTS.PROJECTS_TABLE_ROW\n);\n","import React, { useContext, useState, useEffect } from \"react\";\nimport clsx from \"clsx\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport { useQuery } from \"urql\";\nimport Table from \"@material-ui/core/Table\";\nimport TableBody from \"@material-ui/core/TableBody\";\nimport TableCell from \"@material-ui/core/TableCell\";\nimport TableHead from \"@material-ui/core/TableHead\";\nimport TableFooter from \"@material-ui/core/TableFooter\";\nimport TablePagination from \"@material-ui/core/TablePagination\";\nimport TableRow from \"@material-ui/core/TableRow\";\nimport Paper from \"@material-ui/core/Paper\";\nimport LinearProgress from \"@material-ui/core/LinearProgress\";\nimport TablePaginationActions from \"../components/Table/TablePaginationActions\";\nimport ProjectsSearchTableRow from \"../components/ProjectsSearch/ProjectsSearchTableRow\";\nimport GlobalContext from \"../lib/GlobalContext\";\nimport { useTranslation } from \"react-i18next\";\nimport withAccessControl from \"../components/HOC/AccessControl\";\nimport { MESSAGE_TYPES } from \"../components/PopupMessages\";\nimport { ACL_COMPONENTS } from \"../config\";\nimport Tooltip from \"@material-ui/core/Tooltip\";\nimport { navigate, usePath } from \"hookrouter\";\nimport CloseIcon from \"@material-ui/icons/Close\";\nimport Chip from \"@material-ui/core/Chip\";\nimport DoneIcon from \"@material-ui/icons/Done\";\nimport Grid from \"@material-ui/core/Grid\";\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n flexGrow: 1,\n width: \"100%\",\n maxWidth: 1280,\n },\n table: {\n minWidth: \"100%\",\n },\n tableWrapper: {\n borderRadius: 4,\n overflowX: \"auto\",\n },\n tableHead: {\n width: \"100%\",\n height: 64,\n background: \"#F7F9FA\",\n },\n tableCellHeader: {\n position: \"relative\",\n height: 64,\n fontWeight: \"bold\",\n [theme.breakpoints.down(\"sm\")]: {\n textAlign: \"left\",\n },\n },\n tableColumnsHead: {\n height: 96,\n },\n tableCellColumnsHeader: {\n padding: \"40px 14px 16px 14px\",\n fontSize: theme.typography.fontSize,\n color: \"#999999\",\n fontWeight: \"bold\",\n \"&:first-of-type\": {\n paddingLeft: 24,\n },\n \"@media (max-width:640px)\": {\n \"&:first-of-type\": {\n paddingLeft: 14,\n },\n },\n },\n tableCellColumnsBody: {\n padding: \"20px 14px\",\n },\n tableCell: {\n height: 64,\n },\n tableRows: {\n paddingLeft: 36,\n },\n locationHead: {\n fontWeight: \"bold\",\n },\n locationHandler: {\n position: \"absolute\",\n top: \"50%\",\n right: 10,\n width: 200,\n transform: \"translate(0, -50%)\",\n },\n icon: {\n padding: 8,\n },\n listContent: {\n paddingLeft: 36,\n },\n paginationInput: {\n height: 28,\n width: 25,\n },\n paginationSelectIcon: {\n color: theme.palette.primary.main,\n },\n dashed: {\n borderBottom: \"1px dashed #999999\",\n },\n tableHeadSearch: {\n background: theme.palette.primary.main,\n },\n tableCellHeaderSearch: {\n color: \"#fff\",\n borderBottom: \"1px solid #006a7a\",\n },\n tableHeadSearchBody: {\n background: \"#fff\",\n },\n iconCloseSearch: {\n borderRadius: \"50%\",\n background: \"#fff\",\n color: theme.palette.primary.main,\n fontSize: \"2rem\",\n },\n searchFilterGroup: {\n justifyContent: \"flex-end\",\n [theme.breakpoints.down(\"xs\")]: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"flex-start\",\n width: \"auto\",\n maxWidth: 200,\n },\n },\n searchFilterItem: {\n [theme.breakpoints.down(\"xs\")]: {\n display: \"flex\",\n flexDirection: \"column\",\n flexWrap: \"wrap\",\n },\n \"@media (max-width:810px)\": {\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(1),\n },\n },\n searchFilterButtonGroup: {\n display: \"inline-block\",\n marginRight: theme.spacing(1),\n marginLeft: theme.spacing(3),\n [theme.breakpoints.down(\"xs\")]: {\n marginLeft: theme.spacing(1),\n },\n },\n searchFilterButton: {\n marginRight: 4,\n marginLeft: 4,\n fontSize: 14,\n fontWeight: \"normal\",\n [theme.breakpoints.down(\"xs\")]: {\n marginTop: 4,\n marginBottom: 4,\n },\n \"&.MuiChip-colorPrimary\": {\n color: \"#fff\",\n },\n \"&.active\": {\n background: theme.palette.primary.main,\n color: \"#fff\",\n },\n },\n}));\n\nconst queryProjectsSearch = `\n query ReadSearchProjects (\n $lat: Float,\n $long: Float,\n $searchParameter: String,\n $filterFor: [String],\n $sortByFirstField: ReadSearchProjectsSortFieldType!,\n $sortByFirstDirection: SortDirection,\n $sortBySecondField: ReadSearchProjectsSortFieldType!,\n $sortBySecondDirection: SortDirection,\n $sortByThirdField: ReadSearchProjectsSortFieldType!,\n $sortByThirdDirection: SortDirection,\n $limit: Int,\n $offset: Int\n ) {\n readSearchProjects(\n lat: $lat,\n long: $long,\n QueryString: $searchParameter,\n ConstructionTypeContains: $filterFor,\n sortBy: [\n {field: $sortByFirstField, direction: $sortByFirstDirection},\n {field: $sortBySecondField, direction: $sortBySecondDirection},\n {field: $sortByThirdField, direction: $sortByThirdDirection}\n ],\n limit: $limit,\n offset: $offset\n ) {\n HashID,\n Final_title,\n Canton,\n Content,\n Calculated_distance,\n Distance_calculated_from,\n Date\n Construction_sum\n Approval_date\n Type\n Notice_number\n Construction_site {\n Address {\n Street\n Number\n Zip\n City\n Geo {\n lat\n lon\n }\n }\n }\n Building_owner {\n Name\n Address {\n Street\n Number\n Zip\n City\n Geo {\n lat\n lon\n }\n }\n }\n Project_management {\n Name\n Phone\n Email\n Website\n Email_other\n Address {\n Street\n Number\n Zip\n City\n Geo {\n lat\n lon\n }\n }\n }\n }\n }\n`;\n\nconst queryFavorites = `\n query ReadFavorites (\n $userHashID: ID\n ) {\n readFavorites(ID: $userHashID) {\n HashID\n ProjectHashID\n Removed\n }\n }\n`;\n\nexport const CHANGE_TYPES = {\n INIT: \"init\",\n PAGE: \"page\",\n TAB: \"tab\",\n};\n\n/**\n * Projects\n *\n * @returns {*}\n * @constructor\n */\nconst ProjectsSearch = () => {\n let shownProjects = [];\n const path = usePath();\n const classes = useStyles();\n const {\n setRemoveProjectSearchParameter,\n projectData,\n setProjectData,\n token,\n setToken,\n user,\n setVisibleProjects,\n visibleProjects,\n setMessage,\n unsetUser,\n unsetToken,\n projectSearchParameter,\n setProjectSearchParameter,\n } = useContext(GlobalContext);\n const { t } = useTranslation();\n const [page, setPage] = useState(0);\n const [rowsPerPage, setRowsPerPage] = useState(10);\n const [formerResult, setFormerResult] = useState([]);\n const [showNoResultMessage, setShowNoResultMessage] = useState(false);\n const [changeType, setChangeType] = useState(CHANGE_TYPES.INIT);\n const [querySearchVariables, setQuerySearchVariables] = useState({});\n const [querySearchFilter, setQuerySearchFilter] = useState([]);\n const [querySearchSortBy, setQuerySearchSortBy] = useState(\"score\");\n\n // GraphQL query for projects by search parameters, gets triggered by calling \"executeProjectsSearchQuery()\"\n const [searchResult, executeProjectsSearchQuery] = useQuery({\n query: queryProjectsSearch,\n variables: querySearchVariables,\n requestPolicy: \"network-only\",\n pause: true,\n });\n\n // GraphQL query for favorites, gets triggered by calling \"executeFavoritesQuery()\"\n const [favoritesResult, executeFavoritesQuery] = useQuery({\n query: queryFavorites,\n variables: user.getData().hashID,\n requestPolicy: \"network-only\",\n pause: true,\n });\n\n const emptyShownProjects = () => {\n shownProjects = [];\n };\n\n /* eslint-disable */\n useEffect(() => {\n return () => {\n setRemoveProjectSearchParameter(true);\n };\n }, []);\n\n useEffect(() => {\n if (projectSearchParameter !== \"\") {\n setPage(0);\n setFormerResult([]);\n setChangeType(CHANGE_TYPES.TAB);\n setVisibleProjects([]);\n emptyShownProjects();\n triggerProjectSearch();\n }\n }, [querySearchFilter, querySearchSortBy, projectSearchParameter]);\n /* eslint-enable */\n\n useEffect(() => {\n if (Object.keys(querySearchVariables).length !== 0) {\n executeProjectsSearchQuery();\n } else {\n setShowNoResultMessage(true);\n }\n }, [querySearchVariables, executeProjectsSearchQuery]);\n\n /**\n * fetch data useEffect\n */\n useEffect(() => {\n if (page % 3 === 0 && Object.keys(querySearchVariables).length !== 0) {\n executeProjectsSearchQuery();\n executeFavoritesQuery();\n }\n }, [\n token.api,\n setToken,\n executeProjectsSearchQuery,\n page,\n executeFavoritesQuery,\n querySearchVariables,\n ]);\n\n useEffect(() => {\n if (shownProjects.length && !visibleProjects.length) {\n setVisibleProjects(shownProjects);\n }\n }, [setVisibleProjects, shownProjects, visibleProjects]);\n\n useEffect(() => {\n const offset = { offset: rowsPerPage * page };\n if (Object.entries(querySearchVariables).length !== 0) {\n setQuerySearchVariables({\n ...querySearchVariables,\n ...offset,\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [page, rowsPerPage]);\n\n /**\n * table column heads\n */\n const columns = [\n { id: \"actions\", label: t(\"general.label.actions\"), minWidth: 200 },\n {\n id: \"projects\",\n label: t(\"general.label.projects\"),\n minWidth: 100,\n fontSize: 16,\n },\n {\n id: \"city\",\n label: t(\"general.label.address\"),\n minWidth: 120,\n align: \"left\",\n },\n {\n id: \"route\",\n label: t(\"general.label.distance\"),\n minWidth: 120,\n align: \"left\",\n },\n {\n id: \"date\",\n label: t(\"general.label.date\"),\n minWidth: 120,\n align: \"left\",\n },\n ];\n\n useEffect(() => {\n if (!searchResult.fetching) {\n if (searchResult.error) {\n // Check if the user need to be logged out\n if (\n searchResult.error.message.indexOf(\"User forced logout\") !== -1 ||\n searchResult.error.message.indexOf(\n \"The resource owner or authorization server denied the request\"\n ) !== -1\n ) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.user.forced.logout\"));\n unsetUser();\n unsetToken();\n navigate(\"/\");\n } else {\n // The query did not return any results!\n if (!showNoResultMessage) {\n setShowNoResultMessage(true);\n }\n\n if (formerResult.length !== 0) {\n setFormerResult([]);\n }\n }\n } else {\n // Query not fetching right now\n if (\n typeof searchResult.data !== \"undefined\" &&\n typeof searchResult.data.readSearchProjects !== \"undefined\"\n ) {\n // Add the projects to the global context\n const actualResult = searchResult.data.readSearchProjects;\n\n if (JSON.stringify(formerResult) !== JSON.stringify(actualResult)) {\n setFormerResult(actualResult);\n\n if (changeType === CHANGE_TYPES.PAGE) {\n const mergedArray = [...projectData, ...actualResult];\n // mergedArray have duplicates, lets remove the duplicates using Set\n const set = new Set();\n const unionArray = mergedArray.filter((item) => {\n if (!set.has(item.HashID)) {\n set.add(item.HashID);\n return true;\n }\n return false;\n }, set);\n // console.table(unionArray)\n setProjectData(unionArray);\n } else {\n setProjectData(actualResult);\n }\n\n setShowNoResultMessage(false);\n }\n }\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [searchResult])\n\n /**\n * handleChangePage\n *\n * @param event\n * @param newPage\n */\n const handleChangePage = (event, newPage) => {\n if (shownProjects.length) {\n setVisibleProjects(shownProjects);\n shownProjects = [];\n }\n setChangeType(CHANGE_TYPES.PAGE);\n window.scrollTo(0, 0);\n setPage(newPage);\n };\n\n /**\n * handleChangeRowsPerPage\n *\n * @param event\n */\n const handleChangeRowsPerPage = (event) => {\n if (shownProjects.length) {\n setVisibleProjects(shownProjects);\n shownProjects = [];\n }\n setChangeType(CHANGE_TYPES.PAGE);\n setRowsPerPage(parseInt(event.target.value, 10));\n setPage(0);\n };\n\n /**\n * addRowToVisibleProjects\n *\n * @param project\n */\n const addRowToVisibleProjects = (project) => {\n if (project.Read === null) {\n shownProjects.push(project);\n }\n };\n\n const triggerProjectSearch = (page) => {\n const sortBy = [\"_score\", \"ASC\", \"Date\", \"DESC\", \"AirDistance\", \"ASC\"];\n switch (querySearchSortBy) {\n case \"distance\":\n sortBy[0] = \"AirDistance\";\n sortBy[1] = \"ASC\";\n sortBy[2] = \"_score\";\n sortBy[3] = \"ASC\";\n sortBy[4] = \"Date\";\n sortBy[5] = \"DESC\";\n break;\n case \"date\":\n sortBy[0] = \"Date\";\n sortBy[1] = \"DESC\";\n sortBy[2] = \"AirDistance\";\n sortBy[3] = \"ASC\";\n sortBy[4] = \"_score\";\n sortBy[5] = \"ASC\";\n break;\n default:\n // Also \"score\"-selection\n sortBy[0] = \"_score\";\n sortBy[1] = \"ASC\";\n sortBy[2] = \"Date\";\n sortBy[3] = \"DESC\";\n sortBy[4] = \"AirDistance\";\n sortBy[5] = \"ASC\";\n }\n const limit = rowsPerPage * 4;\n const offset = rowsPerPage * page;\n\n setQuerySearchVariables({\n lat: user.getData().company.latitude,\n long: user.getData().company.longitude,\n searchParameter: projectSearchParameter,\n filterFor: querySearchFilter,\n sortByFirstField: sortBy[0],\n sortByFirstDirection: sortBy[1],\n sortBySecondField: sortBy[2],\n sortBySecondDirection: sortBy[3],\n sortByThirdField: sortBy[4],\n sortByThirdDirection: sortBy[5],\n limit: limit,\n offset: offset,\n });\n };\n\n const toggleQuerySearchFilterValue = (filterValue) => {\n let newQuerySearchFilter = [];\n const currentQuerySearchFilter = [];\n\n for (let index = 0; index < querySearchFilter.length; index++) {\n currentQuerySearchFilter.push(querySearchFilter[index]);\n }\n\n if (currentQuerySearchFilter.includes(filterValue)) {\n newQuerySearchFilter = currentQuerySearchFilter.filter(\n (element) => element !== filterValue\n );\n } else {\n currentQuerySearchFilter.push(filterValue);\n newQuerySearchFilter = currentQuerySearchFilter;\n }\n\n setQuerySearchFilter(newQuerySearchFilter);\n };\n\n /**\n * return\n */\n return (\n \n
\n \n \n \n \n {projectSearchParameter.length > 0 &&\n `${t(\"projects.search.results\")} \"${projectSearchParameter}\"`}\n {projectSearchParameter.length === 0 &&\n t(\"projects.search.no.param\")}\n \n \n {\n setProjectSearchParameter(\"\");\n if (path === \"/projects-search\") {\n navigate(\"/projects\");\n }\n }}\n >\n \n \n \n \n \n \n \n \n \n {t(\"projects.search.sort\")}\n \n {\n setQuerySearchSortBy(\"score\");\n }}\n />\n {\n setQuerySearchSortBy(\"distance\");\n }}\n />\n {\n setQuerySearchSortBy(\"date\");\n }}\n />\n \n \n \n Filter:\n \n \n ) : null\n }\n className={classes.searchFilterButton}\n onClick={(event) => {\n toggleQuerySearchFilterValue(\"unread\");\n }}\n />\n : null\n }\n className={classes.searchFilterButton}\n onClick={(event) => {\n toggleQuerySearchFilterValue(\"new\");\n }}\n />\n \n ) : null\n }\n className={classes.searchFilterButton}\n onClick={(event) => {\n toggleQuerySearchFilterValue(\"modification\");\n }}\n />\n \n ) : null\n }\n className={classes.searchFilterButton}\n onClick={(event) => {\n toggleQuerySearchFilterValue(\"demolition\");\n }}\n />\n \n \n \n \n \n {columns.map((column) => {\n if (column.id === \"route\") {\n return (\n \n \n {column.label}\n \n \n );\n }\n return (\n \n {column.label}\n \n );\n })}\n \n \n \n {!searchResult.fetching && showNoResultMessage && (\n \n \n {t(\"general.label.no.search.projects\")}\n \n \n )}\n {searchResult.fetching && (\n \n \n \n \n \n \n \n )}\n {!searchResult.fetching &&\n !showNoResultMessage &&\n projectData.length !== 0 &&\n projectData\n .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage)\n .map((row) => {\n addRowToVisibleProjects(row);\n const favoritesData = favoritesResult.data\n ? favoritesResult.data.readFavorites\n : null;\n return (\n \n );\n })}\n \n \n \n <>,\n }}\n labelDisplayedRows={({ from, to, count }) => {\n return `${from} - ${to === -1 ? count : to}`;\n }}\n labelRowsPerPage={\n <>\n {rowsPerPage} {t(\"general.label.rows\")}\n \n }\n classes={{\n input: classes.paginationInput,\n selectIcon: classes.paginationSelectIcon,\n }}\n onChangePage={handleChangePage}\n onChangeRowsPerPage={handleChangeRowsPerPage}\n ActionsComponent={TablePaginationActions}\n />\n \n \n
\n
\n
\n );\n};\n\nexport default withAccessControl(\n ProjectsSearch,\n ACL_COMPONENTS.PROJECTS,\n \"projects-free\"\n);\n","import React, { useContext } from 'react'\nimport { makeStyles } from '@material-ui/core/styles'\nimport TableCell from '@material-ui/core/TableCell'\nimport TableRow from '@material-ui/core/TableRow'\nimport ExpandMore from '@material-ui/icons/ExpandMore'\nimport StarBorder from '@material-ui/icons/StarBorder'\nimport MoreHoriz from '@material-ui/icons/MoreHoriz'\nimport IconButton from '@material-ui/core/IconButton'\nimport { useTranslation } from 'react-i18next'\nimport Tooltip from '@material-ui/core/Tooltip'\nimport GlobalContext from '../../lib/GlobalContext'\nimport GetSafe from '../../lib/GetSafe'\nimport withAccessControl from '../HOC/AccessControl'\nimport FormatHelper from '../../lib/FormatHelper'\nimport { ACL_COMPONENTS } from '../../config'\n\n/**\n * useStyles\n */\nconst useStyles = makeStyles(theme => ({\n icon: {\n padding: 8,\n fontSize: 25\n },\n tableCellColumnsbody: {\n width: 'calc(100% * 1 / 5)',\n minWidth: 185,\n padding: 14,\n '&:nth-child(2)': {\n minWidth: 520\n },\n '&:nth-child(3)': {\n minWidth: 130\n },\n '@media (max-width:640px)': {\n width: 'auto',\n '&:first-of-type': {\n minWidth: 'auto'\n },\n '&:nth-child(2)': {\n minWidth: 320\n }\n }\n }\n}))\n\n/**\n * ProjectsFreeTableRow\n *\n * @returns {*}\n * @constructor\n */\nconst ProjectsFreeTableRow = props => {\n const classes = useStyles()\n const { t } = useTranslation()\n const row = props.row\n const { upgradeToPremiumOpen, setUpgradeToPremiumOpen } = useContext(\n GlobalContext\n )\n\n /**\n * handleOpenPremiumUpgrade\n */\n const handleOpenPremiumUpgrade = () => {\n setUpgradeToPremiumOpen(!upgradeToPremiumOpen)\n }\n\n /**\n * tooltipAppendage\n *\n * @returns {string}\n */\n const tooltipAppendage = () => {\n if (props.planTrialData.isPossible) {\n return t('projects.free.tooltip.appendage', {\n trialDays: props.planTrialData.trialDays\n })\n } else {\n return ''\n }\n }\n\n /**\n * return\n */\n return (\n <>\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {GetSafe(() => row.Final_title, '')}\n \n \n {GetSafe(() => row.Construction_site.Address.City, '')}\n
\n {GetSafe(() => row.Construction_site.Address.Street, '')}{' '}\n {GetSafe(() => row.Construction_site.Address.Number, '')}\n
\n \n {t('projects.free.route.premium')}\n \n \n {GetSafe(() => FormatHelper.formatDate(row.Date), '')}\n \n
\n \n )\n}\n\nexport default withAccessControl(\n ProjectsFreeTableRow,\n ACL_COMPONENTS.PROJECTS_FREE_TABLE_ROW\n)\n","import { GOOGLE_API_KEY, googlePlacesApiEndpoint } from '../config'\n\n/**\n * GooglePlacesAPIHelper\n *\n * @returns {{getCantonByCity: (function(*): Promise)}}\n * @constructor\n */\nconst GooglePlacesAPIHelper = () => {\n /**\n * getCantonByCity\n *\n * @param city\n * @returns {Promise}\n */\n const getCantonByCity = async city => {\n const apiUrl = `${googlePlacesApiEndpoint}/canton/${city}/`\n const result = await window.fetch(apiUrl, {\n // eslint-disable-next-line no-undef\n headers: new Headers({\n 'Content-Type': 'application/json'\n })\n })\n return result.json()\n }\n\n /**\n * getCoordsByAddress\n *\n * @param address\n * @returns {Promise}\n */\n const getCoordsByAddress = async address => {\n const response = await window.fetch(\n `https://maps.googleapis.com/maps/api/geocode/json?address=${address}&key=${GOOGLE_API_KEY}`\n )\n\n return response.json()\n }\n\n /**\n * return\n */\n return {\n getCantonByCity,\n getCoordsByAddress\n }\n}\n\nexport default GooglePlacesAPIHelper()\n","import React, { useContext, useEffect, useState } from 'react'\nimport { makeStyles } from '@material-ui/core/styles'\nimport { useQuery } from 'urql'\nimport TextField from '@material-ui/core/TextField'\nimport { useTranslation } from 'react-i18next'\nimport GlobalContext from '../lib/GlobalContext'\nimport List from '@material-ui/core/List'\nimport ListItem from '@material-ui/core/ListItem'\nimport Paper from '@material-ui/core/Paper'\nimport CircularProgress from '@material-ui/core/CircularProgress'\nimport InputAdornment from '@material-ui/core/InputAdornment'\nimport IconButton from '@material-ui/core/IconButton'\nimport Clear from '@material-ui/icons/Clear'\nimport ClickAwayListener from '@material-ui/core/ClickAwayListener'\nimport ExternalErrorLogger from '@ennit/react-external-errorlogger'\nimport { MESSAGE_TYPES } from './PopupMessages'\n\nconst useStyles = makeStyles(theme => ({\n root: {\n flexGrow: 1,\n width: '100%'\n },\n searchField: {\n width: 328\n },\n menu: {\n marginTop: theme.spacing(7.5)\n },\n menuList: {\n width: 328\n },\n autocompleteResultWrapper: {\n position: 'relative',\n textAlign: 'center',\n zIndex: 2\n },\n autocompleteResult: {\n position: 'absolute',\n padding: theme.spacing(3),\n width: '100%'\n }\n}))\n\nconst minCompanyLengthForSuggest = 3\nconst startSuggestDelay = 350\n\nconst queryZefixCompanySuggest = `\n query ReadZefixCompanySuggest (\n $searchParameter: String!\n $csrfToken: String\n $companyHashID: String\n ) {\n readZefixCompanySuggest(\n Name: $searchParameter,\n Token: $csrfToken,\n CompanyHashID: $companyHashID\n ) {\n Name\n CHID\n }\n }\n`\n\nconst queryZefixCompanyDetails = `\n query ReadZefixCompanyDetails (\n $chidParameter: String!\n $csrfToken: String\n $companyHashID: String\n ) {\n readZefixCompanyDetails(\n CHID: $chidParameter,\n Token: $csrfToken,\n CompanyHashID: $companyHashID,\n FetchCompany: true\n ) {\n Name\n CHID\n LegalForm {\n LegalFormID\n LegalFormUID\n LegalFormName {\n Name\n LanguageCode\n }\n }\n Address {\n AddressInformation {\n Street\n Town\n SwissZipCode\n Country\n }\n }\n CompanyHashID\n Token\n }\n }\n`\n\nlet queryTimeout\n\n/**\n * ZefixCompanyAutocompleteField\n * @param props\n * @returns {*}\n * @constructor\n */\nconst ZefixCompanyAutocompleteField = props => {\n const classes = useStyles()\n const { t } = useTranslation()\n const [anchorEl, setAnchorEl] = useState(null)\n const { token, setToken, setMessage } = useContext(GlobalContext)\n const [\n zefixCompanySearchParameter,\n setZefixCompanySearchParameter\n ] = useState('')\n const [zefixCompanyCHIDParameter, setZefixCompanyCHIDParameter] = useState('')\n const [zefixCompanies, setZefixCompanies] = useState(false)\n const [zefixCompanyDetails, setZefixCompanyDetails] = useState(false)\n\n /**\n * GraphQL query for zefix-company-data, gets triggered by calling \"executeZefixCompanySuggestQuery()\"\n */\n const [resultSuggest, executeZefixCompanySuggestQuery] = useQuery({\n query: queryZefixCompanySuggest,\n variables: {\n searchParameter: zefixCompanySearchParameter,\n csrfToken: props.csrfToken,\n companyHashID: props.companyHashID\n },\n pause: true\n })\n\n /**\n * GraphQL query for zefix-company-data details, gets triggered by calling \"executeZefixCompanyDetailsQuery()\"\n */\n const [resultDetails, executeZefixCompanyDetailsQuery] = useQuery({\n query: queryZefixCompanyDetails,\n variables: {\n chidParameter: zefixCompanyCHIDParameter,\n csrfToken: props.csrfToken,\n companyHashID: props.companyHashID\n },\n pause: true\n })\n\n useEffect(() => {\n if (\n zefixCompanySearchParameter &&\n zefixCompanySearchParameter.length >= minCompanyLengthForSuggest\n ) {\n // Timed query to prevent graph spam\n queryTimeout = setTimeout(() => {\n executeZefixCompanySuggestQuery()\n }, startSuggestDelay)\n }\n }, [\n zefixCompanySearchParameter,\n executeZefixCompanySuggestQuery,\n token,\n setToken,\n props.csrfToken,\n props.companyHashID\n ])\n\n useEffect(() => {\n if (zefixCompanyCHIDParameter && zefixCompanyCHIDParameter.length > 0) {\n executeZefixCompanyDetailsQuery()\n }\n }, [\n zefixCompanyCHIDParameter,\n executeZefixCompanyDetailsQuery,\n token,\n setToken,\n props.csrfToken,\n props.companyHashID\n ])\n\n useEffect(() => {\n if (!resultSuggest.fetching) {\n if (resultSuggest.error) {\n ExternalErrorLogger.log({\n text: 'Error fetching Zefix companies on ZefixCompanyAutocompleteField',\n data: {\n errorMessage: resultSuggest.error\n }\n })\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.fetching.zefix.companies\"));\n } else {\n // Query not fetching right now\n if (\n typeof resultSuggest.data !== 'undefined' &&\n typeof resultSuggest.data.readZefixCompanySuggest !== 'undefined' &&\n !zefixCompanies\n ) {\n // Add the companies to the result-array\n setZefixCompanies(resultSuggest.data.readZefixCompanySuggest)\n }\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [resultSuggest])\n\n // GraphQL trigger and result handling for details\n useEffect(() => {\n if (!resultDetails.fetching) {\n if (resultDetails.error) {\n // Something went very wrong\n ExternalErrorLogger.log({\n text:\n 'Error fetching Zefix company details on ZefixCompanyAutocompleteField',\n data: {\n errorMessage: resultDetails.error\n }\n })\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.fetching.zefix.companies\"));\n } else {\n // Query not fetching right now\n if (\n typeof resultDetails.data !== 'undefined' &&\n typeof resultDetails.data.readZefixCompanyDetails !== 'undefined'\n ) {\n // Add the companies to the result-array\n setZefixCompanyDetails(resultDetails.data.readZefixCompanyDetails)\n }\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [resultDetails])\n\n useEffect(() => {\n if (zefixCompanyDetails) {\n if (props.onAutocompleteSelect) {\n props.onAutocompleteSelect(zefixCompanyDetails)\n } else {\n console.error(\n 'Autocomplete was not able to notify the parent about the select, please add the fn-prop: onAutocompleteSelect'\n )\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [zefixCompanyDetails])\n\n /**\n * handleCompanySearch\n * @param event\n */\n const handleCompanySearch = event => {\n clearTimeout(queryTimeout)\n\n // Enable result list but stay focus on input\n setAnchorEl(event.target)\n event.currentTarget.focus()\n\n // Reset current search-result\n setZefixCompanies(false)\n\n // Set the current search parameter\n setZefixCompanySearchParameter(event.target.value)\n }\n\n /**\n * handleCompanySelect\n * @param company\n */\n const handleCompanySelect = company => {\n setZefixCompanyCHIDParameter(company.CHID)\n setAnchorEl(null)\n }\n\n /**\n * handleClearInput\n */\n const handleClearInput = () => {\n // Disable result list\n setAnchorEl(null)\n\n // Reset current search-result\n setZefixCompanies(false)\n\n // Set the current search parameter\n setZefixCompanySearchParameter('')\n }\n\n /**\n * handleClickAway\n */\n const handleClickAway = () => {\n setAnchorEl(null)\n }\n\n /**\n * renderList\n * @returns {null|*}\n */\n const renderList = () => {\n if (\n !resultSuggest.fetching &&\n zefixCompanies\n ) {\n return (\n \n \n {zefixCompanies.length > 0 &&\n zefixCompanies.map(company => (\n {\n handleCompanySelect(company)\n }}\n >\n {company.Name}\n \n ))}\n {zefixCompanies.length === 0 && (\n {t('error.no.zefix.results')}\n )}\n \n \n )\n }\n return null\n }\n\n /**\n * return\n */\n return (\n <>\n {resultDetails.fetching && }\n {!resultDetails.fetching && (\n \n \n \n \n \n )\n }}\n />\n )}\n {!resultDetails.fetching && Boolean(anchorEl) && (\n
\n \n {renderList()}\n {resultSuggest.fetching && (\n \n )}\n \n
\n )}\n \n )\n}\n\nexport default ZefixCompanyAutocompleteField\n","import React, { useContext, useState } from \"react\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport Button from \"@material-ui/core/Button\";\nimport Dialog from \"@material-ui/core/Dialog\";\nimport DialogContent from \"@material-ui/core/DialogContent\";\nimport GlobalContext from \"../../lib/GlobalContext\";\nimport { useTranslation } from \"react-i18next\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport { ACL_COMPONENTS, CANTON_LIST } from \"../../config\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport CloseIcon from \"@material-ui/icons/Close\";\nimport { DialogTitle } from \"@material-ui/core\";\nimport Paper from \"@material-ui/core/Paper\";\nimport Typography from \"@material-ui/core/Typography\";\nimport TextField from \"@material-ui/core/TextField\";\nimport { useMutation } from \"urql\";\nimport { MESSAGE_TYPES } from \"../PopupMessages\";\nimport withAccessControl from \"../HOC/AccessControl\";\nimport GooglePlacesAPIHelper from \"../../lib/GooglePlacesAPIHelper\";\nimport { navigate } from \"hookrouter\";\nimport ExternalErrorLogger from \"@ennit/react-external-errorlogger\";\n\nconst useStyles = makeStyles((theme) => ({\n changeLocation: {\n color: theme.palette.primary.main,\n width: 200,\n height: \"100%\",\n fontWeight: \"bold\",\n },\n dialogTitleCloseIcon: {\n marginLeft: \"auto\",\n padding: 0,\n paddingRight: 23,\n paddingTop: 10,\n },\n root: {\n width: \"100%\",\n maxWidth: 444,\n },\n rootNotice: {\n position: \"relative\",\n marginTop: 20,\n marginBottom: 20,\n padding: \"35px 25px\",\n background: theme.palette.info.main,\n color: theme.palette.text.primary,\n \"&::before\": {\n position: \"absolute\",\n top: \"-7px\",\n left: \"50%\",\n width: 14,\n height: 14,\n background: theme.palette.info.main,\n transform: \"translate(-50%, 0) rotate(45deg)\",\n content: '\"\"',\n },\n [theme.breakpoints.down(\"sm\")]: {\n padding: 20,\n },\n },\n addButtonText: {\n paddingTop: 3,\n paddingRight: 15,\n paddingBottom: 3,\n paddingLeft: 15,\n fontWeight: \"bold\",\n },\n icon: {\n color: theme.palette.primary.main,\n fontSize: 24,\n [theme.breakpoints.up(\"sm\")]: {\n fontSize: 30,\n },\n },\n listItem: {\n padding: 0,\n },\n dialogContent: {\n minWidth: \"100%\",\n padding: \"0 20px\",\n [theme.breakpoints.up(\"sm\")]: {\n paddingTop: 0,\n paddingRight: 32,\n paddingBottom: 24,\n paddingLeft: 32,\n },\n },\n dialogActions: {\n justifyContent: \"flex-start\",\n padding: \"0 20px\",\n [theme.breakpoints.up(\"sm\")]: {\n paddingTop: 0,\n paddingRight: 32,\n paddingBottom: 24,\n paddingLeft: 32,\n },\n },\n location: {\n paddingRight: 50,\n color: \"#525252\",\n },\n textField: {\n width: \"100%\",\n marginRight: 0,\n marginLeft: 0,\n },\n menu: {\n width: 200,\n },\n}));\n\n/**\n * updateCompanyMutation\n *\n * @type {string}\n */\nconst updateCompanyMutation = `\n mutation UpdateCompany(\n $hashId: String!,\n $canton: String,\n $latitude: Float,\n $longitude: Float\n ) {\n updateCompany(\n HashID: $hashId, \n Canton: $canton,\n Latitude: $latitude,\n Longitude: $longitude\n ) {\n Name\n Street\n Zip\n City\n Canton\n Phone\n Fax\n Website\n Email\n BusinessActivityID\n BusinessSpecialities{\n edges{\n node{\n ID\n Title\n }\n }\n }\n }\n }\n`;\n\n/**\n * ProjectsFreeLocationsHandler\n *\n * @returns {*}\n * @constructor\n */\nconst ProjectsFreeLocationsHandler = () => {\n const classes = useStyles();\n const { t } = useTranslation();\n const {\n user,\n setUser,\n canton,\n setCanton,\n token,\n setMessage,\n setProjectData,\n unsetUser,\n unsetToken,\n } = useContext(GlobalContext);\n const [openDialog, setOpenDialog] = useState(false);\n const [{ fetching }, executeMutation] = useMutation(updateCompanyMutation);\n\n /**\n * handleClickManageLocations\n */\n const handleClickManageLocations = () => {\n setOpenDialog(true);\n };\n\n /**\n * handleCloseManageLocations\n */\n const handleCloseManageLocations = () => {\n setOpenDialog(false);\n };\n\n /**\n * handleChangeCanton\n */\n const handleChangeCanton = (event) => {\n GooglePlacesAPIHelper.getCoordsByAddress(\n CANTON_LIST[event.target.value]\n ).then((result) => {\n const lat = result.results[0].geometry.location.lat;\n const lon = result.results[0].geometry.location.lng;\n\n executeMutation({\n hashId: user.getData().company.hashID,\n canton: CANTON_LIST[event.target.value],\n latitude: lat,\n longitude: lon,\n }).then((result) => {\n if (result.error) {\n // Check if the user need to be logged out\n if (result.error.message.indexOf(\"User forced logout\") !== -1) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.user.forced.logout\"));\n unsetUser();\n unsetToken();\n navigate(\"/\");\n } else {\n ExternalErrorLogger.log({\n text: \"Error change canton on ProjectsFreeLocationsHandler\",\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n errorMessage: result.error.message,\n },\n });\n }\n } else {\n if (result.error) {\n // Check if the user need to be logged out\n if (result.error.message.indexOf(\"User forced logout\") !== -1) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.user.forced.logout\"));\n unsetUser();\n unsetToken();\n navigate(\"/\");\n } else {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.save\"));\n ExternalErrorLogger.log({\n text: \"Error change canton on ProjectsFreeLocationsHandler\",\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n errorMessage: result.error.message,\n },\n });\n }\n } else {\n setCanton(event.target.value);\n user.setData({\n company: {\n canton: CANTON_LIST[event.target.value],\n latitude: lat,\n longitude: lon,\n },\n });\n setUser(user);\n if (!fetching) {\n setMessage(\n MESSAGE_TYPES.SUCCESS,\n t(\"general.label.save.success\")\n );\n handleCloseManageLocations();\n setProjectData([]);\n }\n }\n }\n });\n });\n };\n\n /**\n * menuItems\n *\n * @returns {[]}\n */\n const menuItems = () => {\n const menuItemArray = [];\n Object.keys(CANTON_LIST).forEach((index) => {\n menuItemArray.push(\n \n {CANTON_LIST[index]}\n \n );\n });\n return menuItemArray;\n };\n\n /**\n * LocationDataEditDialog\n */\n const locationDataEditDialog = () => (\n <>\n \n \n \n \n \n \n {\n handleChangeCanton(event);\n }}\n SelectProps={{\n MenuProps: {\n className: classes.menu,\n },\n }}\n margin=\"normal\"\n variant=\"outlined\"\n >\n {menuItems()}\n \n \n \n {t(\"projects.free.benefit.premium.canton.change\")}\n \n \n \n \n );\n\n /**\n * return\n */\n return (\n <>\n \n {t(\"location.label.change.canton\")}\n \n \n {locationDataEditDialog()}\n \n \n );\n};\n\nexport default withAccessControl(\n ProjectsFreeLocationsHandler,\n ACL_COMPONENTS.PROJECTS_FREE_LOCATION_HANDLER\n);\n","import { CANTON_LIST } from '../config'\n\n/**\n * Fetches the short term for a canton (key)\n * Defaults to ZH (Zürich)\n *\n * @param canton\n * @returns string\n */\nconst getCantonShort = canton => {\n let foundShort = 'ZH'\n Object.keys(CANTON_LIST).forEach(index => {\n if (CANTON_LIST[index] === canton) {\n foundShort = index\n }\n })\n return foundShort\n}\n\nexport default getCantonShort\n","import React, { useContext, useEffect, useState } from \"react\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport { useQuery } from \"urql\";\nimport Table from \"@material-ui/core/Table\";\nimport TableBody from \"@material-ui/core/TableBody\";\nimport TableCell from \"@material-ui/core/TableCell\";\nimport TableHead from \"@material-ui/core/TableHead\";\nimport TableFooter from \"@material-ui/core/TableFooter\";\nimport TablePagination from \"@material-ui/core/TablePagination\";\nimport TableRow from \"@material-ui/core/TableRow\";\nimport Paper from \"@material-ui/core/Paper\";\nimport LinearProgress from \"@material-ui/core/LinearProgress\";\nimport TablePaginationActions from \"../components/Table/TablePaginationActions\";\nimport ProjectsFreeTableRow from \"../components/ProjectsFree/ProjectsFreeTableRow\";\nimport GlobalContext from \"../lib/GlobalContext\";\nimport ProjectsFreeLocationsHandler from \"../components/ProjectsFree/ProjectsFreeLocationsHandler\";\nimport { useTranslation } from \"react-i18next\";\nimport Tab from \"@material-ui/core/Tab\";\nimport Tabs from \"@material-ui/core/Tabs\";\nimport withAccessControl from \"../components/HOC/AccessControl\";\nimport getCantonShort from \"../lib/CantonShortener\";\nimport { MESSAGE_TYPES } from \"../components/PopupMessages\";\nimport { navigate } from \"hookrouter\";\nimport { ACL_COMPONENTS } from \"../config\";\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n flexGrow: 1,\n width: \"100%\",\n maxWidth: 1280,\n },\n table: {\n minWidth: \"100%\",\n },\n tableWrapper: {\n overflowX: \"auto\",\n [theme.breakpoints.up(\"lg\")]: {\n overflowX: \"hidden\",\n },\n },\n tableHead: {\n width: \"100%\",\n height: 64,\n background: \"#F7F9FA\",\n },\n tableColumnsHead: {\n height: 96,\n },\n tableCellHeader: {\n height: 64,\n fontWeight: \"bold\",\n },\n tableCellColumnsHeader: {\n padding: \"40px 14px 16px 14px\",\n fontSize: theme.typography.fontSize,\n color: \"#999999\",\n fontWeight: \"bold\",\n \"&:first-of-type\": {\n paddingLeft: 24,\n },\n \"@media (max-width:640px)\": {\n \"&:first-of-type\": {\n paddingLeft: 14,\n },\n },\n },\n tableCellColumnsBody: {\n padding: \"20px 14px\",\n },\n tableCell: {\n height: 64,\n },\n tableRows: {\n paddingLeft: 36,\n },\n tabs: {\n color: \"#525252\",\n fontSize: 14,\n height: \"100%\",\n width: \"100%\",\n },\n tab: {\n height: 64,\n fontWeight: \"bold\",\n textAlign: \"center\",\n },\n icon: {\n padding: 8,\n },\n listContent: {\n paddingLeft: 36,\n },\n paginationInput: {\n height: 28,\n width: 25,\n },\n paginationSelectIcon: {\n color: theme.palette.primary.main,\n },\n}));\n\nconst queryProjects = `\n query ReadElasticProjects (\n $canton: String,\n $limit: Int,\n $offset: Int\n ) {\n readElasticProjects(\n sortBy: [{field: Date, direction: DESC}],\n Filter: {Canton: $canton},\n limit: $limit,\n offset: $offset\n ){\n HashID\n Canton\n Ip\n Final_title\n Date\n Calculated_distance\n Construction_site {\n Address {\n Street\n Number\n Zip\n City\n Geo {\n lat\n lon\n }\n }\n }\n Building_owner {\n Name\n Address {\n Street\n Number\n Zip\n City\n Geo {\n lat\n lon\n }\n }\n }\n Project_management {\n Name\n Address {\n Street\n Number\n Zip\n City\n Geo {\n lat\n lon\n }\n }\n }\n }\n }\n`;\n\nconst stripeProductsQuery = `\n {\n readProduct {\n name\n plans {\n trial_period_days\n trial_possible\n }\n }\n }\n`;\n\n/**\n * ProjectsFree\n *\n * @returns {*}\n * @constructor\n */\nconst ProjectsFree = () => {\n const classes = useStyles();\n const { t } = useTranslation();\n\n const {\n projectData,\n setProjectData,\n token,\n user,\n canton,\n setCanton,\n setMessage,\n unsetUser,\n unsetToken,\n } = useContext(GlobalContext);\n \n const [page, setPage] = useState(0);\n const [rowsPerPage, setRowsPerPage] = useState(10);\n const [formerResult, setFormerResult] = useState([]);\n const [localCanton, setLocalCanton] = useState(\n getCantonShort(user.getData().company.canton)\n );\n const [planTrialData, setPlanTrialData] = useState({\n isPossible: null,\n trialDays: 0,\n });\n\n const columns = [\n { id: \"actions\", label: t(\"general.label.actions\"), minWidth: 200 },\n {\n id: \"projects\",\n label: t(\"general.label.projects\"),\n minWidth: 100,\n fontSize: 16,\n },\n {\n id: \"city\",\n label: t(\"general.label.address\"),\n minWidth: 120,\n align: \"left\",\n },\n {\n id: \"route\",\n label: t(\"general.label.distance\"),\n minWidth: 120,\n align: \"left\",\n },\n {\n id: \"date\",\n label: t(\"general.label.date\"),\n minWidth: 120,\n align: \"left\",\n },\n ];\n\n const [result, executeProjectsQuery] = useQuery({\n query: queryProjects,\n variables: {\n canton: localCanton,\n limit: rowsPerPage * 4,\n offset: rowsPerPage * page,\n },\n requestPolicy: \"cache-and-network\",\n pause: true,\n });\n\n const [productsQueryResult, executeProductsQuery] = useQuery({\n query: stripeProductsQuery,\n requestPolicy: \"cache-and-network\",\n pause: true,\n });\n\n useEffect(() => {\n setCanton(getCantonShort(user.getData().company.canton));\n setLocalCanton(getCantonShort(user.getData().company.canton));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [user])\n\n useEffect(() => {\n if (canton !== localCanton) {\n setPage(0);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [canton, localCanton]);\n\n useEffect(() => {\n if (page % 3 !== 1 && page % 3 !== 2) {\n executeProjectsQuery();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [page, rowsPerPage])\n\n useEffect(() => {\n executeProductsQuery();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [user, token]);\n\n useEffect(() => {\n executeProjectsQuery();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [canton, localCanton])\n\n // GraphQL trigger and result handling\n useEffect(() => {\n if (!result.fetching) {\n if (result.error) {\n // Check if the user need to be logged out\n if (result.error.message.indexOf(\"User forced logout\") !== -1) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.user.forced.logout\"));\n unsetUser();\n unsetToken();\n navigate(\"/\");\n } else {\n // The query did not return any results!\n setProjectData([]);\n }\n } else {\n // Query not fetching right now\n if (\n typeof result.data !== \"undefined\" &&\n typeof result.data.readElasticProjects !== \"undefined\"\n ) {\n // Add the projects to the global context\n const actualResult = result.data.readElasticProjects;\n\n if (JSON.stringify(formerResult) !== JSON.stringify(actualResult)) {\n setFormerResult(actualResult);\n const mergedArray = [...projectData, ...actualResult];\n // mergedArray have duplicates, lets remove the duplicates using Set\n const set = new Set();\n const unionArray = mergedArray.filter((item) => {\n if (!set.has(item.HashID)) {\n set.add(item.HashID);\n return true;\n }\n return false;\n }, set);\n setProjectData(unionArray);\n }\n }\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [result])\n\n // GraphQL trigger and productsQueryResult handling\n useEffect(() => {\n if (!productsQueryResult.fetching) {\n if (productsQueryResult.error) {\n // Check if the user need to be logged out\n if (\n productsQueryResult.error.message.indexOf(\"User forced logout\") !== -1\n ) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.user.forced.logout\"));\n unsetUser();\n unsetToken();\n navigate(\"/\");\n } else {\n // The query did not return any results!\n setProjectData([]);\n }\n } else {\n // Query not fetching right now\n if (\n typeof productsQueryResult.data !== \"undefined\" &&\n typeof productsQueryResult.data.readProduct !== \"undefined\" &&\n planTrialData.isPossible === null\n ) {\n const productData = productsQueryResult.data.readProduct;\n\n productData.map((product) => {\n if (product.name === \"Smart\") {\n setPlanTrialData({\n trialDays: product.plans[0].trial_period_days,\n isPossible:\n product.plans[0].trial_possible === null\n ? false\n : product.plans[0].trial_possible,\n });\n }\n return product;\n });\n }\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [productsQueryResult])\n\n /**\n * handleChangePage\n *\n * @param event\n * @param newPage\n */\n const handleChangePage = (event, newPage) => {\n window.scrollTo(0, 0);\n setPage(newPage);\n };\n\n /**\n * handleChangeRowsPerPage\n *\n * @param event\n */\n const handleChangeRowsPerPage = (event) => {\n setRowsPerPage(parseInt(event.target.value, 10));\n setPage(0);\n };\n\n /**\n * return\n */\n return (\n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n {columns.map((column) => (\n \n {column.label}\n \n ))}\n \n \n \n {result.fetching && (\n \n \n \n \n \n \n \n )}\n {!result.fetching &&\n projectData.length !== 0 &&\n projectData\n .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage)\n .map((row) => (\n \n ))}\n \n \n \n <>,\n }}\n labelDisplayedRows={({ from, to, count }) => {\n return `${from} - ${to === -1 ? count : to}`;\n }}\n labelRowsPerPage={\n <>\n {rowsPerPage} {t(\"general.label.rows\")}\n \n }\n classes={{\n input: classes.paginationInput,\n selectIcon: classes.paginationSelectIcon,\n }}\n onChangePage={handleChangePage}\n onChangeRowsPerPage={handleChangeRowsPerPage}\n ActionsComponent={TablePaginationActions}\n />\n \n \n
\n
\n
\n );\n};\n\nexport default withAccessControl(\n ProjectsFree,\n ACL_COMPONENTS.PROJECTS_FREE,\n \"projects\"\n);\n","export const FavoriteStateConditions = Object.freeze({\n ATTENTION: 'toedit',\n CHECKED: 'applied',\n FOLLOWUP: 'followup',\n FOLLOWED: 'followed',\n THUMB_UP: 'accepted',\n THUMB_DOWN: 'refused',\n EXTERNALAPPLIED: 'externalapplied'\n})\n\nconst FavoriteStateConditionText = (t, stateCondition) => {\n switch (stateCondition) {\n case FavoriteStateConditions.CHECKED:\n return t('favorites.label.status.checked')\n case FavoriteStateConditions.FOLLOWUP:\n return t('favorites.label.status.followup')\n case FavoriteStateConditions.FOLLOWED:\n return t('favorites.label.status.followed')\n case FavoriteStateConditions.THUMB_UP:\n return t('favorites.label.status.thumb.up')\n case FavoriteStateConditions.THUMB_DOWN:\n return t('favorites.label.status.thumb.down')\n case FavoriteStateConditions.EXTERNALAPPLIED:\n return t('favorites.label.status.externalapplied')\n default:\n return t('favorites.label.status.attention')\n }\n}\n\nexport { FavoriteStateConditions as default, FavoriteStateConditionText }\n","import React, { useState, useContext, useEffect } from \"react\";\nimport Menu from \"@material-ui/core/Menu\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport NewReleases from \"@material-ui/icons/NewReleases\";\nimport ThumbUp from \"@material-ui/icons/ThumbUp\";\nimport ThumbDown from \"@material-ui/icons/ThumbDown\";\nimport CheckCircle from \"@material-ui/icons/CheckCircle\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport GlobalContext from \"../../lib/GlobalContext\";\nimport Grid from \"@material-ui/core/Grid\";\nimport { useTranslation } from \"react-i18next\";\nimport {\n FavoriteStateConditions,\n FavoriteStateConditionText,\n} from \"./FavoriteStateConditions\";\nimport withAccessControl from \"../HOC/AccessControl\";\nimport { useMutation, useQuery } from \"urql\";\nimport { MESSAGE_TYPES } from \"../PopupMessages\";\nimport LinearProgress from \"@material-ui/core/LinearProgress\";\nimport { navigate } from \"hookrouter\";\nimport { ACL_COMPONENTS } from \"../../config\";\nimport ExternalErrorLogger from \"@ennit/react-external-errorlogger\";\nimport { MailOutline, OfflinePin, RotateRight } from \"@material-ui/icons\";\n\nconst useStyles = makeStyles((theme) => ({\n icon: {\n padding: 8,\n },\n}));\n\nconst updateFavoriteMutation = `\n mutation UpdateFavorite (\n $hashID: String,\n $state: String\n ) {\n updateFavorite (HashID: $hashID, State: $state) {\n HashID\n }\n }\n`;\n\nconst queryFavorites = `\n query ReadFavorites (\n $userHashID: ID,\n $filterFor: [String]\n ) {\n readFavorites(ID: $userHashID, ConstructionTypeContains: $filterFor) {\n HashID\n ProjectHashID\n Removed\n State\n Canton\n Calculated_distance\n Content\n Final_title\n Import_date\n Date\n Applied\n Construction_site {\n Address {\n Street\n Number\n Zip\n City\n Geo {\n lat\n lon\n }\n }\n }\n Building_owner {\n Name\n Address {\n Street\n Number\n Zip\n City\n Geo {\n lat\n lon\n }\n }\n }\n Project_management {\n Name\n Phone\n Email\n Website\n Email_other\n Address {\n Street\n Number\n Zip\n City\n Geo {\n lat\n lon\n }\n }\n }\n StateHistory {\n edges {\n node {\n Created\n State\n }\n }\n }\n Notes {\n edges {\n node {\n HashID\n Text\n Created\n Removed\n }\n }\n }\n }\n }\n`;\n\n/**\n * FavoriteStatus\n *\n * @returns {*}\n * @constructor\n */\nconst FavoriteStatus = (props) => {\n const classes = useStyles();\n const { t } = useTranslation();\n const {\n setMessage,\n user,\n setFavoriteData,\n unsetUser,\n token,\n unsetToken,\n } = useContext(GlobalContext);\n const [anchorEl, setAnchorEl] = useState(null);\n const [formerResult, setFormerResult] = useState([]);\n\n const [{ fetchingUpdateFavorite }, executeUpdateFavoriteMutation] =\n useMutation(updateFavoriteMutation);\n\n // GraphQL query for favorites, gets triggered by calling \"executeFavoritesQuery()\"\n const [result, executeFavoritesQuery] = useQuery({\n query: queryFavorites,\n variables: {\n userHashID: user.getData().hashID,\n filterFor: props.filterFor,\n },\n requestPolicy: \"network-only\",\n pause: true,\n });\n\n let state = FavoriteStateConditions.ATTENTION;\n if (props.favorite.State) {\n state = props.favorite.State;\n }\n\n // GraphQL trigger and result handling\n useEffect(() => {\n if (!result.fetching) {\n if (result.error) {\n // Check if the user need to be logged out\n if (result.error.message.indexOf(\"User forced logout\") !== -1) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.user.forced.logout\"));\n unsetUser();\n unsetToken();\n navigate(\"/\");\n } else {\n // The query did not return any results!\n if (formerResult.length !== 0) {\n setFormerResult([]);\n }\n }\n } else {\n // Query not fetching right now\n if (\n typeof result.data !== \"undefined\" &&\n typeof result.data.readFavorites !== \"undefined\"\n ) {\n // Add the favorites to the global context\n setFavoriteData(result.data.readFavorites);\n }\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [result])\n\n /**\n * save changes to state and context and close menu\n *\n * @param event\n * @param newStateCondition\n */\n const handleStatusChange = (event, newStateCondition) => {\n event.stopPropagation();\n\n if (state !== newStateCondition) {\n executeUpdateFavoriteMutation({\n hashID: props.favorite.HashID,\n state: newStateCondition,\n }).then((result) => {\n if (result.error) {\n // Check if the user need to be logged out\n if (result.error.message.indexOf(\"User forced logout\") !== -1) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.user.forced.logout\"));\n unsetUser();\n unsetToken();\n navigate(\"/\");\n } else {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.save\"));\n ExternalErrorLogger.log({\n text: \"Error change favorite status on FavoriteStatus\",\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n errorMessage: JSON.stringify(result.error),\n },\n });\n }\n } else {\n setMessage(MESSAGE_TYPES.INFO, t(\"projects.favorites.updated\"));\n executeFavoritesQuery();\n }\n });\n }\n handleClose();\n };\n\n /**\n * open context menu\n *\n * @param event\n */\n const handleClick = (event) => {\n event.stopPropagation();\n setAnchorEl(event.currentTarget);\n };\n\n /**\n * close context menu\n */\n const handleClose = (event) => {\n if (event !== undefined) {\n event.stopPropagation();\n }\n setAnchorEl(null);\n };\n\n /**\n * attention icon\n */\n const statusIconAttention = () => {\n return (\n \n );\n };\n\n /**\n * checked icon\n */\n const statusIconChecked = () => {\n return (\n \n );\n };\n\n /**\n * follow-up icon\n */\n const statusIconFollowUp = () => {\n return (\n \n );\n };\n\n /**\n * followed icon\n */\n const statusIconExternalApplied = () => {\n return (\n \n );\n };\n\n /**\n * followed icon\n */\n const statusIconFollowed = () => {\n return (\n \n );\n };\n\n /**\n * thumb-up icon\n */\n const statusIconThumbUp = () => {\n return (\n \n );\n };\n\n /**\n * thumb-down icon\n */\n const statusIconThumbDown = () => {\n return (\n \n );\n };\n\n /**\n * get the active icon based on state\n */\n const getActiveStatusIcon = () => {\n switch (state) {\n case FavoriteStateConditions.CHECKED:\n return statusIconChecked();\n case FavoriteStateConditions.FOLLOWUP:\n return statusIconFollowUp();\n case FavoriteStateConditions.FOLLOWED:\n return statusIconFollowed();\n case FavoriteStateConditions.THUMB_UP:\n return statusIconThumbUp();\n case FavoriteStateConditions.THUMB_DOWN:\n return statusIconThumbDown();\n case FavoriteStateConditions.EXTERNALAPPLIED:\n return statusIconExternalApplied();\n default:\n return statusIconAttention();\n }\n };\n\n /**\n * return\n */\n return (\n <>\n {props.removed ? (\n \n {getActiveStatusIcon()}\n \n ) : (\n \n {getActiveStatusIcon()}\n \n )}\n \n {\n handleStatusChange(event, FavoriteStateConditions.ATTENTION);\n }}\n >\n \n {statusIconAttention()}\n \n {FavoriteStateConditionText(t, FavoriteStateConditions.ATTENTION)}\n \n \n \n {\n handleStatusChange(event, FavoriteStateConditions.CHECKED);\n }}\n >\n \n {statusIconChecked()}\n \n {FavoriteStateConditionText(t, FavoriteStateConditions.CHECKED)}\n \n \n \n {user.hasApplicationFollowUpTimInDays() && {\n handleStatusChange(event, FavoriteStateConditions.FOLLOWUP);\n }}\n >\n \n {statusIconFollowUp()}\n \n {FavoriteStateConditionText(t, FavoriteStateConditions.FOLLOWUP)}\n \n \n }\n {\n handleStatusChange(event, FavoriteStateConditions.FOLLOWED);\n }}\n >\n \n {statusIconFollowed()}\n \n {FavoriteStateConditionText(t, FavoriteStateConditions.FOLLOWED)}\n \n \n \n {user.isPro() && ( {\n handleStatusChange(event, FavoriteStateConditions.EXTERNALAPPLIED);\n }}\n >\n \n {statusIconExternalApplied()}\n \n {FavoriteStateConditionText(t, FavoriteStateConditions.EXTERNALAPPLIED)}\n \n \n )}\n {\n handleStatusChange(event, FavoriteStateConditions.THUMB_UP);\n }}\n >\n \n {statusIconThumbUp()}\n \n {FavoriteStateConditionText(t, FavoriteStateConditions.THUMB_UP)}\n \n \n \n {\n handleStatusChange(event, FavoriteStateConditions.THUMB_DOWN);\n }}\n >\n \n {statusIconThumbDown()}\n \n {FavoriteStateConditionText(\n t,\n FavoriteStateConditions.THUMB_DOWN\n )}\n \n \n \n \n {fetchingUpdateFavorite && }\n \n );\n};\n\nexport default withAccessControl(\n FavoriteStatus,\n ACL_COMPONENTS.FAVORITE_STATUS\n);\n","import React, { useState, useContext, useEffect } from \"react\";\nimport clsx from \"clsx\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport GlobalContext from \"../../lib/GlobalContext\";\nimport { useTranslation } from \"react-i18next\";\nimport TextField from \"@material-ui/core/TextField\";\nimport Button from \"@material-ui/core/Button\";\nimport List from \"@material-ui/core/List\";\nimport ListItem from \"@material-ui/core/ListItem\";\nimport ListItemText from \"@material-ui/core/ListItemText\";\nimport Grid from \"@material-ui/core/Grid\";\nimport EditIcon from \"@material-ui/icons/Edit\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport DeleteIcon from \"@material-ui/icons/Delete\";\nimport RestoreFromTrashIcon from \"@material-ui/icons/RestoreFromTrash\";\nimport { FavoriteStateConditionText } from \"./FavoriteStateConditions\";\nimport Paper from \"@material-ui/core/Paper\";\nimport withAccessControl from \"../HOC/AccessControl\";\nimport { useMutation, useQuery } from \"urql\";\nimport CircularProgress from \"@material-ui/core/CircularProgress\";\nimport { green } from \"@material-ui/core/colors\";\nimport { MESSAGE_TYPES } from \"../PopupMessages\";\nimport merge from \"deepmerge\";\nimport { navigate } from \"hookrouter\";\nimport { ACL_COMPONENTS } from \"../../config\";\nimport FormatHelper from \"../../lib/FormatHelper\";\nimport moment from \"moment\";\nimport ExternalErrorLogger from \"@ennit/react-external-errorlogger\";\n\nconst useStyles = makeStyles((theme) => ({\n removed: {\n opacity: 0.5,\n },\n undo: {\n color: theme.palette.primary.main,\n textDecoration: \"underline\",\n },\n link: {\n cursor: \"pointer\",\n },\n breakLine: {\n margin: 0,\n whiteSpace: \"pre-line\",\n \"& span\": {\n fontSize: 16,\n },\n },\n paper: {\n margin: 0,\n boxShadow: \"none\",\n },\n buttonProgress: {\n color: green[500],\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n marginTop: -12,\n marginLeft: -12,\n },\n button: {\n marginTop: -30,\n marginBottom: 10,\n color: \"#fff\",\n fontWeight: \"bold\",\n },\n textarea: {\n marginTop: 30,\n marginBottom: 40,\n \"& div\": {\n borderColor: \"#999\",\n },\n },\n input: {\n \"&::placeholder\": {\n color: \"#525252\",\n opacity: \"1\",\n },\n },\n list: {\n marginTop: 20,\n padding: \"8px 16px 24px !important\",\n boxShadow:\n \"0px 2px 1px -1px rgba(0,0,0,0.2), 0px 1px 1px 0px rgba(0,0,0,0.14), 0px 1px 3px 0px rgba(0,0,0,0.12)\",\n borderRadius: \"4px\",\n },\n item: {\n width: \"100%\",\n padding: \"0 !important\",\n \"& button\": {\n marginTop: 20,\n },\n \"& div\": {\n boxShadow: \"none\",\n border: 0,\n },\n },\n statusText: {\n \"& span\": {\n fontSize: 14,\n },\n },\n statusDate: {\n flex: \"inherit\",\n width: 85,\n },\n statusHolder: {\n marginTop: 20,\n padding: 0,\n },\n}));\n\nconst createFavoriteNoteMutation = `\n mutation CreateFavoriteNoteMutation (\n $favoriteHashID: String,\n $text: String\n ) {\n createFavoriteNote (FavoriteHashID: $favoriteHashID, Text: $text) {\n HashID\n FavoriteHashID\n Text\n Created\n Removed\n } \n }\n`;\n\nconst updateFavoriteNoteMutation = `\n mutation UpdateFavoriteNoteMutation (\n $hashID: String,\n $text: String,\n $removed: Boolean\n ) {\n updateFavoriteNote (HashID: $hashID, Text: $text, Removed: $removed) {\n HashID\n FavoriteHashID\n Text\n Created\n Removed\n }\n }\n`;\n\nconst queryFavorites = `\n query ReadFavorites (\n $userHashID: ID,\n $filterFor: [String]\n ) {\n readFavorites(ID: $userHashID, ConstructionTypeContains: $filterFor) {\n HashID\n ProjectHashID\n Removed\n State\n Canton\n Calculated_distance\n Content\n Final_title\n Import_date\n Date\n Applied\n Construction_site {\n Address {\n Street\n Number\n Zip\n City\n Geo {\n lat\n lon\n }\n }\n }\n Building_owner {\n Name\n Address {\n Street\n Number\n Zip\n City\n Geo {\n lat\n lon\n }\n }\n }\n Project_management {\n Name\n Phone\n Email\n Website\n Email_other\n Address {\n Street\n Number\n Zip\n City\n Geo {\n lat\n lon\n }\n }\n }\n StateHistory {\n edges {\n node {\n Created\n State\n }\n }\n }\n Notes {\n edges {\n node {\n HashID\n Text\n Created\n Removed\n }\n }\n }\n }\n }\n`;\n\n/**\n * FavoriteDetails\n *\n * @returns {*}\n * @constructor\n */\nconst FavoriteDetailAddition = (props) => {\n const classes = useStyles();\n const {\n setFavoriteData,\n setMessage,\n user,\n unsetUser,\n token,\n unsetToken,\n } = useContext(GlobalContext);\n const { t } = useTranslation();\n const blankNote = {\n id: null,\n text: \"\",\n date: \"\",\n };\n const [newNote, setNewNote] = useState(blankNote);\n const [editNote, setEditNote] = useState(blankNote);\n const [formerResult, setFormerResult] = useState([]);\n\n const [{ fetchingCreateFavoriteNote }, executeCreateFavoriteNoteMutation] =\n useMutation(createFavoriteNoteMutation);\n\n const [{ fetchingUpdateFavoriteNote }, executeUpdateFavoriteNoteMutation] =\n useMutation(updateFavoriteNoteMutation);\n\n // GraphQL query for favorites, gets triggered by calling \"executeFavoritesQuery()\"\n const [result, executeFavoritesQuery] = useQuery({\n query: queryFavorites,\n variables: {\n userHashID: user.getData().hashID,\n filterFor: props.filterFor,\n },\n requestPolicy: \"network-only\",\n pause: true,\n });\n\n let notes = [];\n if (props.favorite.Notes.edges) {\n notes = props.favorite.Notes.edges;\n }\n\n let stateHistory = [];\n if (props.favorite.StateHistory.edges) {\n stateHistory = props.favorite.StateHistory.edges;\n }\n\n // GraphQL trigger and result handling\n useEffect(() => {\n if (!result.fetching) {\n if (result.error) {\n // Check if the user need to be logged out\n if (result.error.message.indexOf(\"User forced logout\") !== -1) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.user.forced.logout\"));\n unsetUser();\n unsetToken();\n navigate(\"/\");\n } else {\n // The query did not return any results!\n if (formerResult.length !== 0) {\n setFormerResult([]);\n }\n }\n } else {\n // Query not fetching right now\n if (\n typeof result.data !== \"undefined\" &&\n typeof result.data.readFavorites !== \"undefined\"\n ) {\n // Add the favorites to the global context\n setFavoriteData(result.data.readFavorites);\n }\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [result])\n\n /**\n * save new note change to state\n *\n * @param event\n */\n const handleAddNote = (event) => {\n setNewNote(Object.assign({}, newNote, { text: event.target.value }));\n };\n\n /**\n * save add note-state to context/api\n */\n const handleAddNoteSubmit = () => {\n executeCreateFavoriteNoteMutation({\n favoriteHashID: props.favorite.HashID,\n text: newNote.text,\n }).then((result) => {\n if (result.error) {\n // Check if the user need to be logged out\n if (result.error.message.indexOf(\"User forced logout\") !== -1) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.user.forced.logout\"));\n unsetUser();\n unsetToken();\n navigate(\"/\");\n } else {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.save\"));\n ExternalErrorLogger.log({\n text: \"Error add note on FavoriteDetailAddition\",\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n errorMessage: JSON.stringify(result.error),\n },\n });\n }\n } else {\n setMessage(MESSAGE_TYPES.INFO, t(\"favorites.label.details.note.added\"));\n // Reset the note\n setNewNote(blankNote);\n\n executeFavoritesQuery();\n }\n });\n };\n\n /**\n * save edited note change to state\n *\n * @param note\n */\n const handleEditNote = (note) => {\n if (editNote.id !== null) {\n if (note.id !== editNote.id) {\n // End text-area-mode\n setEditNote(blankNote);\n // Set current text-area-mode\n setEditNote(note);\n } else {\n // End text-area-mode\n setEditNote(blankNote);\n }\n } else {\n // Start text-area-mode\n setEditNote(note);\n }\n };\n\n /**\n * reset edit mode if a new note is about to be added\n */\n const handleNewNoteFocus = () => {\n setEditNote(blankNote);\n };\n\n /**\n * update edited note to state\n *\n * @param event\n */\n const handleUpdateEditNote = (event) => {\n const mergedNote = merge(editNote, { node: { Text: event.target.value } });\n setEditNote(mergedNote);\n };\n\n /**\n * save edit note-state to context/api\n */\n const handleEditNoteSubmit = () => {\n executeUpdateFavoriteNoteMutation({\n hashID: editNote.node.HashID,\n text: editNote.node.Text,\n }).then((result) => {\n if (result.error) {\n // Check if the user need to be logged out\n if (result.error.message.indexOf(\"User forced logout\") !== -1) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.user.forced.logout\"));\n unsetUser();\n unsetToken();\n navigate(\"/\");\n } else {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.save\"));\n ExternalErrorLogger.log({\n text: \"Error edit note on FavoriteDetailAddition\",\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n errorMessage: JSON.stringify(result.error),\n },\n });\n }\n } else {\n setMessage(\n MESSAGE_TYPES.INFO,\n t(\"favorites.label.details.note.changed\")\n );\n // Reset the note\n setEditNote(blankNote);\n executeFavoritesQuery();\n }\n });\n };\n\n /**\n * delete note\n *\n * @param deletedNoteId\n */\n const handleDeleteNote = (deletedNoteId) => {\n executeUpdateFavoriteNoteMutation({\n hashID: deletedNoteId,\n removed: true,\n }).then((result) => {\n if (result.error) {\n // Check if the user need to be logged out\n if (result.error.message.indexOf(\"User forced logout\") !== -1) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.user.forced.logout\"));\n unsetUser();\n unsetToken();\n navigate(\"/\");\n } else {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.save\"));\n ExternalErrorLogger.log({\n text: \"Error delete note on FavoriteDetailAddition\",\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n errorMessage: JSON.stringify(result.error),\n },\n });\n }\n } else {\n setMessage(MESSAGE_TYPES.INFO, t(\"favorites.label.removed\"));\n // Reset the note\n setEditNote(blankNote);\n executeFavoritesQuery();\n }\n });\n };\n\n /**\n * restore note\n *\n * @param deletedNoteId\n */\n const handleRestoreNote = (deletedNoteId) => {\n executeUpdateFavoriteNoteMutation({\n hashID: deletedNoteId,\n removed: false,\n }).then((result) => {\n if (result.error) {\n // Check if the user need to be logged out\n if (result.error.message.indexOf(\"User forced logout\") !== -1) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.user.forced.logout\"));\n unsetUser();\n unsetToken();\n navigate(\"/\");\n } else if (\n result.error.message.includes(\n `Favorite note with HashID '${deletedNoteId}' not found`\n )\n ) {\n setMessage(MESSAGE_TYPES.INFO, t(\"error.item.already.deleted\"));\n } else {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.save\"));\n ExternalErrorLogger.log({\n text: \"Error restore note on FavoriteDetailAddition\",\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n errorMessage: JSON.stringify(result.error),\n },\n });\n }\n } else {\n setMessage(MESSAGE_TYPES.INFO, t(\"favorites.label.details.note.added\"));\n // Reset the note\n setEditNote(blankNote);\n executeFavoritesQuery();\n }\n });\n };\n\n /**\n * edit mode of a note\n */\n const EditNote = () => {\n return (\n <>\n \n {editNote.node.Text.length > 0 && (\n \n {t(\"general.label.save\")}\n \n )}\n \n );\n };\n\n /**\n * handleNote\n *\n * @param historyEntry\n * @returns {*}\n */\n const handleNote = (historyEntry) => {\n let isRight = false;\n if (editNote.node) {\n isRight = editNote.node.HashID === historyEntry.node.HashID;\n }\n\n return editNote.node && isRight ? (\n EditNote()\n ) : (\n \n {!historyEntry.node.Removed && (\n \n )}\n {historyEntry.node.Removed && (\n <>\n \n {t(\"favorites.label.removed\")}\n \n  \n {\n handleRestoreNote(historyEntry.node.HashID);\n }}\n >\n {t(\"general.label.undo\")}\n \n \n )}\n \n );\n };\n\n /**\n * favorite details (notes and states-history)\n */\n const HistoryList = () => {\n const historyListItems = [];\n const historyMerged = [];\n\n for (let i = 0; i < stateHistory.length; i++) {\n const state = stateHistory[i];\n state.type = \"state\";\n historyMerged.push(state);\n }\n\n for (let i = 0; i < notes.length; i++) {\n const note = notes[i];\n note.type = \"note\";\n historyMerged.push(note);\n }\n\n // Sort history-entries by date\n historyMerged.sort((a, b) => {\n const aDate = moment(a.node.Created).unix();\n const bDate = moment(b.node.Created).unix();\n return bDate > aDate ? 1 : bDate < aDate ? -1 : 0;\n });\n\n // Put all notes and states into a single storage for sorting\n for (let i = 0; i < historyMerged.length; i++) {\n const historyEntry = historyMerged[i];\n\n // In case we do not have an id yet due to api request-time,\n // generate a temporary random id\n if (historyEntry.id === null) {\n historyEntry.id = Math.random().toString(36).substring(7);\n }\n\n // TODO: Add en-US variant\n // Localize date\n const dateLocalized = FormatHelper.formatDate(historyEntry.node.Created);\n\n if (historyEntry.type === \"state\") {\n // State\n historyListItems.push(\n \n \n \n \n );\n } else {\n // Note (may be editable)\n historyListItems.push(\n \n \n \n \n \n \n \n \n {!historyEntry.node.Removed && (\n {\n handleEditNote(historyEntry);\n }}\n >\n \n \n )}\n {historyEntry.node.Removed && (\n \n \n \n )}\n \n \n {!historyEntry.node.Removed && (\n {\n handleDeleteNote(historyEntry.node.HashID);\n }}\n >\n \n \n )}\n {historyEntry.node.Removed && (\n {\n handleRestoreNote(historyEntry.node.HashID);\n }}\n >\n \n \n )}\n \n \n \n \n {handleNote(historyEntry)}\n \n \n \n );\n }\n }\n\n return {historyListItems};\n };\n\n /**\n * return\n */\n return (\n <>\n \n {newNote.text.length > 0 && (\n \n {t(\"general.label.save\")}\n \n )}\n {(fetchingCreateFavoriteNote || fetchingUpdateFavoriteNote) && (\n \n )}\n {HistoryList()}\n \n );\n};\n\nexport default withAccessControl(\n FavoriteDetailAddition,\n ACL_COMPONENTS.FAVORITE_DETAIL_ADDITION\n);\n","import { apiTld, companyDirectoryPath } from '../config'\n\n/**\n * Parses application text\n *\n * @param user\n * @param applicationTextTemplate\n * @param businessActivities\n * @param favorite\n * @param conjunctionWord\n * @returns string\n */\nconst parseApplicationText = (\n user,\n applicationTextTemplate,\n businessActivities,\n favorite,\n conjunctionWord\n) => {\n const userData = user.getData()\n const companyData = userData.company\n\n let competencesString = ''\n let applicationTextParsed = applicationTextTemplate\n\n // Build the competence string (the most complex substitution)\n if (applicationTextTemplate !== null) {\n if (applicationTextTemplate.search('{{FIRMEN-KOMPETENZEN}}') !== -1) {\n if (companyData.branchCategory > 0) {\n if (companyData.branchSubs.length > 0) {\n // const conjunctionWord = t('general.label.and')\n const businessSpecialties = {}\n\n // Fetch the businesses titles (we dont wanna print ids)\n if (\n businessActivities &&\n businessActivities.BusinessSpecialities.edges.length > 0\n ) {\n for (\n let i = 0;\n i < businessActivities.BusinessSpecialities.edges.length;\n i++\n ) {\n const specialty = businessActivities.BusinessSpecialities.edges[i]\n businessSpecialties[specialty.node.ID] = specialty.node.Title\n }\n }\n\n // Multiple specialties or not, thats the question...\n if (companyData.branchSubs.length > 1) {\n // Multiple spcialties\n const lastElementIndex = companyData.branchSubs.length - 1\n const commaElements = companyData.branchSubs.slice(\n 0,\n lastElementIndex\n )\n let lastElement = companyData.branchSubs.slice(lastElementIndex)\n\n // Replcace ids with titles\n for (let i = 0; i < commaElements.length; i++) {\n if (\n typeof businessSpecialties[commaElements[i]] !== 'undefined'\n ) {\n commaElements[i] = businessSpecialties[commaElements[i]]\n }\n }\n\n // Replcace id with title\n if (typeof businessSpecialties[lastElement] !== 'undefined') {\n lastElement = businessSpecialties[lastElement]\n }\n\n // Concat the string\n competencesString = `${commaElements.join(\n ', '\n )} ${conjunctionWord} ${lastElement}`\n } else {\n // Replcace id with title\n if (\n typeof businessSpecialties[companyData.branchSubs[0]] !==\n 'undefined'\n ) {\n competencesString = businessSpecialties[companyData.branchSubs[0]]\n }\n }\n } else {\n // No specialties, just the branch\n competencesString = businessActivities.Title\n }\n }\n }\n\n // Parse {{FIRMEN-KOMPETENZEN}}\n if (competencesString !== '') {\n applicationTextParsed = applicationTextParsed.replaceAll(\n '{{FIRMEN-KOMPETENZEN}}',\n competencesString\n )\n }\n\n // Parse {{PROJEKT-NAME}}\n if (\n typeof favorite.Final_title !== 'undefined' &&\n favorite.Final_title !== ''\n ) {\n applicationTextParsed = applicationTextParsed.replaceAll(\n '{{PROJEKT-NAME}}',\n favorite.Final_title\n )\n }\n\n // Parse {{PROJEKT-ORT}}\n if (\n typeof favorite.Construction_site !== 'undefined' &&\n favorite.Construction_site.Address.City !== ''\n ) {\n applicationTextParsed = applicationTextParsed.replaceAll(\n '{{PROJEKT-ORT}}',\n favorite.Construction_site.Address.City\n )\n }\n\n // Parse {{FIRMEN-GRUENDUNGSJAHR}}\n if (\n typeof companyData.foundingYear !== 'undefined' &&\n companyData.foundingYear > 0\n ) {\n applicationTextParsed = applicationTextParsed.replaceAll(\n '{{FIRMEN-GRUENDUNGSJAHR}}',\n companyData.foundingYear\n )\n }\n\n // Parse {{FIRMEN-NAME}}\n if (typeof companyData.name !== 'undefined' && companyData.name !== '') {\n applicationTextParsed = applicationTextParsed.replaceAll(\n '{{FIRMEN-NAME}}',\n companyData.name\n )\n }\n\n // Parse {{FIRMEN-MICROSITE}}\n if (\n typeof companyData.urlSegment !== 'undefined' &&\n companyData.urlSegment !== ''\n ) {\n applicationTextParsed = applicationTextParsed.replaceAll(\n '{{FIRMEN-MICROSITE}}',\n apiTld + companyDirectoryPath + companyData.urlSegment\n )\n }\n\n // Parse {{FIRMEN-TELEFON}}\n if (typeof companyData.phone !== 'undefined' && companyData.phone !== '') {\n applicationTextParsed = applicationTextParsed.replaceAll(\n '{{FIRMEN-TELEFON}}',\n companyData.phone\n )\n }\n\n // Parse {{USER-VORNAME}}\n if (\n typeof userData.firstName !== 'undefined' &&\n userData.firstName !== ''\n ) {\n applicationTextParsed = applicationTextParsed.replaceAll(\n '{{USER-VORNAME}}',\n userData.firstName\n )\n }\n\n // Parse {{USER-NACHNAME}}\n if (typeof userData.lastName !== 'undefined' && userData.lastName !== '') {\n applicationTextParsed = applicationTextParsed.replaceAll(\n '{{USER-NACHNAME}}',\n userData.lastName\n )\n }\n }\n\n return applicationTextParsed\n}\n\nexport default parseApplicationText\n","/**\n * FormValueErrorsBuilder\n *\n * @param error\n * @param t\n * @constructor\n */\nconst FormValueErrorsBuilder = (error, t) => {\n const formErrors = {}\n /* eslint-disable */\n error.details.map(errorItem => {\n let type = errorItem.type.slice(\n errorItem.type.indexOf('.'),\n errorItem.type.length\n )\n let path = errorItem.path[0]\n // when checking if a checkbox is checked the type is 'invalid' so we use the path value for the text key instead\n let errorKey =\n type === '.invalid' ||\n type === '.base' ||\n type === '.only' ||\n path === 'images'\n ? '.' + path\n : type\n\n formErrors[path] = {\n hasError: true,\n message: t('error.form' + errorKey)\n }\n })\n /* eslint-enable */\n return formErrors\n}\n\nexport default FormValueErrorsBuilder\n","import React, { useContext, useEffect, useState } from 'react'\nimport DialogTitle from '@material-ui/core/DialogTitle'\nimport IconButton from '@material-ui/core/IconButton'\nimport CloseIcon from '@material-ui/icons/Close'\nimport DialogContent from '@material-ui/core/DialogContent'\nimport Grid from '@material-ui/core/Grid'\nimport clsx from 'clsx'\nimport TextField from '@material-ui/core/TextField'\nimport Button from '@material-ui/core/Button'\nimport CircularProgress from '@material-ui/core/CircularProgress'\nimport Dialog from '@material-ui/core/Dialog'\nimport GlobalContext from '../../lib/GlobalContext'\nimport { useTranslation } from 'react-i18next'\nimport { makeStyles } from '@material-ui/core'\nimport { MESSAGE_TYPES } from '../PopupMessages'\nimport { navigate } from 'hookrouter'\nimport ExternalErrorLogger from '@ennit/react-external-errorlogger'\nimport { FavoriteStateConditions } from './FavoriteStateConditions'\nimport { useMutation, useQuery } from 'urql'\nimport parseApplicationText from '../../lib/Application'\nimport GetSafe from '../../lib/GetSafe'\nimport FormValueErrorsBuilder from '../../lib/FormValueErrorsBuilder'\nimport Joi from '@hapi/joi'\nimport MenuItem from '@material-ui/core/MenuItem'\nimport {\n DOSSIER_AVAILABLE_LOCALES,\n DEFAULT_LOCALE_FOR_LANGUAGE\n} from '../../config'\n\nconst useStyles = makeStyles(theme => ({\n dialogRoot: {\n flexGrow: 1\n },\n dialogTitle: {\n display: 'flex',\n justifyContent: 'flex-end',\n alignItems: 'flex-end',\n paddingBottom: 0\n },\n dialog: {\n width: '100%',\n paddingBottom: 56,\n '&::before': theme.watermarkLogo,\n [theme.breakpoints.down('sm')]: {\n padding: 20\n }\n },\n gridContainer: {\n width: '100%',\n maxWidth: 1280,\n padding: '16px 24px',\n [theme.breakpoints.down('sm')]: {\n alignItems: 'flex-start'\n }\n },\n gridItem: {\n width: '50%',\n padding: '8px 0',\n [theme.breakpoints.down('sm')]: {\n width: '100%'\n }\n },\n itemHeader: {\n maxWidth: 400,\n paddingTop: 44,\n paddingBottom: 24,\n [theme.breakpoints.down('sm')]: {\n paddingTop: 20,\n paddingBottom: 20\n }\n },\n title: {\n margin: 0,\n fontSize: 24,\n lineHeight: '30px',\n textAlign: 'center',\n [theme.breakpoints.down('sm')]: {\n textAlign: 'left'\n }\n },\n startButton: {\n width: '100%',\n color: '#fff',\n fontWeight: 'bold'\n }\n}))\n\nconst createFavoriteNoteMutation = `\n mutation CreateFavoriteNoteMutation (\n $favoriteHashID: String,\n $text: String\n ) {\n createFavoriteNote (FavoriteHashID: $favoriteHashID, Text: $text) {\n HashID\n FavoriteHashID\n Text\n Created\n Removed\n } \n }\n`\n\nconst updateFavoriteMutation = `\n mutation UpdateFavorite (\n $hashID: String,\n $state: String,\n $applied: Boolean\n ) {\n updateFavorite (HashID: $hashID, State: $state, Applied: $applied) {\n HashID\n }\n }\n`\n\nconst queryFavorites = `\n query ReadFavorites (\n $userHashID: ID,\n $filterFor: [String]\n ) {\n readFavorites(ID: $userHashID, ConstructionTypeContains: $filterFor) {\n HashID\n ProjectHashID\n Removed\n State\n Canton\n Calculated_distance\n Content\n Final_title\n Import_date\n Date\n Applied\n Construction_site {\n Address {\n Street\n Number\n Zip\n City\n Geo {\n lat\n lon\n }\n }\n }\n Building_owner {\n Name\n Address {\n Street\n Number\n Zip\n City\n Geo {\n lat\n lon\n }\n }\n }\n Project_management {\n Name\n Phone\n Email\n Website\n Email_other\n Address {\n Street\n Number\n Zip\n City\n Geo {\n lat\n lon\n }\n }\n }\n StateHistory {\n edges {\n node {\n Created\n State\n }\n }\n }\n Notes {\n edges {\n node {\n HashID\n Text\n Created\n Removed\n }\n }\n }\n }\n }\n`\n\nconst queryBusinessActivities = `\n query ReadBusinessActivities ($id: ID)\n {\n readBusinessActivities (\n sortBy: [{field: Sort, direction: ASC}],\n Filter: {\n ID__in: [$id]\n }\n ){\n ID,\n Title,\n NogaCode,\n BusinessSpecialities {\n edges {\n node {\n ID,\n Title\n }\n }\n }\n }\n }\n`\n\nconst queryDossierTemplates = `\n query ReadDossierTemplates (\n $language: String!\n ) {\n readDossierTemplates(Language: $language) {\n HashID\n Email\n Locale\n TemplateName\n BusinessActivityID\n MicrositeEmailApplicationText\n BusinessSpecialities {\n edges {\n node {\n ID\n Title\n }\n }\n }\n MicrositeImages {\n edges {\n node {\n Src\n Title\n Alt\n }\n }\n }\n MicrositeReferences {\n edges {\n node {\n Title\n Content\n }\n }\n }\n }\n }\n`\n\nconst createApplicationSubmissionMutation = `\n mutation (\n $SubmissionType: String!, \n $Email: String,\n $RecipientName: String,\n $ApplicationText: String!,\n $ProjectIDHash: String!,\n $SubjectLine: String!,\n $ProjectName: String!,\n $ProjectLocation: String!,\n $Canton: String,\n $Type_of_building: String,\n $Type_of_construction: String,\n $TemplateHashID: String,\n $Language: String\n ) {\n submitApplication(\n SubmissionType: $SubmissionType, \n Email: $Email, \n RecipientName: $RecipientName,\n ApplicationText: $ApplicationText, \n ProjectIDHash: $ProjectIDHash,\n SubjectLine: $SubjectLine,\n ProjectName: $ProjectName,\n ProjectLocation: $ProjectLocation,\n Canton: $Canton,\n TypeOfBuilding: $Type_of_building,\n TypeOfConstruction: $Type_of_construction,\n TemplateHashID: $TemplateHashID,\n Language: $Language\n ) {\n Status\n Error\n }\n }\n`\n\nconst initialFormValueErrorsState = {\n ApplicationText: { hasError: false, message: '' },\n SubjectLine: { hasError: false, message: '' },\n DossierTemplate: { hasError: false, message: '' },\n Recipient: { hasError: false, message: '' }\n}\n\nconst initialLanguage = 'de'\n\n/**\n * FavoriteEmailApplyDialog\n *\n * @param props\n * @returns {JSX.Element}\n * @constructor\n */\nconst FavoriteEmailApplyDialog = props => {\n const classes = useStyles()\n const {\n emailApplyDialog,\n setEmailApplyDialog,\n favoriteHashId,\n filterFor,\n setFavoriteData,\n favorite\n } = props\n const { user, token, setMessage, unsetUser, unsetToken } =\n useContext(GlobalContext)\n const { t } = useTranslation()\n const [businessActivities, setBusinessActivities] = useState(false)\n const [emailApplicationText, setEmailApplicationText] = useState(null)\n const [sendEmailFetching, setSendEmailFetching] = useState(false)\n const [subjectLine, setSubjectLine] = useState('')\n const [formValueErrors, setFormValueErrors] = useState(\n initialFormValueErrorsState\n )\n const [emailRecipient, setEmailRecipient] = useState(null)\n const [selectedDossierTemplate, setSelectedDossierTemplate] = useState(null)\n const [dossierTemplates, setDossierTemplates] = useState([])\n const [dossierTemplatesByHashID, setDossierTemplatesByHashID] = useState([])\n const [selectedLanguage, setSelectedLanguage] = useState(initialLanguage)\n const [enableLanguageSelector, setEnableLanguageSelector] = useState(false)\n\n /**\n * Joi validation schema\n */\n const schema = Joi.object({\n ApplicationText: Joi.string().required(),\n SubjectLine: Joi.string().required(),\n DossierTemplate:\n dossierTemplates.length > 1\n ? Joi.string().allow(null).required()\n : Joi.string().allow(null),\n Recipient: Joi.string()\n .required()\n .email({ tlds: { allow: false } })\n })\n\n /* eslint-disable */\n const [{ fetchingCreateFavoriteNote }, executeCreateFavoriteNoteMutation] =\n useMutation(createFavoriteNoteMutation)\n\n const [{ fetchingUpdateFavorite }, executeUpdateFavoriteMutation] =\n useMutation(updateFavoriteMutation)\n\n const [\n { fetchingUpdateApplicationSubmission },\n executeApplicationSubmissionMutation\n ] = useMutation(createApplicationSubmissionMutation)\n /* eslint-enable */\n\n // GraphQL query for favorites, gets triggered by calling \"executeFavoritesQuery()\"\n const [result, executeFavoritesQuery] = useQuery({\n query: queryFavorites,\n variables: {\n userHashID: user.getData().hashID,\n filterFor: filterFor\n },\n requestPolicy: 'network-only',\n pause: true\n })\n\n // GraphQL query for business-activities, gets triggered by calling \"executeBusinessActivitiesQuery()\"\n const [queryBusinessActivitiesResult, executeBusinessActivitiesQuery] =\n useQuery({\n query: queryBusinessActivities,\n variables: {\n id: user.getData().company.branchCategory\n },\n requestPolicy: 'cache-and-network',\n pause: true\n })\n\n // GraphQL query for dossier-templates\n const [queryDossierTemplatesResult] = useQuery({\n query: queryDossierTemplates,\n variables: {\n language: 'all'\n },\n requestPolicy: 'cache-and-network'\n })\n\n useEffect(() => {\n executeBusinessActivitiesQuery()\n }, [executeBusinessActivitiesQuery])\n\n /**\n * setApplicationText useEffect\n */\n useEffect(() => {\n if (businessActivities) {\n let text = user.getData().company.micrositeEmailApplicationText\n\n if (emailApplicationText !== null) {\n text = emailApplicationText\n }\n\n setEmailApplicationText(parseEmailApplicationText(text))\n }\n // eslint-disable-next-line\n }, [emailApplicationText, user, businessActivities])\n\n useEffect(() => {\n setDossierTemplates([\n ...[{ HashID: null }],\n ...user.getData().dossierTemplates\n ])\n }, [user])\n\n useEffect(() => {\n setSelectedDossierTemplate(dossierTemplatesList()[0].props.value)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [dossierTemplates])\n\n /**\n * In case selected dossier-template changes to a custom one, enable the language-selector\n */\n useEffect(() => {\n let state = false\n\n if (GetSafe(() => selectedDossierTemplate.HashID, false)) {\n state = true\n }\n\n setEnableLanguageSelector(state)\n }, [selectedDossierTemplate])\n\n /**\n * Triggers as soon as the selected dossier-template has been changed\n */\n useEffect(() => {\n let applicationText = null\n let selectedDossierTemplateLangDependant = null\n\n if (selectedDossierTemplate) {\n selectedDossierTemplateLangDependant =\n getDossierTemplateByHashIdAndLanguage(\n selectedDossierTemplate.HashID,\n selectedLanguage\n )\n applicationText =\n selectedDossierTemplateLangDependant.MicrositeEmailApplicationText\n }\n\n if (!applicationText) {\n applicationText = user.getData().company.micrositeEmailApplicationText\n }\n\n setEmailApplicationText(parseEmailApplicationText(applicationText))\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectedDossierTemplate, selectedLanguage, businessActivities])\n\n /**\n * Read the query result for dossier-templates and assign them to the application-dropdown\n */\n useEffect(() => {\n const dossiersByLocale = {}\n const dossiersByHashID = {}\n const languageDependantDossierTemplates = []\n\n if (!queryDossierTemplatesResult.fetching) {\n if (\n GetSafe(\n () => queryDossierTemplatesResult.data.readDossierTemplates,\n false\n )\n ) {\n if (queryDossierTemplatesResult.data.readDossierTemplates.length > 0) {\n queryDossierTemplatesResult.data.readDossierTemplates.forEach(\n dossierTemplate => {\n if (\n typeof DOSSIER_AVAILABLE_LOCALES[dossierTemplate.Locale] !==\n 'undefined'\n ) {\n languageDependantDossierTemplates.push(dossierTemplate)\n\n if (dossierTemplate.Locale) {\n if (\n typeof dossiersByLocale[dossierTemplate.Locale] ===\n 'undefined'\n ) {\n dossiersByLocale[dossierTemplate.Locale] = []\n }\n\n dossiersByLocale[dossierTemplate.Locale].push(dossierTemplate)\n }\n\n if (dossierTemplate.HashID) {\n if (\n typeof dossiersByHashID[dossierTemplate.HashID] ===\n 'undefined'\n ) {\n dossiersByHashID[dossierTemplate.HashID] = []\n }\n\n dossiersByHashID[dossierTemplate.HashID].push(dossierTemplate)\n }\n\n if (\n selectedDossierTemplate &&\n dossierTemplate.HashID === selectedDossierTemplate.HashID\n ) {\n setSelectedDossierTemplate(dossierTemplate)\n }\n }\n }\n )\n }\n }\n }\n\n setDossierTemplatesByHashID(dossiersByHashID)\n\n setDossierTemplates([\n ...[{ HashID: null }],\n ...getUniqueDossierTemplatesByHashID(dossiersByHashID)\n ])\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [queryDossierTemplatesResult])\n\n /**\n * Handle dossiert-template change\n *\n * @param event\n */\n const handleDossierTemplateChange = event => {\n let dossierTemplate = null\n\n if (event.target.value === null || event.target.value === 0) {\n dossierTemplate = event.target.value\n } else {\n dossierTemplate = getDossierTemplateByHashIdAndLanguage(\n event.target.value.HashID,\n initialLanguage\n )\n }\n\n setSelectedLanguage(initialLanguage)\n setSelectedDossierTemplate(dossierTemplate)\n }\n\n /**\n * Handle language change\n *\n * @param {*} event\n */\n const handleSelectedLanguageChange = event => {\n setSelectedLanguage(event.target.value)\n }\n\n /**\n * Taks a array of templates and removes duplicates by HashID\n * In case a duplicate has different languages, it keeps the current selected language duplicate\n *\n * @param {*} dossiersByHashID\n * @returns array\n */\n const getUniqueDossierTemplatesByHashID = dossiersByHashID => {\n const uniqueDossierTemplates = []\n\n Object.keys(dossiersByHashID).forEach(index => {\n if (dossiersByHashID[index].length > 1) {\n let foundForLanguage = false\n\n dossiersByHashID[index].forEach(dossierTemplate => {\n if (\n dossierTemplate.Locale ===\n DEFAULT_LOCALE_FOR_LANGUAGE[selectedLanguage]\n ) {\n uniqueDossierTemplates.push(dossierTemplate)\n foundForLanguage = true\n }\n })\n\n if (!foundForLanguage) {\n uniqueDossierTemplates.push(dossiersByHashID[index][0])\n }\n } else {\n uniqueDossierTemplates.push(dossiersByHashID[index][0])\n }\n })\n\n return uniqueDossierTemplates\n }\n\n /**\n * Fetch the selected dossier-template for the selected language from the pool#\n *\n * @param {*} hashID\n * @param {*} language\n * @returns\n */\n const getDossierTemplateByHashIdAndLanguage = (hashID, language) => {\n // Get the selected dossier-template for the selected language\n for (let i = 0; i < dossierTemplatesByHashID[hashID].length; i++) {\n if (\n dossierTemplatesByHashID[hashID][i].HashID === hashID &&\n DOSSIER_AVAILABLE_LOCALES[\n dossierTemplatesByHashID[hashID][i].Locale\n ] === language\n ) {\n return dossierTemplatesByHashID[hashID][i]\n }\n }\n\n // Since there is no dossier-template for the requested language,\n // fallback to first available dossier-template and its language\n setSelectedLanguage(\n DOSSIER_AVAILABLE_LOCALES[dossierTemplatesByHashID[hashID][0].Locale]\n )\n return dossierTemplatesByHashID[hashID][0]\n }\n\n /**\n * Generate available language-items for dropdown based on selected dossier-template\n *\n * @returns\n */\n const getDossierTemplateAvailableLanguages = () => {\n const avalableLanguages = {}\n const menuItems = []\n\n if (selectedDossierTemplate === null || selectedDossierTemplate === 0) {\n return menuItems\n }\n\n dossierTemplatesByHashID[selectedDossierTemplate.HashID].forEach(\n dossierTemplate => {\n if (\n typeof DOSSIER_AVAILABLE_LOCALES[dossierTemplate.Locale] !==\n 'undefined'\n ) {\n avalableLanguages[DOSSIER_AVAILABLE_LOCALES[dossierTemplate.Locale]] =\n dossierTemplate.Locale\n }\n }\n )\n\n if (avalableLanguages['de']) {\n menuItems.push(\n \n Deutsch\n \n )\n }\n\n if (avalableLanguages['fr']) {\n menuItems.push(\n \n Französisch\n \n )\n }\n\n return menuItems\n }\n\n useEffect(() => {\n setEmailRecipient(favorite.Project_management.Email)\n }, [favorite.Project_management.Email])\n\n /**\n * Parse the application text and replace the placeholder with actual values\n */\n const parseEmailApplicationText = emailApplicationTextTemplate => {\n return parseApplicationText(\n user,\n emailApplicationTextTemplate,\n businessActivities,\n favorite,\n t('general.label.and')\n )\n }\n\n // GraphQL trigger and result handling\n useEffect(() => {\n if (!queryBusinessActivitiesResult.fetching) {\n if (queryBusinessActivitiesResult.error) {\n // Check if the user need to be logged out\n if (\n queryBusinessActivitiesResult.error.message.indexOf(\n 'User forced logout'\n ) !== -1\n ) {\n setMessage(MESSAGE_TYPES.ERROR, t('error.user.forced.logout'))\n unsetUser()\n unsetToken()\n navigate('/')\n }\n } else {\n if (\n !businessActivities &&\n typeof queryBusinessActivitiesResult.data !== 'undefined' &&\n typeof queryBusinessActivitiesResult.data.readBusinessActivities !==\n 'undefined'\n ) {\n // Query not fetching right now\n setBusinessActivities(\n queryBusinessActivitiesResult.data.readBusinessActivities[0]\n )\n }\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [queryBusinessActivitiesResult])\n\n // GraphQL trigger and result handling\n useEffect(() => {\n if (!result.fetching) {\n if (result.error) {\n // Check if the user need to be logged out\n if (result.error.message.indexOf('User forced logout') !== -1) {\n setMessage(MESSAGE_TYPES.ERROR, t('error.user.forced.logout'))\n unsetUser()\n unsetToken()\n navigate('/')\n }\n } else {\n // Query not fetching right now\n if (\n typeof result.data !== 'undefined' &&\n typeof result.data.readFavorites !== 'undefined'\n ) {\n // Add the favorites to the global context\n setFavoriteData(result.data.readFavorites)\n }\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [result])\n\n /**\n * closeDialogue\n */\n const closeDialogue = () => {\n setEmailApplyDialog(false)\n }\n\n /**\n * handleEmailApplicationTextChange\n *\n * @param event\n */\n const handleEmailApplicationTextChange = event => {\n setEmailApplicationText(parseEmailApplicationText(event.target.value))\n }\n\n /**\n * handleEmailSubjectChange\n *\n * @param event\n */\n const handleEmailSubjectChange = event => {\n setSubjectLine(event.target.value)\n }\n\n /**\n * handleEmailRecipientChange\n *\n * @param event\n */\n const handleEmailRecipientChange = event => {\n setEmailRecipient(event.target.value)\n }\n\n /**\n * getCurrentDate\n *\n * @returns {string}\n */\n const getCurrentDate = () => {\n const today = new Date()\n const dd = String(today.getDate()).padStart(2, '0')\n const mm = String(today.getMonth() + 1).padStart(2, '0')\n const yyyy = today.getFullYear()\n\n return dd + '.' + mm + '.' + yyyy\n }\n\n /**\n * dossierTemplateList\n *\n * @returns {[]}\n */\n const dossierTemplatesList = () => {\n const dossierTemplatesList = []\n\n dossierTemplatesList.push(\n \n {t('form.label.please.select')}\n \n )\n\n dossierTemplates.map((value, key) =>\n dossierTemplatesList.push(\n \n {value.TemplateName}\n \n )\n )\n\n return dossierTemplatesList\n }\n\n /**\n * addNote\n */\n const addNote = () => {\n executeCreateFavoriteNoteMutation({\n favoriteHashID: favoriteHashId,\n text:\n t('company.label.email.application.date', {\n date: getCurrentDate()\n }) +\n t('form.label.used.recipient', {\n recipient: emailRecipient\n }) +\n emailApplicationText\n }).then(result => {\n if (result.error) {\n // Check if the user need to be logged out\n if (result.error.message.indexOf('User forced logout') !== -1) {\n setMessage(MESSAGE_TYPES.ERROR, t('error.user.forced.logout'))\n unsetUser()\n unsetToken()\n navigate('/')\n } else {\n setMessage(MESSAGE_TYPES.ERROR, t('error.save'))\n ExternalErrorLogger.log({\n text: 'Error add note on FavoriteDetailAddition',\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n errorMessage: JSON.stringify(result.error)\n }\n })\n }\n } else {\n changeStatus()\n }\n })\n }\n\n /**\n * changeStatus\n */\n const changeStatus = () => {\n executeUpdateFavoriteMutation({\n hashID: favoriteHashId,\n state: FavoriteStateConditions.CHECKED,\n applied: true\n }).then(result => {\n if (result.error) {\n // Check if the user need to be logged out\n if (result.error.message.indexOf('User forced logout') !== -1) {\n setMessage(MESSAGE_TYPES.ERROR, t('error.user.forced.logout'))\n unsetUser()\n unsetToken()\n navigate('/')\n } else {\n setMessage(MESSAGE_TYPES.ERROR, t('error.save'))\n ExternalErrorLogger.log({\n text: 'Error change favorite status on FavoriteStatus',\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n errorMessage: JSON.stringify(result.error)\n }\n })\n }\n } else {\n executeFavoritesQuery()\n closeDialogue()\n }\n })\n }\n\n /**\n * submitApplication\n */\n const handleSubmit = () => {\n setSendEmailFetching(true)\n const formData = {\n ApplicationText: emailApplicationText,\n SubjectLine: subjectLine,\n DossierTemplate: selectedDossierTemplate.HashID,\n Recipient: emailRecipient\n }\n const { error } = schema.validate(formData, { abortEarly: false })\n\n if (error) {\n const formErrors = FormValueErrorsBuilder(error, t)\n setSendEmailFetching(false)\n setFormValueErrors({ ...formErrors })\n } else {\n executeApplicationSubmissionMutation({\n SubmissionType: 'email',\n Email: emailRecipient,\n RecipientName: favorite.Project_management.Name || '',\n ApplicationText: emailApplicationText,\n SubjectLine: subjectLine,\n ProjectIDHash: favorite.ProjectHashID,\n ProjectName: favorite.Final_title,\n ProjectLocation: favorite.Construction_site.Address.City,\n Canton: favorite.Canton,\n Type_of_building: favorite.Type_of_building,\n Type_of_construction: favorite.Type_of_construction,\n TemplateHashID: selectedDossierTemplate.HashID,\n Language: selectedLanguage\n }).then(result => {\n if (result.error) {\n // Check if the user need to be logged out\n if (result.error.message.indexOf('User forced logout') !== -1) {\n setMessage(MESSAGE_TYPES.ERROR, t('error.user.forced.logout'))\n setSendEmailFetching(false)\n unsetUser()\n unsetToken()\n navigate('/')\n } else {\n setSendEmailFetching(false)\n setMessage(MESSAGE_TYPES.ERROR, t('error.save'))\n ExternalErrorLogger.log({\n text: 'Error sending application via email',\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n errorMessage: JSON.stringify(result.error)\n }\n })\n }\n } else {\n if (result.data.submitApplication.Status !== 'true') {\n setMessage(\n MESSAGE_TYPES.ERROR,\n result.data.submitApplication.Error !== ''\n ? result.data.submitApplication.Error === 'Already applied for'\n ? t('error.form.submit.application.already.applied')\n : result.data.submitApplication.Error\n : t('error.form.submit.application.not.send')\n )\n } else {\n addNote()\n changeStatus()\n setMessage(\n MESSAGE_TYPES.INFO,\n t('company.label.email.application.submitted')\n )\n }\n setSendEmailFetching(false)\n }\n })\n }\n }\n\n /**\n * return\n */\n return (\n \n \n \n \n \n \n \n \n {(user.hasZipSearchAreas() || user.isPro()) &&\n dossierTemplates.length > 1 && (\n \n {\n handleDossierTemplateChange(event)\n }}\n SelectProps={{\n MenuProps: {\n className: classes.menu\n }\n }}\n margin='normal'\n variant='outlined'\n error={GetSafe(\n () => formValueErrors.DossierTemplate.hasError,\n false\n )}\n helperText={GetSafe(\n () => formValueErrors.DossierTemplate.message,\n ''\n )}\n >\n {dossierTemplatesList()}\n \n \n )}\n {(user.hasZipSearchAreas() || user.isPro()) &&\n enableLanguageSelector && (\n \n {\n handleSelectedLanguageChange(event)\n }}\n SelectProps={{\n MenuProps: {\n className: classes.menu\n }\n }}\n margin='normal'\n variant='outlined'\n helperText={t('form.description.select.language')}\n >\n {getDossierTemplateAvailableLanguages()}\n \n \n )}\n \n

\n {t('company.label.email.application')}\n

\n

{t('company.label.email.application.intro')}

\n
\n \n formValueErrors.SubjectLine.hasError, false)}\n helperText={GetSafe(\n () => formValueErrors.SubjectLine.message,\n ''\n )}\n value={subjectLine}\n onChange={handleEmailSubjectChange}\n />\n \n \n formValueErrors.Recipient.hasError, false)}\n helperText={GetSafe(() => formValueErrors.Recipient.message, '')}\n value={emailRecipient}\n onChange={handleEmailRecipientChange}\n />\n \n \n formValueErrors.ApplicationText.hasError,\n false\n )}\n helperText={GetSafe(\n () => formValueErrors.ApplicationText.message,\n ''\n )}\n label={t('form.label.company.emailApplication')}\n value={emailApplicationText || ''}\n onChange={handleEmailApplicationTextChange}\n margin='normal'\n fullWidth\n />\n \n \n \n {t('company.label.email.application.submit')}\n {sendEmailFetching ? (\n \n ) : null}\n \n \n \n
\n \n )\n}\n\nexport default FavoriteEmailApplyDialog\n","import React, { useContext, useEffect, useState } from \"react\";\nimport Dialog from \"@material-ui/core/Dialog\";\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport CloseIcon from \"@material-ui/icons/Close\";\nimport DialogContent from \"@material-ui/core/DialogContent\";\nimport Grid from \"@material-ui/core/Grid\";\nimport clsx from \"clsx\";\nimport TextField from \"@material-ui/core/TextField\";\nimport Button from \"@material-ui/core/Button\";\nimport { MESSAGE_TYPES } from \"../PopupMessages\";\nimport CircularProgress from \"@material-ui/core/CircularProgress\";\nimport GlobalContext from \"../../lib/GlobalContext\";\nimport { useTranslation } from \"react-i18next\";\nimport { makeStyles } from \"@material-ui/core\";\nimport parseApplicationText from \"../../lib/Application\";\nimport { useMutation, useQuery } from \"urql\";\nimport { navigate } from \"hookrouter\";\nimport ExternalErrorLogger from \"@ennit/react-external-errorlogger\";\nimport Joi from \"@hapi/joi\";\nimport FormValueErrorsBuilder from \"../../lib/FormValueErrorsBuilder\";\nimport GetSafe from \"../../lib/GetSafe\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport {\n DOSSIER_AVAILABLE_LOCALES,\n DEFAULT_LOCALE_FOR_LANGUAGE,\n} from \"../../config\";\n\nconst useStyles = makeStyles((theme) => ({\n dialogRoot: {\n flexGrow: 1,\n },\n dialogTitle: {\n display: \"flex\",\n justifyContent: \"flex-end\",\n alignItems: \"flex-end\",\n paddingBottom: 0,\n },\n dialog: {\n width: \"100%\",\n paddingBottom: 56,\n \"&::before\": theme.watermarkLogo,\n [theme.breakpoints.down(\"sm\")]: {\n padding: 20,\n },\n },\n gridContainer: {\n width: \"100%\",\n maxWidth: 1280,\n padding: \"16px 24px\",\n [theme.breakpoints.down(\"sm\")]: {\n alignItems: \"flex-start\",\n },\n },\n gridItem: {\n width: \"50%\",\n padding: \"8px 0\",\n [theme.breakpoints.down(\"sm\")]: {\n width: \"100%\",\n },\n },\n itemHeader: {\n maxWidth: 400,\n paddingTop: 44,\n paddingBottom: 24,\n [theme.breakpoints.down(\"sm\")]: {\n paddingTop: 20,\n paddingBottom: 20,\n },\n },\n title: {\n margin: 0,\n fontSize: 24,\n lineHeight: \"30px\",\n textAlign: \"center\",\n [theme.breakpoints.down(\"sm\")]: {\n textAlign: \"left\",\n },\n },\n startButton: {\n width: \"100%\",\n color: \"#fff\",\n fontWeight: \"bold\",\n },\n textFieldSmall: {\n width: \"50%\",\n \"&:first-of-type\": {\n width: \"calc(50% - 24px)\",\n marginRight: 24,\n },\n [theme.breakpoints.down(\"sm\")]: {\n width: \"100%\",\n \"&:first-of-type\": {\n width: \"100%\",\n },\n },\n },\n}));\n\nconst queryBusinessActivities = `\n query ReadBusinessActivities ($id: ID)\n {\n readBusinessActivities (\n sortBy: [{field: Sort, direction: ASC}],\n Filter: {\n ID__in: [$id]\n }\n ){\n ID,\n Title,\n NogaCode,\n BusinessSpecialities {\n edges {\n node {\n ID,\n Title\n }\n }\n }\n }\n }\n`;\n\nconst queryDossierTemplates = `\n query ReadDossierTemplates (\n $language: String!\n ) {\n readDossierTemplates(Language: $language) {\n HashID\n Email\n Locale\n TemplateName\n BusinessActivityID\n MicrositeEmailApplicationText\n BusinessSpecialities {\n edges {\n node {\n ID\n Title\n }\n }\n }\n MicrositeImages {\n edges {\n node {\n Src\n Title\n Alt\n }\n }\n }\n MicrositeReferences {\n edges {\n node {\n Title\n Content\n }\n }\n }\n }\n }\n`\n\nconst createApplicationSubmissionMutation = `\n mutation (\n $SubmissionType: String!,\n $ApplicationText: String!,\n $ProjectIDHash: String!,\n $RecipientName: String!,\n $RecipientCity: String!,\n $RecipientStreet: String!,\n $RecipientZip: String!,\n $SubjectLine: String!,\n $ProjectName: String!,\n $ProjectLocation: String!,\n $Canton: String,\n $Type_of_building: String,\n $Type_of_construction: String,\n $TemplateHashID: String,\n $Language: String\n ) {\n submitApplication (\n SubmissionType: $SubmissionType,\n ApplicationText: $ApplicationText,\n ProjectIDHash: $ProjectIDHash,\n RecipientName: $RecipientName,\n RecipientCity: $RecipientCity,\n RecipientStreet: $RecipientStreet,\n RecipientZip: $RecipientZip,\n SubjectLine: $SubjectLine,\n ProjectName: $ProjectName,\n ProjectLocation: $ProjectLocation,\n Canton: $Canton,\n TypeOfBuilding: $Type_of_building,\n TypeOfConstruction: $Type_of_construction,\n TemplateHashID: $TemplateHashID,\n Language: $Language\n ) {\n Status\n Error\n PDFLink\n }\n }\n`;\n\nconst initialAddressData = {\n name: null,\n street: null,\n zip: null,\n city: null,\n};\n\nconst initialFormValueErrorsState = {\n ApplicationText: { hasError: false, message: \"\" },\n RecipientName: { hasError: false, message: \"\" },\n RecipientCity: { hasError: false, message: \"\" },\n RecipientStreet: { hasError: false, message: \"\" },\n RecipientZip: { hasError: false, message: \"\" },\n SubjectLine: { hasError: false, message: \"\" },\n DossierTemplate: { hasError: false, message: \"\" },\n};\n\nconst initialLanguage = \"de\";\n\n/**\n * FavoriteApplicationPrintDialog\n *\n * @param props\n * @returns {JSX.Element}\n * @constructor\n */\nconst FavoriteApplicationPrintDialog = (props) => {\n let dialogContent;\n const classes = useStyles();\n\n const {\n applicationPrintDialog,\n setApplicationPrintDialog,\n projectManagementData,\n buildingOwnerData,\n favorite,\n } = props;\n\n const { user, token, setMessage, unsetUser, unsetToken } =\n useContext(GlobalContext);\n\n const { t } = useTranslation();\n const [businessActivities, setBusinessActivities] = useState(false);\n const [applicationText, setApplicationText] = useState(null);\n\n const [formValueErrors, setFormValueErrors] = useState(\n initialFormValueErrorsState\n );\n\n const [sendDownloadFetching, setSendDownloadFetching] = useState(false);\n const [addressData, setAddressData] = useState(initialAddressData);\n const [subjectLine, setSubjectLine] = useState(\"\");\n const [selectedDossierTemplate, setSelectedDossierTemplate] = useState(null);\n const [dossierTemplates, setDossierTemplates] = useState([]);\n const [dossierTemplatesByHashID, setDossierTemplatesByHashID] = useState([]);\n const [selectedLanguage, setSelectedLanguage] = useState(initialLanguage);\n const [enableLanguageSelector, setEnableLanguageSelector] = useState(false);\n\n const [\n { fetchingUpdateApplicationSubmission },\n executeApplicationSubmissionMutation,\n ] = useMutation(createApplicationSubmissionMutation);\n\n // GraphQL query for business-activities, gets triggered by calling \"executeBusinessActivitiesQuery()\"\n const [queryBusinessActivitiesResult, executeBusinessActivitiesQuery] =\n useQuery({\n query: queryBusinessActivities,\n variables: {\n id: user.getData().company.branchCategory,\n },\n requestPolicy: \"cache-and-network\",\n pause: true,\n });\n\n // GraphQL query for dossier-templates\n const [queryDossierTemplatesResult] = useQuery({\n query: queryDossierTemplates,\n variables: {\n language: \"all\",\n },\n requestPolicy: \"cache-and-network\",\n });\n\n /**\n * Joi validation schema\n */\n const schema = Joi.object({\n ApplicationText: Joi.string().required(),\n RecipientName: Joi.string().allow(\"\"),\n RecipientCity: Joi.string().allow(\"\"),\n RecipientStreet: Joi.string().allow(\"\"),\n RecipientZip: Joi.string().allow(\"\"),\n SubjectLine: Joi.string().required(),\n DossierTemplate:\n dossierTemplates.length > 1\n ? Joi.string().allow(null).required()\n : Joi.string().allow(null),\n });\n\n // GraphQL trigger and result handling\n useEffect(() => {\n if (!queryBusinessActivitiesResult.fetching) {\n if (queryBusinessActivitiesResult.error) {\n // Check if the user need to be logged out\n if (\n queryBusinessActivitiesResult.error.message.indexOf(\n \"User forced logout\"\n ) !== -1\n ) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.user.forced.logout\"));\n unsetUser();\n unsetToken();\n navigate(\"/\");\n }\n } else {\n if (\n !businessActivities &&\n typeof queryBusinessActivitiesResult.data !== \"undefined\" &&\n typeof queryBusinessActivitiesResult.data.readBusinessActivities !==\n \"undefined\"\n ) {\n // Query not fetching right now\n setBusinessActivities(\n queryBusinessActivitiesResult.data.readBusinessActivities[0]\n );\n }\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [queryBusinessActivitiesResult]);\n\n /**\n * useEffect\n */\n useEffect(() => {\n executeBusinessActivitiesQuery();\n }, [executeBusinessActivitiesQuery]);\n\n /**\n * setApplicationText useEffect\n */\n useEffect(() => {\n if (businessActivities) {\n let text = user.getData().company.micrositeEmailApplicationText;\n\n if (applicationText !== null) {\n text = applicationText;\n }\n\n setApplicationText(parseEmailApplicationText(text));\n }\n // eslint-disable-next-line\n }, [applicationText, setApplicationText, user, businessActivities]);\n\n /**\n * setAddressData useEffect\n */\n useEffect(() => {\n if (addressData === initialAddressData) {\n if (\n (projectManagementData.Name ? projectManagementData.Name : \"\") !== \"\" &&\n (projectManagementData.Address\n ? projectManagementData.Address.Street\n : \"\") !== \"\" &&\n (projectManagementData.Address\n ? projectManagementData.Address.Zip\n : \"\") !== \"\" &&\n (projectManagementData.Address\n ? projectManagementData.Address.City\n : \"\") !== \"\"\n ) {\n setAddressData({\n name: projectManagementData.Name,\n street:\n projectManagementData.Address.Street +\n \" \" +\n projectManagementData.Address.Number,\n zip: projectManagementData.Address.Zip,\n city: projectManagementData.Address.City,\n });\n } else {\n setAddressData({\n name: buildingOwnerData.Name,\n street:\n buildingOwnerData.Address.Street +\n \" \" +\n buildingOwnerData.Address.Number,\n zip: buildingOwnerData.Address.Zip,\n city: buildingOwnerData.Address.City,\n });\n }\n }\n }, [setAddressData, addressData, projectManagementData, buildingOwnerData]);\n\n /**\n * Handle dossiert-templates after user has changed\n */\n useEffect(() => {\n setDossierTemplates([\n ...[{ HashID: null }],\n ...user.getData().dossierTemplates,\n ]);\n }, [user]);\n\n /**\n * Initially set the first dossier-templates-selector option as active\n */\n useEffect(() => {\n setSelectedDossierTemplate(dossierTemplatesList()[0].props.value);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n /**\n * In case selected dossier-template changes to a custom one, enable the language-selector\n */\n useEffect(() => {\n let state = false;\n\n if (GetSafe(() => selectedDossierTemplate.HashID, false)) {\n state = true;\n }\n\n setEnableLanguageSelector(state);\n }, [selectedDossierTemplate]);\n\n /**\n * Triggers as soon as the selected dossier-template has been changed\n */\n useEffect(() => {\n let applicationText = null;\n let selectedDossierTemplateLangDependant = null;\n\n if (selectedDossierTemplate) {\n selectedDossierTemplateLangDependant =\n getDossierTemplateByHashIdAndLanguage(\n selectedDossierTemplate.HashID,\n selectedLanguage\n );\n applicationText =\n selectedDossierTemplateLangDependant.MicrositeEmailApplicationText;\n }\n\n if (!applicationText) {\n applicationText = user.getData().company.micrositeEmailApplicationText;\n }\n\n setApplicationText(parseEmailApplicationText(applicationText));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectedDossierTemplate, selectedLanguage, businessActivities]);\n\n /**\n * Read the query result for dossier-templates and assign them to the application-dropdown\n */\n useEffect(() => {\n const dossiersByLocale = {}\n const dossiersByHashID = {}\n const languageDependantDossierTemplates = []\n\n if (!queryDossierTemplatesResult.fetching) {\n if (\n GetSafe(\n () => queryDossierTemplatesResult.data.readDossierTemplates,\n false\n )\n ) {\n if (queryDossierTemplatesResult.data.readDossierTemplates.length > 0) {\n queryDossierTemplatesResult.data.readDossierTemplates.forEach(\n dossierTemplate => {\n if (\n typeof DOSSIER_AVAILABLE_LOCALES[dossierTemplate.Locale] !==\n 'undefined'\n ) {\n languageDependantDossierTemplates.push(dossierTemplate)\n\n if (dossierTemplate.Locale) {\n if (\n typeof dossiersByLocale[dossierTemplate.Locale] ===\n 'undefined'\n ) {\n dossiersByLocale[dossierTemplate.Locale] = []\n }\n\n dossiersByLocale[dossierTemplate.Locale].push(dossierTemplate)\n }\n\n if (dossierTemplate.HashID) {\n if (\n typeof dossiersByHashID[dossierTemplate.HashID] ===\n 'undefined'\n ) {\n dossiersByHashID[dossierTemplate.HashID] = []\n }\n\n dossiersByHashID[dossierTemplate.HashID].push(dossierTemplate)\n }\n\n if (\n selectedDossierTemplate &&\n dossierTemplate.HashID === selectedDossierTemplate.HashID\n ) {\n setSelectedDossierTemplate(dossierTemplate)\n }\n }\n }\n )\n }\n }\n }\n\n setDossierTemplatesByHashID(dossiersByHashID);\n\n setDossierTemplates([\n ...[{ HashID: null }],\n ...getUniqueDossierTemplatesByHashID(dossiersByHashID),\n ]);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [queryDossierTemplatesResult]);\n\n /**\n * Handle dossiert-template change\n *\n * @param event\n */\n const handleDossierTemplateChange = (event) => {\n let dossierTemplate = null;\n\n if (event.target.value === null || event.target.value === 0) {\n dossierTemplate = event.target.value;\n } else {\n dossierTemplate = getDossierTemplateByHashIdAndLanguage(\n event.target.value.HashID,\n initialLanguage\n );\n }\n\n setSelectedLanguage(initialLanguage);\n setSelectedDossierTemplate(dossierTemplate);\n };\n\n /**\n * Handle language change\n *\n * @param {*} event\n */\n const handleSelectedLanguageChange = (event) => {\n setSelectedLanguage(event.target.value);\n };\n\n /**\n * Taks a array of templates and removes duplicates by HashID\n * In case a duplicate has different languages, it keeps the current selected language duplicate\n *\n * @param {*} dossiersByHashID\n * @returns array\n */\n const getUniqueDossierTemplatesByHashID = (dossiersByHashID) => {\n const uniqueDossierTemplates = [];\n\n Object.keys(dossiersByHashID).forEach((index) => {\n if (dossiersByHashID[index].length > 1) {\n let foundForLanguage = false;\n\n dossiersByHashID[index].forEach((dossierTemplate) => {\n if (\n dossierTemplate.Locale ===\n DEFAULT_LOCALE_FOR_LANGUAGE[selectedLanguage]\n ) {\n uniqueDossierTemplates.push(dossierTemplate);\n foundForLanguage = true;\n }\n });\n\n if (!foundForLanguage) {\n uniqueDossierTemplates.push(dossiersByHashID[index][0]);\n }\n } else {\n uniqueDossierTemplates.push(dossiersByHashID[index][0]);\n }\n });\n\n return uniqueDossierTemplates;\n };\n\n /**\n * Fetch the selected dossier-template for the selected language from the pool#\n *\n * @param {*} hashID\n * @param {*} language\n * @returns\n */\n const getDossierTemplateByHashIdAndLanguage = (hashID, language) => {\n // Get the selected dossier-template for the selected language\n for (let i = 0; i < dossierTemplatesByHashID[hashID].length; i++) {\n if (\n dossierTemplatesByHashID[hashID][i].HashID === hashID &&\n DOSSIER_AVAILABLE_LOCALES[\n dossierTemplatesByHashID[hashID][i].Locale\n ] === language\n ) {\n return dossierTemplatesByHashID[hashID][i];\n }\n }\n\n // Since there is no dossier-template for the requested language,\n // fallback to first available dossier-template and its language\n setSelectedLanguage(\n DOSSIER_AVAILABLE_LOCALES[dossierTemplatesByHashID[hashID][0].Locale]\n );\n return dossierTemplatesByHashID[hashID][0];\n };\n\n /**\n * Generate available language-items for dropdown based on selected dossier-template\n *\n * @returns\n */\n const getDossierTemplateAvailableLanguages = () => {\n const avalableLanguages = {};\n const menuItems = [];\n\n if (selectedDossierTemplate === null || selectedDossierTemplate === 0) {\n return menuItems;\n }\n\n dossierTemplatesByHashID[selectedDossierTemplate.HashID].forEach(\n (dossierTemplate) => {\n if (\n typeof DOSSIER_AVAILABLE_LOCALES[dossierTemplate.Locale] !==\n \"undefined\"\n ) {\n avalableLanguages[DOSSIER_AVAILABLE_LOCALES[dossierTemplate.Locale]] =\n dossierTemplate.Locale;\n }\n }\n );\n\n if (avalableLanguages[\"de\"]) {\n menuItems.push(\n \n Deutsch\n \n );\n }\n\n if (avalableLanguages[\"fr\"]) {\n menuItems.push(\n \n Französisch\n \n );\n }\n\n return menuItems;\n };\n\n /**\n * dossierTemplateList\n *\n * @returns {[]}\n */\n const dossierTemplatesList = () => {\n const dossierTemplatesList = [];\n\n dossierTemplatesList.push(\n \n {t(\"form.label.please.select\")}\n \n );\n\n dossierTemplates.map((value, key) =>\n dossierTemplatesList.push(\n \n {value.TemplateName}\n \n )\n );\n\n return dossierTemplatesList;\n };\n\n /**\n * parseEmailApplicationText\n * Parse the application text and replace the placeholder with actual values\n */\n const parseEmailApplicationText = (emailApplicationTextTemplate) => {\n return parseApplicationText(\n user,\n emailApplicationTextTemplate,\n businessActivities,\n favorite,\n t(\"general.label.and\")\n );\n };\n\n /**\n * handleCompanyNameChange\n *\n * @param event\n */\n const handleCompanyNameChange = (event) => {\n setAddressData({ ...addressData, name: event.target.value });\n };\n\n /**\n * handleStreetChange\n *\n * @param event\n */\n const handleStreetChange = (event) => {\n setAddressData({ ...addressData, street: event.target.value });\n };\n\n /**\n * handleZipChange\n *\n * @param event\n */\n const handleZipChange = (event) => {\n setAddressData({ ...addressData, zip: event.target.value });\n };\n\n /**\n * handleCityChange\n *\n * @param event\n */\n const handleCityChange = (event) => {\n setAddressData({ ...addressData, city: event.target.value });\n };\n\n /**\n * handleSubjectLineChange\n *\n * @param event\n */\n const handleSubjectLineChange = (event) => {\n setSubjectLine(event.target.value);\n };\n\n /**\n * closeDialogue\n */\n const closeDialogue = () => {\n setApplicationPrintDialog(false);\n };\n\n /**\n * handleApplicationTextChange\n *\n * @param event\n */\n const handleApplicationTextChange = (event) => {\n setApplicationText(event.target.value);\n };\n\n /**\n * handleSubmit\n */\n const handleSubmit = () => {\n setSendDownloadFetching(true);\n\n const formData = {\n ApplicationText: applicationText,\n RecipientName: addressData.name,\n RecipientCity: addressData.city,\n RecipientStreet: addressData.street,\n RecipientZip: addressData.zip,\n SubjectLine: subjectLine,\n DossierTemplate: selectedDossierTemplate.HashID,\n };\n const { error } = schema.validate(formData, { abortEarly: false });\n if (error) {\n const formErrors = FormValueErrorsBuilder(error, t);\n dialogContent.scrollIntoView({\n behavior: \"smooth\",\n block: \"start\",\n });\n\n setFormValueErrors({ ...formErrors });\n setSendDownloadFetching(false);\n } else {\n executeApplicationSubmissionMutation({\n SubmissionType: \"print\",\n ApplicationText: applicationText,\n RecipientName: addressData.name,\n RecipientCity: addressData.city,\n RecipientStreet: addressData.street,\n RecipientZip: addressData.zip,\n SubjectLine: subjectLine,\n ProjectIDHash: favorite.ProjectHashID,\n ProjectName: favorite.Final_title,\n ProjectLocation: favorite.Construction_site.Address.City,\n Canton: favorite.Canton,\n Type_of_building: favorite.Type_of_building,\n Type_of_construction: favorite.Type_of_construction,\n TemplateHashID: selectedDossierTemplate.HashID,\n Language: selectedLanguage,\n }).then((result) => {\n if (result.error) {\n // Check if the user need to be logged out\n if (result.error.message.indexOf(\"User forced logout\") !== -1) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.user.forced.logout\"));\n unsetUser();\n unsetToken();\n navigate(\"/\");\n } else {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.save\"));\n ExternalErrorLogger.log({\n text: \"Error requesting print document\",\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n errorMessage: JSON.stringify(result.error),\n },\n });\n }\n } else {\n if (result.data.submitApplication.Status !== \"true\") {\n setMessage(\n MESSAGE_TYPES.ERROR,\n result.data.submitApplication.Error !== \"\"\n ? result.data.submitApplication.Error\n : t(\"error.form.submit.application.not.donwloadable\")\n );\n } else {\n window.open(result.data.submitApplication.PDFLink, \"_blank\");\n closeDialogue();\n }\n }\n setSendDownloadFetching(false);\n });\n }\n };\n\n /**\n * isFetching\n *\n * @returns {boolean|*}\n */\n const isFetching = () => {\n return (\n sendDownloadFetching ||\n queryBusinessActivities.fetching ||\n fetchingUpdateApplicationSubmission ||\n queryDossierTemplatesResult.fetching\n );\n };\n\n /**\n * return\n */\n return (\n \n \n \n \n \n \n \n {\n dialogContent = node;\n }}\n >\n {(user.hasZipSearchAreas() || user.isPro()) && dossierTemplates.length > 1 && (\n \n {\n handleDossierTemplateChange(event);\n }}\n SelectProps={{\n MenuProps: {\n className: classes.menu,\n },\n }}\n margin=\"normal\"\n variant=\"outlined\"\n error={GetSafe(\n () => formValueErrors.DossierTemplate.hasError,\n false\n )}\n helperText={GetSafe(\n () => formValueErrors.DossierTemplate.message,\n \"\"\n )}\n >\n {dossierTemplatesList()}\n \n \n )}\n {(user.hasZipSearchAreas() || user.isPro()) && enableLanguageSelector && (\n \n {\n handleSelectedLanguageChange(event);\n }}\n SelectProps={{\n MenuProps: {\n className: classes.menu,\n },\n }}\n margin=\"normal\"\n variant=\"outlined\"\n helperText={t(\"form.description.select.language\")}\n >\n {getDossierTemplateAvailableLanguages()}\n \n \n )}\n \n

\n {t(\"company.label.print.application\")}\n

\n

{t(\"company.label.print.application.intro\")}

\n
\n \n \n \n \n \n \n \n \n \n \n \n formValueErrors.SubjectLine.hasError, false)}\n helperText={GetSafe(\n () => formValueErrors.SubjectLine.message,\n \"\"\n )}\n value={subjectLine}\n onChange={handleSubjectLineChange}\n />\n \n \n formValueErrors.ApplicationText.hasError,\n false\n )}\n label={t(\"form.label.company.application.text\")}\n value={applicationText || \"\"}\n helperText={GetSafe(\n () => formValueErrors.ApplicationText.message,\n \"\"\n )}\n onChange={handleApplicationTextChange}\n margin=\"normal\"\n fullWidth\n />\n \n \n \n {t(\"company.label.email.application.print\")}\n {isFetching() ? (\n \n ) : null}\n \n \n \n
\n \n );\n};\n\nexport default FavoriteApplicationPrintDialog;\n","import React, { useState, useContext, useEffect } from \"react\";\nimport clsx from \"clsx\";\nimport Menu from \"@material-ui/core/Menu\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport TableCell from \"@material-ui/core/TableCell\";\nimport TableRow from \"@material-ui/core/TableRow\";\nimport ExpandLess from \"@material-ui/icons/ExpandLess\";\nimport ExpandMore from \"@material-ui/icons/ExpandMore\";\nimport Star from \"@material-ui/icons/Star\";\nimport StarBorder from \"@material-ui/icons/StarBorder\";\nimport MoreHoriz from \"@material-ui/icons/MoreHoriz\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport FavoriteStatus from \"./FavoriteStatus\";\nimport FavoriteDetailAddition from \"./FavoriteDetailAddition\";\nimport { useTranslation } from \"react-i18next\";\nimport GlobalContext from \"../../lib/GlobalContext\";\nimport GoogleMapComponent from \"../../lib/GoogleMapComponent\";\nimport withAccessControl from \"../HOC/AccessControl\";\nimport GetSafe from \"../../lib/GetSafe\";\nimport FormatHelper from \"../../lib/FormatHelper\";\nimport PHE from \"print-html-element\";\nimport { renderToString } from \"react-dom/server\";\nimport { Button, Table, TableBody, TableHead } from \"@material-ui/core\";\nimport { MESSAGE_TYPES } from \"../PopupMessages\";\nimport { useMutation } from \"urql\";\nimport LinearProgress from \"@material-ui/core/LinearProgress\";\nimport { A, navigate } from \"hookrouter\";\nimport { ACL_COMPONENTS, DEFAULT_LOGO_PATH } from \"../../config\";\nimport Tooltip from \"@material-ui/core/Tooltip\";\nimport Info from \"@material-ui/icons/Info\";\nimport Grid from \"@material-ui/core/Grid\";\nimport ExternalErrorLogger from \"@ennit/react-external-errorlogger\";\nimport UserTypes from \"../Onboarding/UserTypes\";\nimport FavoriteEmailApplyDialog from \"./FavoriteEmailApplyDialog\";\nimport FavoriteApplicationPrintDialog from \"./FavoriteApplicationPrintDialog\";\nimport CardMembershipIcon from \"@material-ui/icons/CardMembership\";\nimport { BUILDING_APPLICATION_TYPE } from \"../BuildingApplicationTypeTabs\";\nimport ProjectManagementAddressDataValidator from \"../../lib/ProjectManagementAddressDataValidator\";\n\nconst useStyles = makeStyles((theme) => ({\n removed: {\n opacity: 0.5,\n },\n undo: {\n color: theme.palette.primary.main,\n textDecoration: \"underline\",\n },\n link: {\n cursor: \"pointer\",\n },\n icon: {\n padding: 8,\n },\n submissionIcon: {\n paddingTop: 5,\n paddingRight: 4,\n position: \"relative\",\n top: 5,\n color: theme.palette.text.secondary,\n },\n tableCellColumnsbody: {\n width: \"calc(100% * 1 / 5)\",\n minWidth: 100,\n padding: 14,\n \"&:nth-child(1)\": {\n minWidth: 215,\n },\n \"&:nth-child(2)\": {\n minWidth: 520,\n },\n \"&:nth-child(3)\": {\n minWidth: 130,\n },\n \"@media (max-width:640px)\": {\n \"&:first-of-type\": {\n minWidth: \"auto\",\n },\n \"&:nth-child(2)\": {\n minWidth: 320,\n },\n },\n },\n toggleTitle: {\n color: \"#999\",\n fontWeight: \"bold\",\n },\n toggleTableCell: {\n paddingTop: 0,\n verticalAlign: \"top\",\n },\n toggleTableCellMap: {\n paddingLeft: 230,\n \"@media (max-width:640px)\": {\n paddingLeft: 20,\n },\n },\n tableInnerRow: {\n \"& td\": {\n borderBottom: 0,\n },\n },\n pointer: {\n cursor: \"pointer\",\n },\n tooltipItem: {\n width: \"100%\",\n maxWidth: 350,\n borderRadius: 5,\n background: \"#006A7A\",\n fontSize: 16,\n textAlign: \"center\",\n \"& div\": {\n margin: 0,\n color: \"#fff\",\n },\n },\n tooltipInfo: {\n maxWidth: \"100%\",\n background: theme.palette.background.default,\n \"& div\": {\n maxWidth: \"100%\",\n color: theme.palette.text.primary,\n fontSize: 12,\n lineHeight: \"20px\",\n },\n \"@media (min-width:768px)\": {\n maxWidth: 450,\n },\n },\n tooltipTitle: {\n display: \"flex\",\n alignItems: \"center\",\n },\n headerWrapper: {\n width: \"100%\",\n maxWidth: 1320,\n paddingRight: 20,\n paddingLeft: 20,\n backgroundColor: \"#4ab3cf\",\n \"-webkit-print-color-adjust\": \"exact\",\n },\n logo: {\n paddingLeft: 0,\n },\n button: {\n color: \"#ffffff\",\n width: \"60%\",\n marginTop: \"20px\",\n marginBottom: \"40px\",\n },\n externalLink: {\n textDecoration: \"none\",\n },\n}));\n\nconst updateFavoriteMutation = `\n mutation UpdateFavorite (\n $hashID: String,\n $removed: Boolean\n ) {\n updateFavorite (HashID: $hashID, Removed: $removed) {\n HashID\n }\n }\n`;\n\n/**\n * FavoritesTableColumn\n *\n * @returns {*}\n * @constructor\n */\nconst FavoritesTableRow = (props) => {\n const classes = useStyles();\n const { t } = useTranslation();\n const {\n favoriteData,\n setFavoriteData,\n setMessage,\n unsetUser,\n token,\n unsetToken,\n user,\n upgradeToPremiumOpen,\n setUpgradeToPremiumOpen,\n } = useContext(GlobalContext);\n const [open, setOpen] = useState(false);\n const [removed, setRemoved] = useState(false);\n const [anchorEl, setAnchorEl] = useState(null);\n const [emailApplyDialog, setEmailApplyDialog] = useState(false);\n const [applicationPrintDialog, setApplicationPrintDialog] = useState(false);\n\n const [{ fetchingUpdateFavorite }, executeUpdateFavoriteMutation] =\n useMutation(updateFavoriteMutation);\n\n /**\n * after mounting set the removed flag\n */\n useEffect(() => {\n if (removed !== props.favorite.Removed) {\n setRemoved(props.favorite.Removed);\n }\n }, [props.favorite.Removed, removed]);\n\n /**\n * open context menu\n *\n * @param event\n */\n const handleContextMenuOpen = (event) => {\n event.stopPropagation();\n setAnchorEl(event.currentTarget);\n };\n\n /**\n * close context menu\n */\n const handleContextMenuClose = (event) => {\n event.stopPropagation();\n setAnchorEl(null);\n };\n\n /**\n * toggle favorite status\n */\n const handleFavoriteRemoveToggle = (event) => {\n event.stopPropagation();\n\n if (open) {\n setOpen(false);\n }\n\n const toggledRemoved = !removed;\n const favorites = favoriteData;\n\n setFavoriteData(favorites);\n\n executeUpdateFavoriteMutation({\n hashID: props.favorite.HashID,\n removed: toggledRemoved,\n }).then((result) => {\n if (result.error) {\n // Check if the user need to be logged out\n if (result.error.message.indexOf(\"User forced logout\") !== -1) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.user.forced.logout\"));\n unsetUser();\n unsetToken();\n navigate(\"/\");\n } else if (\n result.error.message.includes(\n `Favorite with HashID '${props.favorite.HashID}' not found`\n )\n ) {\n setMessage(MESSAGE_TYPES.INFO, t(\"error.item.already.deleted\"));\n } else {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.save\"));\n ExternalErrorLogger.log({\n text: \"Error remove favorite on FavoritesTableRow\",\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n errorMessage: JSON.stringify(result.error),\n },\n });\n }\n } else {\n setMessage(MESSAGE_TYPES.INFO, t(\"projects.favorites.updated\"));\n for (let i = 0; i < favorites.length; i++) {\n if (favorites[i].HashID === props.favorite.HashID) {\n favorites[i].Removed = toggledRemoved;\n break;\n }\n }\n setRemoved(toggledRemoved);\n }\n });\n };\n\n /**\n * removedClass\n *\n * @returns {*}\n */\n const removedClass = () => {\n return props.favorite.Removed ? classes.removed : \"\";\n };\n\n /**\n * getDestinationCoordinates\n *\n * @returns {{lon: *, lat: *}}\n */\n const getDestinationCoordinates = () => {\n return {\n lat: GetSafe(\n () => parseFloat(props.favorite.Construction_site.Address.Geo.lat),\n 0\n ),\n lon: GetSafe(\n () => parseFloat(props.favorite.Construction_site.Address.Geo.lon),\n 0\n ),\n };\n };\n\n /**\n * isProcessable\n *\n * @param {*} value\n */\n const isProcessable = (value) => {\n return !(value === null || value === undefined);\n };\n\n /**\n * showApplyButton\n *\n * @returns {boolean|string|string}\n */\n const showApplyButton = () => {\n return true;\n };\n\n /**\n * handleApplyButton\n */\n const handleApplyButton = () => {\n if (user.getData().mode !== UserTypes.PRO) {\n setUpgradeToPremiumOpen(!upgradeToPremiumOpen);\n } else {\n if (\n user.getData().company.urlSegment === \"\" ||\n user.getData().company.urlSegment === null\n ) {\n props.setVerifyDialogOpen(false);\n } else {\n setEmailApplyDialog(true);\n }\n }\n };\n\n /**\n * handleApplicationPrintButton\n */\n const handleApplicationPrintButton = () => {\n if (user.getData().mode !== UserTypes.PRO) {\n setUpgradeToPremiumOpen(!upgradeToPremiumOpen);\n } else {\n if (\n user.getData().company.urlSegment === \"\" ||\n user.getData().company.urlSegment === null\n ) {\n props.setVerifyDialogOpen(false);\n } else {\n setApplicationPrintDialog(true);\n }\n }\n };\n\n const getApplyButtonText = () => {\n if (props.favorite.Applied) {\n return t(\"general.label.already.advertised\");\n }\n\n if (user.getData().mode !== UserTypes.PRO) {\n return t(\"general.label.applyOnlyForPro\");\n }\n\n return t(\"general.label.apply\");\n };\n\n const getAppicationPrintButtonText = () => {\n if (user.getData().mode !== UserTypes.PRO) {\n return t(\"general.label.applyPrintOnlyForPro\");\n }\n\n return t(\"company.label.print.application\");\n };\n\n /**\n * renderApprovalDate\n *\n * @returns {false|JSX.Element}\n */\n const renderApprovalDate = () => {\n return (\n props.favorite.Approval_date !== undefined &&\n props.favorite.Approval_date !== \"\" &&\n props.favorite.Approval_date !== null && (\n

\n {user.isPro() && (\n \n \n {t(\"projects.label.expected.date\")}\n \n \n {props.favorite.Approval_date}\n \n \n )}\n {!user.isPro() && (\n \n \n {t(\"projects.label.expected.date\")}\n \n \n {t(\"projects.free.route.premium.pro\")}\n \n \n )}\n

\n )\n );\n };\n\n /**\n * renderConstructionSum\n *\n * @returns {false|JSX.Element}\n */\n const renderConstructionSum = () => {\n return (\n props.favorite.Construction_sum !== undefined &&\n props.favorite.Construction_sum !== \"\" &&\n props.favorite.Construction_sum !== null &&\n props.favorite.Type !== \"Submission\" && (\n

\n {user.isPro() && (\n \n \n {t(\"projects.label.construction.sum\")}\n \n \n {props.favorite.Construction_sum}\n \n \n )}\n {!user.isPro() && (\n \n \n {t(\"projects.label.construction.sum\")}\n \n \n {t(\"projects.free.route.premium.pro\")}\n \n \n )}\n

\n )\n );\n };\n\n /**\n * render the detail view of a favorite\n */\n const favoriteDetails = () => {\n return (\n \n \n

\n {t(\"favorites.label.fastest.route\")}\n

\n \n \n \n \n

{t(\"projects.label.owner\")}

\n

\n {GetSafe(() => props.favorite.Building_owner.Name, \"\")}\n
\n {GetSafe(\n () => props.favorite.Building_owner.Address.Street,\n \"\"\n )}{\" \"}\n {GetSafe(() => props.favorite.Building_owner.Address.Number, \"\")}\n
\n {GetSafe(() => props.favorite.Building_owner.Address.Zip, \"\")}{\" \"}\n {GetSafe(() => props.favorite.Building_owner.Address.City, \"\")}\n

\n {renderApprovalDate()}\n {renderConstructionSum()}\n {props.favorite.Type === BUILDING_APPLICATION_TYPE.SUBMISSION ? (\n

\n \n {t(\"favorite.submission.id.label\")}\n \n
\n {props.favorite.Notice_number}\n

\n ) : null}\n {props.favorite.Type !== BUILDING_APPLICATION_TYPE.SUBMISSION ? (\n \n \n \n {t(\"projects.label.original.project\")}\n \n \n ) : null}\n
\n \n

{t(\"projects.label.architect\")}

\n {ProjectManagementAddressDataValidator.isValid(\n props.favorite.Project_management.Address\n ) && (\n

\n {GetSafe(() => props.favorite.Project_management.Name, \"\")}\n
\n {GetSafe(\n () => props.favorite.Project_management.Address.Street,\n \"\"\n )}{\" \"}\n {GetSafe(\n () => props.favorite.Project_management.Address.Number,\n \"\"\n )}\n
\n {GetSafe(\n () => props.favorite.Project_management.Address.Zip,\n \"\"\n )}{\" \"}\n {GetSafe(\n () => props.favorite.Project_management.Address.City,\n \"\"\n )}\n
\n {isProcessable(\n GetSafe(() => props.favorite.Project_management.Phone, \"\")\n ) && (\n props.favorite.Project_management.Phone, \"\")\n }\n >\n {GetSafe(() => props.favorite.Project_management.Phone, \"\")}\n \n )}\n
\n {isProcessable(\n GetSafe(() => props.favorite.Project_management.Email, \"\")\n ) && (\n props.favorite.Project_management.Email, \"\")\n }\n >\n {GetSafe(() => props.favorite.Project_management.Email, \"\")}\n \n )}\n

\n )}\n {props.favorite.Type === BUILDING_APPLICATION_TYPE.SUBMISSION && props.favorite.URL !== \"\" ? (\n \n \n {t(\"submissions.label.simap.link\")}\n \n \n ) : (\n showApplyButton() && (\n \n {getApplyButtonText()}\n \n )\n )}\n {props.favorite.Type !== BUILDING_APPLICATION_TYPE.SUBMISSION ? (\n \n {getAppicationPrintButtonText()}\n \n ) : null}\n \n \n
\n \n );\n };\n\n /**\n * renderPrintAndShare\n **/\n const renderPrintAndShare = () => {\n return (\n \n \n \n \n \n \n \n \"logo\"\n \n \n \n \n \n \n \n \n \n {GetSafe(() => props.favorite.Final_title, \"\")}\n \n \n {GetSafe(() => props.favorite.Construction_site.Address.City, \"\")}{\" \"}\n {GetSafe(\n () => props.favorite.Construction_site.Address.Street,\n \"\"\n )}{\" \"}\n {GetSafe(\n () => props.favorite.Construction_site.Address.Number,\n \"\"\n )}\n \n {!user.hasZipSearchAreas() && (\n \n {GetSafe(\n () =>\n FormatHelper.formatDistance(\n props.favorite.Calculated_distance\n ) + \" km\",\n \"\"\n )}\n \n )}\n \n {GetSafe(() => FormatHelper.formatDate(props.favorite.Date), \"\")}\n \n \n \n \n

{t(\"projects.label.owner\")}

\n

\n {GetSafe(() => props.favorite.Building_owner.Name, \"\")}\n
\n {GetSafe(\n () => props.favorite.Building_owner.Address.Street,\n \"\"\n )}{\" \"}\n {GetSafe(\n () => props.favorite.Building_owner.Address.Number,\n \"\"\n )}\n
\n {GetSafe(\n () => props.favorite.Building_owner.Address.Zip,\n \"\"\n )}{\" \"}\n {GetSafe(() => props.favorite.Building_owner.Address.City, \"\")}\n

\n
\n \n

\n {t(\"projects.label.architect\")}\n

\n

\n {GetSafe(() => props.favorite.Project_management.Name, \"\")}\n
\n {GetSafe(\n () => props.favorite.Project_management.Address.Street,\n \"\"\n )}{\" \"}\n {GetSafe(\n () => props.favorite.Project_management.Address.Number,\n \"\"\n )}\n
\n {GetSafe(\n () => props.favorite.Project_management.Address.Zip,\n \"\"\n )}{\" \"}\n {GetSafe(\n () => props.favorite.Project_management.Address.City,\n \"\"\n )}\n
\n {GetSafe(() => props.favorite.Project_management.Phone, \"\")}\n
\n {GetSafe(() => props.favorite.Project_management.Email, \"\")}\n

\n
\n
\n \n {props.favorite.Content}\n \n
\n
\n );\n };\n\n /**\n * handlePrint\n */\n const handlePrint = (event) => {\n event.stopPropagation();\n PHE.printHtml(renderToString(renderPrintAndShare()));\n };\n\n /**\n * handleOpenDetailsClick\n */\n const handleOpenDetailsClick = () => {\n if (!removed) {\n setOpen(!open);\n }\n };\n\n /**\n * return\n */\n return (\n <>\n {fetchingUpdateFavorite && }\n \n \n {removed ? (\n \n \n \n ) : (\n setOpen(!open)}\n className={`${classes.icon} ${removedClass()}`}\n >\n {open ? (\n \n ) : (\n \n )}\n \n )}\n \n {removed ? (\n \n ) : (\n \n )}\n \n \n {removed ? (\n \n \n \n ) : (\n \n \n \n )}\n \n \n {t(\"general.label.print\")}\n \n \n \n {removed ? (\n \n \n {t(\"favorites.label.removed\")}\n \n  \n \n {t(\"general.label.undo\")}\n \n \n ) : (\n <>\n \n {props.favorite.Type === BUILDING_APPLICATION_TYPE.SUBMISSION ? (\n \n \n \n ) : null}\n {props.favorite.Final_title}\n \n \n {GetSafe(() => props.favorite.Construction_site.Address.City, \"\")}{\" \"}\n {GetSafe(\n () => props.favorite.Construction_site.Address.Street,\n \"\"\n )}{\" \"}\n {GetSafe(\n () => props.favorite.Construction_site.Address.Number,\n \"\"\n )}\n \n {!user.hasZipSearchAreas() && (\n \n {GetSafe(\n () =>\n FormatHelper.formatDistance(\n props.favorite.Calculated_distance\n ) + \" km\",\n \"\"\n )}\n \n )}\n \n {GetSafe(() => FormatHelper.formatDate(props.favorite.Date), \"\")}\n \n \n )}\n \n {open ? favoriteDetails() : null}\n \n );\n};\n\nexport default withAccessControl(\n FavoritesTableRow,\n ACL_COMPONENTS.FAVORITES_TABLE_ROW\n);\n","import React, { useContext, useEffect, useState } from \"react\";\nimport clsx from \"clsx\";\nimport Dialog from \"@material-ui/core/Dialog\";\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport DialogContent from \"@material-ui/core/DialogContent\";\nimport Grid from \"@material-ui/core/Grid\";\nimport TextField from \"@material-ui/core/TextField\";\nimport Button from \"@material-ui/core/Button\";\nimport CloseIcon from \"@material-ui/icons/Close\";\nimport { navigate } from \"hookrouter\";\nimport { Trans, useTranslation } from \"react-i18next\";\nimport { Link, makeStyles } from \"@material-ui/core\";\nimport GlobalContext from \"../../lib/GlobalContext\";\nimport FormatHelper from \"../../lib/FormatHelper\";\nimport { MESSAGE_TYPES } from \"../PopupMessages\";\nimport { useMutation, useQuery } from \"urql\";\nimport CircularProgress from \"@material-ui/core/CircularProgress\";\nimport InputAdornment from \"@material-ui/core/InputAdornment\";\nimport { apiTld, companyDirectoryPath } from \"../../config\";\nimport ExternalErrorLogger from \"@ennit/react-external-errorlogger\";\n\nconst useStyles = makeStyles((theme) => ({\n dialogRoot: {\n flexGrow: 1,\n },\n dialogTitle: {\n display: \"flex\",\n justifyContent: \"flex-end\",\n alignItems: \"flex-end\",\n paddingBottom: 0,\n },\n dialog: {\n width: \"100%\",\n paddingBottom: 56,\n \"&::before\": theme.watermarkLogo,\n [theme.breakpoints.down(\"sm\")]: {\n padding: 20,\n },\n },\n gridContainer: {\n width: \"100%\",\n maxWidth: 1280,\n padding: \"16px 24px\",\n [theme.breakpoints.down(\"sm\")]: {\n alignItems: \"flex-start\",\n },\n },\n gridItem: {\n width: \"50%\",\n padding: \"8px 0\",\n [theme.breakpoints.down(\"sm\")]: {\n width: \"100%\",\n },\n },\n itemHeader: {\n maxWidth: 400,\n paddingTop: 44,\n paddingBottom: 24,\n [theme.breakpoints.down(\"sm\")]: {\n paddingTop: 20,\n paddingBottom: 20,\n },\n },\n title: {\n margin: 0,\n fontSize: 24,\n lineHeight: \"30px\",\n textAlign: \"center\",\n [theme.breakpoints.down(\"sm\")]: {\n textAlign: \"left\",\n },\n },\n startButton: {\n width: \"100%\",\n color: \"#fff\",\n fontWeight: \"bold\",\n },\n link: {\n cursor: \"pointer\",\n },\n directoryName: {\n fontWeight: \"bold\",\n backgroundColor: theme.palette.background.footer,\n },\n}));\n\nconst createMicrositeMutation = `\n mutation (\n $URLSegment: String!\n $CheckURLSegment: Boolean!\n ) {\n createMicrosite (\n URLSegment: $URLSegment\n CheckURLSegment: $CheckURLSegment\n ) {\n URLSegment\n CheckURLSegment\n }\n }\n`;\n\nconst queryMyself = `\n{\n readMyself {\n Company {\n MicrositeEmailApplicationText\n }\n }\n}\n`;\n\n/**\n * CompanyDirectoryNameDialog\n *\n * @constructor\n */\nconst CompanyDirectoryNameDialog = (props) => {\n const classes = useStyles();\n const { formValues, setFormValues } = props;\n const { user, token, setUser, setMessage, unsetUser, unsetToken } =\n useContext(GlobalContext);\n const { t } = useTranslation();\n const [directoryName, setDirectoryName] = useState(\"\");\n const [checkUrlSegment, setCheckUrlSegment] = useState(true);\n const [showDoubleOptInContent, setShowDoubleOptInContent] = useState(false);\n const [directoryNameError, setDirectoryNameError] = useState({\n hasError: false,\n message: \"\",\n });\n const [showExplanation, setShowExplanation] = useState(false);\n\n const [{ fetching }, executeCreateMicrositeMutation] = useMutation(\n createMicrositeMutation\n );\n\n const [result, executeMyselfQuery] = useQuery({\n query: queryMyself,\n variables: { token: token.getData().access_token }, // Required as cache-control mechanism\n requestPolicy: \"network-only\",\n pause: true,\n });\n\n useEffect(() => {\n if (!result.fetching) {\n if (result.error) {\n // Check if the user need to be logged out\n if (result.error.message.indexOf(\"User forced logout\") !== -1) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.user.forced.logout\"));\n unsetUser();\n unsetToken();\n navigate(\"/\");\n } else {\n // Something went very wrong\n ExternalErrorLogger.log({\n text: \"Error fetching myself on CompanyDirectoryNameDialog\",\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n errorMessage: result.error.message,\n },\n });\n }\n } else {\n if (\n typeof result.data !== \"undefined\" &&\n typeof result.data.readMyself !== \"undefined\"\n ) {\n setMessage(MESSAGE_TYPES.SUCCESS, t(\"general.label.save.success\"));\n user.setData({\n company: {\n urlSegment: directoryName,\n micrositeEmailApplicationText:\n result.data.readMyself[0].Company.MicrositeEmailApplicationText,\n },\n });\n setUser(user);\n navigate(\"/wizard\");\n }\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [result])\n\n /**\n * useEffect\n */\n useEffect(() => {\n const { directoryName: contextDirectoryName, name: contextCompanyName } =\n user.getData().company;\n if (contextDirectoryName) {\n setDirectoryName(contextDirectoryName);\n } else {\n const formattedCompanyName =\n FormatHelper.formatDirectoryName(contextCompanyName);\n setDirectoryName(formattedCompanyName.toLowerCase());\n }\n }, [user, setDirectoryName]);\n\n /**\n * closeDialogue\n */\n const closeDialogue = () => {\n navigate(\"/company\");\n };\n\n /**\n * handleDirectoryNameChange\n *\n * @param event\n */\n const handleDirectoryNameChange = (event) => {\n setDirectoryName(event.target.value);\n };\n\n /**\n * isDirectoryNameValid\n *\n * @returns {boolean}\n */\n const isDirectoryNameValid = () => {\n let isValid = true;\n\n if (\n directoryName === \"\" ||\n directoryName.match(/[^A-Za-z0-9-]+/u) !== null\n ) {\n isValid = false;\n }\n\n return isValid;\n };\n\n /**\n * handleSubmit\n */\n const handleSubmit = () => {\n if (showExplanation) {\n executeMyselfQuery();\n } else if (isDirectoryNameValid()) {\n // Everything is good, start the api call\n\n executeCreateMicrositeMutation({\n URLSegment: directoryName,\n CheckURLSegment: checkUrlSegment,\n }).then((result) => {\n if (result.error) {\n if (result.error.message.indexOf(\"User forced logout\") !== -1) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.user.forced.logout\"));\n unsetUser();\n unsetToken();\n navigate(\"/\");\n } else {\n console.log(result.error);\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.save\")); // TODO: set suitable error message!\n setDirectoryNameError({\n hasError: true,\n message: t(\"company.label.microsite.directory.name.error\"),\n });\n setFormValues({ ...formValues, directoryName: \"\" });\n }\n } else {\n // check if url segment differs from directory name\n if (result.data.createMicrosite[0].URLSegment !== directoryName) {\n setDirectoryNameError({\n hasError: true,\n message: t(\"company.label.microsite.directory.name.error\"),\n });\n setDirectoryName(result.data.createMicrosite[0].URLSegment);\n } else {\n if (checkUrlSegment) {\n // show double opt in content\n setShowDoubleOptInContent(true);\n setCheckUrlSegment(false);\n } else {\n // everything is fine microsite is created\n setShowExplanation(true);\n }\n }\n }\n });\n } else {\n setDirectoryNameError({\n hasError: true,\n message: t(\"error.form.directory.name.not.valid\"),\n });\n }\n };\n\n /**\n * handleChangeDirectoryNameLink\n *\n * @param event\n */\n const handleChangeDirectoryNameLink = (event) => {\n event.preventDefault();\n setShowDoubleOptInContent(false);\n setCheckUrlSegment(true);\n };\n\n /**\n * return\n */\n return (\n \n \n {\n closeDialogue();\n }}\n >\n \n \n \n {showExplanation && (\n \n \n \n

\n {t(\"company.label.microsite.explanation.header\")}\n

\n
\n \n

{t(\"company.label.microsite.explanation\")}

\n
\n \n \n {t(\"general.label.acknowledged\")}\n \n \n \n
\n )}\n {!showExplanation && (\n \n \n \n

\n {showDoubleOptInContent\n ? t(\"company.label.microsite.are.you.sure\")\n : t(\"company.label.microsite\")}\n

\n

\n {showDoubleOptInContent ? (\n t(\"company.label.microsite.double.opt.in.intro\")\n ) : (\n \n )}\n

\n
\n {showDoubleOptInContent && (\n \n {apiTld + companyDirectoryPath}\n {directoryName}\n \n )}\n \n {!showDoubleOptInContent && (\n \n {companyDirectoryPath}\n \n ),\n }}\n />\n )}\n {showDoubleOptInContent && (\n \n {t(\"company.label.microsite.change.web.address\")}\n \n )}\n \n \n \n {showDoubleOptInContent\n ? t(\"company.label.microsite.submit\")\n : t(\"company.label.microsite.verify\")}\n {fetching && (\n \n )}\n \n \n \n
\n )}\n \n );\n};\n\nexport default CompanyDirectoryNameDialog;\n","import React from \"react\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport withAccessControl from \"../HOC/AccessControl\";\nimport { ACL_COMPONENTS, isNotLive } from \"../../config\";\nimport { Grid, Typography } from \"@material-ui/core\";\nimport DebugImportantDataFragment from \"./DebugImportantDataFragment\";\nimport User from \"../../lib/User\";\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n flexGrow: 1,\n width: \"100%\",\n maxWidth: 1280,\n },\n debugHolder: {\n marginTop: 7,\n paddingTop: 10,\n paddingBottom: 10,\n paddingRight: 20,\n paddingLeft: 20,\n background: \"rgba(255, 255, 255, 0.5)\",\n borderRadius: 3,\n border: \"1px solid #edcc4a\",\n },\n debugListWrapper: {\n paddingTop: 10,\n paddingBottom: 10,\n paddingRight: 20,\n paddingLeft: 20,\n background: \"#fff4db\",\n },\n debugListTitle: {\n fontSize: 20,\n fontWeight: \"bold\",\n marginBottom: 5,\n },\n debugTitle: {\n marginRight: 10,\n },\n}));\n\n/**\n * DebugFavorites\n *\n * @returns {*}\n * @constructor\n */\nconst DebugFavorites = () => {\n const classes = useStyles();\n\n return (!User.isMasquerade() && (isNotLive || User.isAppAdmin())) ? (\n
\n \n \n Debugging-Tools (Favorites-Page){\" \"}\n \n \n \n
\n ) : null;\n};\n\nexport default withAccessControl(DebugFavorites, ACL_COMPONENTS.FAVORITES);\n","import React, { useContext, useEffect, useRef, useState } from \"react\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport { useQuery } from \"urql\";\nimport Table from \"@material-ui/core/Table\";\nimport TableBody from \"@material-ui/core/TableBody\";\nimport TableCell from \"@material-ui/core/TableCell\";\nimport TableHead from \"@material-ui/core/TableHead\";\nimport TableFooter from \"@material-ui/core/TableFooter\";\nimport TablePagination from \"@material-ui/core/TablePagination\";\nimport TableRow from \"@material-ui/core/TableRow\";\nimport Paper from \"@material-ui/core/Paper\";\nimport LinearProgress from \"@material-ui/core/LinearProgress\";\nimport TablePaginationActions from \"../components/Table/TablePaginationActions\";\nimport FavoritesTableRow from \"../components/Favorites/FavoritesTableRow\";\nimport GlobalContext from \"../lib/GlobalContext\";\nimport { useTranslation } from \"react-i18next\";\nimport withAccessControl from \"../components/HOC/AccessControl\";\nimport { MESSAGE_TYPES } from \"../components/PopupMessages\";\nimport { navigate } from \"hookrouter\";\nimport { ACL_COMPONENTS, isNotLive } from \"../config\";\nimport { Chip, Grid, Typography } from \"@material-ui/core\";\nimport DoneIcon from \"@material-ui/icons/Done\";\nimport clsx from \"clsx\";\nimport Link from \"@material-ui/core/Link\";\nimport CloudDownloadIcon from \"@material-ui/icons/CloudDownload\";\nimport CompanyDirectoryNameDialog from \"../components/Company/CompanyDirectoryNameDialog\";\nimport DebugFavorites from \"../components/Debug/DebugFavorites\";\nimport User from \"../lib/User\";\n\n/**\n * useStyles\n */\nconst useStyles = makeStyles((theme) => ({\n root: {\n flexGrow: 1,\n width: \"100%\",\n maxWidth: 1280,\n },\n table: {\n minWidth: \"100%\",\n },\n tableWrapper: {\n overflowX: \"auto\",\n [theme.breakpoints.up(\"lg\")]: {\n overflowX: \"hidden\",\n },\n },\n tableColumnsHead: {\n height: 96,\n },\n tableCellColumnsHeader: {\n padding: \"40px 14px 16px 14px\",\n fontSize: theme.typography.fontSize,\n color: \"#999999\",\n fontWeight: \"bold\",\n \"&:first-of-type\": {\n paddingLeft: 24,\n },\n \"@media (max-width:640px)\": {\n \"&:first-of-type\": {\n paddingLeft: 14,\n },\n },\n },\n tableCellColumnsBody: {\n padding: \"20px 14px\",\n },\n tableCell: {\n height: 64,\n },\n tableRows: {\n paddingLeft: 36,\n },\n locationHead: {\n fontWeight: \"bold\",\n },\n icon: {\n padding: 8,\n },\n listContent: {\n paddingLeft: 36,\n },\n paginationInput: {\n height: 28,\n width: 25,\n },\n paginationSelectIcon: {\n color: theme.palette.primary.main,\n },\n searchFilterGroup: {\n justifyContent: \"flex-end\",\n [theme.breakpoints.down(\"xs\")]: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"flex-start\",\n width: \"auto\",\n maxWidth: 200,\n },\n },\n searchFilterItem: {\n [theme.breakpoints.down(\"xs\")]: {\n display: \"flex\",\n flexDirection: \"column\",\n flexWrap: \"wrap\",\n },\n \"@media (max-width:810px)\": {\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(1),\n },\n },\n searchFilterButtonGroup: {\n display: \"inline-block\",\n marginRight: theme.spacing(1),\n marginLeft: theme.spacing(3),\n [theme.breakpoints.down(\"xs\")]: {\n marginLeft: theme.spacing(1),\n },\n },\n searchFilterButton: {\n marginRight: 4,\n marginLeft: 4,\n fontSize: 14,\n fontWeight: \"normal\",\n [theme.breakpoints.down(\"xs\")]: {\n marginTop: 4,\n marginBottom: 4,\n },\n \"&.MuiChip-colorPrimary\": {\n color: \"#fff\",\n },\n \"&.active\": {\n background: theme.palette.primary.main,\n color: \"#fff\",\n },\n },\n noBottomBorder: {\n borderBottom: 0,\n paddingBottom: 0,\n },\n export: {\n cursor: \"pointer\",\n },\n exportHolder: {\n display: \"flex\",\n alignItems: \"center\",\n paddingLeft: theme.spacing(1),\n },\n exportLink: {\n fontWeight: \"bold\",\n marginLeft: 10,\n fontSize: 14,\n textTransform: \"uppercase\",\n },\n}));\n\nconst queryFavorites = `\n query ReadFavorites (\n $userHashID: ID,\n $filterFor: [String]\n ) {\n readFavorites(\n ID: $userHashID,\n sortBy: [{field: Date, direction: DESC}],\n ConstructionTypeContains: $filterFor\n ) {\n HashID\n ProjectHashID\n Type\n Removed\n State\n Canton\n Calculated_distance\n Content\n Final_title\n Date\n Applied\n Type_of_construction\n Type_of_building\n Notice_number\n URL,\n Approval_date\n Construction_sum\n Construction_site {\n Address {\n Street\n Number\n Zip\n City\n Geo {\n lat\n lon\n }\n }\n }\n Building_owner {\n Name\n Address {\n Street\n Number\n Zip\n City\n Geo {\n lat\n lon\n }\n }\n }\n Project_management {\n Name\n Phone\n Email\n Website\n Email_other\n Address {\n Street\n Number\n Zip\n City\n Geo {\n lat\n lon\n }\n }\n }\n StateHistory {\n edges {\n node {\n Created\n State\n }\n }\n }\n Notes {\n edges {\n node {\n HashID\n Text\n Created\n Removed\n }\n }\n }\n }\n }\n`;\n\nconst queryFavoritesCsvLink = `\n {\n readFavoritesCsvLink {\n Title\n AbsoluteLink\n Position\n }\n }\n`;\n\n/**\n * Favorites\n *\n * @returns {*}\n * @constructor\n */\nconst Favorites = () => {\n const classes = useStyles();\n const {\n favoriteData,\n setFavoriteData,\n token,\n setToken,\n user,\n setMessage,\n unsetUser,\n unsetToken,\n debugToolsEnabled,\n } = useContext(GlobalContext);\n \n const { t } = useTranslation();\n const [page, setPage] = useState(0);\n const [rowsPerPage, setRowsPerPage] = useState(10);\n const [querySearchFilter, setQuerySearchFilter] = useState([]);\n const [queryVariables, setQueryVariables] = useState({\n userHashID: user.getData().hashID,\n filterFor: [],\n });\n const [verifyDialogOpen, setVerifyDialogOpen] = useState(true);\n const [showNoResultMessage, setShowNoResultMessage] = useState(false);\n \n const columns = [\n { id: \"actions\", label: t(\"general.label.actions\"), minWidth: 200 },\n { id: \"projects\", label: t(\"general.label.projects\"), minWidth: 100 },\n {\n id: \"city\",\n label: t(\"general.label.address\"),\n minWidth: 120,\n align: \"left\",\n },\n !user.hasZipSearchAreas()\n ? {\n id: \"route\",\n label: t(\"general.label.distance\"),\n minWidth: 120,\n align: \"left\",\n }\n : {},\n {\n id: \"date\",\n label: t(\"general.label.date\"),\n minWidth: 120,\n align: \"left\",\n },\n ];\n\n // GraphQL query for favorites, gets triggered by calling \"executeFavoritesQuery()\"\n const [result, executeFavoritesQuery] = useQuery({\n query: queryFavorites,\n variables: queryVariables,\n requestPolicy: \"network-only\",\n pause: true,\n });\n\n // GraphQL query for favorites csv link, gets triggered by calling \"executeFavoritesCsvLinkQuery()\"\n const [resultCsvLink, executeFavoritesCsvLinkQuery] = useQuery({\n query: queryFavoritesCsvLink,\n variables: {},\n requestPolicy: \"network-only\",\n pause: true,\n });\n\n const prevQuerySearchFilter = useRef(querySearchFilter);\n\n /* eslint-disable */\n useEffect(() => {\n if (prevQuerySearchFilter.current !== querySearchFilter) {\n setQueryVariables({ ...queryVariables, filterFor: querySearchFilter });\n prevQuerySearchFilter.current = querySearchFilter;\n }\n }, [querySearchFilter]);\n\n /**\n * useEffect\n */\n useEffect(() => {\n executeFavoritesQuery();\n }, [queryVariables, user, token, setToken]);\n /* eslint-enable */\n\n useEffect(() => {\n handleFavoritesResult()\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [result])\n\n useEffect(() => {\n handleCSVResult()\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [resultCsvLink])\n\n const handleFavoritesResult = () => {\n // GraphQL trigger and result handling\n if (!result.fetching) {\n if (result.error) {\n // Check if the user need to be logged out\n if (result.error.message.indexOf(\"User forced logout\") !== -1) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.user.forced.logout\"));\n unsetUser();\n unsetToken();\n navigate(\"/\");\n } else if (\n result.error.message.indexOf(\"Your query did not return any results\")\n ) {\n if (!showNoResultMessage) {\n setShowNoResultMessage(true);\n }\n setFavoriteData([]);\n } else {\n console.error(\"Something went very wrong...\");\n }\n } else {\n if (\n typeof result.data !== \"undefined\" &&\n typeof result.data.readFavorites !== \"undefined\"\n ) {\n // Add the favorites to the global context\n setFavoriteData(result.data.readFavorites);\n setShowNoResultMessage(false);\n }\n }\n } \n }\n\n const handleCSVResult = () => {\n // GraphQL trigger and result handling\n if (!resultCsvLink.fetching) {\n if (resultCsvLink.error) {\n // Check if the user need to be logged out\n if (resultCsvLink.error.message.indexOf(\"User forced logout\") !== -1) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.user.forced.logout\"));\n unsetUser();\n unsetToken();\n navigate(\"/\");\n }\n } else {\n if (\n typeof resultCsvLink.data !== \"undefined\" &&\n typeof resultCsvLink.data.readFavoritesCsvLink !== \"undefined\"\n ) {\n // Initiate Download\n window.location.href =\n resultCsvLink.data.readFavoritesCsvLink.AbsoluteLink;\n }\n }\n }\n }\n\n /**\n * handleChangePage\n *\n * @param event\n * @param newPage\n */\n const handleChangePage = (event, newPage) => {\n setPage(newPage);\n };\n\n /**\n * handleChangeRowsPerPage\n *\n * @param event\n */\n const handleChangeRowsPerPage = (event) => {\n setRowsPerPage(parseInt(event.target.value, 10));\n setPage(0);\n };\n\n /**\n * toggleQuerySearchFilterValue\n *\n * @param {*} filterValue\n */\n const toggleQuerySearchFilterValue = (filterValue) => {\n let newQuerySearchFilter = [];\n const currentQuerySearchFilter = [];\n\n for (let index = 0; index < querySearchFilter.length; index++) {\n currentQuerySearchFilter.push(querySearchFilter[index]);\n }\n\n if (currentQuerySearchFilter.includes(filterValue)) {\n newQuerySearchFilter = currentQuerySearchFilter.filter(\n (element) => element !== filterValue\n );\n } else {\n currentQuerySearchFilter.push(filterValue);\n newQuerySearchFilter = currentQuerySearchFilter;\n }\n\n setQuerySearchFilter(newQuerySearchFilter);\n };\n\n /**\n * handleFavoritesDownload\n */\n const handleFavoritesDownload = () => {\n executeFavoritesCsvLinkQuery();\n };\n\n /**\n * return\n */\n return (\n <>\n {}}\n verifyDialogOpen={verifyDialogOpen}\n />\n \n
\n \n \n \n \n \n \n \n Filter:\n \n \n ) : null\n }\n className={classes.searchFilterButton}\n onClick={(event) => {\n toggleQuerySearchFilterValue(\"new\");\n }}\n />\n \n ) : null\n }\n className={classes.searchFilterButton}\n onClick={(event) => {\n toggleQuerySearchFilterValue(\"modification\");\n }}\n />\n \n ) : null\n }\n className={classes.searchFilterButton}\n onClick={(event) => {\n toggleQuerySearchFilterValue(\"demolition\");\n }}\n />\n \n \n \n \n \n {columns.map((column) => {\n if (column.id) {\n return (\n \n {column.label}\n \n );\n }\n\n return null;\n })}\n \n \n \n {!result.fetching && showNoResultMessage && (\n \n \n {t(\"general.label.no.favorites\")}\n \n \n )}\n {result.fetching && (\n \n \n \n \n \n \n \n )}\n {!result.fetching &&\n favoriteData\n .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage)\n .map((row) => (\n \n ))}\n \n \n \n \n \n \n \n \n {t(\"favorites.label.export\")}\n \n \n \n \n <>,\n }}\n labelDisplayedRows={({ from, to, count }) => {\n return `${from} - ${to === -1 ? count : to}`;\n }}\n labelRowsPerPage={\n <>\n {rowsPerPage} {t(\"general.label.rows\")}\n \n }\n classes={{\n input: classes.paginationInput,\n selectIcon: classes.paginationSelectIcon,\n }}\n onChangePage={handleChangePage}\n onChangeRowsPerPage={handleChangeRowsPerPage}\n ActionsComponent={TablePaginationActions}\n />\n \n \n
\n
\n {(!User.isMasquerade() && (isNotLive || User.isAppAdmin())) && debugToolsEnabled && }\n
\n \n );\n};\n\nexport default withAccessControl(Favorites, ACL_COMPONENTS.FAVORITES);\n","import React from 'react'\n\n/**\n * NotFoundPage\n *\n * @returns {*}\n * @constructor\n */\nconst NotFoundPage = () => {\n return
NOT FOUND
\n}\n\nexport default NotFoundPage\n","export const externalLinkTitles = {\n IMPRINT: 'Impressum',\n DATAPROTECTION: 'Datenschutz',\n PRODUCT_OVERVIEW: 'Produktübersicht',\n FUNCTIONS: 'Funktionen',\n PRICES: 'Preise',\n BLOG: 'Blog',\n SUPPORT: 'Support',\n ABOUT: 'Über uns',\n CONDITIONS: 'AGB',\n REGISTER: 'Registrieren',\n TERMS: 'Nutzungsbedingungen',\n REFERRALPROGRAM: 'Empfehlungsprogramm'\n}\n\n/**\n * getAbsoluteLink\n *\n * When title is omitted, the first link within the category will be taken,\n * this is useful if only a single link within the category is expected.\n *\n * @param cmsLinks\n * @param category\n * @param title\n * @returns {string}\n */\nexport const getAbsoluteLink = (cmsLinks, category, title = null) => {\n if (cmsLinks !== undefined && cmsLinks !== null) {\n let match = ''\n for (let j = 0; j < cmsLinks.length; j++) {\n if (\n typeof cmsLinks[j].Title !== 'undefined' &&\n cmsLinks[j].Title === category\n ) {\n if (title === null) {\n if (!cmsLinks[j].Links) {\n match = ''\n } else {\n match = cmsLinks[j].Links[0].AbsoluteLink\n }\n break\n } else {\n if (!cmsLinks[j].Links) {\n match = ''\n } else {\n for (\n let i = 0, length = cmsLinks[j].Links.length;\n i < length;\n i++\n ) {\n if (cmsLinks[j].Links[i].Title === title) {\n match = cmsLinks[j].Links[i].AbsoluteLink\n break\n }\n }\n }\n }\n }\n }\n return match\n } else {\n return ''\n }\n}\n","import React, { useContext, useEffect, useState } from \"react\";\nimport clsx from \"clsx\";\nimport TextField from \"@material-ui/core/TextField\";\nimport InputAdornment from \"@material-ui/core/InputAdornment\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport Visibility from \"@material-ui/icons/Visibility\";\nimport VisibilityOff from \"@material-ui/icons/VisibilityOff\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport Button from \"@material-ui/core/Button\";\nimport Grid from \"@material-ui/core/Grid\";\nimport { makeStyles } from \"@material-ui/core\";\nimport { useTranslation } from \"react-i18next\";\nimport GlobalContext from \"../../lib/GlobalContext\";\nimport { navigate } from \"hookrouter\";\nimport Joi from \"@hapi/joi\";\nimport FormValueErrorsBuilder from \"../../lib/FormValueErrorsBuilder\";\nimport GetSafe from \"../../lib/GetSafe\";\nimport CantonShortener from \"../../lib/CantonShortener\";\nimport { useMutation, useQuery } from \"urql\";\nimport CircularProgress from \"@material-ui/core/CircularProgress\";\nimport { green } from \"@material-ui/core/colors\";\nimport { MESSAGE_TYPES } from \"../PopupMessages\";\nimport { ACL_COMPONENTS, CANTON_LIST, STRIPE_PLAN_IDS } from \"../../config\";\nimport withAccessControl, { parsePermissions } from \"../HOC/AccessControl\";\nimport GooglePlacesAPIHelper from \"../../lib/GooglePlacesAPIHelper\";\nimport FormControl from \"@material-ui/core/FormControl\";\nimport FormControlLabel from \"@material-ui/core/FormControlLabel\";\nimport Checkbox from \"@material-ui/core/Checkbox\";\nimport Link from \"@material-ui/core/Link\";\nimport { externalLinkTitles, getAbsoluteLink } from \"../../lib/CmsLinkHandler\";\nimport FormHelperText from \"@material-ui/core/FormHelperText\";\nimport ExternalErrorLogger from \"@ennit/react-external-errorlogger\";\nimport FormatHelper from \"../../lib/FormatHelper\";\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n flexGrow: 1,\n },\n startButton: {\n width: \"100%\",\n maxWidth: 330,\n color: \"#fff\",\n fontWeight: \"bold\",\n },\n textField: {\n width: \"100%\",\n },\n textFieldSmall: {\n width: 160,\n \"&:first-of-type\": {\n marginRight: 5,\n },\n \"&:last-of-type\": {\n marginLeft: 5,\n },\n [theme.breakpoints.down(\"sm\")]: {\n width: \"100%\",\n \"&:first-of-type\": {\n marginRight: 0,\n marginBottom: 20,\n },\n \"&:last-of-type\": {\n marginLeft: 0,\n },\n },\n },\n title: {\n margin: 0,\n fontSize: 24,\n lineHeight: \"30px\",\n textAlign: \"center\",\n [theme.breakpoints.down(\"sm\")]: {\n textAlign: \"left\",\n },\n },\n item: {\n width: \"100%\",\n maxWidth: 330,\n paddingTop: 20,\n paddingBottom: 20,\n },\n itemHeader: {\n maxWidth: 400,\n paddingTop: 44,\n paddingBottom: 24,\n [theme.breakpoints.down(\"sm\")]: {\n paddingTop: 20,\n paddingBottom: 20,\n },\n },\n itemPassword: {\n paddingTop: 0,\n [theme.breakpoints.down(\"sm\")]: {\n paddingBottom: 0,\n },\n },\n itemCanton: {\n [theme.breakpoints.down(\"sm\")]: {\n paddingTop: 0,\n paddingBottom: 0,\n },\n },\n buttonProgress: {\n color: green[500],\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n marginTop: -12,\n marginLeft: -12,\n },\n}));\n\n/**\n * updateMyselfMutation\n *\n * @type {string}\n */\nconst updateMyselfMutation = `\n mutation UpdateMyself(\n $email: String!,\n $password: String,\n $firstName: String, \n $lastName: String\n ) {\n updateMyself(\n Email: $email,\n Password: $password,\n Firstname: $firstName,\n Surname: $lastName\n RegistrationHash: \"\"\n ) {\n Email\n Firstname\n Surname\n }\n }\n`;\n\n/**\n * updateCompanyMutation\n *\n * @type {string}\n */\nconst updateCompanyMutation = `\n mutation UpdateCompany(\n $hashId: String!,\n $canton: String,\n $latitude: Float,\n $longitude: Float,\n $futurePlanID: String\n ) {\n updateCompany(\n HashID: $hashId, \n Canton: $canton,\n Latitude: $latitude,\n Longitude: $longitude,\n FuturePlanID: $futurePlanID\n ) {\n Name\n FeatureSet\n Street\n Zip\n City\n Canton\n Phone\n Mobile\n Fax\n Website\n Email\n BusinessActivityID\n BusinessSpecialities{\n edges{\n node{\n ID\n Title\n }\n }\n }\n }\n }\n`;\n\nconst queryMyself = `\n{\n readMyself {\n ID\n HashID\n Locale\n Email\n Firstname\n Surname\n Salutation\n StripePublicKey\n CreditCard {\n id\n name\n last4\n expired\n }\n Locations {\n edges {\n node {\n HashID\n Title\n Street\n Zip\n City\n Longitude\n Latitude\n Radius\n Version\n Sort\n Removed\n }\n }\n }\n Company {\n ID\n AdminUserID\n HashID\n FeatureSet\n ZipSearchAreas\n ZipSearchStatistic\n ApplicationFollowUpTimeInDays\n StripeIsTrialing\n StripeTrialingDays\n StripePlanID\n StripeValidThrough\n StripeProductID\n StripeCancelAt\n Name\n URLSegment\n ContactPerson\n Street\n Zip\n City\n Canton\n Distance\n Latitude\n Longitude\n Phone\n Mobile\n Fax\n Website\n Email\n NumberOfEmployees\n LegalForm\n FoundingYear\n MasterBusiness\n TrainingCompany\n BusinessActivityID\n BusinessSpecialities{\n edges {\n node {\n ID\n Title\n NogaCode\n SCCodeCompetence\n BoostScore\n }\n }\n }\n OtherBusinessActivities {\n edges {\n node {\n ID\n }\n }\n }\n OtherBusinessSpecialities {\n edges {\n node {\n ID\n }\n }\n }\n User{\n edges {\n node {\n HashID\n Email\n Firstname\n Surname\n Removed\n SearchAreas {\n HashID\n Title\n ZipList\n }\n }\n }\n }\n Memberships {\n edges {\n node {\n ID\n Title\n LogoUrl\n }\n }\n }\n AllMemberships {\n edges {\n node {\n ID\n Title\n LogoUrl\n IsBadge\n }\n }\n }\n MicrositeCertified\n MicrositeCertifiedUntil\n AdditionalMemberships\n MicrositeColorScheme\n MicrositeDescription\n MicrositeEmailApplicationText\n MicrositeImages {\n edges {\n node {\n Src\n Title\n Alt\n }\n }\n }\n MicrositeLogo {\n Src\n Title\n Alt\n }\n MicrositeReferences {\n edges {\n node {\n Sort\n Title\n Content\n Location\n Year\n Month\n ButtonLink\n ButtonTitle\n MicrositeReferencesImages {\n edges { \n node {\n Src\n Title\n Alt\n }\n }\n }\n }\n }\n }\n ApiAccess {\n edges {\n node {\n RequestUrl\n }\n } \n } \n }\n DossierTemplates {\n edges {\n node {\n HashID\n TemplateName\n }\n }\n }\n Permissions {\n Name\n RequireAdminStatus\n }\n FulltextSearchRequests {\n ID\n Title\n }\n SearchAreas {\n HashID\n Title\n ZipList\n }\n }\n readProduct {\n plans {\n id\n trial_possible\n }\n }\n}\n`;\n\n/**\n * OnboardingFreeUserWelcomeDialog\n *\n * @returns {*}\n * @constructor\n */\nconst OnboardingFreeUserWelcomeDialog = () => {\n const classes = useStyles();\n const { t } = useTranslation();\n const {\n setOpenWelcomeDialog,\n user,\n setUser,\n token,\n setMessage,\n unsetUser,\n unsetToken,\n setUpgradeToPremiumOpen,\n cmsLinks,\n } = useContext(GlobalContext);\n const [formValues, setFormValues] = useState({\n password: \"\",\n showPassword: false,\n firstName: \"\",\n lastName: \"\",\n canton: CantonShortener(user.getData().company.canton),\n termsPolicy: false,\n });\n const [formValueErrors, setFormValueErrors] = useState({\n password: { hasError: false, message: \"\" },\n firstName: { hasError: false, message: \"\" },\n lastName: { hasError: false, message: \"\" },\n termsPolicy: { hasError: false, message: \"\" },\n });\n const [disableButton, setDisableButton] = useState(false);\n\n const [{ fetching }, executeMutation] = useMutation(updateMyselfMutation);\n const [{ fetchingUpdateCompany }, executeUpdateCompanyMutation] = useMutation(\n updateCompanyMutation\n );\n\n /**\n * GraphQL query for user-data (myself), gets triggered by calling \"executeMyselfQuery()\"\n */\n const [resultMyself, executeMyselfQuery] = useQuery({\n query: queryMyself,\n variables: {},\n requestPolicy: \"network-only\",\n pause: true,\n });\n\n /**\n * useEffect\n */\n useEffect(() => {\n setFormValues({\n password: \"\",\n showPassword: false,\n firstName: user.getData().firstName,\n lastName: user.getData().lastName,\n canton: CantonShortener(user.getData().company.canton),\n termsPolicy: false,\n });\n }, [user]);\n\n /**\n * Joi validation schema\n */\n const schema = Joi.object({\n password: Joi.string().required(),\n firstName: Joi.string().required(),\n lastName: Joi.string().required(),\n showPassword: Joi.boolean(),\n canton: Joi.string().required(),\n termsPolicy: Joi.boolean().invalid(false),\n });\n\n /**\n * GraphQL trigger and result handling\n */\n useEffect(() => {\n if (!resultMyself.fetching && token.isSet()) {\n if (resultMyself.error) {\n // Check if the user need to be logged out\n if (resultMyself.error.message.indexOf(\"User forced logout\") !== -1) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.user.forced.logout\"));\n unsetUser();\n unsetToken();\n navigate(\"/\");\n } else {\n // The query did not return any results!\n ExternalErrorLogger.log({\n text: \"Error fetching user data on OnboardingFreeUserWelcomeDialog\",\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n errorMessage: resultMyself.error.message,\n },\n });\n }\n } else {\n // Query not fetching right now\n if (\n typeof resultMyself.data !== \"undefined\" &&\n typeof resultMyself.data.readMyself !== \"undefined\"\n ) {\n const branchSubsData = [];\n resultMyself.data.readMyself[0].Company.BusinessSpecialities.edges.map(\n (item) => {\n branchSubsData.push(parseInt(item.node.ID));\n return branchSubsData;\n }\n );\n\n const memberships = [];\n resultMyself.data.readMyself[0].Company.Memberships.edges.map(\n (item) => {\n memberships.push(item.node);\n return memberships;\n }\n );\n\n const allMemberships = [];\n resultMyself.data.readMyself[0].Company.AllMemberships.edges.map(\n (item) => {\n allMemberships.push(item.node);\n return allMemberships;\n }\n );\n\n const locationData = [];\n resultMyself.data.readMyself[0].Locations.edges.map((item) => {\n const constructionSums = [];\n item.node.ConstructionSumList.edges.map((constructionSum) => {\n constructionSums.push(constructionSum.node.Code);\n return constructionSums;\n });\n\n item.node.ConstructionSums = constructionSums;\n\n locationData.push(item.node);\n return locationData;\n });\n\n locationData.sort((a, b) => {\n return a.Sort - b.Sort;\n });\n\n const companyUsersData = [];\n resultMyself.data.readMyself[0].Company.User.edges.map((item) => {\n if (item.node.HashID !== resultMyself.data.readMyself[0].HashID) {\n companyUsersData.push(item.node);\n }\n return companyUsersData;\n });\n\n const dossierTemplatesData = [];\n resultMyself.data.readMyself[0].DossierTemplates.edges.map((item) => {\n dossierTemplatesData.push(item.node);\n return dossierTemplatesData;\n });\n\n companyUsersData.sort((a, b) => {\n if (a.Firstname.toLowerCase() < b.Firstname.toLowerCase()) {\n return -1;\n }\n if (a.Firstname.toLowerCase() > b.Firstname.toLowerCase()) {\n return 1;\n }\n return 0;\n });\n\n let trialPossible = false;\n\n resultMyself.data.readProduct.map((productItem) => {\n productItem.plans.map((item) => {\n if (item.id.includes(STRIPE_PLAN_IDS.SMART.YEARLY)) {\n trialPossible = item.trial_possible;\n }\n return item;\n });\n return productItem;\n });\n\n // Map the user-data\n user.setData({\n id: resultMyself.data.readMyself[0].ID,\n hashID: resultMyself.data.readMyself[0].HashID,\n locale: resultMyself.data.readMyself[0].Locale || \"\",\n email: resultMyself.data.readMyself[0].Email,\n firstName: resultMyself.data.readMyself[0].Firstname,\n lastName: resultMyself.data.readMyself[0].Surname,\n salutation: resultMyself.data.readMyself[0].Salutation || \"\",\n mode:\n resultMyself.data.readMyself[0].Company.FeatureSet === null\n ? \"FREE\"\n : resultMyself.data.readMyself[0].Company.FeatureSet.toLowerCase(),\n stripePublicKey:\n resultMyself.data.readMyself[0].StripePublicKey || \"\",\n creditCard: resultMyself.data.readMyself[0].CreditCard,\n locations: locationData || [],\n company: {\n id: resultMyself.data.readMyself[0].Company.ID,\n hashID: resultMyself.data.readMyself[0].Company.HashID,\n name:\n resultMyself.data.readMyself[0].Company.Name ||\n \"TODO COMPANY-NAME\", // TODO: Remove fallback company name for production (requires consistent data)\n street: resultMyself.data.readMyself[0].Company.Street || \"\",\n zip: resultMyself.data.readMyself[0].Company.Zip || \"\",\n city: resultMyself.data.readMyself[0].Company.City || \"\",\n canton: resultMyself.data.readMyself[0].Company.Canton || \"\",\n distance: resultMyself.data.readMyself[0].Company.Distance || 50,\n latitude: resultMyself.data.readMyself[0].Company.Latitude || null,\n longitude:\n resultMyself.data.readMyself[0].Company.Longitude || null,\n phone: resultMyself.data.readMyself[0].Company.Phone || \"\",\n mobile: resultMyself.data.readMyself[0].Company.Mobile || \"\",\n fax: resultMyself.data.readMyself[0].Company.Fax || \"\",\n email: resultMyself.data.readMyself[0].Company.Email || \"\",\n website: resultMyself.data.readMyself[0].Company.Website || \"\",\n employeeCount:\n resultMyself.data.readMyself[0].Company.NumberOfEmployees || \"\",\n legalForm: resultMyself.data.readMyself[0].Company.LegalForm || \"\",\n foundingYear:\n resultMyself.data.readMyself[0].Company.FoundingYear || \"\",\n masterOperation:\n FormatHelper.boolToString(\n resultMyself.data.readMyself[0].Company.MasterBusiness\n ) || \"\",\n trainingCompany:\n FormatHelper.boolToString(\n resultMyself.data.readMyself[0].Company.TrainingCompany\n ) || \"\",\n branchCategory:\n resultMyself.data.readMyself[0].Company.BusinessActivityID || \"\",\n branchSubs: branchSubsData || [],\n users: companyUsersData || [],\n stripeIsTrialing:\n resultMyself.data.readMyself[0].Company.StripeIsTrialing,\n stripeTrialingDays:\n resultMyself.data.readMyself[0].Company.StripeTrialingDays,\n stripePlanId: resultMyself.data.readMyself[0].Company.StripePlanID,\n stripeValidThrough:\n resultMyself.data.readMyself[0].Company.StripeValidThrough,\n stripeProductId:\n resultMyself.data.readMyself[0].Company.StripeProductID,\n stripeCancelAt:\n resultMyself.data.readMyself[0].Company.StripeCancelAt,\n stripeFuturePlans:\n resultMyself.data.readMyself[0].Company.StripeFuturePlans,\n trialPossible: trialPossible,\n memberships: memberships,\n allMemberships: allMemberships,\n zipSearchAreas:\n resultMyself.data.readMyself[0].Company.ZipSearchAreas,\n zipSearchStatistic:\n resultMyself.data.readMyself[0].Company.ZipSearchStatistic,\n applicationFollowUpTimeInDays:\n resultMyself.data.readMyself[0].Company.ApplicationFollowUpTimeInDays\n },\n dossierTemplates: dossierTemplatesData,\n permissions: parsePermissions(\n resultMyself.data.readMyself[0].Permissions\n ),\n fulltextSearchRequests:\n resultMyself.data.readMyself[0].FulltextSearchRequests,\n searchAreas: resultMyself.data.readMyself[0].SearchAreas,\n });\n\n // Add the user to global context\n setUser(user);\n\n // Close upgrade process\n setUpgradeToPremiumOpen(false);\n\n // Close the welcome dialog\n setOpenWelcomeDialog(false);\n\n // Redirect\n navigate(\"/projects-free\");\n }\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [resultMyself, token]);\n\n /**\n * handleFormSubmit\n */\n const handleFormSubmit = () => {\n setDisableButton(true);\n const { error } = schema.validate(formValues, { abortEarly: false });\n if (error) {\n const formErrors = FormValueErrorsBuilder(error, t);\n setFormValueErrors({ ...formErrors });\n setDisableButton(false);\n } else {\n executeMutation({\n email: user.getData().email,\n password: formValues.password,\n firstName: formValues.firstName,\n lastName: formValues.lastName,\n }).then((result) => {\n if (result.error) {\n // Check if the user need to be logged out\n if (result.error.message.indexOf(\"User forced logout\") !== -1) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.user.forced.logout\"));\n unsetUser();\n unsetToken();\n navigate(\"/\");\n } else {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.save\"));\n ExternalErrorLogger.log({\n text: \"Error submit user data on OnboardingFreeUserWelcomeDialog\",\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n errorMessage: result.error.message,\n },\n });\n }\n } else {\n GooglePlacesAPIHelper.getCoordsByAddress(\n CANTON_LIST[formValues.canton]\n ).then((result) => {\n const lat = result.results[0].geometry.location.lat;\n const lon = result.results[0].geometry.location.lng;\n\n executeUpdateCompanyMutation({\n hashId: user.getData().company.hashID,\n canton: CANTON_LIST[formValues.canton],\n latitude: lat,\n longitude: lon,\n futurePlanID: \"plan_gratis\",\n }).then((updateCompanyMutationResult) => {\n if (updateCompanyMutationResult.error) {\n // Check if the user need to be logged out\n if (\n updateCompanyMutationResult.error.message.indexOf(\n \"User forced logout\"\n ) !== -1\n ) {\n setMessage(\n MESSAGE_TYPES.ERROR,\n t(\"error.user.forced.logout\")\n );\n unsetUser();\n unsetToken();\n navigate(\"/\");\n } else {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.save\"));\n ExternalErrorLogger.log({\n text: \"Error update company data on OnboardingFreeUserWelcomeDialog\",\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n errorMessage: updateCompanyMutationResult.error,\n },\n });\n }\n } else {\n executeMyselfQuery();\n }\n });\n });\n }\n });\n }\n };\n\n /**\n * handlePasswordChange\n *\n * @param event\n */\n const handlePasswordChange = (event) => {\n setFormValues({ ...formValues, password: event.target.value });\n };\n\n /**\n * handleFirstNameChange\n *\n * @param event\n */\n const handleFirstNameChange = (event) => {\n setFormValues({ ...formValues, firstName: event.target.value });\n };\n\n /**\n * handleLastNameChange\n *\n * @param event\n */\n const handleLastNameChange = (event) => {\n setFormValues({ ...formValues, lastName: event.target.value });\n };\n\n /**\n * handleCantonChange\n *\n * @param event\n */\n const handleCantonChange = (event) => {\n setFormValues({ ...formValues, canton: event.target.value });\n };\n\n /**\n * handleClickShowPassword\n */\n const handleClickShowPassword = () => {\n setFormValues({ ...formValues, showPassword: !formValues.showPassword });\n };\n\n /**\n * handleCheckTermsPolicyChange\n */\n const handleCheckTermsPolicyChange = () => {\n setFormValues({ ...formValues, termsPolicy: !formValues.termsPolicy });\n };\n\n /**\n * menuItems\n *\n * @returns {[]}\n */\n const menuItems = () => {\n const menuItemArray = [];\n Object.keys(CANTON_LIST).forEach((index) => {\n menuItemArray.push(\n \n {CANTON_LIST[index]}\n \n );\n });\n return menuItemArray;\n };\n\n /**\n * return\n */\n return (\n <>\n \n

{t(\"general.greeting\")}

\n

{t(\"onboarding.intro\")}

\n
\n \n formValueErrors.password.hasError, false)}\n type={formValues.showPassword ? \"text\" : \"password\"}\n label={t(\"form.label.password\")}\n value={formValues.password}\n helperText={GetSafe(() => formValueErrors.password.message, \"\")}\n onChange={handlePasswordChange}\n InputProps={{\n endAdornment: (\n \n \n {formValues.showPassword ? : }\n \n \n ),\n }}\n />\n \n \n formValueErrors.firstName.hasError, false)}\n helperText={GetSafe(() => formValueErrors.firstName.message, \"\")}\n onChange={handleFirstNameChange}\n />\n formValueErrors.lastName.hasError, false)}\n helperText={GetSafe(() => formValueErrors.lastName.message, \"\")}\n onChange={handleLastNameChange}\n />\n \n \n \n {menuItems()}\n \n \n \n formValueErrors.termsPolicy.hasError, false)}\n component=\"fieldset\"\n className={classes.formControl}\n >\n \n }\n label={\n
\n {t(\"form.label.i.accept\")}{\" \"}\n \n {t(\"form.label.terms.of.use\")}\n {\" \"}\n {t(\"general.label.and\")}{\" \"}\n \n {t(\"form.label.privacyPolicy\")}.\n \n
\n }\n />\n {GetSafe(() => formValueErrors.termsPolicy.hasError, false) && (\n \n {formValueErrors.termsPolicy.message}\n \n )}\n \n
\n \n \n {t(\"form.label.start.free\")}\n {(disableButton || fetching || fetchingUpdateCompany) && (\n \n )}\n \n \n \n );\n};\n\nexport default withAccessControl(\n OnboardingFreeUserWelcomeDialog,\n ACL_COMPONENTS.ONBOARDING_FREE_USER_WELCOME_DIALOG\n);\n","import React, { useContext, useState, useEffect } from \"react\";\nimport clsx from \"clsx\";\nimport TextField from \"@material-ui/core/TextField\";\nimport InputAdornment from \"@material-ui/core/InputAdornment\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport Visibility from \"@material-ui/icons/Visibility\";\nimport VisibilityOff from \"@material-ui/icons/VisibilityOff\";\nimport Button from \"@material-ui/core/Button\";\nimport Grid from \"@material-ui/core/Grid\";\nimport { makeStyles } from \"@material-ui/core\";\nimport { useTranslation } from \"react-i18next\";\nimport GlobalContext from \"../../lib/GlobalContext\";\nimport Joi from \"@hapi/joi\";\nimport FormValueErrorsBuilder from \"../../lib/FormValueErrorsBuilder\";\nimport GetSafe from \"../../lib/GetSafe\";\nimport { useMutation } from \"urql\";\nimport CircularProgress from \"@material-ui/core/CircularProgress\";\nimport { MESSAGE_TYPES } from \"../PopupMessages\";\nimport withAccessControl from \"../HOC/AccessControl\";\nimport { navigate } from \"hookrouter\";\nimport { ACL_COMPONENTS } from \"../../config\";\nimport ExternalErrorLogger from \"@ennit/react-external-errorlogger\";\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n flexGrow: 1,\n },\n startButton: {\n width: \"100%\",\n maxWidth: 330,\n color: \"#fff\",\n fontWeight: \"bold\",\n },\n textField: {\n width: \"100%\",\n },\n textFieldSmall: {\n width: 160,\n \"&:first-of-type\": {\n marginRight: 5,\n },\n \"&:last-of-type\": {\n marginLeft: 5,\n },\n [theme.breakpoints.down(\"sm\")]: {\n width: \"100%\",\n \"&:first-of-type\": {\n marginRight: 0,\n marginBottom: 20,\n },\n \"&:last-of-type\": {\n marginLeft: 0,\n },\n },\n },\n title: {\n margin: 0,\n fontSize: 24,\n lineHeight: \"30px\",\n textAlign: \"center\",\n [theme.breakpoints.down(\"sm\")]: {\n textAlign: \"left\",\n },\n },\n item: {\n width: \"100%\",\n maxWidth: 330,\n paddingTop: 20,\n paddingBottom: 20,\n },\n itemHeader: {\n maxWidth: 400,\n paddingTop: 44,\n paddingBottom: 24,\n [theme.breakpoints.down(\"sm\")]: {\n paddingTop: 20,\n paddingBottom: 20,\n },\n },\n itemPassword: {\n paddingTop: 0,\n [theme.breakpoints.down(\"sm\")]: {\n paddingBottom: 0,\n },\n },\n}));\n\n/**\n * updateMyselfMutation\n *\n * @type {string}\n */\nconst updateMyselfMutation = `\n mutation UpdateMyself(\n $email: String!,\n $password: String,\n $firstName: String, \n $lastName: String\n ) {\n updateMyself(\n Email: $email,\n Password: $password,\n Firstname: $firstName,\n Surname: $lastName,\n RegistrationHash: \"\"\n ) {\n Email\n Firstname\n Surname\n }\n }\n`;\n\n/**\n * OnboardingPremiumUserWelcomeDialog\n *\n * @returns {*}\n * @constructor\n */\nconst OnboardingPremiumUserWelcomeDialog = (props) => {\n const classes = useStyles();\n const { t } = useTranslation();\n const {\n user,\n setUser,\n token,\n setMessage,\n upgradeToPremiumClose,\n setUpgradeToPremiumClose,\n setOpenWelcomeDialog,\n unsetUser,\n unsetToken,\n } = useContext(GlobalContext);\n const [formValues, setFormValues] = useState({\n password: \"\",\n showPassword: false,\n firstName: \"\",\n lastName: \"\",\n });\n const [formValueErrors, setFormValueErrors] = useState({\n password: { hasError: false, message: \"\" },\n firstName: { hasError: false, message: \"\" },\n lastName: { hasError: false, message: \"\" },\n });\n const [{ fetching }, executeMutation] = useMutation(updateMyselfMutation);\n const [mutationDone, setMutationDone] = useState(false);\n const { setUpgradeToPremiumOpen } = props;\n\n /**\n * useEffect\n */\n useEffect(() => {\n setFormValues({\n password: \"\",\n showPassword: false,\n firstName: user.getData().firstName,\n lastName: user.getData().lastName,\n });\n }, [user]);\n\n /**\n * useEffect\n */\n useEffect(() => {\n if (mutationDone) {\n setMutationDone(false);\n setUser(user);\n if (\n setUpgradeToPremiumOpen &&\n user.getData().company.adminUserID === user.getData().id // only show upgrade to premium dialog for admin users\n ) {\n setUpgradeToPremiumOpen(true);\n navigate(\"/\");\n } else {\n if (!upgradeToPremiumClose) {\n setOpenWelcomeDialog(false);\n setUpgradeToPremiumClose(true);\n }\n }\n }\n // eslint-disable-next-line\n }, [mutationDone]);\n\n /**\n * Joi validation schema\n */\n const schema = Joi.object({\n password: Joi.string().required(),\n firstName: Joi.string().required(),\n lastName: Joi.string().required(),\n showPassword: Joi.boolean(),\n });\n\n /**\n * handleFormSubmit\n */\n const handleFormSubmit = () => {\n const { error } = schema.validate(formValues, { abortEarly: false });\n\n if (error) {\n const formErrors = FormValueErrorsBuilder(error, t);\n setFormValueErrors({ ...formErrors });\n } else {\n executeMutation({\n email: user.getData().email,\n password: formValues.password,\n firstName: formValues.firstName,\n lastName: formValues.lastName,\n }).then((result) => {\n if (result.error) {\n // Check if the user need to be logged out\n if (result.error.message.indexOf(\"User forced logout\") !== -1) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.user.forced.logout\"));\n unsetUser();\n unsetToken();\n navigate(\"/\");\n } else {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.save\"));\n ExternalErrorLogger.log({\n text: \"Error update myself on OnboardingPremiumUserWelcomeDialog\",\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n errorMessage: result.error.message,\n },\n });\n }\n } else {\n user.setData({\n firstName: formValues.firstName,\n lastName: formValues.lastName,\n });\n setMutationDone(true);\n }\n });\n }\n };\n\n /**\n * handlePasswordChange\n *\n * @param event\n */\n const handlePasswordChange = (event) => {\n setFormValues({ ...formValues, password: event.target.value });\n };\n\n /**\n * handleFirstNameChange\n *\n * @param event\n */\n const handleFirstNameChange = (event) => {\n setFormValues({ ...formValues, firstName: event.target.value });\n };\n\n /**\n * handleLastNameChange\n *\n * @param event\n */\n const handleLastNameChange = (event) => {\n setFormValues({ ...formValues, lastName: event.target.value });\n };\n\n /**\n * handleClickShowPassword\n */\n const handleClickShowPassword = () => {\n setFormValues({ ...formValues, showPassword: !formValues.showPassword });\n };\n\n /**\n * return\n */\n return (\n <>\n \n

{t(\"general.greeting\")}

\n

{t(\"onboarding.intro\")}

\n
\n \n formValueErrors.password.hasError, false)}\n type={formValues.showPassword ? \"text\" : \"password\"}\n label={t(\"form.label.password\")}\n value={formValues.password}\n helperText={GetSafe(() => formValueErrors.password.message, \"\")}\n onChange={handlePasswordChange}\n InputProps={{\n endAdornment: (\n \n \n {formValues.showPassword ? : }\n \n \n ),\n }}\n />\n \n \n formValueErrors.firstName.hasError, false)}\n helperText={GetSafe(() => formValueErrors.firstName.message, \"\")}\n onChange={handleFirstNameChange}\n />\n formValueErrors.lastName.hasError, false)}\n helperText={GetSafe(() => formValueErrors.lastName.message, \"\")}\n onChange={handleLastNameChange}\n />\n \n \n \n {t(\"form.label.to.premium\")}\n {fetching && (\n \n )}\n \n \n \n );\n};\n\nexport default withAccessControl(\n OnboardingPremiumUserWelcomeDialog,\n ACL_COMPONENTS.ONBOARDING_PREMIUM_USER_WELCOME_DIALOG\n);\n","import React, { useContext, useEffect } from \"react\";\nimport { useQuery } from \"urql\";\nimport GlobalContext from \"../lib/GlobalContext\";\nimport { useTranslation } from \"react-i18next\";\nimport { makeStyles } from \"@material-ui/core\";\nimport Dialog from \"@material-ui/core/Dialog\";\nimport DialogContent from \"@material-ui/core/DialogContent\";\nimport CircularProgress from \"@material-ui/core/CircularProgress\";\nimport Grid from \"@material-ui/core/Grid\";\nimport UserTypes from \"../components/Onboarding/UserTypes\";\nimport OnboardingFreeUserWelcomeDialog from \"../components/Onboarding/OnboardingFreeUserWelcomeDialog\";\nimport OnboardingPremiumUserWelcomeDialog from \"../components/Onboarding/OnboardingPremiumUserWelcomeDialog\";\nimport { navigate } from \"hookrouter\";\nimport withAccessControl from \"../components/HOC/AccessControl\";\nimport { MESSAGE_TYPES } from \"../components/PopupMessages\";\nimport { ACL_COMPONENTS } from \"../config\";\nimport ExternalErrorLogger from \"@ennit/react-external-errorlogger\";\nimport FormatHelper from \"../lib/FormatHelper\";\n\n/**\n * useStyles\n */\nconst useStyles = makeStyles((theme) => ({\n root: {\n flexGrow: 1,\n },\n dialog: {\n width: \"100%\",\n paddingBottom: 56,\n \"&::before\": theme.watermarkLogo,\n [theme.breakpoints.down(\"sm\")]: {\n padding: 20,\n },\n },\n}));\n\n/**\n * queryMyself\n *\n * @type {string}\n */\nconst queryMyself = `\n{\n readMyself {\n ID\n HashID\n Locale\n Email\n Firstname\n Surname\n Salutation\n StripePublicKey\n CreditCard {\n id\n name\n last4\n expired\n }\n Locations {\n edges {\n node {\n HashID\n Title\n Street\n Zip\n City\n Longitude\n Latitude\n Radius\n Version\n Sort\n Removed\n }\n }\n }\n Company {\n ID\n AdminUserID\n HashID\n FeatureSet\n OnboardingType\n ZipSearchAreas\n ZipSearchStatistic\n ApplicationFollowUpTimeInDays\n StripeIsTrialing\n StripeTrialingDays\n StripePlanID\n StripeValidThrough\n StripeProductID\n StripeCancelAt\n Name\n URLSegment\n ContactPerson\n Street\n Zip\n City\n Canton\n Distance\n Latitude\n Longitude\n Phone\n Mobile\n Fax\n Website\n Email\n NumberOfEmployees\n LegalForm\n FoundingYear\n MasterBusiness\n TrainingCompany\n BusinessActivityID\n BusinessSpecialities{\n edges {\n node {\n ID\n Title\n NogaCode\n SCCodeCompetence\n BoostScore\n }\n }\n }\n OtherBusinessActivities {\n edges {\n node {\n ID\n }\n }\n }\n OtherBusinessSpecialities {\n edges {\n node {\n ID\n }\n }\n }\n User{\n edges {\n node {\n HashID\n Email\n Firstname\n Surname\n Removed\n SearchAreas {\n HashID\n Title\n ZipList\n }\n }\n }\n }\n Memberships {\n edges {\n node {\n ID\n Title\n LogoUrl\n IsBadge\n }\n }\n }\n AllMemberships {\n edges {\n node {\n ID\n Title\n LogoUrl\n IsBadge\n }\n }\n }\n MicrositeCertified\n MicrositeCertifiedUntil\n AdditionalMemberships\n MicrositeColorScheme\n MicrositeDescription\n MicrositeEmailApplicationText\n MicrositeImages {\n edges {\n node {\n Src\n Title\n Alt\n }\n }\n }\n MicrositeLogo {\n Src\n Title\n Alt\n }\n MicrositeReferences {\n edges {\n node {\n Sort\n Title\n Content\n Location\n Year\n Month\n ButtonLink\n ButtonTitle\n MicrositeReferencesImages {\n edges { \n node {\n Src\n Title\n Alt\n }\n }\n }\n }\n }\n }\n ApiAccess {\n edges {\n node {\n RequestUrl\n }\n } \n } \n }\n DossierTemplates {\n edges {\n node {\n HashID\n TemplateName\n }\n }\n }\n Permissions {\n Name\n RequireAdminStatus\n }\n FulltextSearchRequests {\n ID\n Title\n }\n SearchAreas {\n HashID\n Title\n ZipList\n }\n }\n}\n`;\n\n/**\n * Onboarding\n *\n * @param props\n * @returns {*}\n * @constructor\n */\nconst Onboarding = (props) => {\n const classes = useStyles();\n const { t } = useTranslation();\n const {\n user,\n openWelcomeDialog,\n token,\n upgradeToPremiumClose,\n setUpgradeToPremiumClose,\n upgradeToPremiumOpen,\n setUpgradeToPremiumOpen,\n setMessage,\n unsetUser,\n unsetToken,\n setUser,\n } = useContext(GlobalContext);\n\n /**\n * GraphQL query for user, gets triggered by calling \"executeUsersQuery()\"\n */\n const [result] = useQuery({\n query: queryMyself,\n });\n\n /**\n * Set the refresh-token to enable the ability\n * to fetch a token for the first time or on demand\n */\n useEffect(() => {\n if (!token.isSet()) {\n token.setRefreshToken(props.refreshToken);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n /* eslint-disable */\n useEffect(() => {\n if (\n props.id.length > 0 &&\n user.isSet() &&\n props.id !== user.getData().hashID\n ) {\n unsetUser();\n }\n }, [props.id, user]);\n /* eslint-enable */\n\n useEffect(() => {\n // After the upgrade-to-premium process redirect to start-page\n if (user.isSet() && upgradeToPremiumClose && !openWelcomeDialog) {\n navigate(\"/\");\n }\n }, [user, upgradeToPremiumClose, openWelcomeDialog]);\n\n /**\n * Parse the permissions array from api to a single-dimensional array\n */\n const parsePermissions = (permissionsFromAPI) => {\n const permissionsArray = [];\n if (Array.isArray(permissionsFromAPI)) {\n for (let i = 0; i < permissionsFromAPI.length; i++) {\n permissionsArray.push(permissionsFromAPI[i].Name);\n }\n }\n return permissionsArray;\n };\n\n /**\n * determineMode\n *\n * @param featureSet\n * @param onboardingType\n * @returns {string}\n */\n const determineMode = (featureSet, onboardingType) => {\n if (featureSet === null) {\n if (onboardingType === null) {\n return UserTypes.FREE;\n } else {\n return onboardingType.toLocaleLowerCase();\n }\n } else {\n return featureSet.toLocaleLowerCase();\n }\n };\n\n /**\n * GraphQL trigger and result handling\n */\n useEffect(() => {\n if (!result.fetching) {\n if (result.error) {\n // Check if the user need to be logged out\n if (result.error.message.indexOf(\"User forced logout\") !== -1) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.user.forced.logout\"));\n unsetUser();\n unsetToken();\n navigate(\"/\");\n } else {\n // Something went very wrong\n ExternalErrorLogger.log({\n text: \"Error fetching myself on Onboarding\",\n data: {\n user: user.getData(),\n token: token.getData(),\n errorMessage: result.error.message,\n },\n });\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.fetching.user\"));\n }\n } else {\n // Query not fetching right now\n if (\n typeof result.data !== \"undefined\" &&\n typeof result.data.readMyself !== \"undefined\" &&\n !user.isSet()\n ) {\n const branchSubsData = [];\n result.data.readMyself[0].Company.BusinessSpecialities.edges.map(\n (item) => {\n branchSubsData.push(parseInt(item.node.ID));\n return branchSubsData;\n }\n );\n\n const memberships = [];\n result.data.readMyself[0].Company.Memberships.edges.map((item) => {\n memberships.push(item.node);\n return memberships;\n });\n\n const allMemberships = [];\n result.data.readMyself[0].Company.AllMemberships.edges.map((item) => {\n allMemberships.push(item.node);\n return allMemberships;\n });\n\n const locationData = [];\n result.data.readMyself[0].Locations.edges.map((item) => {\n const constructionSums = [];\n item.node.ConstructionSumList.edges.map((constructionSum) => {\n constructionSums.push(constructionSum.node.Code);\n return constructionSums;\n });\n\n item.node.ConstructionSums = constructionSums;\n\n locationData.push(item.node);\n return locationData;\n });\n\n locationData.sort((a, b) => {\n return a.Sort - b.Sort;\n });\n\n const companyUsersData = [];\n result.data.readMyself[0].Company.User.edges.map((item) => {\n if (item.node.HashID !== result.data.readMyself[0].HashID) {\n companyUsersData.push(item.node);\n }\n return companyUsersData;\n });\n\n const dossierTemplatesData = [];\n result.data.readMyself[0].DossierTemplates.edges.map((item) => {\n dossierTemplatesData.push(item.node);\n return dossierTemplatesData;\n });\n\n companyUsersData.sort((a, b) => {\n if (a.Firstname.toLowerCase() < b.Firstname.toLowerCase()) {\n return -1;\n }\n if (a.Firstname.toLowerCase() > b.Firstname.toLowerCase()) {\n return 1;\n }\n return 0;\n });\n\n // Map the user-data\n user.setData({\n id: result.data.readMyself[0].ID,\n hashID: result.data.readMyself[0].HashID,\n locale: result.data.readMyself[0].Locale || \"\",\n email: result.data.readMyself[0].Email,\n firstName: result.data.readMyself[0].Firstname || \"\",\n lastName: result.data.readMyself[0].Surname || \"\",\n mode: determineMode(\n result.data.readMyself[0].Company.FeatureSet,\n result.data.readMyself[0].Company.OnboardingType\n ),\n stripePublicKey: result.data.readMyself[0].StripePublicKey || \"\",\n creditCard: result.data.readMyself[0].CreditCard,\n company: {\n id: result.data.readMyself[0].Company.ID,\n hashID: result.data.readMyself[0].Company.HashID,\n adminUserID: result.data.readMyself[0].Company.AdminUserID,\n name:\n result.data.readMyself[0].Company.Name || \"TODO COMPANY-NAME\", // TODO: Remove fallback company name for production (requires consistent data)\n street: result.data.readMyself[0].Company.Street || \"\",\n zip: result.data.readMyself[0].Company.Zip || \"\",\n city: result.data.readMyself[0].Company.City || \"\",\n canton: result.data.readMyself[0].Company.Canton || \"\",\n distance: result.data.readMyself[0].Company.Distance || 50,\n latitude: result.data.readMyself[0].Company.Latitude || null,\n longitude: result.data.readMyself[0].Company.Longitude || null,\n phone: result.data.readMyself[0].Company.Phone || \"\",\n mobile: result.data.readMyself[0].Company.Mobile || \"\",\n fax: result.data.readMyself[0].Company.Fax || \"\",\n email: result.data.readMyself[0].Company.Email || \"\",\n website: result.data.readMyself[0].Company.Website || \"\",\n employeeCount:\n result.data.readMyself[0].Company.NumberOfEmployees || \"\",\n legalForm: result.data.readMyself[0].Company.LegalForm || \"\",\n foundingYear:\n result.data.readMyself[0].Company.FoundingYear || \"\",\n masterOperation:\n FormatHelper.boolToString(\n result.data.readMyself[0].Company.MasterBusiness\n ) || \"\",\n trainingCompany:\n FormatHelper.boolToString(\n result.data.readMyself[0].Company.TrainingCompany\n ) || \"\",\n branchCategory:\n result.data.readMyself[0].Company.BusinessActivityID || \"\",\n branchSubs: branchSubsData || [],\n users: companyUsersData || [],\n stripeIsTrialing:\n result.data.readMyself[0].Company.StripeIsTrialing,\n stripeTrialingDays:\n result.data.readMyself[0].Company.StripeTrialingDays,\n stripePlanId: result.data.readMyself[0].Company.StripePlanID,\n stripeValidThrough:\n result.data.readMyself[0].Company.StripeValidThrough,\n stripeProductId:\n result.data.readMyself[0].Company.StripeProductID,\n stripeCancelAt: result.data.readMyself[0].Company.StripeCancelAt,\n stripeFuturePlans:\n result.data.readMyself[0].Company.StripeFuturePlans,\n memberships: memberships,\n allMemberships: allMemberships,\n zipSearchAreas: result.data.readMyself[0].Company.ZipSearchAreas,\n zipSearchStatistic: result.data.readMyself[0].Company.ZipSearchStatistic,\n applicationFollowUpTimeInDays: result.data.readMyself[0].Company.ApplicationFollowUpTimeInDays\n },\n dossierTemplates: dossierTemplatesData,\n permissions: parsePermissions(\n result.data.readMyself[0].Permissions\n ),\n fulltextSearchRequests:\n result.data.readMyself[0].FulltextSearchRequests,\n searchAreas: result.data.readMyself[0].SearchAreas,\n });\n }\n\n setUser(user);\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [result]);\n\n /**\n * LoadingIndicator\n */\n const LoadingIndicator = (\n \n \n \n );\n\n /**\n * UserNotFoundDialog\n */\n const UserNotFoundDialog = (\n \n
{t(\"error.fetching.user\")}
\n
\n );\n\n /**\n * getDialogByUserMode\n *\n * @returns {*}\n */\n const getDialogByUserMode = () => {\n switch (user.getData().mode) {\n case null:\n case UserTypes.FREE:\n if (!upgradeToPremiumClose) {\n setUpgradeToPremiumClose(true);\n }\n return ;\n case UserTypes.SMART:\n return (\n \n );\n case UserTypes.PRO:\n return (\n \n );\n default:\n return
{t(\"error.general\")}
;\n }\n };\n\n /**\n * return\n */\n return (\n <>\n \n {result.fetching && LoadingIndicator}\n \n {/* {console.log('MOEP', user.getData())} */}\n {!result.fetching && (\n \n \n \n {user.isSet() && getDialogByUserMode()}\n {!user.isSet() && UserNotFoundDialog}\n \n \n \n )}\n \n );\n};\n\nexport default withAccessControl(Onboarding, ACL_COMPONENTS.ONBOARDING);\n","import React, { useCallback, useContext, useEffect, useState } from 'react'\nimport clsx from 'clsx'\nimport Grid from '@material-ui/core/Grid'\nimport Link from '@material-ui/core/Link'\nimport { useTranslation } from 'react-i18next'\nimport TextField from '@material-ui/core/TextField'\nimport MenuItem from '@material-ui/core/MenuItem'\nimport { makeStyles } from '@material-ui/core'\nimport InputAdornment from '@material-ui/core/InputAdornment'\nimport IconButton from '@material-ui/core/IconButton'\nimport Visibility from '@material-ui/icons/Visibility'\nimport VisibilityOff from '@material-ui/icons/VisibilityOff'\nimport Checkbox from '@material-ui/core/Checkbox'\nimport FormControlLabel from '@material-ui/core/FormControlLabel'\nimport Button from '@material-ui/core/Button'\nimport Joi from '@hapi/joi'\nimport GlobalContext from '../../lib/GlobalContext'\nimport { navigate } from 'hookrouter'\nimport FormControl from '@material-ui/core/FormControl'\nimport FormHelperText from '@material-ui/core/FormHelperText'\nimport Box from '@material-ui/core/Box'\nimport FormValueErrorsBuilder from '../../lib/FormValueErrorsBuilder'\nimport GetSafe from '../../lib/GetSafe'\nimport ZefixCompanyAutocompleteField from '../../components/ZefixCompanyAutocompleteField'\nimport { useMutation, useQuery } from 'urql'\nimport CircularProgress from '@material-ui/core/CircularProgress'\nimport { green, red } from '@material-ui/core/colors'\nimport UserTypes from '../Onboarding/UserTypes'\nimport { CANTON_LIST, EMAIL_PLACEHOLDER, STRIPE_PLAN_IDS } from '../../config'\nimport { MESSAGE_TYPES } from '../PopupMessages'\nimport { parsePermissions } from '../HOC/AccessControl'\nimport { externalLinkTitles, getAbsoluteLink } from '../../lib/CmsLinkHandler'\nimport ExternalErrorLogger from '@ennit/react-external-errorlogger'\nimport FormatHelper from '../../lib/FormatHelper'\n\nconst useStyles = makeStyles(theme => ({\n dialogLeft: {},\n searchField: {\n width: '100%',\n maxWidth: 330\n },\n textField: {\n width: '100%',\n maxWidth: 155,\n '&:first-of-type': {\n marginRight: 10\n },\n '&:last-of-type': {\n marginLeft: 10\n },\n [theme.breakpoints.down('sm')]: {\n maxWidth: '100%',\n margin: '20px auto',\n '&:first-of-type': {\n marginRight: 0\n },\n '&:last-of-type': {\n marginLeft: 0\n }\n }\n },\n textFieldLong: {\n width: '100%',\n maxWidth: 330,\n '&:first-of-type': {\n marginRight: '0'\n },\n '&:last-of-type': {\n marginLeft: '0'\n },\n [theme.breakpoints.down('sm')]: {\n maxWidth: '100%'\n }\n },\n title: {\n margin: 0,\n fontSize: 24,\n lineHeight: '30px'\n },\n intro: {\n fontSize: 16,\n lineHeight: '24px',\n textAlign: 'left'\n },\n introData: {\n marginBottom: 0,\n paddingBottom: 0\n },\n item: {\n position: 'relative',\n width: '100%',\n maxWidth: 330,\n margin: ' 20px auto',\n [theme.breakpoints.down('sm')]: {\n maxWidth: '100%',\n margin: 'auto',\n padding: '0 20px'\n }\n },\n itemSmall: {\n width: '100%',\n maxWidth: 155,\n paddingBottom: 20,\n [theme.breakpoints.down('sm')]: {\n maxWidth: '100%'\n }\n },\n itemBox: {\n marginTop: 0,\n marginBottom: 0\n },\n itemHeader: {\n marginTop: 0,\n marginBottom: 0,\n paddingTop: 44,\n paddingBottom: 24,\n textAlign: 'center',\n [theme.breakpoints.down('sm')]: {\n paddingTop: 20,\n paddingBottom: 20,\n textAlign: 'left'\n }\n },\n boxText: {\n fontSize: 16\n },\n boxTextBold: {\n fontWeight: 'bold'\n },\n buttonContainer: {\n marginBottom: 40,\n [theme.breakpoints.down('sm')]: {\n marginTop: 40\n }\n },\n startButton: {\n width: '100%',\n color: '#fff'\n },\n termsPolicyCheckbox: {\n margin: 0,\n hyphens: 'auto'\n },\n buttonProgress: {\n color: green[500],\n position: 'absolute',\n top: '50%',\n left: '50%',\n marginTop: -12,\n marginLeft: -12\n },\n loadingProgress: {\n position: 'absolute',\n top: '50%',\n left: '50%',\n marginTop: -12,\n marginLeft: -12\n },\n alertBox: {\n padding: 20,\n backgroundColor: red[50],\n color: red[900]\n }\n}))\n\nconst queryBranches = `\n query ReadBusinessActivities (\n $token: String,\n $companyHashID: String\n ) {\n readBusinessActivities (\n sortBy: [{field: Sort, direction: ASC}],\n Token: $token,\n CompanyHashID: $companyHashID\n ) {\n ID,\n Title,\n NogaCode,\n BusinessSpecialities {\n edges {\n node {\n ID,\n Title\n }\n }\n }\n }\n }\n`\n\nconst mutationMarketingUserCreate = `\n mutation(\n $Email: String!, \n $Password: String!, \n $Firstname: String!, \n $Surname: String!, \n $CompanyHashID: String!, \n $Token: String!,\n $Canton: String!\n ) {\n createMarketingUser(\n Email: $Email, \n Password: $Password, \n Firstname: $Firstname, \n Surname: $Surname, \n CompanyHashID: $CompanyHashID, \n Token: $Token,\n Canton: $Canton\n ) {\n ID\n HashID\n Email\n Firstname\n Surname\n Company {\n ID\n HashID\n Name\n Street\n Zip\n City\n Canton\n }\n }\n }\n`\n\nconst queryMyself = `\n{\n readMyself {\n ID\n HashID\n Locale\n Email\n Firstname\n Surname\n Salutation\n StripePublicKey\n CreditCard {\n id\n name\n last4\n expired\n }\n Locations {\n edges {\n node {\n HashID\n Title\n Street\n Zip\n City\n Longitude\n Latitude\n Radius\n Version\n Sort\n Removed\n ConstructionSumList {\n edges {\n node {\n Code\n }\n }\n }\n }\n }\n }\n Company {\n ID\n AdminUserID\n HashID\n FeatureSet\n ZipSearchAreas\n ZipSearchStatistic\n ApplicationFollowUpTimeInDays\n StripeIsTrialing\n StripeTrialingDays\n StripePlanID\n StripeValidThrough\n StripeProductID\n StripeCancelAt\n Name\n URLSegment\n ContactPerson\n Street\n Zip\n City\n Canton\n Distance\n Latitude\n Longitude\n Phone\n Mobile\n Fax\n Website\n Email\n NumberOfEmployees\n LegalForm\n FoundingYear\n MasterBusiness\n TrainingCompany\n BusinessActivityID\n BusinessSpecialities{\n edges {\n node {\n ID\n Title\n NogaCode\n SCCodeCompetence\n BoostScore\n }\n }\n }\n OtherBusinessActivities {\n edges {\n node {\n ID\n }\n }\n }\n OtherBusinessSpecialities {\n edges {\n node {\n ID\n }\n }\n }\n User{\n edges {\n node {\n HashID\n Email\n Firstname\n Surname\n Removed\n SearchAreas {\n HashID\n Title\n ZipList\n }\n }\n }\n }\n Memberships {\n edges {\n node {\n ID\n Title\n LogoUrl\n }\n }\n }\n AllMemberships {\n edges {\n node {\n ID\n Title\n LogoUrl\n IsBadge\n }\n }\n }\n MicrositeCertified\n MicrositeCertifiedUntil\n AdditionalMemberships\n MicrositeColorScheme\n MicrositeDescription\n MicrositeEmailApplicationText\n MicrositeImages {\n edges {\n node {\n Src\n Title\n Alt\n }\n }\n }\n MicrositeLogo {\n Src\n Title\n Alt\n }\n MicrositeReferences {\n edges {\n node {\n Sort\n Title\n Content\n Location\n Year\n Month\n ButtonLink\n ButtonTitle\n MicrositeReferencesImages {\n edges { \n node {\n Src\n Title\n Alt\n }\n }\n }\n }\n }\n }\n ApiAccess {\n edges {\n node {\n RequestUrl\n }\n } \n } \n }\n DossierTemplates {\n edges {\n node {\n HashID\n TemplateName\n }\n }\n }\n Permissions {\n Name\n RequireAdminStatus\n }\n FulltextSearchRequests {\n ID\n Title\n }\n SearchAreas {\n HashID\n Title\n ZipList\n }\n }\n readProduct {\n plans {\n id\n trial_possible\n }\n }\n}\n`\n\nconst initialFormValues = {\n profession: 0,\n email: '',\n password: '',\n showPassword: false,\n firstName: '',\n lastName: '',\n termsPolicy: false,\n company: '',\n branchCategory: 0,\n canton: ''\n}\n\nconst initialFormValueErrorsState = {\n email: { hasError: false, message: '' },\n password: { hasError: false, message: '' },\n firstName: { hasError: false, message: '' },\n lastName: { hasError: false, message: '' },\n termsPolicy: { hasError: false, message: '' },\n company: { hasError: false, message: '' },\n branchCategory: { hasError: false, message: '' },\n canton: { hasError: false, message: '' }\n}\n\nlet triggerMyselfHandling = false\n\n/**\n * OnboardingMarketingLeftPane\n *\n * @returns {*}\n * @constructor\n */\nconst OnboardingMarketingLeftPane = props => {\n const classes = useStyles()\n const { t } = useTranslation()\n const {\n user,\n setUser,\n token,\n setToken,\n setMessage,\n unsetUser,\n unsetToken,\n cmsLinks\n } = useContext(GlobalContext)\n const [formValues, setFormValues] = useState(initialFormValues)\n const [formValueErrors, setFormValueErrors] = useState(\n initialFormValueErrorsState\n )\n const [rightCompany, setRightCompany] = useState(true)\n const [branchData, setBranchData] = useState(false)\n\n const [resultBranchQuery, executeBranchesQuery] = useQuery({\n query: queryBranches,\n variables: {\n token: props.csrfToken,\n companyHashID: user.getData().company.hashID\n },\n pause: true\n })\n\n const [{ fetching: mutationFetching }, executeMutation] = useMutation(\n mutationMarketingUserCreate\n )\n\n /**\n * executeBranchesQueryCallback\n * Implementation of https://reactjs.org/docs/hooks-faq.html#is-it-safe-to-omit-functions-from-the-list-of-dependencies\n */\n const executeBranchesQueryCallback = useCallback(() => {\n executeBranchesQuery()\n }, [executeBranchesQuery])\n\n /**\n * GraphQL query for user-data (myself), gets triggered by calling \"executeMyselfQuery()\"\n */\n const [resultMyselfQuery, executeMyselfQuery] = useQuery({\n query: queryMyself,\n variables: { token: token.getData().access_token }, // Required as cache-control mechanism\n requestPolicy: 'network-only',\n pause: true\n })\n\n /**\n * GraphQL trigger and result handling\n */\n useEffect(() => {\n if (!mutationFetching && !resultMyselfQuery.fetching && token.isSet()) {\n if (resultMyselfQuery.error) {\n // Check if the user need to be logged out\n if (\n resultMyselfQuery.error.message.indexOf('User forced logout') !== -1\n ) {\n setMessage(MESSAGE_TYPES.ERROR, t('error.user.forced.logout'))\n unsetUser()\n unsetToken()\n navigate('/')\n } else {\n // The query did not return any results!\n ExternalErrorLogger.log({\n text: 'Error fetch myself on OnboardingMarketingLeftPane',\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n errorMessage: resultMyselfQuery.error.message\n }\n })\n }\n } else {\n // Query not fetching right now\n if (\n triggerMyselfHandling &&\n typeof resultMyselfQuery.data !== 'undefined' &&\n typeof resultMyselfQuery.data.readMyself !== 'undefined'\n ) {\n triggerMyselfHandling = false\n const branchSubsData = []\n resultMyselfQuery.data.readMyself[0].Company.BusinessSpecialities.edges.map(\n item => {\n branchSubsData.push(parseInt(item.node.ID))\n return branchSubsData\n }\n )\n\n const memberships = []\n resultMyselfQuery.data.readMyself[0].Company.Memberships.edges.map(\n item => {\n memberships.push(item.node)\n return memberships\n }\n )\n\n const allMemberships = []\n resultMyselfQuery.data.readMyself[0].Company.AllMemberships.edges.map(\n item => {\n allMemberships.push(item.node)\n return allMemberships\n }\n )\n\n const locationData = []\n resultMyselfQuery.data.readMyself[0].Locations.edges.map(item => {\n const constructionSums = []\n item.node.ConstructionSumList.edges.map(constructionSum => {\n constructionSums.push(constructionSum.node.Code)\n return constructionSums\n })\n\n item.node.ConstructionSums = constructionSums\n\n locationData.push(item.node)\n return locationData\n })\n\n locationData.sort((a, b) => {\n return a.Sort - b.Sort\n })\n\n const companyUsersData = []\n resultMyselfQuery.data.readMyself[0].Company.User.edges.map(item => {\n if (\n item.node.HashID !== resultMyselfQuery.data.readMyself[0].HashID\n ) {\n companyUsersData.push(item.node)\n }\n return companyUsersData\n })\n\n const dossierTemplatesData = []\n resultMyselfQuery.data.readMyself[0].DossierTemplates.edges.map(\n item => {\n dossierTemplatesData.push(item.node)\n return dossierTemplatesData\n }\n )\n\n companyUsersData.sort((a, b) => {\n if (a.Firstname.toLowerCase() < b.Firstname.toLowerCase()) {\n return -1\n }\n if (a.Firstname.toLowerCase() > b.Firstname.toLowerCase()) {\n return 1\n }\n return 0\n })\n\n let trialPossible = false\n\n resultMyselfQuery.data.readProduct.map(productItem => {\n productItem.plans.map(item => {\n if (item.id.includes(STRIPE_PLAN_IDS.SMART.YEARLY)) {\n trialPossible = item.trial_possible\n }\n return item\n })\n return productItem\n })\n\n // Map the user-data\n user.setData({\n id: resultMyselfQuery.data.readMyself[0].ID,\n hashID: resultMyselfQuery.data.readMyself[0].HashID,\n locale: resultMyselfQuery.data.readMyself[0].Locale || '',\n email: resultMyselfQuery.data.readMyself[0].Email,\n firstName: resultMyselfQuery.data.readMyself[0].Firstname,\n lastName: resultMyselfQuery.data.readMyself[0].Surname,\n salutation: resultMyselfQuery.data.readMyself[0].Salutation || '',\n mode:\n resultMyselfQuery.data.readMyself[0].Company.FeatureSet === null\n ? null\n : resultMyselfQuery.data.readMyself[0].Company.FeatureSet.toLowerCase(),\n stripePublicKey:\n resultMyselfQuery.data.readMyself[0].StripePublicKey || '',\n creditCard: resultMyselfQuery.data.readMyself[0].CreditCard,\n locations: locationData || [],\n company: {\n id: resultMyselfQuery.data.readMyself[0].Company.ID,\n hashID: resultMyselfQuery.data.readMyself[0].Company.HashID,\n name:\n resultMyselfQuery.data.readMyself[0].Company.Name ||\n 'TODO COMPANY-NAME', // TODO: Remove fallback company name for production (requires consistent data)\n street: resultMyselfQuery.data.readMyself[0].Company.Street || '',\n zip: resultMyselfQuery.data.readMyself[0].Company.Zip || '',\n city: resultMyselfQuery.data.readMyself[0].Company.City || '',\n canton: resultMyselfQuery.data.readMyself[0].Company.Canton || '',\n distance:\n resultMyselfQuery.data.readMyself[0].Company.Distance || 50,\n latitude:\n resultMyselfQuery.data.readMyself[0].Company.Latitude || null,\n longitude:\n resultMyselfQuery.data.readMyself[0].Company.Longitude || null,\n phone: resultMyselfQuery.data.readMyself[0].Company.Phone || '',\n mobile: resultMyselfQuery.data.readMyself[0].Company.Mobile || '',\n fax: resultMyselfQuery.data.readMyself[0].Company.Fax || '',\n email: resultMyselfQuery.data.readMyself[0].Company.Email || '',\n website: resultMyselfQuery.data.readMyself[0].Company.Website || '',\n employeeCount:\n resultMyselfQuery.data.readMyself[0].Company.NumberOfEmployees ||\n '',\n legalForm:\n resultMyselfQuery.data.readMyself[0].Company.LegalForm || '',\n foundingYear:\n resultMyselfQuery.data.readMyself[0].Company.FoundingYear || '',\n masterOperation:\n FormatHelper.boolToString(\n resultMyselfQuery.data.readMyself[0].Company.MasterBusiness\n ) || '',\n trainingCompany:\n FormatHelper.boolToString(\n resultMyselfQuery.data.readMyself[0].Company.TrainingCompany\n ) || '',\n branchCategory:\n resultMyselfQuery.data.readMyself[0].Company.BusinessActivityID ||\n '',\n branchSubs: branchSubsData || [],\n users: companyUsersData || [],\n stripeIsTrialing:\n resultMyselfQuery.data.readMyself[0].Company.StripeIsTrialing,\n stripeTrialingDays:\n resultMyselfQuery.data.readMyself[0].Company.StripeTrialingDays,\n stripePlanId:\n resultMyselfQuery.data.readMyself[0].Company.StripePlanID,\n stripeValidThrough:\n resultMyselfQuery.data.readMyself[0].Company.StripeValidThrough,\n stripeProductId:\n resultMyselfQuery.data.readMyself[0].Company.StripeProductID,\n stripeCancelAt:\n resultMyselfQuery.data.readMyself[0].Company.StripeCancelAt,\n stripeFuturePlans:\n resultMyselfQuery.data.readMyself[0].Company.StripeFuturePlans,\n trialPossible: trialPossible,\n memberships: memberships,\n allMemberships: allMemberships,\n zipSearchAreas:\n resultMyselfQuery.data.readMyself[0].Company.ZipSearchAreas,\n zipSearchStatistic:\n resultMyselfQuery.data.readMyself[0].Company.ZipSearchStatistic,\n applicationFollowUpTimeInDays:\n resultMyselfQuery.data.readMyself[0].Company.ApplicationFollowUpTimeInDays\n },\n dossierTemplates: dossierTemplatesData,\n permissions: parsePermissions(\n resultMyselfQuery.data.readMyself[0].Permissions\n ),\n fulltextSearchRequests:\n resultMyselfQuery.data.readMyself[0].FulltextSearchRequests,\n searchAreas: resultMyselfQuery.data.readMyself[0].SearchAreas\n })\n\n // Add the user to global context\n setUser(user)\n\n // Redirect\n navigate('/projects-free')\n }\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [mutationFetching, resultMyselfQuery, token]);\n\n /**\n * Joi validation schema\n */\n const schema = Joi.object({\n email: Joi.string()\n .email({ tlds: false })\n .required(),\n password: Joi.string().required(),\n firstName: Joi.string().required(),\n lastName: Joi.string().required(),\n showPassword: Joi.boolean(),\n termsPolicy: Joi.boolean().invalid(false),\n profession: Joi.number(),\n company: Joi.string().allow(''),\n branchCategory: Joi.number()\n .integer()\n .min(1)\n .required(),\n canton: Joi.string().required()\n })\n\n /**\n * useEffect\n */\n useEffect(() => {\n if (!props.isRegistered) {\n setFormValues({\n ...initialFormValues,\n email:\n user.getData().email === EMAIL_PLACEHOLDER\n ? ''\n : user.getData().email,\n firstName: user.getData().firstName,\n lastName: user.getData().lastName,\n canton: user.getData().company.canton\n })\n } else {\n setRightCompany(false)\n }\n }, [user, props.isRegistered])\n\n /**\n * executeBranchesQueryCallback useEffect\n */\n useEffect(() => {\n executeBranchesQueryCallback()\n }, [executeBranchesQueryCallback])\n\n /**\n * handling branchesQuery result\n */\n useEffect(() => {\n if (!resultBranchQuery.fetching) {\n if (resultBranchQuery.error) {\n // Check if the user need to be logged out\n if (\n resultBranchQuery.error.message.indexOf('User forced logout') !== -1\n ) {\n setMessage(MESSAGE_TYPES.ERROR, t('error.user.forced.logout'))\n unsetUser()\n unsetToken()\n navigate('/')\n } else {\n // Something went very wrong\n ExternalErrorLogger.log({\n text: 'Error fetching branches on OnboardingMarketingLeftPane',\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n errorMessage: resultBranchQuery.error.message\n }\n })\n setMessage(MESSAGE_TYPES.ERROR, t('error.fetching.branches'))\n }\n } else {\n // Query not fetching right now\n if (\n typeof resultBranchQuery.data !== 'undefined' &&\n typeof resultBranchQuery.data.readBusinessActivities !== 'undefined' &&\n !branchData\n ) {\n // Without business branches/activities we cannot continue\n if (resultBranchQuery.data.readBusinessActivities.length === 0) {\n throw Error('No business branches/activities found')\n }\n\n // Add the projects to the global context\n setBranchData(resultBranchQuery.data.readBusinessActivities)\n }\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [resultBranchQuery])\n\n /**\n * handleCompanyChange\n *\n * @param event\n */\n const handleCompanyChange = event => {\n event.preventDefault()\n setRightCompany(!rightCompany)\n }\n\n /**\n * handleEmailChange\n *\n * @param event\n */\n const handleEmailChange = event => {\n setFormValues({ ...formValues, email: event.target.value })\n }\n\n /**\n * handlePasswordChange\n *\n * @param event\n */\n const handlePasswordChange = event => {\n setFormValues({ ...formValues, password: event.target.value })\n }\n\n /**\n * handleClickShowPassword\n */\n const handleClickShowPassword = () => {\n setFormValues({ ...formValues, showPassword: !formValues.showPassword })\n }\n\n /**\n * handleFirstNameChange\n *\n * @param event\n */\n const handleFirstNameChange = event => {\n setFormValues({ ...formValues, firstName: event.target.value })\n }\n\n /**\n * handleLastNameChange\n *\n * @param event\n */\n const handleLastNameChange = event => {\n setFormValues({ ...formValues, lastName: event.target.value })\n }\n\n /**\n * handleCheckTermsPolicyChange\n */\n const handleCheckTermsPolicyChange = () => {\n setFormValues({ ...formValues, termsPolicy: !formValues.termsPolicy })\n }\n\n /**\n * handleSaveAndAuthorize\n */\n const handleSaveAndAuthorize = () => {\n executeMutation({\n Email: formValues.email,\n Password: formValues.password,\n Firstname: formValues.firstName,\n Surname: formValues.lastName,\n CompanyHashID: user.getData().company.hashID,\n Token: props.csrfToken,\n Canton: formValues.canton\n }).then(result => {\n if (result.error) {\n // Check if the user need to be logged out\n if (result.error.message.indexOf('User forced logout') !== -1) {\n setMessage(MESSAGE_TYPES.ERROR, t('error.user.forced.logout'))\n unsetUser()\n unsetToken()\n navigate('/')\n } else {\n ExternalErrorLogger.log({\n text: 'Error save user on OnboardingMarketingLeftPane',\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n formValues: JSON.stringify(formValues),\n errorMessage: result.error.message\n }\n })\n }\n } else {\n try {\n token.api\n .authorize(formValues.email, formValues.password)\n .then(authorizationResponseData => {\n if (authorizationResponseData) {\n token.setData(authorizationResponseData)\n setToken(token)\n triggerMyselfHandling = true\n executeMyselfQuery()\n }\n })\n } catch (error) {\n ExternalErrorLogger.log({\n text: 'Error authorize user on OnboardingMarketingLeftPane',\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n formValues: JSON.stringify(formValues),\n errorMessage: error\n }\n })\n }\n }\n })\n }\n\n /**\n * handleFromSubmit\n */\n const handleFormSubmit = () => {\n const { error } = schema.validate(formValues, { abortEarly: false })\n\n if (error) {\n const formErrors = FormValueErrorsBuilder(error, t)\n setFormValueErrors({ ...formErrors })\n } else {\n handleSaveAndAuthorize()\n }\n }\n\n /**\n * onAutocompleteSelect\n * Handle the result of the autocomplete\n * @param company\n */\n const onAutocompleteSelect = company => {\n user.setData({\n id: 0,\n email: EMAIL_PLACEHOLDER,\n firstName: '',\n lastName: '',\n mode: UserTypes.FREE,\n company: {\n id: 0, // Placeholder, must be replaced by real HashID on submit\n chid: company.CHID,\n name: company.Name,\n street: company.Address.AddressInformation.Street,\n zip: company.Address.AddressInformation.SwissZipCode,\n city: company.Address.AddressInformation.Town\n }\n })\n setUser(user)\n setRightCompany(true)\n props.setIsRegistered(false)\n }\n\n /**\n * handleBranchCategoryChange\n *\n * @param event\n */\n const handleBranchCategoryChange = event => {\n setFormValueErrors(initialFormValueErrorsState)\n setFormValues(\n Object.assign({}, formValues, {\n branchCategory: event.target.value\n })\n )\n }\n\n /**\n * handleCantonChange\n *\n * @param event\n */\n const handleCantonChange = event => {\n setFormValues({ ...formValues, canton: event.target.value })\n }\n\n /**\n * branchCategories\n *\n * @returns {[]}\n */\n const branchCategories = () => {\n const branchCategories = []\n\n branchCategories.push(\n \n {t('form.label.please.select')}\n \n )\n\n Object.keys(branchData).forEach(index => {\n branchCategories.push(\n \n {branchData[index].Title}\n \n )\n })\n\n return branchCategories\n }\n\n /**\n * cantonItems\n *\n * @returns {[]}\n */\n const cantonItems = () => {\n const menuItemArray = []\n Object.keys(CANTON_LIST).forEach(index => {\n menuItemArray.push(\n \n {CANTON_LIST[index]}\n \n )\n })\n return menuItemArray\n }\n\n /**\n * determineDisabled\n *\n * @returns {boolean}\n */\n const determineDisabled = () => {\n return (\n resultMyselfQuery.fetching || mutationFetching\n )\n }\n\n /**\n * renderCircularProgress\n */\n const renderCircularProgress = (\n \n )\n\n /**\n * renderSelectTextField\n */\n const renderSelectTextField = (\n {\n handleBranchCategoryChange(event)\n }}\n variant='outlined'\n align='left'\n error={GetSafe(() => formValueErrors.branchCategory.hasError, false)}\n helperText={GetSafe(() => formValueErrors.branchCategory.message, '')}\n >\n {branchCategories()}\n \n )\n\n /**\n * return\n */\n return (\n \n \n

\n {t('onboarding.marketing.free.start')}\n

\n\n {!props.isRegistered && (\n

{t('onboarding.intro')}

\n )}\n {props.isRegistered && (\n

\n {t('onboarding.intro.activated')}\n

\n )}\n

\n {t('onboarding.marketing.your.data')}\n

\n
\n \n {rightCompany && (\n \n \n \n {user.getData().company.name}\n \n \n {user.getData().company.street}\n \n \n {user.getData().company.zip} {user.getData().company.city}\n \n \n \n \n {t('onboarding.marketing.not.your.company')}\n \n \n \n )}\n {!rightCompany && (\n \n \n \n )}\n \n \n {resultBranchQuery.fetching &&\n !branchData &&\n renderCircularProgress}\n {!resultBranchQuery.fetching &&\n branchData &&\n renderSelectTextField}\n \n \n formValueErrors.canton.hasError, false)}\n helperText={GetSafe(() => formValueErrors.canton.message, '')}\n disabled={determineDisabled()}\n >\n {cantonItems()}\n \n \n \n formValueErrors.email.hasError, false)}\n label={t('form.label.email')}\n value={formValues.email}\n helperText={GetSafe(() => formValueErrors.email.message, '')}\n onChange={handleEmailChange}\n disabled={determineDisabled()}\n />\n \n \n formValueErrors.password.hasError, false)}\n type={formValues.showPassword ? 'text' : 'password'}\n label={t('form.label.password')}\n value={formValues.password}\n helperText={GetSafe(() => formValueErrors.password.message, '')}\n onChange={handlePasswordChange}\n disabled={determineDisabled()}\n InputProps={{\n endAdornment: (\n \n \n {formValues.showPassword ? : }\n \n \n )\n }}\n />\n \n \n formValueErrors.firstName.hasError, false)}\n helperText={GetSafe(() => formValueErrors.firstName.message, '')}\n onChange={handleFirstNameChange}\n disabled={determineDisabled()}\n />\n formValueErrors.lastName.hasError, false)}\n helperText={GetSafe(() => formValueErrors.lastName.message, '')}\n onChange={handleLastNameChange}\n disabled={determineDisabled()}\n />\n \n \n formValueErrors.termsPolicy.hasError, false)}\n component='fieldset'\n className={classes.formControl}\n >\n \n }\n label={\n
\n {t('form.label.i.accept')}{' '}\n \n {t('form.label.terms.of.use')}\n {' '}\n {t('general.label.and')}{' '}\n \n {t('form.label.privacyPolicy')}.\n \n
\n }\n />\n {GetSafe(() => formValueErrors.termsPolicy.hasError, false) && (\n \n {formValueErrors.termsPolicy.message}\n \n )}\n \n
\n \n \n {t('form.label.start')}\n {(mutationFetching || resultMyselfQuery.fetching) && (\n \n )}\n \n \n \n )\n}\n\nexport default OnboardingMarketingLeftPane\n","import React from 'react'\nimport clsx from 'clsx'\nimport Grid from '@material-ui/core/Grid'\nimport List from '@material-ui/core/List'\nimport ListItem from '@material-ui/core/ListItem'\nimport ListItemIcon from '@material-ui/core/ListItemIcon'\nimport ListItemText from '@material-ui/core/ListItemText'\nimport LockOutlinedIcon from '@material-ui/icons/LockOutlined'\nimport RoomOutlinedIcon from '@material-ui/icons/RoomOutlined'\nimport StarBorderIcon from '@material-ui/icons/StarBorder'\nimport ArrowForwardIcon from '@material-ui/icons/ArrowForward'\nimport { useTranslation } from 'react-i18next'\nimport { makeStyles, withStyles } from '@material-ui/core'\n\n/**\n * useStyles\n */\nconst useStyles = makeStyles(theme => ({\n dialogRight: {\n background: theme.palette.primary.main,\n color: '#ffffff'\n },\n marginTop: {\n marginTop: 20\n },\n icon: {\n color: '#fff',\n fontSize: 30\n },\n iconSmallHolder: {\n minWidth: 40\n },\n item: {\n position: 'relative',\n width: '100%',\n maxWidth: 330,\n margin: ' 20px auto',\n [theme.breakpoints.down('sm')]: {\n maxWidth: '100%',\n margin: 'auto',\n padding: '0 20px'\n }\n },\n listItem: {\n paddingLeft: 26,\n [theme.breakpoints.down('sm')]: {\n paddingRight: 0,\n paddingLeft: 0\n }\n },\n nestedList: {\n paddingLeft: 40,\n [theme.breakpoints.down('sm')]: {\n paddingLeft: 0\n }\n },\n nestedItem: {\n paddingTop: 0,\n paddingBottom: 0\n }\n}))\n\n/**\n * CustomArrowForwardIcon\n */\nconst CustomArrowForwardIcon = withStyles(() => ({\n root: {\n fontSize: 15\n }\n}))(ArrowForwardIcon)\n\n/**\n * OnboardingMarketingRightPane\n *\n * @returns {*}\n * @constructor\n */\nconst OnboardingMarketingRightPane = () => {\n const classes = useStyles()\n const { t } = useTranslation()\n\n /**\n * return\n */\n return (\n \n \n \n \n \n \n \n \n {t('onboarding.marketing.security.hint')}\n \n \n\n \n \n \n \n \n {t('onboarding.marketing.canton.filter.hint')}\n \n \n\n \n \n \n \n \n {t('onboarding.marketing.premium.trial.hint')}\n \n \n\n \n \n \n \n \n \n \n {t('onboarding.marketing.premium.feature.free.month.hint')}\n \n \n \n \n \n \n \n {t('onboarding.marketing.premium.feature.free.tools.hint')}\n \n \n \n \n \n \n \n {t('onboarding.marketing.premium.feature.no.obligation.hint')}\n \n \n \n \n \n \n \n )\n}\n\nexport default OnboardingMarketingRightPane\n","import React, { useContext, useState, useEffect } from \"react\";\nimport { useQuery } from \"urql\";\nimport GlobalContext from \"../lib/GlobalContext\";\nimport { useTranslation } from \"react-i18next\";\nimport { makeStyles } from \"@material-ui/core\";\nimport Dialog from \"@material-ui/core/Dialog\";\nimport DialogContent from \"@material-ui/core/DialogContent\";\nimport CircularProgress from \"@material-ui/core/CircularProgress\";\nimport Grid from \"@material-ui/core/Grid\";\nimport OnboardingMarketingLeftPane from \"../components/OnboardingMarketing/OnboardingMarketingLeftPane\";\nimport OnboardingMarketingRightPane from \"../components/OnboardingMarketing/OnboardingMarketingRightPane\";\nimport UserTypes from \"../components/Onboarding/UserTypes\";\nimport { ACL_COMPONENTS, CANTON_LIST, EMAIL_PLACEHOLDER } from \"../config\";\nimport withAccessControl from \"../components/HOC/AccessControl\";\nimport GooglePlacesAPIHelper from \"../lib/GooglePlacesAPIHelper\";\nimport { MESSAGE_TYPES } from \"../components/PopupMessages\";\nimport { navigate } from \"hookrouter\";\nimport ExternalErrorLogger from \"@ennit/react-external-errorlogger\";\n\n/**\n * useStyles\n */\nconst useStyles = makeStyles((theme) => ({\n override: {\n MuiCircularProgress: {\n root: {\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n },\n },\n },\n root: {\n flexGrow: 1,\n maxWidth: false,\n },\n dialog: {\n // display: 'flex',\n marginBottom: 0,\n padding: 0,\n \"&:first-child\": {\n paddingTop: 0,\n },\n },\n dialogContainer: {\n margin: 0,\n },\n loadingIndicator: {\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n },\n}));\n\nconst queryMarketingCompany = `\n query marketingCompany($hashId: ID) {\n readMarketingCompany(\n HashID: $hashId\n ) {\n MarketingCompany {\n ID\n HashID\n CheNumber\n Name\n Status\n Street\n Zip\n City\n WebsiteUrl\n Branch\n ContactPersonSalutation\n ContactPersonTitle\n ContactPersonFirstName\n ContactPersonLastName\n ContactPersonEmail\n IsRegistered\n }\n Token\n }\n }\n`;\n\n/**\n * OnboardingMarketing\n *\n * @param props\n * @returns {*}\n * @constructor\n */\nconst OnboardingMarketing = (props) => {\n const classes = useStyles();\n const { t } = useTranslation();\n const [csrfToken, setCsrfToken] = useState(\"\");\n const [isRegistered, setIsRegistered] = useState(false);\n const [userNotFound, setUserNotFound] = useState(false);\n const {\n user,\n openWelcomeDialog,\n token,\n setMessage,\n unsetUser,\n unsetToken,\n setUser,\n } = useContext(GlobalContext);\n\n /**\n * useEffect\n * ATTENTION: Dont add the \"unsetUser\" to the dependency array -> Infinite-Loop\n */\n useEffect(() => {\n unsetUser();\n // eslint-disable-next-line\n }, []);\n\n /**\n * GraphQL query for user, gets triggered by calling \"executeMarketingCompanyQuery()\"\n */\n const [result, executeMarketingCompanyQuery] = useQuery({\n query: queryMarketingCompany,\n variables: { hashId: props.id },\n requestPolicy: \"network-only\",\n pause: true,\n });\n\n /**\n * GraphQL trigger and result handling\n */\n useEffect(() => {\n if (!result.fetching) {\n if (result.error) {\n // Check if the user need to be logged out\n if (result.error.message.indexOf(\"User forced logout\") !== -1) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.user.forced.logout\"));\n unsetUser();\n unsetToken();\n navigate(\"/\");\n } else {\n // Something went very wrong\n ExternalErrorLogger.log({\n text: \"Error fetching marketing company on OnboardingMarketing\",\n data: {\n user: user.getData(),\n token: token.getData(),\n errorMessage: result.error.message,\n },\n });\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.fetching.user\"));\n }\n } else {\n // Query not fetching right now\n if (\n typeof result.data !== \"undefined\" &&\n typeof result.data.readMarketingCompany !== \"undefined\" &&\n !user.isSet()\n ) {\n if (result.data.readMarketingCompany.MarketingCompany !== null) {\n if (\n result.data.readMarketingCompany.MarketingCompany.IsRegistered\n ) {\n setIsRegistered(\n result.data.readMarketingCompany.MarketingCompany.IsRegistered\n );\n }\n\n const marketingCompanyData =\n result.data.readMarketingCompany.MarketingCompany;\n\n GooglePlacesAPIHelper.getCantonByCity(\n marketingCompanyData.City\n ).then((googlePlacesResult) => {\n user.setData({\n id: parseInt(marketingCompanyData.ID),\n hashID: marketingCompanyData.HashID,\n email:\n marketingCompanyData.ContactPersonEmail || EMAIL_PLACEHOLDER,\n firstName: marketingCompanyData.ContactPersonFirstName || \"\",\n lastName: marketingCompanyData.ContactPersonLastName || \"\",\n mode: UserTypes.FREE,\n company: {\n id: parseInt(marketingCompanyData.ID),\n hashID: marketingCompanyData.HashID,\n name: marketingCompanyData.Name,\n street: marketingCompanyData.Street || \"\",\n zip: marketingCompanyData.Zip || \"\",\n city: marketingCompanyData.City || \"\",\n canton: CANTON_LIST[googlePlacesResult.canton_short],\n },\n });\n setCsrfToken(result.data.readMarketingCompany.Token);\n setUser(user);\n });\n } else if (!userNotFound) {\n setUserNotFound(true);\n }\n } else {\n if (!user.isSet()) {\n executeMarketingCompanyQuery();\n }\n }\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [result]);\n\n /**\n * LoadingIndicator\n */\n const LoadingIndicator = (\n \n \n \n );\n\n /**\n * UserNotFoundDialog\n */\n const UserNotFoundDialog = (\n \n \n \n \n
{t(\"error.fetching.user\")}
\n
\n \n
\n \n );\n\n /**\n * return\n */\n return (\n <>\n \n {(!user.isSet() || result.fetching) && LoadingIndicator}\n \n {userNotFound && UserNotFoundDialog}\n {user.isSet() && !result.fetching && (\n \n \n \n \n \n \n \n \n )}\n \n );\n};\n\nexport default withAccessControl(\n OnboardingMarketing,\n ACL_COMPONENTS.ONBOARDING_MARKETING\n);\n","import React, { useContext, useEffect, useState } from \"react\";\nimport { useMutation, useQuery } from \"urql\";\nimport GlobalContext from \"../lib/GlobalContext\";\nimport { useTranslation } from \"react-i18next\";\nimport { makeStyles } from \"@material-ui/core\";\nimport Dialog from \"@material-ui/core/Dialog\";\nimport DialogContent from \"@material-ui/core/DialogContent\";\nimport CircularProgress from \"@material-ui/core/CircularProgress\";\nimport Grid from \"@material-ui/core/Grid\";\nimport { navigate } from \"hookrouter\";\nimport withAccessControl from \"../components/HOC/AccessControl\";\nimport { MESSAGE_TYPES } from \"../components/PopupMessages\";\nimport { ACL_COMPONENTS } from \"../config\";\nimport clsx from \"clsx\";\nimport TextField from \"@material-ui/core/TextField\";\nimport GetSafe from \"../lib/GetSafe\";\nimport InputAdornment from \"@material-ui/core/InputAdornment\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport VisibilityOff from \"@material-ui/icons/VisibilityOff\";\nimport Visibility from \"@material-ui/icons/Visibility\";\nimport Button from \"@material-ui/core/Button\";\nimport FormValueErrorsBuilder from \"../lib/FormValueErrorsBuilder\";\nimport Joi from \"@hapi/joi\";\nimport { green } from \"@material-ui/core/colors\";\nimport ExternalErrorLogger from \"@ennit/react-external-errorlogger\";\nimport FormatHelper from \"../lib/FormatHelper\";\n\n/**\n * useStyles\n */\nconst useStyles = makeStyles((theme) => ({\n root: {\n flexGrow: 1,\n },\n dialog: {\n width: \"100%\",\n paddingBottom: 56,\n \"&::before\": theme.watermarkLogo,\n [theme.breakpoints.down(\"sm\")]: {\n padding: 20,\n },\n },\n title: {\n margin: 0,\n fontSize: 24,\n lineHeight: \"30px\",\n textAlign: \"center\",\n [theme.breakpoints.down(\"sm\")]: {\n textAlign: \"left\",\n },\n },\n item: {\n width: \"100%\",\n maxWidth: 330,\n paddingTop: 20,\n paddingBottom: 20,\n },\n itemHeader: {\n maxWidth: 400,\n paddingTop: 44,\n paddingBottom: 24,\n [theme.breakpoints.down(\"sm\")]: {\n paddingTop: 20,\n paddingBottom: 20,\n },\n },\n itemPassword: {\n paddingTop: 0,\n [theme.breakpoints.down(\"sm\")]: {\n paddingBottom: 0,\n },\n },\n textField: {\n width: \"100%\",\n },\n buttonProgress: {\n color: green[500],\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n marginTop: -12,\n marginLeft: -12,\n },\n startButton: {\n width: \"100%\",\n maxWidth: 330,\n color: \"#fff\",\n fontWeight: \"bold\",\n },\n}));\n\n/**\n * queryMyself\n *\n * @type {string}\n */\nconst queryMyself = `\n{\n readMyself {\n ID\n HashID\n Locale\n Email\n Firstname\n Surname\n Salutation\n StripePublicKey\n CreditCard {\n id\n name\n last4\n expired\n }\n Locations {\n edges {\n node {\n HashID\n Title\n Street\n Zip\n City\n Longitude\n Latitude\n Radius\n Version\n Sort\n Removed\n }\n }\n }\n Company {\n ID\n AdminUserID\n HashID\n FeatureSet\n ZipSearchAreas\n ZipSearchStatistic\n ApplicationFollowUpTimeInDays\n StripeIsTrialing\n StripeTrialingDays\n StripePlanID\n StripeValidThrough\n StripeProductID\n StripeCancelAt\n Name\n URLSegment\n ContactPerson\n Street\n Zip\n City\n Canton\n Distance\n Latitude\n Longitude\n Phone\n Mobile\n Fax\n Website\n Email\n NumberOfEmployees\n LegalForm\n FoundingYear\n MasterBusiness\n TrainingCompany\n BusinessActivityID\n BusinessSpecialities{\n edges {\n node {\n ID\n Title\n NogaCode\n SCCodeCompetence\n BoostScore\n }\n }\n }\n OtherBusinessActivities {\n edges {\n node {\n ID\n }\n }\n }\n OtherBusinessSpecialities {\n edges {\n node {\n ID\n }\n }\n }\n User{\n edges {\n node {\n HashID\n Email\n Firstname\n Surname\n Removed\n SearchAreas {\n HashID\n Title\n ZipList\n }\n }\n }\n }\n Memberships {\n edges {\n node {\n ID\n Title\n LogoUrl\n }\n }\n }\n AllMemberships {\n edges {\n node {\n ID\n Title\n LogoUrl\n IsBadge\n }\n }\n }\n MicrositeCertified\n MicrositeCertifiedUntil\n AdditionalMemberships\n MicrositeColorScheme\n MicrositeDescription\n MicrositeEmailApplicationText\n MicrositeImages {\n edges {\n node {\n Src\n Title\n Alt\n }\n }\n }\n MicrositeLogo {\n Src\n Title\n Alt\n }\n MicrositeReferences {\n edges {\n node {\n Sort\n Title\n Content\n Location\n Year\n Month\n ButtonLink\n ButtonTitle\n MicrositeReferencesImages {\n edges { \n node {\n Src\n Title\n Alt\n }\n }\n }\n }\n }\n }\n ApiAccess {\n edges {\n node {\n RequestUrl\n }\n } \n } \n }\n DossierTemplates {\n edges {\n node {\n HashID\n TemplateName\n }\n }\n }\n Permissions {\n Name\n RequireAdminStatus\n }\n FulltextSearchRequests {\n ID\n Title\n }\n SearchAreas {\n HashID\n Title\n ZipList\n }\n }\n}\n`;\n\n/**\n * updateMyselfMutation\n *\n * @type {string}\n */\nconst updateMyselfMutation = `\n mutation UpdateMyself(\n $email: String!,\n $password: String\n ) {\n updateMyself(\n Email: $email,\n Password: $password\n ) {\n Email\n }\n }\n`;\n\n/**\n * OnboardingPasswordReset\n *\n * @param props\n * @returns {*}\n * @constructor\n */\nconst OnboardingPasswordReset = (props) => {\n const classes = useStyles();\n const { t } = useTranslation();\n const {\n user,\n openWelcomeDialog,\n token,\n upgradeToPremiumClose,\n setMessage,\n unsetUser,\n unsetToken,\n setUser,\n } = useContext(GlobalContext);\n const [formValues, setFormValues] = useState({\n password: \"\",\n showPassword: false,\n });\n const [formValueErrors, setFormValueErrors] = useState({\n password: { hasError: false, message: \"\" },\n });\n const [{ fetching }, executeMutation] = useMutation(updateMyselfMutation);\n\n /**\n * Joi validation schema\n */\n const schema = Joi.object({\n password: Joi.string().required(),\n showPassword: Joi.boolean(),\n });\n\n /**\n * useEffect\n */\n useEffect(() => {\n if (props.id !== user.getData().hashID && user.isSet()) {\n unsetUser();\n }\n\n // After the upgrade-to-premium process redirect to start-page\n if (user.isSet() && upgradeToPremiumClose && !openWelcomeDialog) {\n navigate(\"/\");\n }\n }, [props, user, upgradeToPremiumClose, openWelcomeDialog, unsetUser]);\n\n /**\n * Set the refresh-token to enable the ability\n * to fetch a token for the first time or on demand\n */\n if (!token.isSet()) {\n token.setRefreshToken(props.refreshToken);\n }\n\n /**\n * GraphQL query for user, gets triggered by calling \"executeUsersQuery()\"\n */\n const [result, executeMyselfQuery] = useQuery({\n query: queryMyself,\n variables: {},\n pause: true,\n });\n\n /**\n * Parse the permissions array from api to a single-dimensional array\n */\n const parsePermissions = (permissionsFromAPI) => {\n const permissionsArray = [];\n if (Array.isArray(permissionsFromAPI)) {\n for (let i = 0; i < permissionsFromAPI.length; i++) {\n permissionsArray.push(permissionsFromAPI[i].Name);\n }\n }\n return permissionsArray;\n };\n\n /**\n * GraphQL trigger and result handling\n */\n useEffect(() => {\n if (!result.fetching) {\n if (result.error) {\n // Check if the user need to be logged out\n if (result.error.message.indexOf(\"User forced logout\") !== -1) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.user.forced.logout\"));\n unsetUser();\n unsetToken();\n navigate(\"/\");\n } else {\n // Something went very wrong\n ExternalErrorLogger.log({\n text: \"Error fetching user on OnboardingPasswordReset\",\n data: {\n user: user.getData(),\n token: token.getData(),\n errorMessage: result.error.message,\n },\n });\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.fetching.user\"));\n }\n } else {\n // Query not fetching right now\n if (\n typeof result.data !== \"undefined\" &&\n typeof result.data.readMyself !== \"undefined\" &&\n !user.isSet()\n ) {\n const branchSubsData = [];\n result.data.readMyself[0].Company.BusinessSpecialities.edges.map(\n (item) => {\n branchSubsData.push(parseInt(item.node.ID));\n return branchSubsData;\n }\n );\n\n const memberships = [];\n result.data.readMyself[0].Company.Memberships.edges.map((item) => {\n memberships.push(item.node);\n return memberships;\n });\n\n const allMemberships = [];\n result.data.readMyself[0].Company.AllMemberships.edges.map((item) => {\n allMemberships.push(item.node);\n return allMemberships;\n });\n\n const locationData = [];\n result.data.readMyself[0].Locations.edges.map((item) => {\n const constructionSums = [];\n\n if (GetSafe(() => item.node.ConstructionSumList.edges)) {\n item.node.ConstructionSumList.edges.map((constructionSum) => {\n constructionSums.push(constructionSum.node.Code);\n return constructionSums;\n });\n }\n\n item.node.ConstructionSums = constructionSums;\n\n locationData.push(item.node);\n return locationData;\n });\n\n locationData.sort((a, b) => {\n return a.Sort - b.Sort;\n });\n\n const companyUsersData = [];\n result.data.readMyself[0].Company.User.edges.map((item) => {\n if (item.node.HashID !== result.data.readMyself[0].HashID) {\n companyUsersData.push(item.node);\n }\n return companyUsersData;\n });\n\n const dossierTemplatesData = [];\n result.data.readMyself[0].DossierTemplates.edges.map((item) => {\n dossierTemplatesData.push(item.node);\n return dossierTemplatesData;\n });\n\n companyUsersData.sort((a, b) => {\n if (a.Firstname.toLowerCase() < b.Firstname.toLowerCase()) {\n return -1;\n }\n if (a.Firstname.toLowerCase() > b.Firstname.toLowerCase()) {\n return 1;\n }\n return 0;\n });\n\n // Map the user-data\n user.setData({\n id: result.data.readMyself[0].ID,\n hashID: result.data.readMyself[0].HashID,\n locale: result.data.readMyself[0].Locale || \"\",\n email: result.data.readMyself[0].Email,\n firstName: result.data.readMyself[0].Firstname,\n lastName: result.data.readMyself[0].Surname,\n salutation: result.data.readMyself[0].Salutation || \"\",\n mode:\n result.data.readMyself[0].Company.FeatureSet === null\n ? null\n : result.data.readMyself[0].Company.FeatureSet.toLowerCase(),\n stripePublicKey: result.data.readMyself[0].StripePublicKey || \"\",\n creditCard: result.data.readMyself[0].CreditCard,\n locations: locationData || [],\n company: {\n id: result.data.readMyself[0].Company.ID,\n hashID: result.data.readMyself[0].Company.HashID,\n adminUserID: result.data.readMyself[0].Company.AdminUserID,\n name:\n result.data.readMyself[0].Company.Name || \"TODO COMPANY-NAME\", // TODO: Remove fallback company name for production (requires consistent data)\n street: result.data.readMyself[0].Company.Street || \"\",\n zip: result.data.readMyself[0].Company.Zip || \"\",\n city: result.data.readMyself[0].Company.City || \"\",\n canton: result.data.readMyself[0].Company.Canton || \"\",\n distance: result.data.readMyself[0].Company.Distance || 50,\n latitude: result.data.readMyself[0].Company.Latitude || null,\n longitude: result.data.readMyself[0].Company.Longitude || null,\n phone: result.data.readMyself[0].Company.Phone || \"\",\n mobile: result.data.readMyself[0].Company.Mobile || \"\",\n fax: result.data.readMyself[0].Company.Fax || \"\",\n email: result.data.readMyself[0].Company.Email || \"\",\n website: result.data.readMyself[0].Company.Website || \"\",\n employeeCount:\n result.data.readMyself[0].Company.NumberOfEmployees || \"\",\n legalForm: result.data.readMyself[0].Company.LegalForm || \"\",\n foundingYear:\n result.data.readMyself[0].Company.FoundingYear || \"\",\n masterOperation:\n FormatHelper.boolToString(\n result.data.readMyself[0].Company.MasterBusiness\n ) || \"\",\n trainingCompany:\n FormatHelper.boolToString(\n result.data.readMyself[0].Company.TrainingCompany\n ) || \"\",\n branchCategory:\n result.data.readMyself[0].Company.BusinessActivityID || \"\",\n branchSubs: branchSubsData || [],\n users: companyUsersData || [],\n stripeIsTrialing:\n result.data.readMyself[0].Company.StripeIsTrialing,\n stripeTrialingDays:\n result.data.readMyself[0].Company.StripeTrialingDays,\n stripePlanId: result.data.readMyself[0].Company.StripePlanID,\n stripeValidThrough:\n result.data.readMyself[0].Company.StripeValidThrough,\n stripeProductId:\n result.data.readMyself[0].Company.StripeProductID,\n stripeCancelAt: result.data.readMyself[0].Company.StripeCancelAt,\n stripeFuturePlans:\n result.data.readMyself[0].Company.StripeFuturePlans,\n memberships: memberships,\n allMemberships: allMemberships,\n zipSearchAreas: result.data.readMyself[0].Company.ZipSearchAreas,\n zipSearchStatistic: result.data.readMyself[0].Company.ZipSearchStatistic,\n applicationFollowUpTimeInDays: result.data.readMyself[0].Company.ApplicationFollowUpTimeInDays\n },\n dossierTemplates: dossierTemplatesData,\n permissions: parsePermissions(\n result.data.readMyself[0].Permissions\n ),\n fulltextSearchRequests:\n result.data.readMyself[0].FulltextSearchRequests,\n searchAreas: result.data.readMyself[0].SearchAreas,\n });\n\n setUser(user);\n } else {\n if (!user.isSet()) {\n executeMyselfQuery();\n }\n }\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [result]);\n\n /**\n * handlePasswordChange\n *\n * @param event\n */\n const handlePasswordChange = (event) => {\n setFormValues({ ...formValues, password: event.target.value });\n };\n\n /**\n * handleClickShowPassword\n */\n const handleClickShowPassword = () => {\n setFormValues({ ...formValues, showPassword: !formValues.showPassword });\n };\n\n /**\n * handleFormSubmit\n */\n const handleFormSubmit = () => {\n const { error } = schema.validate(formValues, { abortEarly: false });\n if (error) {\n const formErrors = FormValueErrorsBuilder(error, t);\n setFormValueErrors({ ...formErrors });\n } else {\n executeMutation({\n email: user.getData().email,\n password: formValues.password,\n }).then((result) => {\n if (result.error) {\n // Check if the user need to be logged out\n if (result.error.message.indexOf(\"User forced logout\") !== -1) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.user.forced.logout\"));\n unsetUser();\n unsetToken();\n navigate(\"/\");\n } else {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.save\"));\n ExternalErrorLogger.log({\n text: \"Error save new password on OnboardingPasswordReset\",\n data: {\n user: user.getData(),\n token: token.getData(),\n errorMessage: result.error.message,\n },\n });\n }\n } else {\n executeMyselfQuery();\n navigate(\"/\");\n }\n });\n }\n };\n\n /**\n * LoadingIndicator\n */\n const LoadingIndicator = (\n \n \n \n );\n\n /**\n * UserNotFoundDialog\n */\n const UserNotFoundDialog = (\n \n
{t(\"error.fetching.user\")}
\n
\n );\n\n /**\n * PasswordResetDialog\n */\n const PasswordResetDialog = (\n <>\n \n

{t(\"general.label.set.new.password\")}

\n
\n \n formValueErrors.password.hasError, false)}\n type={formValues.showPassword ? \"text\" : \"password\"}\n label={t(\"form.label.password\")}\n value={formValues.password}\n helperText={GetSafe(() => formValueErrors.password.message, \"\")}\n onChange={handlePasswordChange}\n InputProps={{\n endAdornment: (\n \n \n {formValues.showPassword ? : }\n \n \n ),\n }}\n />\n \n \n \n {t(\"general.label.save\")}\n {fetching && (\n \n )}\n \n \n \n );\n\n /**\n * return\n */\n return (\n <>\n \n {result.fetching && LoadingIndicator}\n \n {!result.fetching && (\n \n \n \n {user.isSet() && PasswordResetDialog}\n {!user.isSet() && UserNotFoundDialog}\n \n \n \n )}\n \n );\n};\n\nexport default withAccessControl(\n OnboardingPasswordReset,\n ACL_COMPONENTS.ONBOARDING\n);\n","import React, { useContext, useState, useEffect } from \"react\";\nimport clsx from \"clsx\";\nimport DialogContent from \"@material-ui/core/DialogContent\";\nimport Grid from \"@material-ui/core/Grid\";\nimport Dialog from \"@material-ui/core/Dialog\";\nimport InputAdornment from \"@material-ui/core/InputAdornment\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport TextField from \"@material-ui/core/TextField\";\nimport Visibility from \"@material-ui/icons/Visibility\";\nimport VisibilityOff from \"@material-ui/icons/VisibilityOff\";\nimport { useTranslation } from \"react-i18next\";\nimport GlobalContext from \"../lib/GlobalContext\";\nimport Button from \"@material-ui/core/Button\";\nimport { Card, CardContent, DialogTitle, makeStyles } from \"@material-ui/core\";\nimport Link from \"@material-ui/core/Link\";\nimport Joi from \"@hapi/joi\";\nimport FormValueErrorsBuilder from \"../lib/FormValueErrorsBuilder\";\nimport GetSafe from \"../lib/GetSafe\";\nimport { useQuery } from \"urql\";\nimport FormHelperText from \"@material-ui/core/FormHelperText\";\nimport { green } from \"@material-ui/core/colors\";\nimport CircularProgress from \"@material-ui/core/CircularProgress\";\nimport { externalLinkTitles, getAbsoluteLink } from \"../lib/CmsLinkHandler\";\nimport { MESSAGE_TYPES } from \"../components/PopupMessages\";\nimport CloseIcon from \"@material-ui/icons/Close\";\nimport Typography from \"@material-ui/core/Typography\";\nimport { parsePermissions } from \"../components/HOC/AccessControl\";\nimport UserTypes from \"../components/Onboarding/UserTypes\";\nimport {\n COOKIE_LIFETIME_DAYS,\n cookieDomainRedirect,\n STRIPE_PLAN_IDS,\n FORCE_MODE,\n isDev,\n DEFAULT_LANGUAGE,\n} from \"../config\";\nimport Cookies from \"universal-cookie\";\nimport ExternalErrorLogger from \"@ennit/react-external-errorlogger\";\nimport FormatHelper from \"../lib/FormatHelper\";\n\n/**\n * useStyles\n */\nconst useStyles = makeStyles((theme) => ({\n dialog: {\n width: \"100%\",\n padding: 56,\n \"&::before\": theme.watermarkLogo,\n [theme.breakpoints.down(\"sm\")]: {\n padding: 20,\n },\n },\n dialogTitle: {\n display: \"flex\",\n justifyContent: \"flex-end\",\n alignItems: \"flex-end\",\n paddingBottom: 0,\n },\n title: {\n margin: 0,\n paddingTop: 44,\n paddingBottom: 24,\n fontSize: 24,\n lineHeight: \"30px\",\n textAlign: \"center\",\n [theme.breakpoints.down(\"sm\")]: {\n paddingTop: 20,\n paddingBottom: 20,\n textAlign: \"left\",\n },\n },\n item: {\n width: \"100%\",\n maxWidth: 330,\n paddingTop: 20,\n paddingBottom: 20,\n },\n itemHeader: {\n paddingTop: 0,\n paddingBottom: 0,\n },\n itemPassword: {\n paddingTop: 0,\n [theme.breakpoints.down(\"sm\")]: {\n paddingBottom: 0,\n },\n },\n itemNoAccount: {\n paddingBottom: 0,\n [theme.breakpoints.down(\"sm\")]: {\n paddingTop: 0,\n },\n },\n notice: {\n fontSize: 12,\n color: theme.palette.text.secondary,\n },\n button: {\n width: \"100%\",\n maxWidth: 330,\n color: \"#fff\",\n fontWeight: \"bold\",\n },\n textField: {\n width: \"100%\",\n maxWidth: 330,\n },\n error: {\n color: \"red\",\n margin: 0,\n },\n buttonProgress: {\n color: green[500],\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n marginTop: -12,\n marginLeft: -12,\n },\n card: {\n backgroundColor: theme.palette.primary.main,\n color: \"#fff\",\n },\n form: {\n width: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n },\n}));\n\nconst queryMyself = `\n{\n readMyself {\n ID\n HashID\n Locale\n Email\n Firstname\n Surname\n Salutation\n StripePublicKey\n AppAdmin\n IsMasquerade\n CreditCard {\n id\n name\n last4\n expired\n }\n Locations {\n edges {\n node {\n HashID\n Title\n Street\n Zip\n City\n Longitude\n Latitude\n Radius\n Version\n Sort\n Removed\n ConstructionSumList {\n edges {\n node {\n Code\n }\n }\n }\n }\n }\n }\n Company {\n ID\n AdminUserID\n HashID\n FeatureSet\n ZipSearchAreas\n ZipSearchStatistic\n ApplicationFollowUpTimeInDays\n StripeIsTrialing\n StripeTrialingDays\n StripePlanID\n StripeValidThrough\n StripeProductID\n StripeCancelAt\n Name\n URLSegment\n ContactPerson\n Street\n Zip\n City\n Canton\n Distance\n Latitude\n Longitude\n Phone\n Mobile\n Fax\n Website\n Email\n NumberOfEmployees\n LegalForm\n FoundingYear\n MasterBusiness\n TrainingCompany\n BusinessActivityID\n BusinessSpecialities{\n edges {\n node {\n ID\n Title\n NogaCode\n SCCodeCompetence\n BoostScore\n }\n }\n }\n OtherBusinessActivities {\n edges {\n node {\n ID\n }\n }\n }\n OtherBusinessSpecialities {\n edges {\n node {\n ID\n }\n }\n }\n User{\n edges {\n node {\n HashID\n Email\n Firstname\n Surname\n Removed\n SearchAreas {\n HashID\n Title\n ZipList\n },\n DossierTemplates {\n edges {\n node {\n HashID,\n TemplateName\n }\n }\n }\n }\n }\n }\n Memberships {\n edges {\n node {\n ID\n Title\n LogoUrl\n }\n }\n }\n AllMemberships {\n edges {\n node {\n ID\n Title\n LogoUrl\n IsBadge\n }\n }\n }\n MicrositeCertified\n MicrositeCertifiedUntil\n AdditionalMemberships\n MicrositeColorScheme\n MicrositeDescription\n MicrositeEmailApplicationText\n MicrositeImages {\n edges {\n node {\n Src\n Title\n Alt\n }\n }\n }\n MicrositeLogo {\n Src\n Title\n Alt\n }\n MicrositeReferences {\n edges {\n node {\n Sort\n Title\n Content\n Location\n Year\n Month\n ButtonLink\n ButtonTitle\n MicrositeReferencesImages {\n edges { \n node {\n Src\n Title\n Alt\n }\n }\n }\n }\n }\n }\n ApiAccess {\n edges {\n node {\n RequestUrl\n }\n } \n }\n ConstructionSumList {\n edges {\n node {\n Code\n }\n }\n } \n }\n DossierTemplates {\n edges {\n node {\n HashID\n TemplateName\n MicrositeEmailApplicationText\n }\n }\n }\n Permissions {\n Name\n RequireAdminStatus\n }\n FulltextSearchRequests {\n ID\n Title\n }\n SearchAreas {\n HashID\n Title\n ZipList\n }\n }\n readProduct {\n plans {\n id\n trial_possible\n }\n }\n}\n`;\n\nconst queryPasswordLost = `\n query PasswordLost (\n $email: String\n ) {\n passwordLost(Email: $email) {\n response\n }\n }\n`;\n\n/**\n * Login\n *\n * @returns {*}\n * @constructor\n */\nconst Login = () => {\n const classes = useStyles();\n const { t } = useTranslation();\n const [authorizing, setAuthorizing] = useState(false);\n const initialFormErrors = {\n email: { hasError: false, message: \"\" },\n password: { hasError: false, message: \"\" },\n login: { hasError: false, message: t(\"error.login\") },\n };\n const [formValueErrors, setFormValueErrors] = useState(initialFormErrors);\n const {\n user,\n setUser,\n token,\n setToken,\n tokenHash,\n unsetUser,\n unsetToken,\n cmsLinks,\n setMessage,\n setProjectData,\n setSelectedLocationTabValue,\n setSelectedBuildingApplicationTypeTabValue\n } = useContext(GlobalContext);\n \n const [formValues, setFormValues] = useState({\n email: \"\",\n password: \"\",\n showPassword: false,\n });\n const [showPasswordForgotDialog, setShowPasswordForgotDialog] =\n useState(false);\n const [showMailSendMessage, setShowMailSendMessage] = useState(false);\n\n /**\n * Joi validation schema\n */\n const schema = Joi.object({\n password: Joi.string().required(),\n showPassword: Joi.boolean(),\n email: Joi.string().email({ tlds: false }).required(),\n });\n\n /**\n * Joi validation passwordForgotSchema\n */\n const passwordForgotSchema = Joi.object({\n password: Joi.string().allow(\"\"),\n showPassword: Joi.boolean(),\n email: Joi.string().email({ tlds: false }).required(),\n });\n\n /**\n * GraphQL query for user-data (myself), gets triggered by calling \"executeMyselfQuery()\"\n */\n const [myselfResult, executeMyselfQuery] = useQuery({\n query: queryMyself,\n variables: {\n language: DEFAULT_LANGUAGE,\n token: token.getData().access_token,\n }, // Required as cache-control mechanism\n requestPolicy: \"network-only\",\n pause: true,\n });\n\n /**\n * GraphQL query for lost password , gets triggered by calling \"executePasswordLostQuery()\"\n */\n const [passwordLostResult, executePasswordLostQuery] = useQuery({\n query: queryPasswordLost,\n variables: { email: formValues.email },\n requestPolicy: \"network-only\",\n pause: true,\n });\n\n useEffect(() => {\n setSelectedLocationTabValue(false)\n setSelectedBuildingApplicationTypeTabValue(false)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n /**\n * useEffect\n */\n useEffect(() => {\n if (!myselfResult.fetching && token.isSet() && !user.isSet()) {\n executeMyselfQuery();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [token, tokenHash]);\n\n /**\n * resetFormErrors\n */\n const resetFormErrors = () => {\n setFormValueErrors({ ...initialFormErrors });\n };\n\n /**\n * triggerLoginError\n */\n const triggerLoginError = () => {\n setAuthorizing(false);\n setFormValueErrors({\n ...initialFormErrors,\n login: { hasError: true, message: t(\"error.login\") },\n });\n };\n\n /**\n * getUserMode\n *\n * Determine user feature-set, either a forced set (debug/dev) or the stripe-feature set\n *\n * @param readMyselfResult\n * @returns string\n */\n const getUserMode = (readMyselfResult) => {\n // Feature-set override for debugging or dev purpose\n if (isDev && FORCE_MODE !== null) {\n return FORCE_MODE;\n }\n\n // Stripe feature-set via gql api\n return readMyselfResult.data.readMyself[0].Company.FeatureSet === null\n ? null\n : readMyselfResult.data.readMyself[0].Company.FeatureSet.toLowerCase();\n };\n\n /**\n * loginUser\n *\n * Logs in the user using the username and password provided\n *\n * @param event\n * @returns {Promise}\n */\n const loginUser = async (event) => {\n // Only if we have an event handle the default behaviour\n if (event) {\n event.preventDefault();\n }\n\n setProjectData([]);\n\n // Reset form errors\n // Because we use a custom error field (login) we need to reset the form,\n // because the login-error is validated and triggered by us, not Joi\n resetFormErrors();\n\n // Unset user\n unsetUser();\n unsetToken();\n\n // Validate form data\n const { error } = schema.validate(formValues, { abortEarly: false });\n\n if (error) {\n const formErrors = FormValueErrorsBuilder(error, t);\n setFormValueErrors({ ...formErrors });\n } else {\n // Start authorizing (loading indicator)\n setAuthorizing(true);\n try {\n const authorizationResponseData = await token.api.authorize(\n formValues.email,\n formValues.password\n );\n if (authorizationResponseData) {\n token.setData(authorizationResponseData);\n setToken(token);\n setAppRedirectCookie();\n } else {\n triggerLoginError();\n }\n } catch (error) {\n triggerLoginError();\n console.error(error);\n }\n }\n };\n\n /**\n * setAppRedirectCookie\n */\n const setAppRedirectCookie = () => {\n const cookies = new Cookies();\n if (typeof cookies.get(\"appRedirect\") === \"undefined\") {\n const cookieLifetimeDate = new Date();\n cookieLifetimeDate.setDate(\n cookieLifetimeDate.getDate() + COOKIE_LIFETIME_DAYS\n ); // Add 30 days (refresh-token lifetime)\n cookies.set(\"appRedirect\", cookieLifetimeDate.toUTCString(), {\n path: \"/\",\n domain: cookieDomainRedirect,\n expires: cookieLifetimeDate,\n SameSite: true,\n });\n }\n };\n\n /**\n * determineLoginPermission\n *\n * @param myselfData\n * @returns {boolean}\n */\n const determineLoginPermission = (myselfData) => {\n if (myselfData.Company.AdminUserID !== myselfData.ID) {\n return myselfData.Company.FeatureSet.toLowerCase() === UserTypes.PRO;\n } else {\n return true;\n }\n };\n\n /**\n * GraphQL trigger and myselfResult handling\n */\n useEffect(() => {\n if (!myselfResult.fetching && token.isSet() && !user.isSet()) {\n if (myselfResult.error) {\n // Check if the user need to be logged out\n if (myselfResult.error.message.indexOf(\"User forced logout\") !== -1) {\n // Because we are in the login-process,\n // re-login the user in case of revoked token\n loginUser();\n } else {\n // Something went very wrong\n setAuthorizing(false);\n ExternalErrorLogger.log({\n text: \"Error fetching myself on Login\",\n data: {\n user: JSON.stringify(user.getData()),\n token: JSON.stringify(token.getData()),\n errorMessage: myselfResult.error.message,\n },\n });\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.fetching.branches\"));\n }\n } else {\n // Query not fetching right now\n if (\n typeof myselfResult.data !== \"undefined\" &&\n typeof myselfResult.data.readMyself !== \"undefined\"\n ) {\n if (determineLoginPermission(myselfResult.data.readMyself[0])) {\n const branchSubsData = [];\n myselfResult.data.readMyself[0].Company.BusinessSpecialities.edges.map(\n (item) => {\n branchSubsData.push(parseInt(item.node.ID));\n return branchSubsData;\n }\n );\n\n const otherBusinessActivities = [];\n myselfResult.data.readMyself[0].Company.OtherBusinessActivities.edges.map(\n (item) => {\n otherBusinessActivities.push(parseInt(item.node.ID));\n return otherBusinessActivities;\n }\n );\n\n const otherBusinessSpecialties = [];\n myselfResult.data.readMyself[0].Company.OtherBusinessSpecialities.edges.map(\n (item) => {\n otherBusinessSpecialties.push(parseInt(item.node.ID));\n return otherBusinessSpecialties;\n }\n );\n\n const memberships = [];\n myselfResult.data.readMyself[0].Company.Memberships.edges.map(\n (item) => {\n memberships.push(item.node);\n return memberships;\n }\n );\n\n const allMemberships = [];\n myselfResult.data.readMyself[0].Company.AllMemberships.edges.map(\n (item) => {\n allMemberships.push(item.node);\n return allMemberships;\n }\n );\n\n const micrositeImages = [];\n myselfResult.data.readMyself[0].Company.MicrositeImages.edges.map(\n (item) => {\n if (item.node?.Src && item.node?.Src.length) {\n micrositeImages.push(item.node);\n }\n return micrositeImages;\n }\n );\n\n const locationData = [];\n myselfResult.data.readMyself[0].Locations.edges.map((item) => {\n const constructionSums = [];\n item.node.ConstructionSumList.edges.map((constructionSum) => {\n constructionSums.push(constructionSum.node.Code);\n return constructionSums;\n });\n\n item.node.ConstructionSums = constructionSums;\n\n locationData.push(item.node);\n return locationData;\n });\n\n locationData.sort((a, b) => {\n return a.Sort - b.Sort;\n });\n\n const companyUsersData = [];\n myselfResult.data.readMyself[0].Company.User.edges.map((item) => {\n if (item.node.HashID !== myselfResult.data.readMyself[0].HashID) {\n companyUsersData.push(item.node);\n }\n return companyUsersData;\n });\n\n companyUsersData.sort((a, b) => {\n if (a.Firstname.toLowerCase() < b.Firstname.toLowerCase()) {\n return -1;\n }\n if (a.Firstname.toLowerCase() > b.Firstname.toLowerCase()) {\n return 1;\n }\n return 0;\n });\n\n let trialPossible = false;\n\n myselfResult.data.readProduct.map((productItem) => {\n productItem.plans.map((item) => {\n if (item.id.includes(STRIPE_PLAN_IDS.SMART.YEARLY)) {\n trialPossible = item.trial_possible;\n }\n return item;\n });\n return productItem;\n });\n\n const micrositeReferences = [];\n myselfResult.data.readMyself[0].Company.MicrositeReferences.edges.map(\n (item) => {\n delete item.node.__typename;\n const referenceImages = [];\n if (typeof item.node.MicrositeReferencesImages.edges !== 'undefined') {\n item.node.MicrositeReferencesImages.edges.map((image) => {\n delete image.node.__typename;\n if (image.node?.Src && image.node?.Src.length) {\n referenceImages.push(image.node);\n }\n return image;\n });\n }\n item.node.MicrositeReferencesImages = referenceImages;\n\n micrositeReferences.push(item.node);\n return micrositeReferences;\n }\n );\n\n let hasExternalApply = false;\n myselfResult.data.readMyself[0].Company.ApiAccess.edges.map(\n (item) => {\n if (item.node.RequestUrl.includes(\"external\")) {\n hasExternalApply = true;\n }\n return item;\n }\n );\n\n const dossierTemplatesData = [];\n myselfResult.data.readMyself[0].DossierTemplates.edges.map((item) => {\n dossierTemplatesData.push(item.node);\n return dossierTemplatesData;\n });\n\n // Map the user-data\n user.setData({\n id: myselfResult.data.readMyself[0].ID,\n hashID: myselfResult.data.readMyself[0].HashID,\n locale: myselfResult.data.readMyself[0].Locale || \"\",\n email: myselfResult.data.readMyself[0].Email,\n firstName: myselfResult.data.readMyself[0].Firstname,\n lastName: myselfResult.data.readMyself[0].Surname,\n salutation: myselfResult.data.readMyself[0].Salutation || \"\",\n appAdmin: myselfResult.data.readMyself[0].AppAdmin || 0,\n isMasquerade: myselfResult.data.readMyself[0].IsMasquerade || 0,\n mode: getUserMode(myselfResult),\n stripePublicKey:\n myselfResult.data.readMyself[0].StripePublicKey || \"\",\n creditCard: myselfResult.data.readMyself[0].CreditCard,\n locations: locationData || [],\n company: {\n id: myselfResult.data.readMyself[0].Company.ID,\n hashID: myselfResult.data.readMyself[0].Company.HashID,\n adminUserID: myselfResult.data.readMyself[0].Company.AdminUserID,\n name:\n myselfResult.data.readMyself[0].Company.Name ||\n \"TODO COMPANY-NAME\", // TODO: Remove fallback company name for production (requires consistent data)\n urlSegment: myselfResult.data.readMyself[0].Company.URLSegment,\n contactPerson:\n myselfResult.data.readMyself[0].Company.ContactPerson || \"\",\n street: myselfResult.data.readMyself[0].Company.Street || \"\",\n zip: myselfResult.data.readMyself[0].Company.Zip || \"\",\n city: myselfResult.data.readMyself[0].Company.City || \"\",\n canton: myselfResult.data.readMyself[0].Company.Canton || \"\",\n distance: myselfResult.data.readMyself[0].Company.Distance || 50,\n latitude:\n myselfResult.data.readMyself[0].Company.Latitude || null,\n longitude:\n myselfResult.data.readMyself[0].Company.Longitude || null,\n phone: myselfResult.data.readMyself[0].Company.Phone || \"\",\n mobile: myselfResult.data.readMyself[0].Company.Mobile || \"\",\n fax: myselfResult.data.readMyself[0].Company.Fax || \"\",\n email: myselfResult.data.readMyself[0].Company.Email || \"\",\n website: myselfResult.data.readMyself[0].Company.Website || \"\",\n employeeCount:\n myselfResult.data.readMyself[0].Company.NumberOfEmployees || \"\",\n legalForm:\n myselfResult.data.readMyself[0].Company.LegalForm || \"\",\n foundingYear:\n myselfResult.data.readMyself[0].Company.FoundingYear || \"\",\n masterOperation:\n FormatHelper.boolToString(\n myselfResult.data.readMyself[0].Company.MasterBusiness\n ) || \"\",\n trainingCompany:\n FormatHelper.boolToString(\n myselfResult.data.readMyself[0].Company.TrainingCompany\n ) || \"\",\n branchCategory:\n myselfResult.data.readMyself[0].Company.BusinessActivityID ||\n \"\",\n branchSubs: branchSubsData || [],\n otherBusinessActivities: otherBusinessActivities || [],\n otherBusinessSpecialities: otherBusinessSpecialties || [],\n users: companyUsersData || [],\n stripeIsTrialing:\n myselfResult.data.readMyself[0].Company.StripeIsTrialing,\n stripeTrialingDays:\n myselfResult.data.readMyself[0].Company.StripeTrialingDays,\n stripePlanId:\n myselfResult.data.readMyself[0].Company.StripePlanID,\n stripeValidThrough:\n myselfResult.data.readMyself[0].Company.StripeValidThrough,\n stripeProductId:\n myselfResult.data.readMyself[0].Company.StripeProductID,\n stripeCancelAt:\n myselfResult.data.readMyself[0].Company.StripeCancelAt,\n stripeFuturePlans:\n myselfResult.data.readMyself[0].Company.StripeFuturePlans,\n trialPossible: trialPossible,\n memberships: memberships,\n allMemberships: allMemberships,\n micrositeColorScheme:\n myselfResult.data.readMyself[0].Company.MicrositeColorScheme,\n micrositeDescription:\n myselfResult.data.readMyself[0].Company.MicrositeDescription,\n micrositeEmailApplicationText:\n myselfResult.data.readMyself[0].Company\n .MicrositeEmailApplicationText,\n micrositeImages: micrositeImages,\n micrositeLogo:\n myselfResult.data.readMyself[0].Company.MicrositeLogo,\n additionalMemberships:\n myselfResult.data.readMyself[0].Company.AdditionalMemberships,\n micrositeReferences: micrositeReferences,\n micrositeCertified:\n myselfResult.data.readMyself[0].Company.MicrositeCertified,\n micrositeCertifiedUntil:\n myselfResult.data.readMyself[0].Company.MicrositeCertifiedUntil,\n hasExternalApply: hasExternalApply,\n zipSearchAreas:\n myselfResult.data.readMyself[0].Company.ZipSearchAreas,\n zipSearchStatistic:\n myselfResult.data.readMyself[0].Company.ZipSearchStatistic,\n constructionSums:\n myselfResult.data.readMyself[0].Company.ConstructionSumList,\n applicationFollowUpTimeInDays:\n myselfResult.data.readMyself[0].Company.ApplicationFollowUpTimeInDays\n },\n dossierTemplates: dossierTemplatesData,\n permissions: parsePermissions(\n myselfResult.data.readMyself[0].Permissions\n ),\n fulltextSearchRequests:\n myselfResult.data.readMyself[0].FulltextSearchRequests,\n searchAreas: myselfResult.data.readMyself[0].SearchAreas,\n });\n // Add the user to global context\n setUser(user);\n // Finish loading process (remove loading-indicator)\n setAuthorizing(false);\n } else {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.login\"));\n setAuthorizing(false);\n }\n }\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [myselfResult, token, user])\n\n /**\n * GraphQL trigger and passwordLostResult handling\n */\n useEffect(() => {\n if (!passwordLostResult.fetching) {\n if (passwordLostResult.error) {\n ExternalErrorLogger.log({\n text: \"Error password lost on Login\",\n data: {\n user: user.getData(),\n token: token.getData(),\n error: passwordLostResult.error,\n },\n });\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.general\"));\n } else {\n // Query not fetching right now\n if (\n typeof passwordLostResult.data !== \"undefined\" &&\n typeof passwordLostResult.data.passwordLost !== \"undefined\"\n ) {\n if (passwordLostResult.data.passwordLost.response !== \"ok\") {\n ExternalErrorLogger.log({\n text: \"Error password lost response on Login\",\n data: {\n user: user.getData(),\n token: token.getData(),\n response: passwordLostResult.data.passwordLost.response,\n },\n });\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.general\"));\n } else {\n if (!showMailSendMessage) {\n setShowMailSendMessage(true);\n }\n }\n }\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [passwordLostResult])\n\n /**\n * handleEmailChange\n *\n * @param event\n */\n const handleEmailChange = (event) => {\n setFormValues({ ...formValues, email: event.target.value });\n };\n\n /**\n * handlePasswordChange\n *\n * @param event\n */\n const handlePasswordChange = (event) => {\n setFormValues({ ...formValues, password: event.target.value });\n };\n\n /**\n * handleClickShowPassword\n */\n const handleClickShowPassword = () => {\n setFormValues({ ...formValues, showPassword: !formValues.showPassword });\n };\n\n /**\n * handlePasswordForgot\n */\n const handlePasswordForgot = () => {\n setShowPasswordForgotDialog(true);\n };\n\n /**\n * handlePasswordForgotSubmit\n */\n const handlePasswordForgotSubmit = async () => {\n // Validate form data\n const { error } = passwordForgotSchema.validate(formValues, {\n abortEarly: false,\n });\n\n if (error) {\n const formErrors = FormValueErrorsBuilder(error, t);\n setFormValueErrors({ ...formErrors });\n } else {\n executePasswordLostQuery();\n }\n };\n\n /**\n * closeDialogue\n */\n const closeDialogue = () => {\n setShowPasswordForgotDialog(false);\n };\n\n /**\n * PasswordForgotDialogContent\n */\n const PasswordForgotDialogContent = (\n <>\n \n

{t(\"form.label.password.forgot\")}

\n
\n {showMailSendMessage ? (\n \n \n \n {t(\"general.label.password.reset\")}\n \n \n \n ) : (\n <>\n \n formValueErrors.email.hasError, false)}\n helperText={GetSafe(() => formValueErrors.email.message, \"\")}\n onChange={handleEmailChange}\n />\n \n \n \n {t(\"general.label.claim.password.change.link\")}\n {passwordLostResult.fetching && (\n \n )}\n \n \n \n )}\n \n );\n\n /**\n * LoginDialogContent\n */\n const LoginDialogContent = (\n
\n \n

{t(\"general.greeting.welcome.back\")}

\n
\n \n formValueErrors.email.hasError, false)}\n helperText={GetSafe(() => formValueErrors.email.message, \"\")}\n onChange={handleEmailChange}\n />\n \n \n formValueErrors.password.hasError, false)}\n type={formValues.showPassword ? \"text\" : \"password\"}\n label={t(\"form.label.password\")}\n value={formValues.password}\n helperText={GetSafe(() => formValueErrors.password.message, \"\")}\n onChange={handlePasswordChange}\n InputProps={{\n endAdornment: (\n \n \n {formValues.showPassword ? : }\n \n \n ),\n }}\n />\n \n {GetSafe(() => formValueErrors.login.hasError, false) && (\n \n \n {formValueErrors.login.message}\n \n \n )}\n \n \n {t(\"form.label.password.forgot\")}\n \n \n \n \n {t(\"general.label.login\")}\n {authorizing && (\n \n )}\n \n \n \n
\n \n {t(\"form.label.hint.no.account\")}\n \n
\n \n {t(\"form.label.register.now\")}\n \n
\n
\n
\n );\n\n /**\n * return\n */\n return (\n \n \n {showPasswordForgotDialog && (\n {\n closeDialogue();\n }}\n >\n \n \n )}\n \n \n \n {showPasswordForgotDialog\n ? PasswordForgotDialogContent\n : LoginDialogContent}\n \n \n \n );\n};\n\nexport default Login;\n","import { useContext, useEffect } from 'react'\nimport GlobalContext from '../lib/GlobalContext'\nimport { navigate } from 'hookrouter'\n\n/**\n * Logout\n *\n * @returns {*}\n * @constructor\n */\nconst Logout = () => {\n const { unsetUser, unsetToken } = useContext(GlobalContext)\n\n /**\n * useEffect\n */\n /* eslint-disable */\n useEffect(() => {\n unsetUser()\n unsetToken()\n navigate('/')\n }, [])\n /* eslint-enable */\n\n /**\n * return\n */\n return null\n}\n\nexport default Logout\n","import React, { useState, useContext, useEffect } from 'react'\nimport clsx from 'clsx'\nimport { List, ListItem, makeStyles, Paper, TextField } from '@material-ui/core'\nimport { useTranslation } from 'react-i18next'\nimport GlobalContext from '../../lib/GlobalContext'\nimport withAccessControl from '../HOC/AccessControl'\nimport { ACL_COMPONENTS, isDev } from '../../config'\nimport { navigate, usePath } from 'hookrouter'\nimport { useQuery } from 'urql'\nimport ExternalErrorLogger from '@ennit/react-external-errorlogger'\nimport { MESSAGE_TYPES } from '../PopupMessages'\n// import IconButton from '@material-ui/core/IconButton'\nimport CloseIcon from '@material-ui/icons/Close'\nimport SearchIcon from '@material-ui/icons/Search'\nimport InputAdornment from '@material-ui/core/InputAdornment'\n\nconst queryReadMyself = `\n {\n readMyself {\n FulltextSearchRequests {\n ID\n Title\n }\n }\n }\n`\n\nconst useStyles = makeStyles(theme => ({\n searchTextHolder: {\n display: 'flex',\n justifyContent: 'flex-end',\n alignSelf: 'flex-end',\n position: 'relative',\n width: '100%',\n marginLeft: 'auto',\n [theme.breakpoints.up('md')]: {\n maxWidth: 288\n }\n },\n textField: {\n width: '100%',\n marginTop: 10,\n marginRight: 0,\n marginBottom: 10,\n marginLeft: 0,\n '& > div': {\n marginTop: 0,\n borderRadius: 4,\n border: 0,\n background: 'rgba(255,255,255,0.2)',\n color: '#ffffff',\n '&::before': {\n display: 'none'\n },\n '&::after': {\n display: 'none'\n }\n },\n '& label': {\n display: 'none'\n },\n '& input': {\n paddingTop: 10,\n paddingRight: 50,\n paddingBottom: 10,\n paddingLeft: 50,\n background: 'transparent',\n '&::placeholder': {\n fontSize: 13\n }\n },\n '& fieldset': {\n border: 'none'\n },\n '& legend': {\n display: 'none'\n }\n },\n iconButtonStartHolder: {\n position: 'absolute',\n top: '50%',\n left: 10,\n transform: 'translate(0,-50%)',\n color: '#ffffff'\n },\n iconButtonCloseHolder: {\n position: 'absolute',\n top: '50%',\n right: 10,\n transform: 'translate(0,-50%)',\n lineHeight: '1',\n cursor: 'pointer',\n color: '#ffffff'\n },\n autocompleteResultWrapper: {\n position: 'absolute',\n top: '100%',\n right: 0,\n width: '100%',\n textAlign: 'center',\n zIndex: 5,\n [theme.breakpoints.up('md')]: {\n width: '100vw',\n maxWidth: 408\n }\n },\n autocompleteResult: {\n paddingRight: theme.spacing(4),\n paddingLeft: theme.spacing(4)\n },\n autocompleteResultList: {\n padding: 0,\n '& li': {\n paddingTop: 20,\n paddingRight: 0,\n paddingBottom: 20,\n paddingLeft: 0,\n borderBottom: '1px solid #d3d3d3',\n '&:last-child': {\n borderBottom: 0\n }\n }\n },\n listResultHeader: {\n color: '#999'\n },\n listResultItems: {\n cursor: 'pointer'\n }\n}))\n\nlet trigger = false\n\n/**\n * LayoutHeaderSearchfield\n *\n * @returns {*}\n * @constructor\n */\nconst LayoutHeaderSearchfield = () => {\n const path = usePath()\n const classes = useStyles()\n const { t } = useTranslation()\n const [\n localProjectSearchParameter,\n setLocalProjectSearchParameter\n ] = useState('')\n const [searchHistoryOverlay, setSearchHistoryOverlay] = useState(false)\n const [searchHistoryContent, setSearchHistoryContent] = useState({})\n const {\n user,\n setMessage,\n unsetUser,\n token,\n unsetToken,\n projectSearchParameter,\n setProjectSearchParameter,\n removeProjectSearchParameter,\n setRemoveProjectSearchParameter,\n projectData\n } = useContext(GlobalContext)\n\n /* eslint-disable */\n const updateSearchHistoryContent = () => {\n const searchHistoryContent = {}\n const fulltextSearchRequests = user.getData().fulltextSearchRequests\n if (fulltextSearchRequests.length > 0) {\n for (let index = 0; index < fulltextSearchRequests.length; index++) {\n const fulltextSearchRequest = fulltextSearchRequests[index]\n searchHistoryContent[index] = fulltextSearchRequest.Title\n }\n setSearchHistoryContent(searchHistoryContent)\n }\n }\n /* eslint-enable */\n\n const [resultReadMyselfQuery, executeReadMyselfQuery] = useQuery({\n query: queryReadMyself,\n requestPolicy: 'network-only',\n pause: true\n })\n\n // Search history GraphQL trigger and result handling\n if (trigger && !resultReadMyselfQuery.fetching) {\n if (resultReadMyselfQuery.error) {\n // Check if the user need to be logged out\n if (\n resultReadMyselfQuery.error.message.indexOf('User forced logout') !== -1\n ) {\n setMessage(MESSAGE_TYPES.ERROR, t('error.user.forced.logout'))\n unsetUser()\n unsetToken()\n navigate('/')\n } else {\n // The query did not return any results!\n ExternalErrorLogger.log({\n text: 'Error fetching myself on LayoutHeaderSearchfield',\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n errorMessage: resultReadMyselfQuery.error.message\n }\n })\n }\n } else {\n if (\n typeof resultReadMyselfQuery.data !== 'undefined' &&\n typeof resultReadMyselfQuery.data.readMyself !== 'undefined'\n ) {\n user.setData({\n fulltextSearchRequests:\n resultReadMyselfQuery.data.readMyself[0].FulltextSearchRequests\n })\n }\n }\n trigger = false\n }\n\n /* eslint-disable */\n useEffect(() => {\n if (removeProjectSearchParameter === true) {\n setLocalProjectSearchParameter('')\n setRemoveProjectSearchParameter(false)\n }\n }, [removeProjectSearchParameter])\n\n useEffect(() => {\n updateSearchHistoryContent()\n }, [user, user.getData().fulltextSearchRequests])\n\n useEffect(() => {\n if (\n typeof projectSearchParameter !== 'undefined' &&\n projectSearchParameter.length > 0\n ) {\n executeReadMyselfQuery()\n trigger = true\n }\n }, [projectData])\n /* eslint-enable */\n\n /**\n * handleEmailChange\n *\n * @param event\n */\n const handleSearchfieldChange = event => {\n if (event.key === 'Enter') {\n if (localProjectSearchParameter.length > 0 || isDev) {\n setSearchHistoryOverlay(false)\n setProjectSearchParameter(localProjectSearchParameter)\n if (path !== '/projects-search') {\n navigate('/projects-search')\n }\n }\n } else {\n setLocalProjectSearchParameter(event.target.value)\n }\n }\n\n const handleSearchTermSelect = (searchTermId, searchTermValue) => {\n setSearchHistoryOverlay(false)\n setLocalProjectSearchParameter(searchTermValue)\n setProjectSearchParameter(searchTermValue)\n if (path !== '/projects-search') {\n navigate('/projects-search')\n }\n }\n\n const renderSearchTermListElements = () => {\n const searchTermListElements = []\n const searchTermIds = Object.keys(searchHistoryContent)\n for (let index = 0; index < searchTermIds.length; index++) {\n const searchTermValue = searchHistoryContent[searchTermIds[index]]\n searchTermListElements.push(\n {\n handleSearchTermSelect(searchTermIds[index], searchTermValue)\n }}\n >\n {searchTermValue}\n \n )\n }\n return searchTermListElements\n }\n\n /**\n * return\n */\n return (\n setSearchHistoryOverlay(false)}\n className={classes.searchTextHolder}\n >\n setSearchHistoryOverlay(true)}\n onClick={() => setSearchHistoryOverlay(true)}\n margin='normal'\n InputProps={{\n startAdornment: (\n \n \n \n )\n }}\n />\n {\n setSearchHistoryOverlay(false)\n setLocalProjectSearchParameter('')\n setProjectSearchParameter('')\n if (path === '/projects-search') {\n navigate('/projects')\n }\n }}\n >\n {localProjectSearchParameter.length > 0 ? (\n \n ) : null}\n \n {searchHistoryOverlay && Object.keys(searchHistoryContent).length > 0 && (\n
\n \n \n \n {t('form.list.last.search')}\n \n {renderSearchTermListElements()}\n \n \n
\n )}\n \n )\n}\n\nexport default withAccessControl(\n LayoutHeaderSearchfield,\n ACL_COMPONENTS.LAYOUT_HEADER_SEARCHFIELD\n)\n","import React, { useContext, useEffect, useState } from 'react'\nimport clsx from 'clsx'\nimport { makeStyles } from '@material-ui/core'\nimport ArrowDropDown from '@material-ui/icons/ArrowDropDown'\nimport Avatar from '@material-ui/core/Avatar'\nimport Box from '@material-ui/core/Box'\nimport Typography from '@material-ui/core/Typography'\nimport Menu from '@material-ui/core/Menu'\nimport MenuItem from '@material-ui/core/MenuItem'\nimport { useTranslation } from 'react-i18next'\nimport GlobalContext from '../../lib/GlobalContext'\nimport { navigate } from 'hookrouter'\nimport withAccessControl from '../HOC/AccessControl'\nimport { ACL_COMPONENTS } from '../../config'\n\nconst useStyles = makeStyles(theme => ({\n userNameHolder: {\n [theme.breakpoints.down('xs')]: {\n display: 'none'\n }\n },\n avatar: {\n width: 42,\n height: 42,\n marginRight: 7,\n paddingBottom: 2,\n backgroundColor: '#006A7A',\n color: '#ffffff',\n fontSize: 16\n },\n headerAccount: {\n [theme.breakpoints.down('sm')]: {\n position: 'absolute',\n top: theme.spacing(4),\n right: theme.spacing(2)\n }\n }\n}))\n\n/**\n * LayoutHeaderAccount\n *\n * @returns {*}\n * @constructor\n */\nconst LayoutHeaderAccount = () => {\n const classes = useStyles()\n const { t } = useTranslation()\n const { user, unsetUser, unsetToken } = useContext(GlobalContext)\n const [anchorEl, setAnchorEl] = useState(null)\n const initialAccountData = {\n initials: 'NN',\n firstName: t('general.label.please'),\n lastName: t('general.label.login')\n }\n const [componentAccountData, setComponentAccountData] = useState(\n initialAccountData\n )\n\n /**\n * useEffect\n */\n useEffect(() => {\n if (user.isSet()) {\n const userData = user.getData()\n setComponentAccountData({\n initials: userData.firstName.charAt(0) + userData.lastName.charAt(0),\n firstName: userData.firstName,\n lastName: userData.lastName\n })\n }\n }, [user])\n\n /**\n * handleClick\n *\n * @param event\n */\n const handleClick = event => setAnchorEl(event.currentTarget)\n\n /**\n * handleClose\n */\n const handleClose = () => setAnchorEl(null)\n\n /**\n * handleClickLogout\n */\n const handleClickLogout = () => {\n setAnchorEl(null)\n unsetUser()\n unsetToken()\n setComponentAccountData(initialAccountData)\n navigate('/')\n }\n\n /**\n * handleClickAccount\n */\n const handleClickAccount = () => {\n setAnchorEl(null)\n navigate('/account')\n }\n\n /**\n * handleClickCompany\n */\n const handleClickCompany = () => {\n setAnchorEl(null)\n navigate('/company')\n }\n\n const hoveredStyle = {\n cursor: 'pointer'\n }\n\n /**\n * return\n */\n return (\n <>\n \n \n \n \n \n \n {componentAccountData.initials}\n \n \n \n \n {componentAccountData.firstName +\n ' ' +\n componentAccountData.lastName}\n \n \n \n \n \n {t('account.label.my.account')}\n \n \n {t('account.label.my.company')}\n \n \n {t('account.label.logout')}\n \n \n \n )\n}\n\nexport default withAccessControl(\n LayoutHeaderAccount,\n ACL_COMPONENTS.LAYOUT_HEADER_ACCOUNT\n)\n","import React, { useContext, useEffect, useState } from 'react'\nimport clsx from 'clsx'\nimport { makeStyles } from '@material-ui/core'\nimport ArrowDropDown from '@material-ui/icons/ArrowDropDown'\nimport Avatar from '@material-ui/core/Avatar'\nimport Box from '@material-ui/core/Box'\nimport Typography from '@material-ui/core/Typography'\nimport Menu from '@material-ui/core/Menu'\nimport MenuItem from '@material-ui/core/MenuItem'\nimport { useTranslation } from 'react-i18next'\nimport LocalOffer from '@material-ui/icons/LocalOffer'\nimport Grid from '@material-ui/core/Grid'\nimport Tooltip from '@material-ui/core/Tooltip'\nimport GlobalContext from '../../lib/GlobalContext'\nimport { navigate } from 'hookrouter'\nimport withAccessControl from '../HOC/AccessControl'\nimport { ACL_COMPONENTS } from '../../config'\n\nconst useStyles = makeStyles(theme => ({\n userNameHolder: {\n [theme.breakpoints.down('xs')]: {\n display: 'none'\n }\n },\n headerFree: {\n justifyContent: 'flex-end'\n },\n avatar: {\n width: 42,\n height: 42,\n marginRight: 7,\n paddingBottom: 2,\n backgroundColor: '#006A7A',\n color: '#ffffff',\n fontSize: 16\n },\n disabled: {\n opacity: 0.5\n }\n}))\n\n/**\n * LayoutHeaderAccount\n *\n * @returns {*}\n * @constructor\n */\nconst LayoutHeaderAccountFree = () => {\n const classes = useStyles()\n const { t } = useTranslation()\n const {\n user,\n unsetUser,\n unsetToken,\n upgradeToPremiumOpen,\n setUpgradeToPremiumOpen\n } = useContext(GlobalContext)\n const [anchorEl, setAnchorEl] = useState(null)\n const initialAccountData = {\n initials: 'NN',\n firstName: t('general.label.please'),\n lastName: t('general.label.login')\n }\n const [componentAccountData, setComponentAccountData] = useState(\n initialAccountData\n )\n\n /**\n * useEffect\n */\n useEffect(() => {\n if (user.isSet()) {\n const userData = user.getData()\n setComponentAccountData({\n initials: userData.firstName.charAt(0) + userData.lastName.charAt(0),\n firstName: userData.firstName,\n lastName: userData.lastName\n })\n }\n }, [user])\n\n /**\n * handleUpgradeToPremium\n */\n const handleUpgradeToPremium = () => {\n setUpgradeToPremiumOpen(!upgradeToPremiumOpen)\n }\n\n /**\n * handleClick\n *\n * @param event\n */\n const handleClick = event => {\n if (user.isSet()) {\n setAnchorEl(event.currentTarget)\n }\n }\n\n /**\n * handleClose\n */\n const handleClose = () => setAnchorEl(null)\n\n /**\n * handleClickLogout\n */\n const handleClickLogout = () => {\n setAnchorEl(null)\n unsetUser()\n unsetToken()\n setComponentAccountData(initialAccountData)\n navigate('/')\n }\n\n /**\n * handleClickAccount\n */\n const handleClickAccount = () => {\n setAnchorEl(null)\n navigate('/account')\n }\n\n const hoveredStyle = {\n cursor: 'pointer'\n }\n\n /**\n * return\n */\n return (\n <>\n \n \n \n \n \n \n {componentAccountData.initials}\n \n \n \n \n {componentAccountData.firstName +\n ' ' +\n componentAccountData.lastName}\n \n \n \n \n \n {t('account.label.my.account')}\n \n \n {t('account.label.upgrade')}\n \n \n \n \n \n \n \n \n {t('account.label.my.company')}\n \n \n \n \n \n {t('account.label.logout')}\n \n \n \n )\n}\n\nexport default withAccessControl(\n LayoutHeaderAccountFree,\n ACL_COMPONENTS.LAYOUT_HEADER_ACCOUNT_FREE\n)\n","import React from \"react\";\nimport { Link, makeStyles } from \"@material-ui/core\";\nimport User from \"../../lib/User\";\n\nconst useStyles = makeStyles((theme) => ({\n notice: {\n position: 'fixed',\n top: '0',\n left: '0',\n width: '100%',\n height: '20px',\n background: 'red',\n textAlign: 'center',\n color: 'white',\n letterSpacing: '2px',\n fontSize: '14px',\n fontWeight: 'bold'\n }\n}));\n\nconst handleEndMasquerade = () => {\n if(User.isMasquerade()) {\n User.deleteLocalStorage()\n window.location.reload()\n }\n}\n\n/**\n * LayoutHeaderDebugNotice\n *\n * @returns {*}\n * @constructor\n */\nconst LayoutHeaderDebugNotice = (props) => {\n const classes = useStyles();\n\n /**\n * return\n */\n return User.isMasquerade() && (\n
\n MASQUERADED AS {User.getData().email} / ID: {User.getData().id} | END MASQ.\n
\n );\n};\n\nexport default LayoutHeaderDebugNotice;\n","import React, { useState, useEffect, useContext } from 'react'\nimport { makeStyles, withStyles } from '@material-ui/core'\nimport AppBar from '@material-ui/core/AppBar'\nimport Container from '@material-ui/core/Container'\nimport Grid from '@material-ui/core/Grid'\nimport Tabs from '@material-ui/core/Tabs'\nimport Tab from '@material-ui/core/Tab'\nimport { apiTld, companyDirectoryPath, DEFAULT_LOGO_PATH } from '../../config'\nimport LayoutHeaderSearchfield from './LayoutHeaderSearchfield'\nimport LayoutHeaderAccount from './LayoutHeaderAccount'\nimport LayoutHeaderAccountFree from './LayoutHeaderAccountFree'\nimport { A, navigate, usePath } from 'hookrouter'\nimport { useTranslation } from 'react-i18next'\nimport GlobalContext from '../../lib/GlobalContext'\nimport UserTypes from '../Onboarding/UserTypes'\nimport Tooltip from '@material-ui/core/Tooltip'\nimport LayoutHeaderDebugNotice from './LayoutHeaderDebugNotice'\n\nconst NavTabs = withStyles(theme => ({\n root: {\n minHeight: 0,\n marginBottom: 0,\n paddingTop: 6,\n borderBottom: 0,\n backgroundColor: 'transparent'\n },\n indicator: {\n backgroundColor: '#fff'\n }\n}))(Tabs)\n\nconst NavTab = withStyles(theme => ({\n root: {\n paddingTop: 9,\n paddingBottom: 9,\n color: '#ffffff',\n fontWeight: 'bold'\n },\n selected: {}\n}))(Tab)\n\nconst useStyles = makeStyles(theme => ({\n header: {\n zIndex: 1200\n },\n headerWrapper: {\n width: '100%',\n maxWidth: 1320,\n paddingRight: 20,\n paddingLeft: 20,\n paddingTop: 20\n },\n logoItem: {\n [theme.breakpoints.down('sm')]: {\n flexBasis: 'auto',\n paddingTop: 10\n }\n },\n logoImage: {\n [theme.breakpoints.down('sm')]: {\n width: 180\n }\n },\n logo: {\n paddingLeft: 0\n },\n accountItem: {\n [theme.breakpoints.down('md')]: {\n display: 'flex',\n justifyContent: 'flex-end',\n flexBasis: 'auto',\n flexWrap: 'wrap',\n paddingTop: 10\n }\n },\n navList: {},\n statusBar: {\n paddingTop: 10,\n paddingBottom: 10,\n fontWeight: 'bold',\n textAlign: 'center',\n color: '#ffffff',\n backgroundColor: '#006A7A'\n },\n renewLink: {\n paddingLeft: 10,\n color: '#ffffff',\n [theme.breakpoints.down('sm')]: {\n display: 'block',\n paddingLeft: 0\n },\n textDecoration: 'underline',\n cursor: 'pointer'\n },\n menuItem: {\n fontWeight: 'bold'\n },\n micrositeLink: {\n fontWeight: 'bold',\n color: '#ffffff',\n opacity: 0.7,\n padding: '12px 33px 0'\n }\n}))\n\n/**\n * LayoutHeader\n *\n * @returns {*}\n * @constructor\n */\nconst LayoutHeader = () => {\n const classes = useStyles()\n const { t } = useTranslation()\n const [value, setValue] = useState(0)\n const [showStatusBar, setShowStatusBar] = useState(false)\n const [showTrialPossibleBar, setShowTrialPossibleBar] = useState(false)\n const path = usePath()\n const { user, upgradeToPremiumOpen, setUpgradeToPremiumOpen } = useContext(\n GlobalContext\n )\n\n /**\n * useEffect\n */\n useEffect(() => {\n // Determine if the trial-remaining-days-bar shall be shown\n if (\n user.isSet() &&\n user.getData().company.stripeIsTrialing &&\n user.getData().company.stripeTrialingDays <= 7 &&\n user.getData().company.stripeTrialingDays > 0 &&\n user.getData().mode === UserTypes.SMART\n ) {\n setShowStatusBar(true)\n } else {\n if (showStatusBar !== false) {\n setShowStatusBar(false)\n }\n }\n\n // Determine if the trial-possible-bar shall be shown\n if (\n user.isSet() &&\n user.getData().company.trialPossible &&\n user.getData().mode === UserTypes.FREE\n ) {\n setShowTrialPossibleBar(true)\n } else {\n if (showTrialPossibleBar !== false) {\n setShowTrialPossibleBar(false)\n }\n }\n\n switch (path) {\n case '/projects':\n case '/projects-free':\n setValue(0)\n break\n case '/favorites':\n setValue(1)\n break\n case '/custom_sc':\n setValue(2)\n break\n case '/dossier-management':\n setValue(3)\n break\n case '/statistics':\n setValue(4)\n break\n default:\n if (value !== false) {\n setValue(false)\n }\n }\n }, [value, path, user, showStatusBar, showTrialPossibleBar])\n\n /**\n * handleChange\n *\n * @param event\n * @param newValue\n */\n const handleChange = (event, newValue) => {\n if (user.getData().mode !== UserTypes.FREE) {\n setValue(newValue)\n\n switch (newValue) {\n case 5:\n handleToMicrositeButton()\n break\n case 4:\n navigate('/statistics')\n break\n case 3:\n navigate('/dossier-management')\n break\n case 2:\n navigate('/custom_sc')\n break\n case 1:\n navigate('/favorites')\n break\n case 0:\n default:\n navigate('/projects')\n break\n }\n } else {\n if (newValue === 0) {\n navigate('/projects-free')\n } else {\n setUpgradeToPremiumOpen(!upgradeToPremiumOpen)\n }\n }\n }\n\n /**\n * handleUpgradeToPremium\n */\n const handleUpgradeToPremium = () => {\n setUpgradeToPremiumOpen(!upgradeToPremiumOpen)\n }\n\n /**\n * handleToMicrositeButton\n */\n const handleToMicrositeButton = () => {\n if (user.getData().company.urlSegment) {\n window.open(\n apiTld + companyDirectoryPath + user.getData().company.urlSegment,\n '_blank'\n )\n } else {\n navigate('/company/info')\n }\n }\n /**\n * return\n */\n return (\n <>\n {showStatusBar && (\n
\n {t('account.label.trial.expires', {\n count: user.getData().company.stripeTrialingDays\n })}{' '}\n \n {t('account.label.renew.now')}\n \n
\n )}\n {showTrialPossibleBar && (\n
\n {t('account.label.trial.possible')}{' '}\n \n {t('account.label.start.trial')}\n \n
\n )}\n \n \n \n \n \n \n \n \n \n \n \n \n \n {user.getData().email === 'dev@haj.tech' ? (\n \n \n \n ) : (\n \n \n {user.getData().mode === UserTypes.FREE && (\n \n \n \n )}\n {user.getData().mode !== UserTypes.FREE && (\n \n )}\n {user.getData().company.hasExternalApply && (\n \n )}\n {user.getData().mode === UserTypes.PRO &&\n !user.getData().dossierTemplates.length && (\n // handle -> handleToMicrositeButton\n \n )}\n {user.hasZipSearchStatistic() && user.hasZipSearchAreas() && user.getData().company.adminUserID === user.getData().id && (\n \n )}\n \n )} \n \n \n \n \n \n \n {user.isSet() &&\n (user.getData().mode === UserTypes.FREE ? (\n \n ) : (\n <>\n \n \n \n ))}\n \n \n \n \n \n \n )\n}\n\nexport default LayoutHeader\n","import React, { useContext } from \"react\";\nimport { makeStyles } from \"@material-ui/core\";\nimport Grid from \"@material-ui/core/Grid\";\nimport Link from \"@material-ui/core/Link\";\nimport Box from \"@material-ui/core/Box\";\nimport { useTranslation } from \"react-i18next\";\nimport { FallBackReferralProgramLink, VERSION, isNotLive } from \"../../config\";\nimport GlobalContext from \"../../lib/GlobalContext\";\nimport { getAbsoluteLink, externalLinkTitles } from \"../../lib/CmsLinkHandler\";\nimport User from \"../../lib/User\";\n\nconst useStyles = makeStyles((theme) => ({\n footer: {\n position: \"relative\",\n width: \"100%\",\n backgroundColor: theme.palette.background.footer,\n zIndex: theme.zIndex.drawer + 1,\n },\n footerContainer: {\n position: \"relative\",\n width: \"100%\",\n maxWidth: 1320,\n margin: \"auto\",\n paddingTop: 20,\n paddingRight: 20,\n paddingBottom: 80,\n paddingLeft: 20,\n },\n\n link: {\n display: \"inline-block\",\n color: theme.palette.text.primary,\n fontSize: 14,\n lineHeight: \"24px\",\n textDecoration: \"none\",\n transition: \"all ease 0.5s\",\n \"&:hover\": {\n color: theme.palette.text.secondary,\n textDecoration: \"none\",\n },\n },\n version: {\n display: \"inline-block\",\n color: \"#525252\",\n fontSize: 12,\n },\n}));\n\n/**\n * LayoutFooter\n *\n * @returns {*}\n * @constructor\n */\nconst LayoutFooter = (props) => {\n const classes = useStyles();\n const { t } = useTranslation();\n const { cmsLinks } = useContext(GlobalContext);\n\n /**\n * getReferralProgramLink\n *\n * @returns {string|string}\n */\n const getReferralProgramLink = () => {\n const link = getAbsoluteLink(\n cmsLinks,\n \"RecommendationProgram\",\n externalLinkTitles.REFERRALPROGRAM\n );\n return link !== \"\" ? link : FallBackReferralProgramLink;\n };\n\n const getVersionPointerStyle = () => {\n return (!User.isMasquerade() && (isNotLive || User.isAppAdmin())) ? { cursor: \"pointer\" } : {};\n };\n\n /**\n * return\n */\n return (\n
\n \n \n \n {t(\"footer.label.faq\")}\n {\" \"}\n |{\" \"}\n \n {t(\"footer.label.referral\")}\n {\" \"}\n |{\" \"}\n \n {t(\"footer.label.conditions\")}\n {\" \"}\n |{\" \"}\n \n {t(\"footer.label.terms.of.use\")}\n {\" \"}\n |{\" \"}\n \n {t(\"footer.label.dataprotection\")}\n {\" \"}\n |{\" \"}\n \n {t(\"footer.label.imprint\")}\n \n \n {t(\"footer.label.brand\")}\n \n \n \n \n (!User.isMasquerade() && (isNotLive || User.isAppAdmin())) && props.setDebugToolsEnabled((prev) => !prev)\n }\n className={classes.version}\n style={getVersionPointerStyle()}\n >\n v{VERSION}\n \n \n \n
\n );\n};\n\nexport default LayoutFooter;\n","import React, { useContext, useEffect } from 'react'\nimport { makeStyles } from '@material-ui/core/styles'\nimport LayoutHeader from './Layout/LayoutHeader'\nimport LayoutFooter from './Layout/LayoutFooter'\nimport GlobalContext from '../lib/GlobalContext'\nimport Message, { MESSAGE_TYPES } from './PopupMessages'\nimport { useQuery } from 'urql'\nimport { navigate } from 'hookrouter'\nimport { useTranslation } from 'react-i18next'\nimport ExternalErrorLogger from '@ennit/react-external-errorlogger'\n\nconst useStyles = makeStyles(theme => ({\n sheet: {\n display: 'flex',\n flexDirection: 'column',\n height: '100vh'\n },\n children: {\n width: '100%',\n maxWidth: 1320,\n margin: '0 auto auto',\n padding: 20\n }\n}))\n\nconst queryCmsLinks = `\n{\n readLinks {\n Title\n Links {\n Title\n AbsoluteLink\n Position\n }\n }\n}`\n\n/**\n * Layout\n *\n * @param props\n * @returns {*}\n * @constructor\n */\nconst Layout = props => {\n const classes = useStyles()\n const { t } = useTranslation()\n const {\n message,\n cmsLinks,\n setCmsLinks,\n setMessage,\n unsetUser,\n unsetToken\n } = useContext(GlobalContext)\n\n const [result, executeCmsLinksQuery] = useQuery({\n query: queryCmsLinks,\n requestPolicy: 'cache-and-network',\n pause: true\n })\n\n /**\n * useEffect\n */\n useEffect(() => {\n // Load CMS-Menu data\n if (cmsLinks === null) {\n executeCmsLinksQuery()\n }\n }, [cmsLinks, executeCmsLinksQuery])\n\n // GraphQL trigger and result handling\n useEffect(() => {\n if (!result.fetching) {\n if (result.error) {\n // Check if the user need to be logged out\n if (result.error.message.indexOf('User forced logout') !== -1) {\n setMessage(MESSAGE_TYPES.ERROR, t('error.user.forced.logout'))\n unsetUser()\n unsetToken()\n navigate('/')\n } else {\n ExternalErrorLogger.log({\n text: 'Error read cms links on Layout',\n data: {\n errorMessage: result.error.message\n }\n })\n }\n } else {\n // Query not fetching right now\n if (\n typeof result.data !== 'undefined' &&\n typeof result.data.readLinks !== 'undefined'\n ) {\n setCmsLinks(result.data.readLinks)\n }\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [result])\n\n /**\n * return\n */\n return (\n
\n \n
\n {message && }\n {props.children}\n
\n \n
\n )\n}\n\nexport default Layout\n","import React, { useContext, useState, useEffect } from 'react'\nimport Grid from '@material-ui/core/Grid'\nimport { makeStyles, TextField, Typography } from '@material-ui/core'\nimport Button from '@material-ui/core/Button'\nimport { useTranslation } from 'react-i18next'\nimport GlobalContext from '../../lib/GlobalContext'\nimport Link from '@material-ui/core/Link'\nimport MenuItem from '@material-ui/core/MenuItem'\nimport Joi from '@hapi/joi'\nimport FormValueErrorsBuilder from '../../lib/FormValueErrorsBuilder'\nimport GetSafe from '../../lib/GetSafe'\nimport { useMutation } from 'urql'\nimport CircularProgress from '@material-ui/core/CircularProgress'\nimport { green } from '@material-ui/core/colors'\nimport InputAdornment from '@material-ui/core/InputAdornment'\nimport IconButton from '@material-ui/core/IconButton'\nimport VisibilityOff from '@material-ui/icons/VisibilityOff'\nimport Visibility from '@material-ui/icons/Visibility'\nimport { MESSAGE_TYPES } from '../PopupMessages'\nimport withAccessControl from '../HOC/AccessControl'\nimport { navigate } from 'hookrouter'\nimport { ACL_COMPONENTS } from '../../config'\nimport ExternalErrorLogger from '@ennit/react-external-errorlogger'\n\nconst useStyles = makeStyles(theme => ({\n gridContainer: {\n width: '100%',\n maxWidth: 1280,\n margin: 0,\n padding: '16px 24px'\n },\n gridItem: {\n width: '50%',\n padding: '8px 0',\n [theme.breakpoints.down('sm')]: {\n width: '100%'\n }\n },\n button: {\n color: '#ffffff',\n width: '100%',\n marginBottom: '40px'\n },\n updatePasswordLink: {\n fontWeight: 'bold',\n fontSize: '14px',\n color: theme.palette.primary.main,\n paddingLeft: '10px',\n cursor: 'pointer'\n },\n buttonProgress: {\n color: green[500],\n position: 'absolute',\n top: '50%',\n left: '50%',\n marginTop: -12,\n marginLeft: -12\n },\n textField: {\n width: '100%'\n },\n languageToggle: {\n display: 'flex',\n justifyContent: 'flex-end',\n alignItems: 'center',\n paddingTop: 10,\n paddingBottom: 24\n },\n languageToggleBox: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n color: '#fff'\n },\n languageToggleBoxItem: {\n paddingLeft: 6\n },\n languageStatus: {\n display: 'none',\n appearance: 'none'\n }\n}))\n\nconst initialFormValueErrorsState = {\n firstName: { hasError: false, message: '' },\n lastName: { hasError: false, message: '' },\n email: { hasError: false, message: '' },\n currentPassword: { hasError: false, message: '' },\n password: { hasError: false, message: '' },\n passwordRepeat: { hasError: false, message: '' }\n}\n\nconst updateMyselfMutation = `\n mutation UpdateMyself(\n $locale: String,\n $salutation: String, \n $firstName: String, \n $lastName: String, \n $email: String!\n ) {\n updateMyself(\n Locale: $locale,\n Salutation: $salutation,\n Firstname: $firstName,\n Surname: $lastName \n Email: $email\n ) {\n HashID\n Locale\n Salutation\n Firstname\n Surname\n Email\n }\n }\n`\n\nconst updateMyselfWithPasswordMutation = `\n mutation UpdateMyself(\n $locale: String,\n $salutation: String, \n $firstName: String, \n $lastName: String, \n $email: String!,\n $password: String!\n $currentPassword: String!\n ) {\n updateMyself(\n Locale: $locale,\n Salutation: $salutation,\n Firstname: $firstName,\n Surname: $lastName ,\n Email: $email,\n Password: $password\n CurrentPassword: $currentPassword\n ) {\n HashID\n Locale\n Salutation\n Firstname\n Surname\n Email\n }\n }\n`\n\n/**\n * AccountProfile\n *\n * @returns {*}\n * @constructor\n */\nconst AccountProfile = () => {\n const classes = useStyles()\n const { t /* , i18n */ } = useTranslation()\n const {\n user,\n setUser,\n token,\n setMessage,\n unsetUser,\n unsetToken\n } = useContext(GlobalContext)\n const [formValues, setFormValues] = useState({\n salutation: 0,\n firstName: '',\n lastName: '',\n email: '',\n locale: 'de',\n currentPassword: '',\n password: '',\n passwordRepeat: '',\n showCurrentPassword: false,\n showPassword: false,\n showPasswordRepeat: false\n })\n const [formValueErrors, setFormValueErrors] = useState(\n initialFormValueErrorsState\n )\n const [showPasswordField, setShowPasswordField] = useState(false)\n const [{ fetching }, executeMutation] = useMutation(updateMyselfMutation)\n const [\n { fetching: fetchingWithPassword },\n executeWithPasswordMutation\n ] = useMutation(updateMyselfWithPasswordMutation)\n\n /**\n * Joi validation schema\n */\n const schema = Joi.object({\n currentPassword: Joi.string().allow(''),\n password: Joi.string().allow(''),\n passwordRepeat: Joi.string().allow(''),\n salutation: Joi.number(),\n locale: Joi.string(),\n firstName: Joi.string().required(),\n lastName: Joi.string().required(),\n email: Joi.string()\n .email({ tlds: false })\n .required(),\n showCurrentPassword: Joi.boolean().allow(''),\n showPassword: Joi.boolean().allow(''),\n showPasswordRepeat: Joi.boolean().allow('')\n })\n\n /**\n * Joi password validation schema\n */\n const passwordValidationSchema = Joi.object({\n currentPassword: Joi.string().required(),\n password: Joi.string().required(),\n passwordRepeat: Joi.string()\n .valid(Joi.ref('password'))\n .required()\n })\n\n /**\n * useEffect\n */\n useEffect(() => {\n const userData = user.getData()\n setFormValues({\n salutation: userData.salutation || 0,\n firstName: userData.firstName,\n lastName: userData.lastName,\n email: userData.email,\n locale: userData.locale || 'de'\n })\n }, [user])\n\n /**\n * handleSalutationChange\n *\n * @param event\n */\n const handleSalutationChange = event => {\n setFormValues({ ...formValues, salutation: event.target.value })\n }\n\n /**\n * handleFirstNameChange\n *\n * @param event\n */\n const handleFirstNameChange = event => {\n setFormValues({ ...formValues, firstName: event.target.value })\n }\n\n /**\n * handleLastNameChange\n *\n * @param event\n */\n const handleLastNameChange = event => {\n setFormValues({ ...formValues, lastName: event.target.value })\n }\n\n /**\n * handleEmailChange\n *\n * @param event\n */\n const handleEmailChange = event => {\n setFormValues({ ...formValues, email: event.target.value })\n }\n\n /**\n * handleCurrentPasswordChange\n *\n * @param event\n */\n const handleCurrentPasswordChange = event => {\n setFormValues({ ...formValues, currentPassword: event.target.value })\n }\n\n /**\n * handlePasswordChange\n *\n * @param event\n */\n const handlePasswordChange = event => {\n setFormValues({ ...formValues, password: event.target.value })\n }\n\n /**\n * handlePasswordRepeatChange\n *\n * @param event\n */\n const handlePasswordRepeatChange = event => {\n setFormValues({ ...formValues, passwordRepeat: event.target.value })\n }\n\n /**\n * handleClickShowCurrentPassword\n */\n const handleClickShowCurrentPassword = () => {\n setFormValues({\n ...formValues,\n showCurrentPassword: !formValues.showCurrentPassword\n })\n }\n\n /**\n * handleClickShowPassword\n */\n const handleClickShowPassword = () => {\n setFormValues({ ...formValues, showPassword: !formValues.showPassword })\n }\n\n /**\n * handleClickShowPasswordRepeat\n */\n const handleClickShowPasswordRepeat = () => {\n setFormValues({\n ...formValues,\n showPasswordRepeat: !formValues.showPasswordRepeat\n })\n }\n\n /**\n * handleShowPasswordField\n */\n const handleShowPasswordField = () => {\n setShowPasswordField(true)\n }\n\n /**\n * handleHidePasswordField\n */\n const handleHidePasswordField = () => {\n setFormValues({ ...formValues, password: '' })\n setShowPasswordField(false)\n }\n\n /**\n * handleMutationResult\n *\n * @param result\n */\n const handleMutationResult = result => {\n if (result.error) {\n // Check if the user need to be logged out\n if (result.error.message.indexOf('User forced logout') !== -1) {\n setMessage(MESSAGE_TYPES.ERROR, t('error.user.forced.logout'))\n unsetUser()\n unsetToken()\n navigate('/')\n } else {\n setMessage(MESSAGE_TYPES.ERROR, t('error.save'))\n ExternalErrorLogger.log({\n text: 'Error saving changes on AccountProfile',\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n errorMessage: result.error.message\n }\n })\n }\n } else {\n setMessage(MESSAGE_TYPES.SUCCESS, t('general.label.save.success'))\n const modifiedUserData = {\n salutation: formValues.salutation,\n firstName: formValues.firstName,\n lastName: formValues.lastName,\n email: formValues.email\n }\n user.setData(modifiedUserData)\n setUser(user)\n }\n }\n\n /**\n * handleFormSubmit\n */\n const handleFormSubmit = () => {\n const { error } = schema.validate(formValues, { abortEarly: false })\n if (error) {\n const formErrors = FormValueErrorsBuilder(error, t)\n setFormValueErrors({ ...formErrors })\n } else {\n if (GetSafe(() => formValues.password, false)) {\n const { error } = passwordValidationSchema.validate(\n {\n currentPassword: formValues.currentPassword,\n password: formValues.password,\n passwordRepeat: formValues.passwordRepeat\n },\n { abortEarly: false }\n )\n\n if (error) {\n const formErrors = FormValueErrorsBuilder(error, t)\n setFormValueErrors({ ...formErrors })\n } else {\n executeWithPasswordMutation({\n locale: formValues.locale,\n email: formValues.email,\n firstName: formValues.firstName,\n lastName: formValues.lastName,\n salutation: formValues.salutation,\n password: formValues.password,\n currentPassword: formValues.currentPassword\n }).then(result => {\n if (result.error) {\n if (\n result.error.message.indexOf('Password change denied') !==\n -1\n ) {\n // Set custom error\n const myCustomError = {\n details: [\n {\n type: 'any.notConfirmed',\n path: ['currentPassword']\n }\n ]\n }\n const formErrors = FormValueErrorsBuilder(myCustomError, t)\n setFormValueErrors({ ...formErrors })\n } else {\n // Something went very wrong\n ExternalErrorLogger.log({\n text: 'Error submitting changes on AccountProfile',\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n errorMessage: result.error.message\n }\n })\n return
{t('error.general')}
\n }\n } else {\n handleMutationResult(result)\n }\n })\n }\n } else {\n executeMutation({\n locale: formValues.locale,\n email: formValues.email,\n firstName: formValues.firstName,\n lastName: formValues.lastName,\n salutation: formValues.salutation\n }).then(result => {\n handleMutationResult(result)\n })\n }\n }\n }\n\n /**\n * changeLocale\n *\n * @param event\n */\n // const changeLocale = event => {\n // const userData = user.getData()\n // userData.locale = event.target.value\n // user.setData(userData)\n // i18n.changeLanguage(event.target.value)\n // }\n\n /**\n * return\n */\n return (\n \n {/* */}\n {/* */}\n {/* {t('general.label.german')} */}\n {/* {t('general.label.english')} */}\n {/* */}\n {/* */}\n \n \n \n {t('general.label.mr')}\n {t('general.label.mrs')}\n \n \n \n formValueErrors.firstName.hasError, false)}\n label={t('form.label.firstName')}\n value={formValues.firstName}\n helperText={GetSafe(() => formValueErrors.firstName.message, '')}\n onChange={handleFirstNameChange}\n margin='normal'\n fullWidth\n />\n \n \n formValueErrors.lastName.hasError, false)}\n label={t('form.label.lastName')}\n value={formValues.lastName}\n helperText={GetSafe(() => formValueErrors.lastName.message, '')}\n onChange={handleLastNameChange}\n margin='normal'\n fullWidth\n />\n \n \n formValueErrors.email.hasError, false)}\n label={t('form.label.email')}\n value={formValues.email}\n helperText={GetSafe(() => formValueErrors.email.message, '')}\n onChange={handleEmailChange}\n margin='normal'\n fullWidth\n />\n \n \n {!showPasswordField && (\n \n \n {t('account.profile.update.password')}\n \n \n )}\n {showPasswordField && (\n <>\n \n \n {t('account.profile.update.password.hide')}\n \n \n formValueErrors.currentPassword.hasError,\n false\n )}\n type={formValues.showCurrentPassword ? 'text' : 'password'}\n label={t('form.label.password.current')}\n helperText={GetSafe(\n () => formValueErrors.currentPassword.message,\n ''\n )}\n onChange={handleCurrentPasswordChange}\n InputProps={{\n endAdornment: (\n \n \n {formValues.showCurrentPassword ? (\n \n ) : (\n \n )}\n \n \n )\n }}\n />\n formValueErrors.password.hasError, false)}\n type={formValues.showPassword ? 'text' : 'password'}\n label={t('form.label.password')}\n helperText={GetSafe(() => formValueErrors.password.message, '')}\n onChange={handlePasswordChange}\n InputProps={{\n endAdornment: (\n \n \n {formValues.showPassword ? (\n \n ) : (\n \n )}\n \n \n )\n }}\n />\n formValueErrors.passwordRepeat.hasError,\n false\n )}\n type={formValues.showPasswordRepeat ? 'text' : 'password'}\n label={t('form.label.password.repeat')}\n helperText={GetSafe(\n () => formValueErrors.passwordRepeat.message,\n ''\n )}\n onChange={handlePasswordRepeatChange}\n InputProps={{\n endAdornment: (\n \n \n {formValues.showPasswordRepeat ? (\n \n ) : (\n \n )}\n \n \n )\n }}\n />\n \n )}\n \n \n \n {t('account.profile.save.changes')}\n {(fetching || fetchingWithPassword) && (\n \n )}\n \n \n \n )\n}\n\nexport default withAccessControl(AccountProfile, ACL_COMPONENTS.ACCOUNT_PROFILE)\n","import { STRIPE_PLAN_IDS } from '../config'\n\n/**\n * StripePlanIdToNameConverter\n *\n * @param stripePlanId\n * @returns {string}\n * @constructor\n */\nconst StripePlanIdToNameConverter = stripePlanId => {\n if (stripePlanId.includes('gratis')) {\n return 'free'\n } else if (\n stripePlanId.includes('smart') ||\n stripePlanId.includes(STRIPE_PLAN_IDS.SMART.YEARLY)\n ) {\n return 'smart'\n } else if (\n stripePlanId.includes('pro') ||\n stripePlanId.includes(STRIPE_PLAN_IDS.PRO.YEARLY)\n ) {\n return 'pro'\n }\n}\n\nexport default StripePlanIdToNameConverter\n","import React, { useContext, useEffect, useState } from 'react'\nimport Grid from '@material-ui/core/Grid'\nimport {\n CircularProgress,\n makeStyles,\n Typography,\n DialogTitle\n} from '@material-ui/core'\nimport Button from '@material-ui/core/Button'\nimport { useTranslation } from 'react-i18next'\nimport GlobalContext from '../../lib/GlobalContext'\nimport withAccessControl from '../HOC/AccessControl'\nimport StripePlanIdToNameConverter from '../../lib/StripePlanIdToNameConverter'\nimport Link from '@material-ui/core/Link'\nimport FormatHelper from '../../lib/FormatHelper'\nimport { useMutation, useQuery } from 'urql'\nimport { MESSAGE_TYPES } from '../PopupMessages'\nimport { navigate } from 'hookrouter'\nimport { ACL_COMPONENTS } from '../../config'\nimport Dialog from '@material-ui/core/Dialog'\nimport DialogContent from '@material-ui/core/DialogContent'\nimport IconButton from '@material-ui/core/IconButton'\nimport CloseIcon from '@material-ui/icons/Close'\nimport { green } from '@material-ui/core/colors'\nimport UserTypes from '../Onboarding/UserTypes'\nimport ExternalErrorLogger from '@ennit/react-external-errorlogger'\n\nconst useStyles = makeStyles(theme => ({\n gridContainer: {\n paddingTop: '61px',\n paddingBottom: '300px'\n },\n gridItem: {\n width: '50%'\n },\n button: {\n color: '#ffffff',\n marginTop: '10px',\n marginBottom: '10px',\n width: '216px',\n fontWeight: 'bold'\n },\n buttonProgress: {\n color: green[500],\n position: 'absolute',\n top: '50%',\n left: '50%',\n marginTop: -12,\n marginLeft: -12\n },\n h5: {\n fontWeight: 'bold'\n },\n deleteAccountLink: {\n fontWeight: 'bold',\n fontSize: '14px',\n color: theme.palette.primary.main,\n cursor: 'pointer',\n textTransform: 'uppercase'\n },\n bold: {\n fontWeight: 'bold'\n },\n dialogContent: {\n minWidth: '100%',\n padding: '0 20px',\n [theme.breakpoints.up('sm')]: {\n paddingTop: 0,\n paddingRight: 32,\n paddingBottom: 24,\n paddingLeft: 32\n }\n },\n dialogActions: {\n justifyContent: 'flex-start',\n padding: '0 20px',\n [theme.breakpoints.up('sm')]: {\n paddingTop: 0,\n paddingRight: 32,\n paddingBottom: 24,\n paddingLeft: 32\n }\n },\n dialogTitleCloseIcon: {\n marginLeft: 'auto',\n padding: 0,\n paddingRight: 23,\n paddingTop: 10\n },\n rootNotice: {\n position: 'relative',\n marginTop: 20,\n marginBottom: 20,\n padding: '35px 25px',\n background: theme.palette.info.main,\n color: theme.palette.text.primary,\n '&::before': {\n position: 'absolute',\n top: '-7px',\n left: '50%',\n width: 14,\n height: 14,\n background: theme.palette.info.main,\n transform: 'translate(-50%, 0) rotate(45deg)',\n content: '\"\"'\n },\n [theme.breakpoints.down('sm')]: {\n padding: 20\n }\n },\n strikePrice: {\n textDecoration: 'line-through'\n }\n}))\n\nconst stripeProductsQuery = `\n {\n readProduct {\n id\n description\n metadata {\n FeatureSet\n }\n name\n plans {\n id\n nickname\n amount\n currency\n interval\n interval_count\n active\n trial_period_days\n trial_possible\n }\n },\n readMyselfUpcomingInvoice {\n amount_due\n next_payment_attempt\n }\n readMyself {\n StripePublicKey\n CreditCard {\n id\n name\n last4\n expired\n }\n Company {\n StripeIsTrialing\n StripeTrialingDays\n StripePlanID\n StripeValidThrough\n StripeProductID\n StripeCancelAt\n StripeFuturePlans {\n id\n active\n aggregate_usage\n amount\n amount_decimal\n billing_scheme\n currency\n interval\n interval_count\n nickname\n trial_period_days\n trial_possible\n }\n }\n DossierTemplates {\n edges {\n node {\n HashID\n TemplateName\n }\n }\n }\n FulltextSearchRequests {\n ID\n Title\n }\n }\n }\n`\n\nconst updateMyselfMutation = `\n mutation UpdateMyself(\n $email: String!\n $removed: Boolean\n ) {\n updateMyself(\n Email: $email\n Removed: $removed\n ) {\n HashID\n Email\n Removed\n }\n }\n`\n\nconst readStripeCustomerPortalLink = `\n {\n readStripeCustomerPortalLink {\n SessionUrl\n }\n }\n`\n\n/**\n * AccountSubscriptions\n *\n * @returns {*}\n * @constructor\n */\nconst AccountSubscriptions = () => {\n const classes = useStyles()\n const { t } = useTranslation()\n const {\n upgradeToPremiumOpen,\n setUpgradeToPremiumOpen,\n user,\n setMessage,\n unsetUser,\n token,\n setToken,\n unsetToken\n } = useContext(GlobalContext)\n const [planData, setPlanData] = useState(null)\n const stripePlanName = StripePlanIdToNameConverter(\n user.getData().company.stripePlanId\n )\n const [openDeleteAccountDialog, setOpenDeleteAccountDialog] = useState(false)\n const [nextPaymentAttempt, setNextPaymentAttempt] = useState(null)\n const [amountDue, setAmountDue] = useState(null)\n const [futurePlans, setFuturePlans] = useState(null)\n const [actualUserData, setActualUserData] = useState(null)\n\n const [resultStripeProducts, executeStripeProductsQuery] = useQuery({\n query: stripeProductsQuery,\n requestPolicy: 'network-only',\n pause: true\n })\n\n const [\n { fetching: fetchingUpdateMyself },\n executeUpdateMyselfMutation\n ] = useMutation(updateMyselfMutation)\n\n const [\n resultStripeCustomerPortalLink,\n executeStripeCustomerPortalLinkQuery\n ] = useQuery({\n query: readStripeCustomerPortalLink,\n requestPolicy: 'network-only',\n pause: true\n })\n\n /**\n * useEffect\n */\n useEffect(() => {\n if (planData === null) {\n executeStripeProductsQuery()\n }\n }, [planData, executeStripeProductsQuery, token, setToken])\n\n // StripeProducts GraphQL trigger and result handling\n useEffect(() => {\n if (!resultStripeProducts.fetching) {\n if (resultStripeProducts.error) {\n // Check if the user need to be logged out\n if (\n resultStripeProducts.error.message.indexOf('User forced logout') !== -1\n ) {\n setMessage(MESSAGE_TYPES.ERROR, t('error.user.forced.logout'))\n unsetUser()\n unsetToken()\n navigate('/')\n } else {\n // The query did not return any results!\n ExternalErrorLogger.log({\n text: 'Error fetching stripe product data on AccountSubscriptions',\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n errorMessage: resultStripeProducts.error.message\n }\n })\n }\n } else {\n // Query not fetching right now\n if (\n typeof resultStripeProducts.data !== 'undefined' &&\n typeof resultStripeProducts.data.readProduct !== 'undefined' &&\n planData === null\n ) {\n const stripeProduct = resultStripeProducts.data.readProduct.find(\n item => {\n return item.id === user.getData().company.stripeProductId\n }\n )\n\n const plan = stripeProduct.plans.find(item => {\n return item.id.includes(user.getData().company.stripePlanId)\n })\n\n setPlanData(plan)\n }\n\n // upcoming invoice data\n if (\n typeof resultStripeProducts.data !== 'undefined' &&\n typeof resultStripeProducts.data.readMyselfUpcomingInvoice !==\n 'undefined' &&\n nextPaymentAttempt === null &&\n amountDue === null\n ) {\n setNextPaymentAttempt(\n resultStripeProducts.data.readMyselfUpcomingInvoice\n .next_payment_attempt * 1000\n )\n setAmountDue(\n resultStripeProducts.data.readMyselfUpcomingInvoice.amount_due\n )\n }\n\n // future plans\n if (\n typeof resultStripeProducts.data !== 'undefined' &&\n typeof resultStripeProducts.data.readMyself !== 'undefined' &&\n futurePlans === null\n ) {\n setFuturePlans(\n resultStripeProducts.data.readMyself[0].Company.StripeFuturePlans\n )\n user.setData({\n company: {\n stripeFuturePlans:\n resultStripeProducts.data.readMyself[0].Company.StripeFuturePlans\n }\n })\n }\n\n if (\n typeof resultStripeProducts.data !== 'undefined' &&\n typeof resultStripeProducts.data.readMyself !== 'undefined' &&\n actualUserData === null\n ) {\n // Map the user-data\n user.setData({\n stripePublicKey:\n resultStripeProducts.data.readMyself[0].StripePublicKey || '',\n creditCard: resultStripeProducts.data.readMyself[0].CreditCard,\n company: {\n stripeIsTrialing:\n resultStripeProducts.data.readMyself[0].Company.StripeIsTrialing,\n stripeTrialingDays:\n resultStripeProducts.data.readMyself[0].Company\n .StripeTrialingDays,\n stripePlanId:\n resultStripeProducts.data.readMyself[0].Company.StripePlanID,\n stripeValidThrough:\n resultStripeProducts.data.readMyself[0].Company\n .StripeValidThrough,\n stripeProductId:\n resultStripeProducts.data.readMyself[0].Company.StripeProductID,\n stripeCancelAt:\n resultStripeProducts.data.readMyself[0].Company.StripeCancelAt\n }\n })\n\n setActualUserData(user)\n }\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [resultStripeProducts])\n\n /**\n * resultStripeCustomerPortalLink handling\n */\n useEffect(() => {\n if (!resultStripeCustomerPortalLink.fetching) {\n if (resultStripeCustomerPortalLink.error) {\n // Check if the user need to be logged out\n if (\n resultStripeCustomerPortalLink.error.message.indexOf(\n 'User forced logout'\n ) !== -1\n ) {\n setMessage(MESSAGE_TYPES.ERROR, t('error.user.forced.logout'))\n unsetUser()\n unsetToken()\n navigate('/')\n } else {\n // The query did not return any results!\n ExternalErrorLogger.log({\n text:\n 'Error fetching stripe customer portal link on AccountSubscriptions',\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n errorMessage: resultStripeCustomerPortalLink.error.message\n }\n })\n }\n } else {\n // Query not fetching right now\n if (\n typeof resultStripeCustomerPortalLink.data !== 'undefined' &&\n typeof resultStripeCustomerPortalLink.data\n .readStripeCustomerPortalLink !== 'undefined'\n ) {\n window.location.replace(\n resultStripeCustomerPortalLink.data.readStripeCustomerPortalLink\n .SessionUrl\n )\n }\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [resultStripeCustomerPortalLink])\n\n /**\n * handleClickManageLocations\n */\n const handleClickDeleteAccount = () => {\n setOpenDeleteAccountDialog(true)\n }\n\n /**\n * handleCloseManageLocations\n */\n const handleCloseDeleteAccount = () => {\n if (!fetchingUpdateMyself) {\n setOpenDeleteAccountDialog(false)\n }\n }\n\n /**\n * handleUpgradeToPremium\n */\n const handleUpgradeToPremium = () => {\n setUpgradeToPremiumOpen(!upgradeToPremiumOpen)\n }\n\n /**\n * handleChangePayment\n */\n const handleChangePayment = () => {\n executeStripeCustomerPortalLinkQuery()\n }\n\n /**\n * handleAccountDeleteConfirm\n */\n const handleAccountDeleteConfirm = () => {\n if (!fetchingUpdateMyself) {\n // Delete the user (set removed flag)\n executeUpdateMyselfMutation({\n email: user.getData().email,\n removed: true\n }).then(result => {\n if (result.error) {\n // Check if the user need to be logged out\n if (result.error.message.indexOf('User forced logout') !== -1) {\n setMessage(\n MESSAGE_TYPES.ERROR,\n t('general.label.account.deleted')\n )\n unsetUser()\n unsetToken()\n navigate('/')\n }\n }\n })\n }\n }\n\n /**\n * buildDateString\n *\n * @returns {string}\n */\n const buildDateString = () => {\n return (\n \n {FormatHelper.formatDate(new Date(nextPaymentAttempt))}\n \n )\n }\n\n /**\n * buildDateText\n *\n * @returns {string}\n */\n const buildDateText = () => {\n if (FormatHelper.isValidDate(new Date(nextPaymentAttempt))) {\n return t('account.subscriptions.label.next.invoice') + ' '\n } else {\n return t('account.subscriptions.label.next.invoice.not.determined')\n }\n }\n\n /**\n * showTrialNotice\n *\n * @returns {boolean}\n */\n const showTrialNotice = () => {\n return !!(\n user.getData().company.stripeIsTrialing &&\n user.getData().mode === UserTypes.SMART\n )\n }\n\n /**\n * isSubscriptionCanceled\n *\n * @returns {boolean|boolean}\n */\n const isSubscriptionCanceled = () => {\n return user.getData().mode !== UserTypes.FREE && amountDue === 0\n }\n\n /**\n * determineRemainingDays\n *\n * @returns {number|*}\n */\n const determineRemainingDays = () => {\n if (\n user.getData().company.stripeIsTrialing &&\n user.getData().mode === UserTypes.SMART\n ) {\n return user.getData().company.stripeTrialingDays\n }\n\n const nowTimestamp = FormatHelper.getTimestampFromDate(new Date())\n const oneDay = 1000 * 60 * 60 * 24\n const difference = nextPaymentAttempt - nowTimestamp\n\n return Math.round(difference / oneDay)\n }\n\n /**\n * showRemainingDays\n *\n * @returns {string}\n */\n const showRemainingDays = () => {\n if (showTrialNotice() || isSubscriptionCanceled()) {\n return t('account.subscriptions.label.remaining.term', {\n count: determineRemainingDays()\n })\n } else {\n return ''\n }\n }\n\n /**\n * showAutomaticRenewal\n *\n * @returns {boolean}\n */\n const showAutomaticRenewal = () => {\n console.log('MOEP', futurePlans)\n if (futurePlans !== null) {\n return !!(\n user.getData().company.stripeFuturePlans.length &&\n user.getData().company.stripeFuturePlans[0].id ===\n user.getData().company.stripePlanId\n )\n }\n }\n\n /**\n * showNextPaymentAttempt\n *\n * @returns {boolean}\n */\n const showNextPaymentAttempt = () => {\n if (futurePlans !== null) {\n return !!(\n user.getData().company.stripeFuturePlans.length &&\n !user.getData().company.stripeFuturePlans[0].id.includes('gratis')\n )\n }\n }\n\n /**\n * deleteDialog\n */\n const deleteDialog = () => (\n <>\n \n \n \n \n \n \n \n {t('account.subscriptions.delete.account.confirm')}\n \n \n {t('general.confirm')}\n {fetchingUpdateMyself && (\n \n )}\n \n \n {t('general.label.abort')}\n \n \n \n )\n\n /**\n * return\n */\n return (\n <>\n \n \n \n {t('account.label.your.membership')}\n \n \n \n \n {t('general.label.smartconext')}{' '}\n {t(`general.label.${stripePlanName}`)}\n \n {showTrialNotice() && t('general.label.test.period')}\n
\n {showRemainingDays()}\n
\n {stripePlanName !== 'free' && (\n <>\n \n {resultStripeProducts.fetching && }\n {typeof planData !== 'undefined' && planData !== null && (\n \n {planData.currency.toUpperCase()}{' '}\n {parseInt(planData.amount).toFixed(2) / 100} /{' '}\n {planData.interval === 'month'\n ? t('general.label.month')\n : t('general.label.year')}\n \n )}\n \n \n {!showTrialNotice() && (\n <>\n {showAutomaticRenewal() && (\n \n {t('account.subscriptions.label.automatic.renewal')}\n \n )}\n {showNextPaymentAttempt() && nextPaymentAttempt !== null && (\n \n {buildDateText()}\n {buildDateString()}\n \n )}\n \n )}\n \n \n )}\n \n \n {stripePlanName === 'free'\n ? t('account.label.upgrade')\n : t('account.label.change.subscription')}\n \n \n \n \n {t('account.label.change.payment')}\n \n \n {stripePlanName === 'free' && (\n \n \n \n {t('account.subscriptions.delete.account')}\n \n \n \n )}\n \n \n {deleteDialog()}\n \n \n )\n}\n\nexport default withAccessControl(\n AccountSubscriptions,\n ACL_COMPONENTS.ACCOUNT_SUBSCRIPTIONS\n)\n","import React, { useContext, useEffect, useState } from 'react'\nimport clsx from 'clsx'\nimport withAccessControl from '../HOC/AccessControl'\nimport { ACL_COMPONENTS } from '../../config'\nimport { useQuery } from 'urql'\nimport { useTranslation } from 'react-i18next'\nimport GlobalContext from '../../lib/GlobalContext'\nimport { makeStyles } from '@material-ui/core'\nimport { MESSAGE_TYPES } from '../PopupMessages'\nimport { navigate } from 'hookrouter'\nimport Grid from '@material-ui/core/Grid'\nimport DescriptionOutlinedIcon from '@material-ui/icons/DescriptionOutlined'\nimport ListItem from '@material-ui/core/ListItem'\nimport ListItemIcon from '@material-ui/core/ListItemIcon'\nimport ListItemText from '@material-ui/core/ListItemText'\nimport List from '@material-ui/core/List'\nimport Typography from '@material-ui/core/Typography'\nimport moment from 'moment'\nimport CircularProgress from '@material-ui/core/CircularProgress'\nimport ExternalErrorLogger from '@ennit/react-external-errorlogger'\n\nconst useStyles = makeStyles(theme => ({\n gridContainer: {\n paddingTop: 20\n },\n gridItem: {\n width: '50%',\n [theme.breakpoints.down('sm')]: {\n width: '75%',\n padding: '0 20px'\n },\n '@media (max-width:768px)': {\n width: '100%',\n padding: '0 20px'\n }\n },\n gridItemHeader: {\n display: 'block',\n paddingTop: 60,\n paddingBottom: 25\n },\n icon: {\n fontSize: 24,\n color: '#999'\n },\n listItem: {\n position: 'relative',\n paddingTop: 20,\n paddingBottom: 20,\n '&::before': {\n position: 'absolute',\n top: 0,\n right: 16,\n left: 72,\n height: 1,\n background: '#d3d3d3',\n content: '\" \"'\n },\n '&:first-of-type': {\n '&::before': {\n display: 'none'\n }\n }\n },\n listItemText: {\n display: 'inline-block'\n },\n listItemLink: {\n color: theme.palette.primary.main\n },\n listItemDate: {\n display: 'block',\n color: theme.palette.text.primary,\n fontSize: 14\n },\n loadingProgress: {\n position: 'absolute',\n top: '50%',\n left: '50%',\n marginTop: -12,\n marginLeft: -12\n }\n}))\n\nconst queryInvoices = `\n {\n readMyselfInvoices {\n id\n created\n invoice_pdf\n hosted_invoice_url\n period_end\n period_start\n }\n }\n`\n\nconst AccountInvoices = () => {\n const classes = useStyles()\n const { t } = useTranslation()\n const {\n setMessage,\n unsetUser,\n unsetToken,\n user\n } = useContext(GlobalContext)\n const [invoices, setInvoices] = useState(false)\n\n // GraphQL query for branches, gets triggered by calling \"executeInvoicesQuery()\"\n const [result, executeInvoicesQuery] = useQuery({\n query: queryInvoices,\n variables: {},\n requestPolicy: 'network-only',\n pause: true\n })\n\n /**\n * useEffect\n */\n useEffect(() => {\n executeInvoicesQuery()\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n // GraphQL trigger and result handling\n useEffect(() => {\n if (!result.fetching) {\n if (result.error) {\n if (result.error.message.indexOf('User forced logout') !== -1) {\n setMessage(MESSAGE_TYPES.ERROR, t('error.user.forced.logout'))\n unsetUser()\n unsetToken()\n navigate('/')\n } else if (result.error.message.includes('No upcoming')) {\n if (!invoices) {\n setInvoices([])\n }\n } else {\n // Something went very wrong\n ExternalErrorLogger.log({\n text: 'Error fetching invoices on AccountInvoices',\n data: {\n user: JSON.stringify(user.getData()),\n errorMessage: result.error.message\n }\n })\n return {t('error.general')}\n }\n } else {\n // Query not fetching right now\n if (\n typeof result.data !== 'undefined' &&\n typeof result.data.readMyselfInvoices !== 'undefined' &&\n !invoices\n ) {\n setInvoices(result.data.readMyselfInvoices)\n }\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [result])\n\n /**\n * getInvoiceList\n *\n * @returns {[]|*}\n */\n const getInvoiceList = () => {\n const invoiceList = []\n\n if (invoices.length > 0) {\n for (let i = 0; i < invoices.length; i++) {\n invoiceList.push(\n \n \n \n \n \n \n {t('account.label.invoice')}{' '}\n {moment.unix(invoices[i].period_start).format('MM/YYYY')}\n \n \n {moment.unix(invoices[i].created).format('DD.MM.YYYY')}\n \n \n \n )\n }\n } else {\n return (\n \n \n {invoices && !result.fetching && t('account.label.noinvoice')}\n {(!invoices || result.fetching) && (\n \n )}\n \n \n )\n }\n return invoiceList\n }\n\n /**\n * return\n */\n return (\n \n {invoices.length !== 0 && (\n \n \n {t('account.label.invoices.description')}\n \n \n )}\n \n {getInvoiceList()}\n \n \n )\n}\n\nexport default withAccessControl(\n AccountInvoices,\n ACL_COMPONENTS.ACCOUNT_INVOICES\n)\n","import React, { useContext, useState, useEffect } from \"react\";\nimport clsx from \"clsx\";\nimport Grid from \"@material-ui/core/Grid\";\nimport { LinearProgress, makeStyles, Typography } from \"@material-ui/core\";\nimport Button from \"@material-ui/core/Button\";\nimport { useTranslation } from \"react-i18next\";\nimport AddIcon from \"@material-ui/icons/Add\";\nimport { useMutation, useQuery } from \"urql\";\nimport GlobalContext from \"../../lib/GlobalContext\";\nimport Avatar from \"@material-ui/core/Avatar\";\nimport Divider from \"@material-ui/core/Divider\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport EditIcon from \"@material-ui/icons/Edit\";\nimport DeleteIcon from \"@material-ui/icons/Delete\";\nimport Dialog from \"@material-ui/core/Dialog\";\nimport DialogContent from \"@material-ui/core/DialogContent\";\nimport DialogActions from \"@material-ui/core/DialogActions\";\nimport TextField from \"@material-ui/core/TextField\";\nimport GetSafe from \"../../lib/GetSafe\";\nimport Joi from \"@hapi/joi\";\nimport FormValueErrorsBuilder from \"../../lib/FormValueErrorsBuilder\";\nimport { MESSAGE_TYPES } from \"../PopupMessages\";\nimport CircularProgress from \"@material-ui/core/CircularProgress\";\nimport { green } from \"@material-ui/core/colors\";\nimport withAccessControl from \"../HOC/AccessControl\";\nimport { navigate } from \"hookrouter\";\nimport {\n ACL_COMPONENTS,\n DEFAULT_LANGUAGE,\n DOSSIER_AVAILABLE_LOCALES,\n} from \"../../config\";\nimport ExternalErrorLogger from \"@ennit/react-external-errorlogger\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\n\n/**\n * useStyles\n */\nconst useStyles = makeStyles((theme) => ({\n gridContainerWrapper: {\n width: \"100%\",\n maxWidth: 1280,\n margin: 0,\n padding: \"60px 24px\",\n },\n gridContainer: {\n width: \"100%\",\n },\n gridItem: {\n width: \"50%\",\n padding: \"8px 0\",\n \"@media (max-width:768px)\": {\n width: \"100%\",\n },\n },\n gridInnerContainer: {\n display: \"flex\",\n },\n item: {\n display: \"block\",\n \"@media (max-width:600px)\": {\n // order: 2,\n width: \"100%\",\n },\n },\n itemAvatar: {\n width: 42,\n paddingTop: 12,\n paddingBottom: 12,\n \"@media (max-width:600px)\": {\n display: \"none\",\n },\n },\n itemName: {\n paddingTop: 12,\n paddingBottom: 12,\n paddingLeft: 12,\n },\n itemButtons: {\n display: \"flex\",\n justifyContent: \"flex-end\",\n \"@media (max-width:600px)\": {\n flexBasis: \"25%\",\n width: \"auto\",\n maxWidth: \"25%\",\n \"& svg\": {\n padding: 0,\n fontSize: 25,\n },\n },\n },\n itemDivider: {\n width: \"100%\",\n paddingBottom: 24,\n \"@media (max-width:600px)\": {\n paddingBottom: 24,\n },\n },\n itemDelete: {\n width: \"100%\",\n paddingBottom: 16,\n \"@media (max-width:600px)\": {\n paddingBottom: 24,\n paddingLeft: 12,\n },\n },\n button: {\n marginTop: 16,\n marginBottom: 40,\n width: 189,\n },\n addButtonText: {\n fontWeight: \"bold\",\n paddingLeft: 15,\n paddingRight: 15,\n },\n buttonWhite: {\n color: theme.palette.primary.main,\n marginBottom: \"40px\",\n },\n h5: {\n fontWeight: \"bold\",\n },\n avatar: {\n width: 42,\n height: 42,\n backgroundColor: \"#bdbdbd\",\n color: \"#525252\",\n fontSize: 16,\n },\n icon: {\n color: theme.palette.primary.main,\n fontSize: 30,\n },\n email: {\n fontSize: 14,\n color: \"#999999\",\n },\n textButton: {\n fontWeight: \"bold\",\n paddingLeft: 15,\n paddingRight: 15,\n },\n itemDialog: {\n width: \"100%\",\n textAlign: \"center\",\n },\n itemButtonContainer: {\n textAlign: \"right\",\n },\n textFieldSmall: {\n maxWidth: 160,\n \"&:first-of-type\": {\n marginRight: 5,\n },\n \"&:last-of-type\": {\n marginLeft: 5,\n },\n [theme.breakpoints.down(\"sm\")]: {\n width: \"100%\",\n \"&:first-of-type\": {\n marginRight: 0,\n },\n \"&:last-of-type\": {\n marginLeft: 0,\n },\n },\n },\n textField: {\n width: \"100%\",\n maxWidth: 330,\n marginTop: 24,\n marginBottom: 24,\n \"&:first-of-type\": {\n marginRight: \"0\",\n },\n \"&:last-of-type\": {\n marginLeft: \"0\",\n },\n },\n messageHint: {\n width: \"100%\",\n maxWidth: 330,\n margin: theme.spacing(2),\n color: \"#525252\",\n fontSize: 14,\n textAlign: \"left\",\n },\n dialogContent: {\n padding: 30,\n margin: \"auto\",\n \"&:first-of-type\": {\n paddingTop: 30,\n },\n [theme.breakpoints.down(\"sm\")]: {\n padding: \"16 !important\",\n },\n },\n undo: {\n color: theme.palette.primary.main,\n textDecoration: \"underline\",\n fontSize: 14,\n },\n link: {\n cursor: \"pointer\",\n },\n removed: {\n opacity: 0.5,\n },\n buttonProgress: {\n color: green[500],\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n marginTop: -12,\n marginLeft: -12,\n },\n}));\n\nconst createUserMutation = `\n mutation CreateUser(\n $email: String!,\n $firstName: String,\n $lastName: String,\n $companyID: Int,\n $searchAreaIds: [String],\n $dossierTemplate: String\n ) {\n createUser(\n Email: $email, \n Firstname: $firstName,\n Surname: $lastName,\n CompanyID: $companyID,\n SearchAreaIds: $searchAreaIds,\n DossierTemplate: $dossierTemplate\n ) {\n HashID\n Email\n Firstname\n Surname\n SearchAreas {\n HashID\n Title\n ZipList\n },\n DossierTemplates {\n edges {\n node {\n HashID,\n TemplateName\n }\n }\n }\n }\n }\n`;\n\nconst updateUserMutation = `\n mutation UpdateUser(\n $hashID: String!,\n $email: String!,\n $firstName: String,\n $lastName: String,\n $removed: Boolean,\n $searchAreaIds: [String],\n $dossierTemplate: String,\n $language: String!\n ) {\n updateUser(\n HashID: $hashID,\n Email: $email,\n Firstname: $firstName,\n Surname: $lastName,\n Removed: $removed,\n SearchAreaIds: $searchAreaIds,\n DossierTemplate: $dossierTemplate,\n Language: $language\n ) {\n HashID\n Email\n Firstname\n Surname\n SearchAreas {\n HashID\n Title\n ZipList\n },\n DossierTemplates {\n edges {\n node {\n HashID,\n TemplateName\n }\n }\n }\n }\n }\n`;\n\nconst queryDossierTemplates = `\n query ReadDossierTemplates (\n $language: String!\n ) {\n readDossierTemplates(Language: $language) {\n HashID\n Email\n Locale\n TemplateName\n BusinessActivityID\n BusinessSpecialities {\n edges {\n node {\n ID\n Title\n }\n }\n }\n MicrositeImages {\n edges {\n node {\n Src\n Title\n Alt\n }\n }\n }\n MicrositeReferences {\n edges {\n node {\n Title\n Content\n }\n }\n }\n }\n }\n`;\n\nconst DIALOGTYPE = {\n EDIT: \"edit\",\n ADD: \"add\",\n};\n\nconst AccountUsers = () => {\n const classes = useStyles();\n\n const { t } = useTranslation();\n\n const { token, user, setUser, setMessage, unsetUser, unsetToken } =\n useContext(GlobalContext);\n\n const [dossierTemplatesSelect, setDossierTemplatesSelect] = useState([]);\n const [openDialog, setOpenDialog] = useState(false);\n const [dialogType, setDialogType] = useState(DIALOGTYPE.EDIT);\n const [formValueErrors, setFormValueErrors] = useState({\n firstName: { hasError: false, message: \"\" },\n lastName: { hasError: false, message: \"\" },\n email: { hasError: false, message: \"\" },\n zipSearchArea: { hasError: false, message: \"\" },\n dossierTemplate: { hasError: false, message: \"\" },\n });\n const [companyUsers, setCompanyUsers] = useState(\n user.getData().company.users || []\n );\n\n const [{ fetching }, executeCreateUserMutation] =\n useMutation(createUserMutation);\n\n const [{ fetchingUpdateUser }, executeUpdateUserMutation] =\n useMutation(updateUserMutation);\n\n const [queryDossierTemplatesResult] = useQuery({\n query: queryDossierTemplates,\n variables: {\n language: DEFAULT_LANGUAGE\n },\n pause: !user.hasZipSearchAreas() && !user.isPro()\n });\n\n const initialZipSearchAreaValue = { zipSearchArea: \"0\" };\n const initialDossierTemplateValue = { dossierTemplate: \"0\" };\n const initialDefaultFormValues = {\n id: \"\",\n firstName: \"\",\n lastName: \"\",\n email: \"\",\n };\n const initialFormValues = user.hasZipSearchAreas() || user.isPro()\n ? {\n ...initialDefaultFormValues,\n ...initialZipSearchAreaValue,\n ...initialDossierTemplateValue,\n }\n : initialDefaultFormValues;\n const [formValues, setFormValues] = useState(initialFormValues);\n\n useEffect(() => {\n setCompanyUsers(\n companyUsers.sort((a, b) => {\n if (a.Firstname.toLowerCase() < b.Firstname.toLowerCase()) {\n return -1;\n }\n if (a.Firstname.toLowerCase() > b.Firstname.toLowerCase()) {\n return 1;\n }\n return 0;\n })\n );\n }, [user, companyUsers, setCompanyUsers]);\n\n // Parse the dossier-templates result to make them fit a dropdown\n useEffect(() => {\n if (\n !queryDossierTemplatesResult.fetching &&\n GetSafe(\n () => queryDossierTemplatesResult.data.readDossierTemplates,\n false\n ) &&\n dossierTemplatesSelect.length === 0\n ) {\n const dossierTemplatesParsed = [];\n const dossierTemplatesGrouped = {};\n\n // Group the dossier-templates by dossier-template id\n queryDossierTemplatesResult.data.readDossierTemplates.forEach(\n (dossierTemplate) => {\n if (\n !GetSafe(() => dossierTemplatesGrouped[dossierTemplate.HashID], false)\n ) {\n dossierTemplatesGrouped[dossierTemplate.HashID] = [];\n }\n\n dossierTemplatesGrouped[dossierTemplate.HashID].push(dossierTemplate);\n }\n );\n\n Object.keys(dossierTemplatesGrouped).forEach((dossierHashId) => {\n const languages = [];\n\n dossierTemplatesGrouped[dossierHashId].forEach((dossier) => {\n // Filter down to supported language variants\n if (GetSafe(() => DOSSIER_AVAILABLE_LOCALES[dossier.Locale], false)) {\n languages.push(dossier.Locale.slice(0, 2));\n }\n });\n\n // TODO: After the app is multi-language, replace dossierTemplatesGrouped[dossierHashId][0]\n // with dossierTemplatesGrouped[dossierHashId][[LANGUAGE]]\n dossierTemplatesParsed.push({\n value: dossierHashId,\n title:\n dossierTemplatesGrouped[dossierHashId][0].TemplateName\n });\n });\n\n setDossierTemplatesSelect(dossierTemplatesParsed);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [queryDossierTemplatesResult])\n\n /**\n * Joi validation schema\n */\n const schema = Joi.object({\n id: Joi.string().allow(\"\"),\n firstName: Joi.string().required(),\n lastName: Joi.string().required(),\n email: Joi.string().email({ tlds: false }).required(),\n zipSearchArea: Joi.string().allow(\"0\"),\n dossierTemplate: Joi.string().allow(\"0\"),\n });\n\n /**\n * handleAddUser\n */\n const handleAddUser = () => {\n setOpenDialog(true);\n setDialogType(DIALOGTYPE.ADD);\n setFormValues(initialFormValues);\n };\n\n /**\n * handleEditUser\n *\n * @param elementId\n */\n const handleEditUser = (elementId) => {\n setOpenDialog(true);\n setDialogType(DIALOGTYPE.EDIT);\n\n companyUsers.map((element) => {\n if (element.HashID === elementId) {\n setFormValues({\n id: element.HashID,\n firstName: element.Firstname,\n lastName: element.Surname,\n email: element.Email,\n zipSearchArea:\n element.SearchAreas && element.SearchAreas[0]\n ? element.SearchAreas[0].HashID\n : \"0\",\n dossierTemplate: GetSafe(\n () => element.DossierTemplates.edges[0].node,\n false\n )\n ? element.DossierTemplates.edges[0].node.HashID\n : \"0\",\n });\n }\n return element;\n });\n };\n\n /**\n * handleDeleteUser\n *\n * @param elementId\n */\n const handleDeleteUser = (elementId) => {\n let modifiedUserData = {\n language: DEFAULT_LANGUAGE\n };\n \n companyUsers.map((element) => {\n if (element.HashID === elementId) {\n modifiedUserData = {\n hashID: elementId,\n email: element.Email,\n removed: true,\n language: DEFAULT_LANGUAGE\n };\n }\n \n return element;\n });\n\n executeUpdateUserMutation(modifiedUserData).then((result) => {\n if (result.error) {\n // Check if the user need to be logged out\n if (result.error.message.indexOf(\"User forced logout\") !== -1) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.user.forced.logout\"));\n unsetUser();\n unsetToken();\n navigate(\"/\");\n } else {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.delete\"));\n ExternalErrorLogger.log({\n text: \"Error deleting user on CompanyUsers\",\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n errorMessage: result.error.message,\n },\n });\n }\n } else {\n setMessage(MESSAGE_TYPES.SUCCESS, t(\"general.label.delete.success\"));\n }\n });\n\n const data = companyUsers.map((item) => {\n if (item.HashID === elementId) {\n item.Removed = true;\n }\n return item;\n });\n\n user.setData({\n company: {\n users: data,\n },\n });\n \n setUser(user);\n setCompanyUsers(data);\n };\n\n /**\n * handleUndoDeleteUser\n *\n * @param elementId\n */\n const handleUndoDeleteUser = (elementId) => {\n let modifiedUserData = {\n language: DEFAULT_LANGUAGE\n };\n \n companyUsers.map((element) => {\n if (element.HashID === elementId) {\n modifiedUserData = {\n hashID: elementId,\n email: element.Email,\n removed: false,\n language: DEFAULT_LANGUAGE\n };\n }\n\n return element;\n });\n\n executeUpdateUserMutation(modifiedUserData).then((result) => {\n if (result.error) {\n // Check if the user need to be logged out\n if (result.error.message.indexOf(\"User forced logout\") !== -1) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.user.forced.logout\"));\n unsetUser();\n unsetToken();\n navigate(\"/\");\n } else if (\n result.error.message.includes(\n `User with HashID '${elementId}' not found`\n )\n ) {\n setMessage(MESSAGE_TYPES.INFO, t(\"error.item.already.deleted\"));\n } else {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.save\"));\n ExternalErrorLogger.log({\n text: \"Error undo deleting user on CompanyUsers\",\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n errorMessage: result.error.message,\n },\n });\n }\n } else {\n setMessage(MESSAGE_TYPES.SUCCESS, t(\"general.label.save.success\"));\n\n const data = companyUsers.map((item) => {\n if (item.HashID === elementId) {\n item.Removed = false;\n }\n return item;\n });\n\n user.setData({\n company: {\n users: data,\n },\n });\n\n setUser(user);\n setCompanyUsers(data);\n }\n });\n };\n\n /**\n * handleMutationResult\n *\n * @param result\n */\n const handleMutationResult = (result) => {\n setMessage(MESSAGE_TYPES.SUCCESS, t(\"general.label.save.success\"));\n\n const newUsersList = [];\n if (companyUsers.length !== 0) {\n companyUsers.map((item) => {\n if (item.HashID !== formValues.id) {\n newUsersList.push(item);\n }\n return item;\n });\n }\n\n newUsersList.push({\n HashID: result.HashID,\n Email: result.Email,\n Firstname: result.Firstname,\n Surname: result.Surname,\n SearchAreas: result.SearchAreas ? result.SearchAreas : null,\n DossierTemplates: result.DossierTemplates\n ? result.DossierTemplates\n : null,\n });\n\n user.setData({\n company: {\n users: newUsersList,\n },\n });\n setUser(user);\n };\n\n const buildUserMutationData = (formValues) => {\n const selectedZipSearchAreaExtension = user.hasZipSearchAreas() || user.isPro()\n ? {\n searchAreaIds: formValues.zipSearchArea,\n dossierTemplate: formValues.dossierTemplate,\n }\n : null;\n const defaultCreateUserData = {\n language: DEFAULT_LANGUAGE,\n hashID: formValues.id ? formValues.id : null,\n email: formValues.email,\n firstName: formValues.firstName,\n lastName: formValues.lastName,\n companyID: user.getData().company.id,\n };\n return {\n ...defaultCreateUserData,\n ...selectedZipSearchAreaExtension,\n };\n };\n\n const handleFormSubmit = () => {\n const { error } = schema.validate(formValues, { abortEarly: false });\n\n if (error) {\n const formErrors = FormValueErrorsBuilder(error, t);\n setFormValueErrors({ ...formErrors });\n } else {\n // Is it a new user?\n if (formValues.id === \"\") {\n const createUserMutationData = buildUserMutationData(formValues);\n executeCreateUserMutation(createUserMutationData).then((result) => {\n if (\n result.error ||\n typeof result.data === \"undefined\" ||\n typeof result.data.createUser === \"undefined\"\n ) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.save\"));\n ExternalErrorLogger.log({\n text: \"Error submitting data on CompanyUsers\",\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n errorMessage: result.error.message,\n },\n });\n } else {\n handleMutationResult(result.data.createUser[0]);\n }\n });\n // It is an existing user\n } else {\n const createUserMutationData = buildUserMutationData(formValues);\n \n executeUpdateUserMutation(createUserMutationData).then((result) => {\n if (\n result.error ||\n typeof result.data === \"undefined\" ||\n typeof result.data.updateUser === \"undefined\"\n ) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.save\"));\n ExternalErrorLogger.log({\n text: \"Error submitting data on CompanyUsers\",\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n errorMessage: result.error.message,\n },\n });\n } else {\n handleMutationResult(result.data.updateUser[0]);\n }\n });\n }\n }\n };\n\n /**\n * handleFirstNameChange\n *\n * @param event\n */\n const handleFirstNameChange = (event) => {\n setFormValues({ ...formValues, firstName: event.target.value });\n };\n\n /**\n * handleLastNameChange\n *\n * @param event\n */\n const handleLastNameChange = (event) => {\n setFormValues({ ...formValues, lastName: event.target.value });\n };\n\n /**\n * handleEmailChange\n *\n * @param event\n */\n const handleEmailChange = (event) => {\n setFormValues({ ...formValues, email: event.target.value });\n };\n\n /**\n * handleZipSearchAreaChange\n *\n * @param event\n */\n const handleZipSearchAreaChange = (event) => {\n setFormValues({ ...formValues, zipSearchArea: event.target.value });\n };\n\n /**\n * handleDossierTemplateChange\n *\n * @param event\n */\n const handleDossierTemplateChange = (event) => {\n setFormValues({ ...formValues, dossierTemplate: event.target.value });\n };\n\n /**\n * ManageUserDialog\n */\n const ManageUserDialog = (\n <>\n \n \n \n formValueErrors.firstName.hasError, false)}\n helperText={GetSafe(() => formValueErrors.firstName.message, \"\")}\n onChange={handleFirstNameChange}\n />\n formValueErrors.lastName.hasError, false)}\n helperText={GetSafe(() => formValueErrors.lastName.message, \"\")}\n onChange={handleLastNameChange}\n />\n \n \n formValueErrors.email.hasError, false)}\n helperText={GetSafe(() => formValueErrors.email.message, \"\")}\n onChange={handleEmailChange}\n />\n \n {(user.hasZipSearchAreas() || user.isPro()) && (\n \n {user.hasZipSearchAreas() && (\n formValueErrors.zipSearchArea.hasError,\n false\n )}\n helperText={GetSafe(\n () => formValueErrors.zipSearchArea.message,\n \"\"\n )}\n onChange={handleZipSearchAreaChange}\n >\n  \n {user.getData().searchAreas.map((item) => {\n return (\n \n {item.Title}\n \n );\n })}\n \n )}\n {queryDossierTemplatesResult.fetching && }\n {!queryDossierTemplatesResult.fetching && (\n formValueErrors.dossierTemplate.hasError,\n false\n )}\n helperText={GetSafe(\n () => formValueErrors.dossierTemplate.message,\n \"\"\n )}\n onChange={handleDossierTemplateChange}\n >\n  \n {dossierTemplatesSelect.map((dossierTemplate) => {\n return (\n \n {dossierTemplate.title}\n \n );\n })}\n \n )}\n \n )}\n {dialogType === DIALOGTYPE.ADD && (\n \n \n {t(\"account.users.welcome.hint\")}\n \n \n )}\n \n \n \n \n \n setOpenDialog(false)}\n color=\"primary\"\n variant=\"text\"\n disabled={fetching || fetchingUpdateUser}\n >\n \n {t(\"general.label.abort\")}\n \n \n handleFormSubmit()}\n color=\"primary\"\n variant=\"text\"\n disabled={fetching || fetchingUpdateUser}\n >\n \n {t(\"general.label.save\")}\n \n {(fetching || fetchingUpdateUser) && (\n \n )}\n \n \n \n \n \n );\n\n /**\n * return\n */\n return (\n <>\n \n \n \n {t(\"account.label.user.administration\")}\n \n \n \n \n \n \n {t(\"general.label.add\")}\n \n \n \n \n {companyUsers.map((item, index) => {\n if (item.Removed) {\n return (\n \n \n \n \n {t(\"favorites.label.removed\")}\n\n handleUndoDeleteUser(item.HashID)}\n >\n {t(\"general.label.undo\")}\n \n \n \n \n \n \n );\n } else {\n return (\n \n \n \n {item.Firstname.charAt(0) + item.Surname.charAt(0)}\n \n \n \n \n {item.Firstname + \" \" + item.Surname}\n \n \n {item.Email}\n \n {user.hasZipSearchAreas() &&\n item.SearchAreas.length !== 0 && (\n \n {item.SearchAreas[0].Title}\n \n )}\n \n \n handleEditUser(item.HashID)}\n >\n \n \n handleDeleteUser(item.HashID)}\n >\n \n \n \n \n \n \n \n );\n }\n })}\n \n \n \n {ManageUserDialog}\n \n \n );\n};\n\nexport default withAccessControl(AccountUsers, ACL_COMPONENTS.ACCOUNT_USERS);\n","import React, { useEffect, useContext } from 'react'\nimport Paper from '@material-ui/core/Paper'\nimport { makeStyles } from '@material-ui/core'\nimport Tab from '@material-ui/core/Tab'\nimport Tabs from '@material-ui/core/Tabs'\nimport Divider from '@material-ui/core/Divider'\nimport { useTranslation } from 'react-i18next'\nimport AccountProfile from '../components/Account/AccountProfile'\nimport AccountSubscriptions from '../components/Account/AccountSubscriptions'\nimport AccountInvoices from '../components/Account/AccountInvoices'\nimport { navigate, getWorkingPath } from 'hookrouter'\nimport withAccessControl from '../components/HOC/AccessControl'\nimport UserTypes from '../components/Onboarding/UserTypes'\nimport Tooltip from '@material-ui/core/Tooltip'\nimport GlobalContext from '../lib/GlobalContext'\nimport { ACL_COMPONENTS } from '../config'\nimport AccountUsers from '../components/Account/AccountUsers'\n\nconst useStyles = makeStyles(theme => ({\n root: {\n flexGrow: 1,\n width: '100%'\n },\n tabs: {\n fontSize: 14,\n height: '100%',\n width: '100%'\n },\n tab: {\n height: 64,\n fontWeight: 'bold',\n textAlign: 'center',\n color: '#525252'\n }\n}))\n\n/**\n * Account\n *\n * @returns {*}\n * @constructor\n */\nconst Account = () => {\n const classes = useStyles()\n const { t } = useTranslation()\n const {\n user,\n upgradeToPremiumOpen,\n setUpgradeToPremiumOpen,\n accountTabValue,\n setAccountTabValue\n } = useContext(GlobalContext)\n\n /**\n * useEffect\n */\n useEffect(() => {\n switch (getWorkingPath()) {\n case '/account/invoices':\n setAccountTabValue(3)\n break\n case '/account/subscriptions':\n setAccountTabValue(2)\n break\n case '/account/users':\n setAccountTabValue(1)\n break\n case '/account/profile':\n setAccountTabValue(0)\n break\n default:\n navigate('/account/profile')\n setAccountTabValue(0)\n break\n }\n })\n\n /**\n * handleTabChange\n *\n * @param event\n * @param newValue\n */\n const handleTabChange = (event, newValue) => {\n setAccountTabValue(newValue)\n switch (newValue) {\n case 3:\n if (user.getData().mode === UserTypes.FREE) {\n setUpgradeToPremiumOpen(!upgradeToPremiumOpen)\n } else {\n navigate('/account/invoices')\n }\n break\n case 2:\n navigate('/account/subscriptions')\n break\n case 1:\n if (user.getData().mode !== UserTypes.PRO) {\n setUpgradeToPremiumOpen(!upgradeToPremiumOpen)\n } else {\n navigate('/account/users')\n }\n break\n case 0:\n default:\n navigate('/account/profile')\n break\n }\n }\n\n /**\n * getContentRelatedToActiveTab\n *\n * @returns {*}\n */\n const getContentRelatedToActiveTab = () => {\n switch (accountTabValue) {\n case 3:\n return \n case 2:\n return \n case 1:\n return \n case 0:\n default:\n return \n }\n }\n\n /**\n * return\n */\n return (\n \n \n \n {user.getData().mode !== UserTypes.PRO && (\n \n \n \n )}\n {user.getData().mode === UserTypes.PRO && (\n \n )}\n \n {user.getData().mode === UserTypes.FREE && (\n \n \n \n )}\n {user.getData().mode !== UserTypes.FREE && (\n \n )}\n \n \n {getContentRelatedToActiveTab()}\n \n )\n}\n\nexport default withAccessControl(Account, ACL_COMPONENTS.ACCOUNT)\n","import React from 'react'\nimport { makeStyles, useTheme } from '@material-ui/core/styles'\nimport Stepper from '@material-ui/core/Stepper'\nimport Step from '@material-ui/core/Step'\nimport StepLabel from '@material-ui/core/StepLabel'\nimport { useTranslation } from 'react-i18next'\nimport useMediaQuery from '@material-ui/core/useMediaQuery'\n\n/**\n * useStyles\n */\nconst useStyles = makeStyles(theme => ({\n stepper: {\n justifyContent: 'center',\n paddingTop: theme.spacing(7),\n paddingRight: '0',\n paddingBottom: theme.spacing(7),\n paddingLeft: '0',\n background: 'transparent'\n },\n stepperMobile: {\n paddingLeft: 0\n },\n labelTextMobile: {\n alignItems: 'flex-start',\n textAlign: 'left'\n },\n iconText: {\n fill: '#fff'\n },\n labelText: {\n hyphens: 'auto'\n }\n}))\n\n/**\n * MicrositeDetailsWizardStepper\n *\n * @param props\n * @returns {*}\n * @constructor\n */\nconst MicrositeDetailsWizardStepper = ({ step }) => {\n const classes = useStyles()\n const theme = useTheme()\n const matches = useMediaQuery(theme.breakpoints.up('sm'))\n const { t } = useTranslation()\n const steps = [\n t('microsite.details.wizard.step.1'),\n t('microsite.details.wizard.step.2'),\n t('microsite.details.wizard.step.3'),\n t('microsite.details.wizard.step.4')\n ]\n\n /**\n * return\n */\n return (\n
\n {matches && (\n \n {steps.map((label, index) => (\n index}>\n \n {label}\n \n \n ))}\n \n )}\n {!matches && (\n \n {steps.map(label => (\n \n \n {label}\n \n \n ))}\n \n )}\n
\n )\n}\n\nexport default MicrositeDetailsWizardStepper\n","import React, { useEffect } from 'react'\nimport { makeStyles } from '@material-ui/core/styles'\nimport List from '@material-ui/core/List'\nimport ListItem from '@material-ui/core/ListItem'\nimport TextField from '@material-ui/core/TextField'\nimport { useTranslation } from 'react-i18next'\nimport Paper from '@material-ui/core/Paper'\nimport PlacesAutocomplete, { geocodeByAddress } from 'react-places-autocomplete'\nimport withAccessControl from '../HOC/AccessControl'\nimport { ACL_COMPONENTS } from '../../config'\nimport ExternalErrorLogger from '@ennit/react-external-errorlogger'\n\nconst useStyles = makeStyles(theme => ({\n textField: {\n width: '100%',\n marginRight: 0,\n marginLeft: 0\n },\n autocompleteResultWrapper: {\n position: 'relative',\n textAlign: 'center',\n zIndex: 2\n },\n autocompleteResult: {\n position: 'relative', // Could be 'absolute' for hovering autosuggest-result-list\n padding: theme.spacing(3),\n width: '100%'\n },\n textFieldSmall: {\n width: '50%',\n '&:first-of-type': {\n width: 'calc(50% - 24px)',\n marginRight: 24\n },\n [theme.breakpoints.down('sm')]: {\n width: '100%',\n '&:first-of-type': {\n width: '100%'\n }\n }\n }\n}))\n\n// Google search options\nconst searchOptions = {\n componentRestrictions: { country: 'ch' },\n types: ['(cities)']\n}\n\nconst addressObject = {\n city: ''\n}\n\n/**\n * GooglePlacesAutosuggestCity\n *\n * @returns {*}\n * @constructor\n */\nconst GooglePlacesAutosuggestCity = props => {\n const classes = useStyles()\n const { t } = useTranslation()\n const { formValue, formValueSetter, presetValue } = props\n\n // Check for valid callback\n if (typeof props.onSuggestionSelect === 'undefined') {\n throw Error('No onSuggestionSelect defined')\n }\n\n /**\n * useEffect\n */\n useEffect(() => {\n if (typeof presetValue !== 'undefined' && presetValue !== '') {\n formValueSetter(presetValue)\n }\n }, [presetValue, formValueSetter])\n\n /**\n * handleAddressSelect\n *\n * @param address\n */\n const handleAddressSelect = address => {\n formValueSetter(address)\n geocodeByAddress(address)\n .then(results => {\n results[0].address_components.map(item => {\n if (item.types[0] === 'locality') {\n addressObject.city = item.long_name\n }\n return item\n })\n\n props.onSuggestionSelect({ addressObject })\n })\n .catch(error => {\n ExternalErrorLogger.log({\n text: 'Error handle address select on GooglePlacesAutosuggestCity',\n data: {\n address: JSON.stringify(address),\n error: JSON.stringify(error)\n }\n })\n })\n }\n\n /**\n * handleChange\n *\n * @param value\n */\n const handleChange = value => {\n if (value === '') {\n props.onSuggestionSelect({\n addressObject\n })\n }\n formValueSetter(value)\n }\n\n /**\n * return\n */\n return (\n \n {({ getInputProps, suggestions, getSuggestionItemProps, loading }) => (\n <>\n \n {loading && (\n
\n \n \n \n {t('general.label.loading')}\n \n \n \n
\n )}\n {!loading && suggestions.length > 0 && (\n
\n \n \n {suggestions.map((suggestion, index) => (\n \n {suggestion.formattedSuggestion.mainText}\n \n ))}\n \n \n
\n )}\n \n )}\n \n )\n}\n\nexport default withAccessControl(\n GooglePlacesAutosuggestCity,\n ACL_COMPONENTS.GOOGLE_PLACES_AUTOSUGGEST_FIELD\n)\n","import React, { useEffect } from 'react'\nimport { makeStyles } from '@material-ui/core/styles'\nimport List from '@material-ui/core/List'\nimport ListItem from '@material-ui/core/ListItem'\nimport TextField from '@material-ui/core/TextField'\nimport { useTranslation } from 'react-i18next'\nimport Paper from '@material-ui/core/Paper'\nimport PlacesAutocomplete, { geocodeByAddress } from 'react-places-autocomplete'\nimport withAccessControl from '../HOC/AccessControl'\nimport { ACL_COMPONENTS } from '../../config'\nimport ExternalErrorLogger from '@ennit/react-external-errorlogger'\n\nconst useStyles = makeStyles(theme => ({\n textField: {\n width: '100%',\n marginRight: 0,\n marginLeft: 0\n },\n autocompleteResultWrapper: {\n position: 'relative',\n textAlign: 'center',\n zIndex: 2\n },\n autocompleteResult: {\n position: 'relative', // Could be 'absolute' for hovering autosuggest-result-list\n padding: theme.spacing(3),\n width: '100%'\n }\n}))\n\n// Google search options\nconst searchOptions = {\n componentRestrictions: { country: 'ch' },\n types: [['address']]\n}\n\nconst addressObject = {\n street: '',\n number: '',\n zip: '',\n city: ''\n}\n\n/**\n * GooglePlacesAutosuggestStreet\n *\n * @returns {*}\n * @constructor\n */\nconst GooglePlacesAutosuggestStreet = props => {\n const classes = useStyles()\n const { t } = useTranslation()\n const { formValue, formValueSetter, presetValue } = props\n\n // Check for valid callback\n if (typeof props.onSuggestionSelect === 'undefined') {\n throw Error('No onSuggestionSelect defined')\n }\n\n /**\n * useEffect\n */\n useEffect(() => {\n if (typeof presetValue !== 'undefined' && presetValue !== '') {\n formValueSetter(presetValue)\n }\n }, [presetValue, formValueSetter])\n\n /**\n * handleAddressSelect\n *\n * @param address\n */\n const handleAddressSelect = address => {\n formValueSetter(address)\n geocodeByAddress(address)\n .then(results => {\n results[0].address_components.map(item => {\n if (item.types[0] === 'street_number') {\n addressObject.number = item.long_name\n }\n\n if (item.types[0] === 'route') {\n addressObject.street = item.long_name\n }\n\n if (item.types[0] === 'postal_code') {\n addressObject.zip = item.long_name\n }\n\n if (item.types[0] === 'locality') {\n addressObject.city = item.long_name\n }\n return item\n })\n\n props.onSuggestionSelect({ addressObject })\n })\n .catch(error => {\n ExternalErrorLogger.log({\n text: 'Error handle address select on GooglePlacesAutosuggestStreet',\n data: {\n address: JSON.stringify(address),\n error: JSON.stringify(error)\n }\n })\n })\n }\n\n /**\n * handleChange\n *\n * @param value\n */\n const handleChange = value => {\n if (value === '') {\n props.onSuggestionSelect({\n addressObject\n })\n }\n formValueSetter(value)\n }\n\n /**\n * return\n */\n return (\n \n {({ getInputProps, suggestions, getSuggestionItemProps, loading }) => (\n
\n \n {loading && (\n
\n \n \n \n {t('general.label.loading')}\n \n \n \n
\n )}\n {!loading && suggestions.length > 0 && (\n
\n \n \n {suggestions.map((suggestion, index) => (\n \n {suggestion.description}\n \n ))}\n \n \n
\n )}\n
\n )}\n \n )\n}\n\nexport default withAccessControl(\n GooglePlacesAutosuggestStreet,\n ACL_COMPONENTS.GOOGLE_PLACES_AUTOSUGGEST_FIELD\n)\n","import React, { useEffect } from 'react'\nimport { makeStyles } from '@material-ui/core/styles'\nimport List from '@material-ui/core/List'\nimport ListItem from '@material-ui/core/ListItem'\nimport TextField from '@material-ui/core/TextField'\nimport { useTranslation } from 'react-i18next'\nimport Paper from '@material-ui/core/Paper'\nimport PlacesAutocomplete, { geocodeByAddress } from 'react-places-autocomplete'\nimport withAccessControl from '../HOC/AccessControl'\nimport { ACL_COMPONENTS } from '../../config'\nimport ExternalErrorLogger from '@ennit/react-external-errorlogger'\n\nconst useStyles = makeStyles(theme => ({\n textField: {\n width: '100%',\n marginRight: 0,\n marginLeft: 0\n },\n autocompleteResultWrapper: {\n position: 'relative',\n textAlign: 'center',\n zIndex: 2\n },\n autocompleteResult: {\n position: 'relative', // Could be 'absolute' for hovering autosuggest-result-list\n padding: theme.spacing(3),\n width: '100%'\n },\n textFieldSmall: {\n width: '50%',\n '&:first-of-type': {\n width: 'calc(50% - 24px)',\n marginRight: 24\n },\n [theme.breakpoints.down('sm')]: {\n width: '100%',\n '&:first-of-type': {\n width: '100%'\n }\n }\n }\n}))\n\n// Google search options\nconst searchOptions = {\n componentRestrictions: { country: 'ch' },\n types: ['(regions)']\n}\n\nconst addressObject = {\n zip: '',\n city: ''\n}\n\n/**\n * GooglePlacesAutosuggestZip\n *\n * @returns {*}\n * @constructor\n */\nconst GooglePlacesAutosuggestZip = props => {\n const classes = useStyles()\n const { t } = useTranslation()\n const { formValue, formValueSetter, presetValue } = props\n\n // Check for valid callback\n if (typeof props.onSuggestionSelect === 'undefined') {\n throw Error('No onSuggestionSelect defined')\n }\n\n /**\n * useEffect\n */\n useEffect(() => {\n if (typeof presetValue !== 'undefined') {\n formValueSetter(presetValue)\n }\n }, [presetValue, formValueSetter])\n\n /**\n * handleAddressSelect\n *\n * @param address\n */\n const handleAddressSelect = address => {\n formValueSetter(address)\n geocodeByAddress(address)\n .then(results => {\n results[0].address_components.map(item => {\n if (item.types[0] === 'postal_code') {\n addressObject.zip = item.long_name\n }\n\n if (item.types[0] === 'locality') {\n addressObject.city = item.long_name\n }\n return item\n })\n\n props.onSuggestionSelect({ addressObject })\n })\n .catch(error => {\n ExternalErrorLogger.log({\n text: 'Error handle address select on GooglePlacesAutosuggestZip',\n data: {\n address: JSON.stringify(address),\n error: JSON.stringify(error)\n }\n })\n })\n }\n\n /**\n * handleChange\n *\n * @param value\n */\n const handleChange = value => {\n // TODO: Here we need a detection if the zip is empty because of no match or the user has enetered none\n formValueSetter(value)\n }\n\n /**\n * return\n */\n return (\n \n {({ getInputProps, suggestions, getSuggestionItemProps, loading }) => (\n <>\n \n {loading && (\n
\n \n \n \n {t('general.label.loading')}\n \n \n \n
\n )}\n {!loading && suggestions.length > 0 && (\n
\n \n \n {suggestions.map((suggestion, index) => (\n \n {suggestion.formattedSuggestion.mainText}\n \n ))}\n \n \n
\n )}\n \n )}\n \n )\n}\n\nexport default withAccessControl(\n GooglePlacesAutosuggestZip,\n ACL_COMPONENTS.GOOGLE_PLACES_AUTOSUGGEST_FIELD\n)\n","import React, { useEffect, useState } from 'react'\nimport TextField from '@material-ui/core/TextField'\nimport { AsYouType } from 'libphonenumber-js'\nimport Box from '@material-ui/core/Box'\nimport { makeStyles } from '@material-ui/core'\nimport ReactCustomFlagSelect from 'react-custom-flag-select'\nimport 'react-custom-flag-select/lib/react-custom-flag-select.min.css'\nimport { PHONE_COUNTRIES } from '../config'\n\nconst useStyles = makeStyles(theme => ({\n item: {\n display: 'flex',\n alignItems: 'center',\n position: 'relative',\n width: '100%'\n // maxWidth: 330\n },\n itemImage: {\n position: 'absolute',\n top: '50%',\n left: 0,\n width: 60,\n padding: 0,\n transform: 'translateY(-20%)',\n zIndex: 1\n },\n itemField: {\n width: '100%',\n // maxWidth: 270,\n padding: 0\n },\n itemTextField: {\n width: '100%'\n },\n flagSelect: {\n '&::focus': {\n outline: 'none'\n }\n },\n flagListContainer: {\n position: 'absolute'\n },\n flagListItem: {\n '&:hover': {\n background: '#f2f3f4',\n color: theme.palette.text.primary\n },\n '& div': {\n flex: '1 1 50%',\n justifyContent: 'flex-start',\n padding: '0 7px',\n textAlign: 'left'\n },\n '& img': {\n borderRadius: 3\n }\n },\n // NOTICE:\n // General country-flag styling must be made via custom attributes\n // on the ReactCustomFlagSelect-element in the render-return-function\n flagArrow: {\n display: 'inline-block',\n '&::after': {\n display: 'block',\n position: 'absolute',\n top: '50%',\n right: 4,\n width: 0,\n borderColor: '#e3e3e3 transparent',\n borderStyle: 'solid',\n borderWidth: '5px 5px 0',\n transform: 'translateY(-50%)',\n content: '\"\"'\n }\n }\n}))\n\n/**\n * PhoneField\n *\n * @returns {*}\n * @constructor\n */\nconst PhoneField = props => {\n const classes = useStyles()\n\n const { defaultCountry, ...textFieldProps } = props\n\n const [countryState, setCountryState] = useState(defaultCountry || '')\n const [value, setValue] = useState('')\n\n /**\n * useEffect\n */\n useEffect(() => {\n preSelectCountry(props.value)\n }, [props.value])\n\n /**\n * useEffect\n */\n useEffect(() => {\n setValue(\n /* Phone-number lib: https://www.npmjs.com/package/libphonenumber-js */\n new AsYouType().input(\n `${getCountryByCode(countryState).phonePrefix}${filterOutCountryPrefix(\n props.value\n )}`\n )\n )\n }, [props.value, countryState])\n\n /**\n * getCountryByCode\n * Returns phone-settings for country\n */\n const getCountryByCode = code => {\n for (let i = 0; i < PHONE_COUNTRIES.length; i++) {\n if (PHONE_COUNTRIES[i].name === code) {\n return PHONE_COUNTRIES[i]\n }\n }\n return false\n }\n\n /**\n * getCountryById\n * Returns phone-settings for country\n */\n const getCountryById = id => {\n for (let i = 0; i < PHONE_COUNTRIES.length; i++) {\n if (PHONE_COUNTRIES[i].id === id) {\n return PHONE_COUNTRIES[i]\n }\n }\n return false\n }\n\n /**\n * onCountryChange\n * Handles country-change\n */\n const onCountryChange = countryId => {\n setCountryState(getCountryById(countryId).name)\n }\n\n /**\n * preSelectCountry\n * Pre-selection of country by matching country-phone-prefix\n */\n const preSelectCountry = phoneNumber => {\n if (phoneNumber.indexOf('+') !== -1) {\n for (let i = 0; i < PHONE_COUNTRIES.length; i++) {\n if (phoneNumber.indexOf(PHONE_COUNTRIES[i].phonePrefix) !== -1) {\n setCountryState(PHONE_COUNTRIES[i].name)\n break\n }\n }\n }\n }\n\n /**\n * filterOutCountryPrefix\n * Removes the country-phone-prefix from a phone-number\n */\n const filterOutCountryPrefix = phoneNumber => {\n if (phoneNumber.indexOf('+') !== -1) {\n for (let i = 0; i < PHONE_COUNTRIES.length; i++) {\n if (phoneNumber.indexOf(PHONE_COUNTRIES[i].phonePrefix) !== -1) {\n return phoneNumber.replace(PHONE_COUNTRIES[i].phonePrefix, '')\n }\n }\n return ''\n }\n return phoneNumber\n }\n\n /**\n * return\n */\n return (\n
\n \n \n {/* See for additional style-attributes and doc: https://github.com/edwardfhsiao/react-custom-flag-select */}\n \n \n \n }\n />\n \n \n \n \n \n
\n )\n}\n\nexport default PhoneField\n","import { Grid, TextField } from '@material-ui/core'\nimport clsx from 'clsx'\nimport GooglePlacesAutosuggestCity from '../GooglePlacesAutosuggestFields/GooglePlacesAutosuggestCity'\nimport GooglePlacesAutosuggestStreet from '../GooglePlacesAutosuggestFields/GooglePlacesAutosuggestStreet'\nimport GooglePlacesAutosuggestZip from '../GooglePlacesAutosuggestFields/GooglePlacesAutosuggestZip'\nimport { useTranslation } from 'react-i18next'\nimport GetSafe from '../../lib/GetSafe'\nimport React, { useState } from 'react'\nimport PhoneField from '../PhoneField'\n\nconst CompanyBasicSettingsForm = ({\n classes,\n formValues,\n formValueErrors,\n setFormValues,\n streetFormValue,\n setStreetFormValue,\n zipFormValue,\n setZipFormValue,\n cityFormValue,\n setCityFormValue,\n readOnly = false\n}) => {\n const { t } = useTranslation()\n const [activePhone, setActivePhone] = useState('state-phoneField-closed')\n const [activeMobile, setActiveMobile] = useState('state-mobileField-closed')\n const [activeFax, setActiveFax] = useState('state-faxField-closed')\n\n /**\n * handleStreetChange\n *\n * @param autosuggestResult\n */\n const handleStreetChange = autosuggestResult => {\n setFormValues({\n ...formValues,\n street:\n autosuggestResult.addressObject.street +\n ' ' +\n autosuggestResult.addressObject.number,\n zip: autosuggestResult.addressObject.zip,\n city:\n autosuggestResult.addressObject.city === ''\n ? formValues.city\n : autosuggestResult.addressObject.city\n })\n }\n\n /**\n * handleZipChange\n *\n * @param autosuggestResult\n */\n const handleZipChange = autosuggestResult => {\n setFormValues({\n ...formValues,\n zip: autosuggestResult.addressObject.zip,\n city:\n autosuggestResult.addressObject.city === ''\n ? formValues.city\n : autosuggestResult.addressObject.city\n })\n }\n\n /**\n * handleCityChange\n *\n * @param autosuggestResult\n */\n const handleCityChange = autosuggestResult => {\n setFormValues({ ...formValues, city: autosuggestResult.addressObject.city })\n }\n\n /**\n * handlePhoneChange\n *\n * @param event\n */\n const handlePhoneChange = event => {\n setFormValues({ ...formValues, phone: event.target.value })\n }\n\n\n /**\n * handleMobileChange\n *\n * @param event\n */\n const handleMobileChange = event => {\n setFormValues({ ...formValues, mobile: event.target.value })\n }\n\n /**\n * handleFaxChange\n *\n * @param event\n */\n const handleFaxChange = event => {\n setFormValues({ ...formValues, fax: event.target.value })\n }\n\n /**\n * handleWebsiteChange\n *\n * @param event\n */\n const handleWebsiteChange = event => {\n setFormValues({ ...formValues, website: event.target.value })\n }\n\n /**\n * handleEmailChange\n *\n * @param event\n */\n const handleEmailChange = event => {\n setFormValues({ ...formValues, email: event.target.value })\n }\n\n /**\n * handleContactPersonChange\n *\n * @param event\n */\n const handleContactPersonChange = event => {\n setFormValues({ ...formValues, contactPerson: event.target.value })\n }\n\n return (\n <>\n \n \n \n \n formValueErrors.contactPerson.hasError, false)}\n helperText={GetSafe(() => formValueErrors.contactPerson.message, '')}\n onChange={handleContactPersonChange}\n disabled={readOnly}\n />\n \n \n \n formValueErrors.street.hasError,\n false\n )}\n helperText={GetSafe(() => formValueErrors.street.message, '')}\n formValue={streetFormValue}\n formValueSetter={setStreetFormValue}\n disabled={readOnly}\n />\n \n \n \n formValueErrors.zip.hasError, false)}\n helperText={GetSafe(() => formValueErrors.zip.message, '')}\n formValue={zipFormValue}\n formValueSetter={setZipFormValue}\n disabled={readOnly}\n />\n formValueErrors.city.hasError, false)}\n helperText={GetSafe(() => formValueErrors.city.message, '')}\n formValue={cityFormValue}\n formValueSetter={setCityFormValue}\n disabled={readOnly}\n />\n \n {\n if (!readOnly) {\n if (activePhone === 'state-phoneField-closed') {\n setActivePhone('state-phoneField-open')\n } else {\n setActivePhone('state-phoneField-closed')\n }\n }\n }}\n >\n formValueErrors.phone.hasError, false)}\n label={t('form.label.phone')}\n value={formValues.phone}\n helperText={GetSafe(() => formValueErrors.phone.message, '')}\n onChange={handlePhoneChange}\n margin='normal'\n fullWidth\n defaultCountry='CH'\n InputProps={{ classes: { input: classes.input } }}\n disabled={readOnly}\n />\n \n {\n if (!readOnly) {\n if (activeMobile === 'state-mobileField-closed') {\n setActiveMobile('state-mobileField-open')\n } else {\n setActiveMobile('state-mobileField-closed')\n }\n }\n }}\n >\n formValueErrors.mobile.hasError, false)}\n label={t('form.label.mobile')}\n value={formValues.mobile}\n helperText={GetSafe(() => formValueErrors.mobile.message, '')}\n onChange={handleMobileChange}\n margin='normal'\n fullWidth\n defaultCountry='CH'\n InputProps={{ classes: { input: classes.input } }}\n disabled={readOnly}\n />\n \n {\n if (!readOnly) {\n if (activeFax === 'state-faxField-closed') {\n setActiveFax('state-faxField-open')\n } else {\n setActiveFax('state-faxField-closed')\n }\n }\n }}\n >\n formValueErrors.fax.hasError, false)}\n label={t('form.label.fax')}\n value={formValues.fax}\n helperText={GetSafe(() => formValueErrors.fax.message, '')}\n onChange={handleFaxChange}\n margin='normal'\n fullWidth\n defaultCountry='CH'\n InputProps={{ classes: { input: classes.input } }}\n disabled={readOnly}\n />\n \n \n formValueErrors.website.hasError, false)}\n label={t('form.label.website')}\n value={formValues.website}\n helperText={GetSafe(() => formValueErrors.website.message, '')}\n onChange={handleWebsiteChange}\n margin='normal'\n fullWidth\n disabled={readOnly}\n />\n \n \n formValueErrors.email.hasError, false)}\n label={t('form.label.email')}\n value={formValues.email}\n helperText={GetSafe(() => formValueErrors.email.message, '')}\n onChange={handleEmailChange}\n margin='normal'\n fullWidth\n disabled={readOnly}\n />\n \n \n )\n}\n\nexport default CompanyBasicSettingsForm\n","import React from 'react'\nimport CircularProgress from '@material-ui/core/CircularProgress'\nimport { makeStyles } from '@material-ui/core'\n\nconst useStyles = makeStyles(() => ({\n fetchingProgress: {\n position: 'absolute',\n top: '50%',\n left: '50%',\n marginTop: -12,\n marginLeft: -12\n },\n overlay: {\n position: 'fixed',\n width: '100%',\n height: '100%',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: 'rgba(0,0,0,0.5)',\n zIndex: 999\n },\n text: {\n backgroundColor: '#3EE1FA',\n width: 500,\n position: 'absolute',\n top: '60%',\n left: '50%',\n transform: 'translateX(-50%)',\n padding: 10,\n textAlign: 'center',\n borderRadius: 3\n }\n}))\n\n/**\n * LoadingOverlay\n *\n * @returns {*}\n * @constructor\n */\nconst LoadingOverlay = props => {\n const classes = useStyles()\n\n /**\n * return\n */\n return (\n
\n \n {props.text !== undefined && (\n
{props.text}
\n )}\n
\n )\n}\n\nexport default LoadingOverlay\n","import React, { useState, useContext, useEffect } from \"react\";\nimport {\n makeStyles,\n Grid,\n Button,\n Card,\n CircularProgress,\n} from \"@material-ui/core\";\nimport { green } from \"@material-ui/core/colors\";\nimport clsx from \"clsx\";\nimport { useTranslation } from \"react-i18next\";\nimport MicrositeDetailsWizardStepper from \"./MicrositeDetailsWizardStepper\";\nimport InfoOutlinedIcon from \"@material-ui/icons/InfoOutlined\";\nimport CompanyBasicSettingsForm from \"../Company/CompanyBasicSettingsForm\";\nimport GlobalContext from \"../../lib/GlobalContext\";\nimport Joi from \"@hapi/joi\";\nimport FormValueErrorsBuilder from \"../../lib/FormValueErrorsBuilder\";\nimport GooglePlacesAPIHelper from \"../../lib/GooglePlacesAPIHelper\";\nimport { useMutation } from \"urql\";\nimport { MESSAGE_TYPES } from \"../PopupMessages\";\nimport { navigate } from \"hookrouter\";\nimport ExternalErrorLogger from \"@ennit/react-external-errorlogger\";\nimport LoadingOverlay from \"../LoadingOverlay\";\n\n/**\n * useStyles\n */\nconst useStyles = makeStyles((theme) => ({\n intro: {\n margin: 20,\n fontSize: 16,\n lineHeight: \"24px\",\n textAlign: \"left\",\n border: \"none\",\n boxShadow: \"none\",\n backgroundColor: \"#e0f6fa\",\n },\n introItem: {\n padding: 10,\n },\n icon: {\n color: theme.palette.primary.main,\n },\n introContainer: {\n flexWrap: \"nowrap\",\n },\n item: {\n position: \"relative\",\n width: \"100%\",\n maxWidth: 500,\n margin: \"0 auto\",\n },\n itemStepper: {\n maxWidth: 600,\n },\n itemHeader: {\n maxWidth: 444,\n paddingTop: 44,\n paddingBottom: 24,\n textAlign: \"center\",\n [theme.breakpoints.down(\"sm\")]: {\n paddingTop: 20,\n paddingBottom: 20,\n textAlign: \"left\",\n },\n },\n title: {\n margin: 0,\n fontSize: 24,\n lineHeight: \"30px\",\n },\n buttonNext: {\n width: \"100%\",\n color: \"#fff\",\n marginRight: \"auto\",\n fontWeight: \"bold\",\n [theme.breakpoints.down(\"sm\")]: {\n width: \"100%\",\n },\n },\n buttonContainer: {\n marginTop: theme.spacing(4),\n },\n gridItem: {\n width: \"100%\",\n padding: \"8px 0\",\n [theme.breakpoints.down(\"sm\")]: {\n width: \"100%\",\n },\n },\n itemPhone: {\n height: 80,\n overflow: \"hidden\",\n \"&.state-phoneField-open\": {\n height: \"auto\",\n overflow: \"visible\",\n zIndex: 3,\n },\n },\n itemMobile: {\n height: 80,\n overflow: \"hidden\",\n \"&.state-mobileField-open\": {\n height: \"auto\",\n overflow: \"visible\",\n zIndex: 3,\n },\n },\n itemFax: {\n height: 80,\n overflow: \"hidden\",\n \"&.state-faxField-open\": {\n height: \"auto\",\n overflow: \"visible\",\n zIndex: 3,\n },\n },\n input: {\n marginLeft: 60,\n },\n buttonProgress: {\n color: green[500],\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n marginTop: -12,\n marginLeft: -12,\n },\n}));\n\nconst updateCompanyMutation = `\n mutation UpdateCompany(\n $hashId: String!,\n $name: String!,\n $contactPerson: String!,\n $street: String!,\n $zip: String!,\n $city: String!,\n $lat: Float,\n $lon: Float,\n $phone: String!,\n $mobile: String!,\n $fax: String!,\n $website: String!,\n $email: String!\n ) {\n updateCompany(\n HashID: $hashId, \n Name: $name,\n ContactPerson: $contactPerson,\n Street: $street,\n Zip: $zip,\n City: $city,\n Latitude: $lat,\n Longitude: $lon,\n Phone: $phone,\n Mobile: $mobile,\n Fax: $fax,\n Website: $website,\n Email: $email\n ) {\n Name\n ContactPerson\n Street\n Zip\n City\n Latitude\n Longitude\n Phone\n Mobile\n Fax\n Website\n Email\n NumberOfEmployees\n LegalForm\n }\n }\n`;\n\nconst initialFormValuesState = {\n id: \"\",\n name: \"\",\n contactPerson: \"\",\n street: \"\",\n zip: \"\",\n city: \"\",\n phone: \"\",\n mobile: \"\",\n fax: \"\",\n website: \"\",\n email: \"\",\n};\n\nconst initialFormValueErrorsState = {\n id: { hasError: false, message: \"\" },\n name: { hasError: false, message: \"\" },\n contactPerson: { hasError: false, message: \"\" },\n street: { hasError: false, message: \"\" },\n zip: { hasError: false, message: \"\" },\n city: { hasError: false, message: \"\" },\n phone: { hasError: false, message: \"\" },\n mobile: { hasError: false, message: \"\" },\n fax: { hasError: false, message: \"\" },\n website: { hasError: false, message: \"\" },\n email: { hasError: false, message: \"\" },\n};\n\nconst LOADING_OVERLAY_TIMEOUT = 5000;\n\n/**\n * CompanyProfileStep\n *\n * @param {*} param0\n */\nconst CompanyProfileStep = ({ step, setStep }) => {\n const classes = useStyles();\n const { t } = useTranslation();\n const {\n googleMapsIsLoaded,\n user,\n token,\n setMessage,\n unsetUser,\n unsetToken,\n } = useContext(GlobalContext);\n const [formValues, setFormValues] = useState(initialFormValuesState);\n const [formValueErrors, setFormValueErrors] = useState(\n initialFormValueErrorsState\n );\n const [streetFormValue, setStreetFormValue] = useState(\"\");\n const [zipFormValue, setZipFormValue] = useState(\"\");\n const [cityFormValue, setCityFormValue] = useState(\"\");\n const [loadingOverlayOpen, setLoadingOverlayOpen] = useState(false);\n const [{ fetching: companyIsUpdating }, executeCompanyUpdateMutation] =\n useMutation(updateCompanyMutation);\n\n /**\n * Joi validation schema\n */\n const schema = Joi.object({\n id: Joi.number(),\n hashID: Joi.string().required(),\n name: Joi.string().required(),\n contactPerson: Joi.string().required(),\n street: Joi.string().trim().required(),\n zip: Joi.string().trim().required(),\n city: Joi.string().trim().required(),\n phone: Joi.string().allow(\"\"),\n mobile: Joi.string().allow(\"\"),\n website: Joi.string()\n .regex(\n /https?:\\/\\/(www\\.)?[-a-zA-ZöäüÖÄÜ0-9@:%._+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b([-a-zA-Z0-9()@:%_+.~#?&/=]*)/\n )\n .allow(\"\"),\n fax: Joi.string().allow(\"\"),\n email: Joi.string().email({ tlds: false }).allow(\"\"),\n });\n\n /**\n * useEffect\n */\n useEffect(() => {\n const userData = user.getData();\n setFormValues({\n id: userData.company.hashID,\n name: userData.company.name || initialFormValuesState.name,\n contactPerson:\n userData.company.contactPerson !== \"\"\n ? userData.company.contactPerson\n : userData.firstName + \" \" + userData.lastName,\n street: userData.company.street || initialFormValuesState.street,\n zip: userData.company.zip || initialFormValuesState.zip,\n city: userData.company.city || initialFormValuesState.city,\n phone: userData.company.phone || initialFormValuesState.phone,\n mobile: userData.company.mobile || initialFormValuesState.mobile,\n fax: userData.company.fax || initialFormValuesState.fax,\n website: userData.company.website || initialFormValuesState.website,\n email: userData.company.email || initialFormValuesState.email,\n });\n }, [user]);\n\n /**\n * determineCountry\n *\n * checks if googlePlacesResult is in CH.\n *\n * @param googlePlacesResult\n * @returns {number}\n */\n const determineCountry = (googlePlacesResult) => {\n let isInCH = [];\n googlePlacesResult.results.map((item) => {\n isInCH = item.address_components.filter((addressComponent) => {\n return addressComponent.short_name === \"CH\";\n });\n return item;\n });\n return isInCH.length;\n };\n\n /**\n * determineZip\n *\n * @param googlePlacesResult\n * @returns {*}\n */\n const determineZip = (googlePlacesResult) => {\n let zip = formValues.zip;\n googlePlacesResult.results.map((item) => {\n item.address_components.map((comp) => {\n if (comp.types[0] === \"postal_code\") {\n zip = comp.long_name;\n }\n return zip;\n });\n return zip;\n });\n return zip;\n };\n\n /**\n * handleButtonNext\n */\n const handleButtonNext = () => {\n if (\n formValues.street.trim() === \"\" ||\n formValues.street !== streetFormValue\n ) {\n formValues.street = streetFormValue;\n }\n if (formValues.zip !== zipFormValue) {\n formValues.zip = zipFormValue;\n }\n if (formValues.city.trim() === \"\" || formValues.city !== cityFormValue) {\n formValues.city = cityFormValue;\n }\n\n if (\n formValues.website !== \"\" &&\n !formValues.website.includes(\"http://\") &&\n !formValues.website.includes(\"https://\")\n ) {\n formValues.website = \"https://\" + formValues.website;\n }\n\n const formData = {\n hashID: user.getData().company.hashID,\n name: formValues.name,\n contactPerson: formValues.contactPerson,\n street: formValues.street,\n zip: formValues.zip,\n city: formValues.city,\n phone: formValues.phone,\n mobile: formValues.mobile,\n fax: formValues.fax,\n website: formValues.website,\n email: formValues.email,\n };\n const { error } = schema.validate(formData, { abortEarly: false });\n if (error) {\n console.log(error);\n const formErrors = FormValueErrorsBuilder(error, t);\n setFormValueErrors({ ...formErrors });\n window.scrollTo(0, 0);\n } else {\n user.setData({ company: { ...formData } });\n setFormValueErrors(initialFormValueErrorsState);\n const addressString = `${formValues.street}+${\n typeof formValues.number !== \"undefined\" ? formValues.number + \"+\" : \"\"\n }${formValues.zip}+${formValues.city}`;\n\n GooglePlacesAPIHelper.getCoordsByAddress(addressString).then((result) => {\n if (result.status === \"OK\" && determineCountry(result)) {\n const lat = result.results[0].geometry.location.lat;\n const lon = result.results[0].geometry.location.lng;\n\n user.setData({ company: { latitude: lat, longitude: lon } });\n\n const showLoadingOverlayTimeout = setTimeout(\n () => setLoadingOverlayOpen(true),\n LOADING_OVERLAY_TIMEOUT\n );\n\n const foundZip = determineZip(result);\n\n executeCompanyUpdateMutation({\n hashId: user.getData().company.hashID,\n name: formValues.name,\n contactPerson: formValues.contactPerson,\n street: formValues.street,\n zip: foundZip,\n city: formValues.city,\n lat: lat,\n lon: lon,\n phone: formValues.phone,\n mobile: formValues.mobile,\n fax: formValues.fax,\n website: formValues.website,\n email: formValues.email,\n }).then((result) => {\n clearTimeout(showLoadingOverlayTimeout);\n setLoadingOverlayOpen(false);\n\n if (result.error) {\n if (result.error.message.indexOf(\"User forced logout\") !== -1) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.user.forced.logout\"));\n unsetUser();\n unsetToken();\n navigate(\"/\");\n } else {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.save\"));\n ExternalErrorLogger.log({\n text: \"Error submitting data on CompanyBasicSettings\",\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n errorMessage: result.error.message,\n },\n });\n }\n } else {\n setStep((prevActiveStep) => prevActiveStep + 1);\n }\n });\n } else if (result.status === \"OK\" && !determineCountry(result)) {\n setFormValueErrors({\n street: {\n hasError: true,\n message: t(\"error.form.address.not.ch\"),\n },\n zip: {\n hasError: true,\n message: t(\"error.form.address.not.ch\"),\n },\n city: {\n hasError: true,\n message: t(\"error.form.address.not.ch\"),\n },\n });\n window.scrollTo(0, 0);\n } else if (result.status === \"ZERO_RESULTS\") {\n setFormValueErrors({\n street: {\n hasError: true,\n message: t(\"error.form.invalid.address\"),\n },\n zip: {\n hasError: true,\n message: t(\"error.form.invalid.address\"),\n },\n city: {\n hasError: true,\n message: t(\"error.form.invalid.address\"),\n },\n });\n window.scrollTo(0, 0);\n } else {\n let errorMessage = \"\";\n if (result.error_message !== undefined) {\n errorMessage =\n \"
\" +\n '' +\n t(\"general.label.error.message\") +\n \"\" +\n \" \" +\n result.error_message;\n }\n setMessage(\n MESSAGE_TYPES.ERROR,\n t(\"error.general.short\") +\n \"
\" +\n \"
\" +\n '' +\n t(\"general.label.status.code\") +\n \"\" +\n \" \" +\n result.status +\n errorMessage +\n \"
\" +\n \"
\" +\n t(\"general.label.contact.smartconext\")\n );\n ExternalErrorLogger.log({\n text: \"Error fetching Geocoords on CompanyBasicSettings\",\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n errorMessage: result.error_message,\n },\n });\n }\n });\n }\n };\n\n /**\n * return\n */\n return (\n <>\n {googleMapsIsLoaded && (\n <>\n \n

\n {t(\"microsite.details.wizard.step.1.title\")}\n

\n \n \n \n \n \n \n {t(\"microsite.details.wizard.step.1.intro\")}\n \n
\n \n \n \n \n \n \n \n \n \n \n {t(\"form.label.next\")}\n {companyIsUpdating && (\n \n )}\n \n {loadingOverlayOpen && (\n \n )}\n \n \n )}\n \n );\n};\n\nexport default CompanyProfileStep;\n","import Joi from '@hapi/joi'\n\nexport const LOADING_OVERLAY_TIMEOUT = 5000\n\nexport const initialFormValuesState = {\n directoryName: '',\n employeeCount: '',\n legalForm: 0,\n foundingYear: '',\n masterOperation: '',\n trainingCompany: '',\n colorScheme: '',\n memberships: [],\n furtherMemberships: '',\n micrositeColorScheme: '',\n micrositeDescription: '',\n micrositeEmailApplicationText: '',\n micrositeLogo: { Alt: '', Src: '', Title: '' },\n micrositeImages: [],\n additionalMemberships: ''\n}\n\nexport const initialFormValueErrorsState = {\n directoryName: { hasError: false, message: '' },\n employeeCount: { hasError: false, message: '' },\n legalForm: { hasError: false, message: '' },\n foundingYear: { hasError: false, message: '' },\n masterOperation: { hasError: false, message: '' },\n trainingCompany: { hasError: false, message: '' },\n colorScheme: { hasError: false, message: '' },\n furtherMemberships: { hasError: false, message: '' },\n micrositeColorScheme: { hasError: false, message: '' },\n micrositeDescription: { hasError: false, message: '' },\n micrositeEmailApplicationText: { hasError: false, message: '' },\n micrositeImages: { hasError: false, message: '' },\n additionalMemberships: { hasError: false, message: '' }\n}\n\n/**\n * Joi validation schema\n */\nexport const schema = Joi.object({\n hashID: Joi.string().required(),\n employeeCount: Joi.number()\n .integer()\n .allow(0)\n .required(),\n legalForm: Joi.number()\n .min(1)\n .required(),\n foundingYear: Joi.string().required(),\n masterOperation: Joi.string().allow(''),\n trainingCompany: Joi.string().allow(''),\n memberships: Joi.array(),\n micrositeDescription: Joi.string().allow(''),\n micrositeImages: Joi.array(),\n micrositeLogo: Joi.object(),\n additionalMemberships: Joi.string().allow(''),\n micrositeEmailApplicationText: Joi.string().allow(''),\n micrositeColorScheme: Joi.string().allow('')\n})\n\n/**\n * createFileFromUrl\n *\n * @param url\n * @returns {Promise}\n */\nexport const createFileFromUrl = async url => {\n const response = await window.fetch(url)\n const data = await response.blob()\n const metadata = { type: data.type }\n const filename = url\n .replace(/\\?.+/, '')\n .split('/')\n .pop()\n return new window.File([data], filename, metadata)\n}\n\n/**\n * readFile\n *\n * @param file\n * @returns {Promise}\n */\nexport const readFile = file => {\n return new Promise((resolve, reject) => {\n const reader = new window.FileReader()\n reader.onload = event => {\n if (event && event.target) {\n resolve(event.target.result)\n }\n }\n reader.onerror = event => {\n reader.abort()\n reject(event)\n }\n reader.readAsDataURL(file)\n })\n}\n\n/**\n * formatImagesArray\n *\n * @returns {[]}\n */\nexport const formatImagesArray = formValues => {\n const formattedImagesArray = []\n formValues.micrositeImages.map(item => {\n if (item.data) {\n formattedImagesArray.push({\n Src: item.data,\n Title: item.file.name,\n Alt: item.file.name\n })\n } else {\n formattedImagesArray.push(item)\n }\n return item\n })\n\n return formattedImagesArray\n}\n\nexport const querySmartconextConf = `\n {\n readSmartconextConf {\n microsite_color_schemes {\n Code\n Name\n }\n }\n }\n`\n\nexport const updateCompanyMutation = `\nmutation UpdateCompany(\n $hashId: String!,\n $numberOfEmployees: String!,\n $legalForm: String!,\n $foundingYear: String!,\n $masterBusiness: String!,\n $trainingCompany: String!,\n $memberships: [MembershipInput],\n $description: String,\n $colorScheme: String,\n $images: [MicrositeImageInput],\n $logo: MicrositeLogoInput,\n $additionalMemberships: String,\n $emailApplicationText: String\n) {\n updateCompany(\n HashID: $hashId,\n NumberOfEmployees: $numberOfEmployees,\n LegalForm: $legalForm,\n FoundingYear: $foundingYear,\n MasterBusiness: $masterBusiness,\n TrainingCompany: $trainingCompany,\n Memberships: $memberships,\n MicrositeDescription: $description,\n MicrositeColorScheme: $colorScheme,\n MicrositeImages: $images,\n MicrositeLogo: $logo,\n AdditionalMemberships: $additionalMemberships,\n MicrositeEmailApplicationText: $emailApplicationText\n ) {\n NumberOfEmployees\n LegalForm\n FoundingYear\n MasterBusiness\n TrainingCompany\n MicrositeDescription\n MicrositeColorScheme\n AdditionalMemberships\n MicrositeEmailApplicationText\n MicrositeLogo {\n Src\n Title\n Alt\n }\n MicrositeImages {\n edges {\n node {\n Src\n Title\n Alt\n }\n }\n }\n }\n}\n`\n","import React, { useEffect, useState } from 'react'\nimport Grid from '@material-ui/core/Grid'\nimport { Divider, TextField, Typography } from '@material-ui/core'\nimport GetSafe from '../../lib/GetSafe'\nimport Button from '@material-ui/core/Button'\nimport { DropzoneDialogBase } from 'material-ui-dropzone'\nimport FormControl from '@material-ui/core/FormControl'\nimport FormGroup from '@material-ui/core/FormGroup'\nimport FormControlLabel from '@material-ui/core/FormControlLabel'\nimport Checkbox from '@material-ui/core/Checkbox'\nimport IconButton from '@material-ui/core/IconButton'\nimport { DragDropContext, Draggable, Droppable } from 'react-beautiful-dnd'\nimport ListItem from '@material-ui/core/ListItem'\nimport ListItemIcon from '@material-ui/core/ListItemIcon'\nimport DragIndicatorIcon from '@material-ui/icons/DragIndicator'\nimport ListItemText from '@material-ui/core/ListItemText'\nimport DeleteIcon from '@material-ui/icons/Delete'\nimport List from '@material-ui/core/List'\nimport clsx from 'clsx'\nimport AddIcon from '@material-ui/icons/Add'\nimport FormLabel from '@material-ui/core/FormLabel'\nimport RadioGroup from '@material-ui/core/RadioGroup'\nimport Radio from '@material-ui/core/Radio'\nimport FormHelperText from '@material-ui/core/FormHelperText'\nimport InputAdornment from '@material-ui/core/InputAdornment'\nimport Info from '@material-ui/icons/Info'\nimport Tooltip from '@material-ui/core/Tooltip'\nimport { Trans, useTranslation } from 'react-i18next'\nimport MenuItem from '@material-ui/core/MenuItem'\nimport { initialFormValuesState } from './CompanyInfoShared'\n\nconst COMPANY_DESCRIPTION_LENGTH = 1000\n\n// TODO: No API connection yet but data should be the same as in the cms.\nconst forms = [\n {\n id: 0,\n name: ''\n },\n {\n id: 1,\n name: 'Einzelunternehmen'\n },\n {\n id: 2,\n name: 'GmbH'\n },\n {\n id: 3,\n name: 'AG'\n },\n {\n id: 4,\n name: 'Ausländische Zweigniederlassung'\n },\n {\n id: 5,\n name: 'Genossenschaft'\n },\n {\n id: 6,\n name: 'Kollektivgesellschaft'\n },\n {\n id: 7,\n name: 'Schweizerische Zweigniederlassung'\n },\n {\n id: 8,\n name: 'Stiftung'\n },\n {\n id: 9,\n name: 'Verein'\n },\n {\n id: 10,\n name: 'andere Rechtsform'\n }\n]\n\nconst CompanyInfoForm = ({\n user,\n classes,\n formValues,\n formValueErrors,\n setFormValues,\n readFile,\n createFileFromUrl,\n currentFileObjects,\n setCurrentFileObjects,\n colorSchemes,\n readOnly = false\n}) => {\n const { t } = useTranslation()\n const [currentImagesObject, setCurrentImagesObject] = useState([])\n const [logoUploadDialogOpen, setLogoUploadDialogOpen] = useState(false)\n const [imageUploadDialogOpen, setImageUploadDialogOpen] = useState(false)\n const [logoData, setLogoData] = useState({ path: '', name: '' })\n\n /**\n * useEffect set logo data\n */\n useEffect(() => {\n if (user.getData().company.micrositeLogo.Src) {\n setLogoData(user.getData().company.micrositeLogo)\n }\n }, [user])\n\n /**\n * legalForms\n */\n const legalForms = () => {\n const legalForms = []\n\n Object.keys(forms).forEach(index => {\n legalForms.push(\n \n {forms[index].name}\n \n )\n })\n\n return legalForms\n }\n\n /**\n * handleEmployeeCountChange\n *\n * @param event\n */\n const handleEmployeeCountChange = event => {\n setFormValues({ ...formValues, employeeCount: event.target.value })\n }\n\n /**\n * handleLegalFormChange\n *\n * @param event\n */\n const handleLegalFormChange = event => {\n setFormValues({ ...formValues, legalForm: event.target.value })\n }\n\n /**\n * handleFoundingYearChange\n *\n * @param event\n */\n const handleFoundingYearChange = event => {\n setFormValues({ ...formValues, foundingYear: event.target.value })\n }\n\n /**\n * handleMasterOperationChange\n *\n * @param event\n */\n const handleMasterOperationChange = event => {\n setFormValues({ ...formValues, masterOperation: event.target.value })\n }\n\n /**\n * handleTrainingCompanyChange\n *\n * @param event\n */\n const handleTrainingCompanyChange = event => {\n setFormValues({ ...formValues, trainingCompany: event.target.value })\n }\n\n /**\n * handleCompanyDescriptionChange\n *\n * @param event\n */\n const handleCompanyDescriptionChange = event => {\n setFormValues({ ...formValues, micrositeDescription: event.target.value })\n }\n\n /**\n * hasLogoSrc\n *\n * @returns {boolean}\n */\n const hasLogoSrc = () => {\n return !!logoData.Src\n }\n\n /**\n * handleLogoUploadDialog\n *\n * @returns {Promise}\n */\n const handleLogoUploadDialog = async () => {\n if (hasLogoSrc()) {\n let file\n if (typeof formValues.micrositeLogo.Src === 'string') {\n file = await createFileFromUrl(formValues.micrositeLogo.Src)\n } else {\n file = formValues.micrositeLogo.Src\n }\n const data = await readFile(file)\n\n setCurrentFileObjects([\n {\n file,\n data\n }\n ])\n }\n\n setLogoUploadDialogOpen(true)\n }\n\n /**\n * handleColorSchemeChange\n *\n * @param event\n */\n const handleColorSchemeChange = event => {\n setFormValues({ ...formValues, colorScheme: event.target.value })\n }\n\n /**\n * getColorSchemes\n *\n * @returns {JSX.Element[]}\n */\n const getColorSchemes = () => {\n const colorSchemesMenuItems = []\n\n Object.keys(colorSchemes).forEach(index => {\n colorSchemesMenuItems.push(\n \n {getColorBlocks(colorSchemes[index].Name)}\n  \n {convertColorSchemeNames(colorSchemes[index].Name)}\n \n )\n })\n\n return colorSchemesMenuItems\n }\n\n /**\n * getColorBlocks\n *\n * @param colorSchemeName\n * @returns {JSX.Element|null}\n */\n const getColorBlocks = colorSchemeName => {\n switch (colorSchemeName) {\n case 'Yellow-Green | Beige':\n case 'Neuseeland':\n return (\n <>\n \n  \n \n \n )\n case 'Turquoise | White':\n case 'Polar':\n return (\n <>\n \n  \n \n \n )\n case 'Red | Grey':\n case 'Schweiz':\n return (\n <>\n \n  \n \n \n )\n case 'Lightgrey | Darkgrey':\n case 'Mond':\n return (\n <>\n \n  \n \n \n )\n case 'Blue | Orange':\n case 'San Francisco':\n return (\n <>\n \n  \n \n \n )\n case 'Pink | Grey':\n case 'Monroe':\n return (\n <>\n \n  \n \n \n )\n default:\n return null\n }\n }\n\n /**\n * convertColorSchemeNames\n *\n * @param colorSchemeName\n * @returns {string|*}\n */\n const convertColorSchemeNames = colorSchemeName => {\n switch (colorSchemeName) {\n case 'Yellow-Green | Beige':\n return 'Neuseeland '\n case 'Turquoise | White':\n return 'Polar'\n case 'Red | Grey':\n return 'Schweiz'\n case 'Lightgrey | Darkgrey':\n return 'Mond'\n case 'Blue | Orange':\n return 'San Francisco'\n case 'Pink | Grey':\n return 'Monroe'\n default:\n return colorSchemeName\n }\n }\n\n /**\n * reorder\n *\n * @param list\n * @param startIndex\n * @param endIndex\n * @returns {unknown[]}\n */\n const reorder = (list, startIndex, endIndex) => {\n const result = Array.from(list)\n const [removed] = result.splice(startIndex, 1)\n result.splice(endIndex, 0, removed)\n\n return result\n }\n\n /**\n * onDragEnd\n *\n * @param result\n */\n const onDragEnd = result => {\n // dropped outside the list\n if (!result.destination) {\n return\n }\n\n const items = reorder(\n formValues.micrositeImages,\n result.source.index,\n result.destination.index\n )\n\n setFormValues({ ...formValues, micrositeImages: items })\n }\n\n /**\n * handleImageUploadDialog\n */\n const handleImageUploadDialog = async () => {\n const initialFiles = []\n\n formValues.micrositeImages.map(element => {\n initialFiles.push(element.Src)\n return element\n })\n\n const fileObjs = await Promise.all(\n initialFiles.map(async initialFile => {\n let file\n if (typeof initialFile === 'string') {\n file = await createFileFromUrl(initialFile)\n } else {\n file = initialFile\n }\n const data = await readFile(file)\n\n return {\n file,\n data\n }\n })\n )\n\n setCurrentImagesObject(fileObjs)\n setImageUploadDialogOpen(true)\n }\n\n /**\n * handleCompanyImagesSave\n */\n const handleCompanyImagesSave = () => {\n const formattedImagesArray = []\n currentImagesObject.map(item => {\n formattedImagesArray.push({\n Src: item.data,\n Title: item.file.name,\n Alt: item.file.name\n })\n return item\n })\n setFormValues({ ...formValues, micrositeImages: formattedImagesArray })\n setImageUploadDialogOpen(false)\n }\n\n /**\n * membershipsChecked\n *\n * @param membershipID\n * @returns {boolean}\n */\n const membershipsChecked = membershipID => {\n for (let i = 0; i < formValues.memberships.length; i++) {\n if (parseInt(formValues.memberships[i].ID) === parseInt(membershipID)) {\n return true\n }\n }\n return false\n }\n\n /**\n * handleMembershipChange\n *\n * @param event\n */\n const handleMembershipChange = event => {\n const id = event.target.id.replace('membership_checkbox_', '')\n const filteredMembership = user\n .getData()\n .company.allMemberships.filter(item => {\n return item.ID === id\n })\n const memberships = formValues.memberships\n\n if (event.target.checked) {\n delete filteredMembership[0].__typename\n memberships.push(filteredMembership[0])\n setFormValues(\n Object.assign({}, formValues, {\n memberships: memberships\n })\n )\n } else {\n for (let i = 0; i < formValues.memberships.length; i++) {\n if (parseInt(memberships[i].ID) === parseInt(id)) {\n memberships.splice(i, 1)\n }\n }\n\n setFormValues(Object.assign({}, formValues, { memberships: memberships }))\n }\n }\n\n /**\n * handleAdditionalMembershipsChange\n *\n * @param event\n */\n const handleAdditionalMembershipsChange = event => {\n setFormValues({ ...formValues, additionalMemberships: event.target.value })\n }\n\n /**\n * TooltipInputAdornment\n *\n * @returns {JSX.Element}\n * @constructor\n */\n const TooltipInputAdornment = ({ titleString }) => {\n return (\n \n }\n PopperProps={{\n className: clsx(classes.tooltipItem, classes.tooltipInfo)\n }}\n >\n \n \n \n \n \n )\n }\n\n const membershipElementTooltipped = (item, titleString) => {\n return (\n }\n PopperProps={{\n className: clsx(classes.tooltipItem, classes.tooltipInfo)\n }}\n >\n {membershipElement(item)}\n \n )\n }\n\n const membershipElement = item => {\n return (\n \n }\n label={\n \n \n \n \n \n {item.Title}\n \n \n }\n />\n )\n }\n\n /**\n * inputEmailApplicationTextHelperText\n *\n * @type {string}\n */\n const inputEmailApplicationTextHelperText =\n t('form.label.company.application.text.description') +\n ' {{FIRMEN-KOMPETENZEN}}, {{PROJEKT-NAME}}, {{PROJEKT-ORT}}, {{FIRMEN-GRUENDUNGSJAHR}}, {{FIRMEN-NAME}}, {{FIRMEN-MICROSITE}}, {{FIRMEN-TELEFON}}, {{USER-VORNAME}}, {{USER-NACHNAME}}' +\n '\\n' +\n GetSafe(() => formValueErrors.micrositeEmailApplicationText.message, '')\n\n /**\n * handleEmailApplicationTextChange\n *\n * @param event\n */\n const handleEmailApplicationTextChange = event => {\n setFormValues({\n ...formValues,\n micrositeEmailApplicationText: event.target.value\n })\n }\n\n return (\n <>\n \n \n \n \n \n formValueErrors.employeeCount.hasError, false)}\n label={t('form.label.employee.count')}\n value={formValues.employeeCount}\n helperText={GetSafe(\n () => formValueErrors.employeeCount.message,\n ''\n )}\n onChange={handleEmployeeCountChange}\n margin='normal'\n fullWidth\n disabled={readOnly}\n />\n \n \n {/* TODO: check if the legal form data can come from an API */}\n formValueErrors.legalForm.hasError, false)}\n helperText={GetSafe(() => formValueErrors.legalForm.message, '')}\n onChange={handleLegalFormChange}\n margin='normal'\n fullWidth\n disabled={readOnly}\n >\n {legalForms()}\n \n \n \n formValueErrors.foundingYear.hasError, false)}\n label={t('form.label.founding.year')}\n value={formValues.foundingYear}\n helperText={GetSafe(() => formValueErrors.foundingYear.message, '')}\n onChange={handleFoundingYearChange}\n margin='normal'\n fullWidth\n disabled={readOnly}\n />\n \n \n \n \n {t('form.label.master.operation')}\n \n \n }\n label={t('form.label.yes')}\n />\n }\n label={t('form.label.no')}\n />\n \n {GetSafe(() => formValueErrors.masterOperation.hasError, false) && (\n \n {formValueErrors.masterOperation.message}\n \n )}\n \n \n \n \n \n {t('form.label.training.company')}\n \n \n }\n label={t('form.label.yes')}\n />\n }\n label={t('form.label.no')}\n />\n \n {GetSafe(() => formValueErrors.trainingCompany.hasError, false) && (\n \n {formValueErrors.trainingCompany.message}\n \n )}\n \n \n \n \n )\n }}\n align='left'\n error={GetSafe(\n () => formValueErrors.micrositeDescription.hasError,\n false\n )}\n label={t('form.label.company.description')}\n value={formValues.micrositeDescription}\n helperText={\n `${formValues.micrositeDescription.length}/${COMPANY_DESCRIPTION_LENGTH}` +\n ' ' +\n GetSafe(() => formValueErrors.micrositeDescription.message, '')\n }\n onChange={handleCompanyDescriptionChange}\n margin='normal'\n fullWidth\n disabled={readOnly}\n />\n \n \n {t('form.label.logo')}\n \n {hasLogoSrc() && (\n \n \n \n )}\n \n \n {hasLogoSrc() && t('form.label.company.logo.change')}\n {!hasLogoSrc() && t('form.label.company.logo.add')}\n \n \n \n formValueErrors.colorScheme.hasError, false)}\n helperText={GetSafe(() => formValueErrors.colorScheme.message, '')}\n onChange={handleColorSchemeChange}\n margin='normal'\n fullWidth\n disabled={readOnly}\n >\n {getColorSchemes()}\n \n \n \n {t('form.label.images')}\n \n {/* eslint-disable-next-line react/jsx-handler-names */}\n \n \n {provided => (\n
\n {formValues.micrositeImages.map((item, index) => {\n const internalID = index + 1\n return (\n \n \n {provided => (\n \n \n \n \n \n }\n />\n {\n const clearedArray = formValues.micrositeImages.filter(\n element => element.Src !== item.Src\n )\n setFormValues({\n ...formValues,\n micrositeImages: clearedArray\n })\n }} // eslint-disable-line\n >\n \n \n \n )}\n \n \n \n )\n })}\n {provided.placeholder}\n
\n )}\n
\n
\n {formValues.micrositeImages.length < 5 && (\n <>\n \n \n \n \n \n \n \n \n )}\n }\n dropzoneText={t('form.label.company.images.upload')}\n acceptedFiles={['image/jpeg', 'image/png']}\n filesLimit={5}\n fileObjects={currentImagesObject}\n cancelButtonText={t('general.label.abort')}\n submitButtonText={t('general.label.save')}\n maxFileSize={2500000}\n open={imageUploadDialogOpen}\n onAdd={newFileObjs => {\n const newFiles = [].concat(currentImagesObject, newFileObjs)\n setCurrentImagesObject(newFiles)\n }}\n onDelete={deleteFileObj => {\n const clearedArray = currentImagesObject.filter(\n element => element.data !== deleteFileObj.data\n )\n setCurrentImagesObject(clearedArray)\n }}\n onClose={() => setImageUploadDialogOpen(false)}\n onSave={handleCompanyImagesSave}\n showPreviews\n showFileNamesInPreview={false}\n alertSnackbarProps={{\n anchorOrigin: {\n vertical: 'bottom',\n horizontal: 'right'\n }\n }}\n getFileAddedMessage={fileName => {\n return t('company.info.image.added')\n }}\n getFileRemovedMessage={fileName => {\n return t('company.info.image.removed')\n }}\n getFileLimitExceedMessage={filesLimit => {\n return t('company.info.image.filesLimit', {\n filesLimit: filesLimit\n })\n }}\n getDropRejectMessage={(\n rejectedFile,\n acceptedFiles,\n maxFileSize\n ) => {\n return t('company.info.image.rejected', {\n rejectedFile: rejectedFile.name,\n acceptedFiles: acceptedFiles,\n maxFileSize: maxFileSize / 1000000\n })\n }}\n />\n
\n
\n \n \n \n {t('company.info.label.memberships')}\n \n \n {user.getData().company.allMemberships.map(item => {\n return item.IsBadge\n ? membershipElementTooltipped(\n item,\n 'tooltip.membership.badge'\n )\n : membershipElement(item)\n })}\n \n \n \n \n formValueErrors.additionalMemberships.hasError,\n false\n )}\n label={t('form.label.additionalMemberships')}\n value={formValues.additionalMemberships}\n helperText={GetSafe(\n () => formValueErrors.additionalMemberships.message,\n ''\n )}\n onChange={handleAdditionalMembershipsChange}\n margin='normal'\n fullWidth\n disabled={readOnly}\n />\n \n \n \n )\n }}\n align='left'\n error={GetSafe(\n () => formValueErrors.micrositeEmailApplicationText.hasError,\n false\n )}\n label={t('form.label.company.emailApplication')}\n value={formValues.micrositeEmailApplicationText}\n helperText={inputEmailApplicationTextHelperText}\n onChange={handleEmailApplicationTextChange}\n margin='normal'\n fullWidth\n disabled={readOnly}\n />\n \n \n \n )\n}\n\nexport default CompanyInfoForm\n","import React, { useContext, useState, useEffect } from \"react\";\nimport {\n makeStyles,\n Grid,\n Button,\n Card,\n CircularProgress,\n} from \"@material-ui/core\";\nimport InfoOutlinedIcon from \"@material-ui/icons/InfoOutlined\";\nimport clsx from \"clsx\";\nimport { useTranslation } from \"react-i18next\";\nimport MicrositeDetailsWizardStepper from \"./MicrositeDetailsWizardStepper\";\nimport CompanyInfoForm from \"../Company/CompanyInfoForm\";\nimport GlobalContext from \"../../lib/GlobalContext\";\nimport { green } from \"@material-ui/core/colors\";\nimport FormValueErrorsBuilder from \"../../lib/FormValueErrorsBuilder\";\nimport { useMutation, useQuery } from \"urql\";\nimport { MESSAGE_TYPES } from \"../PopupMessages\";\nimport { navigate } from \"hookrouter\";\nimport ExternalErrorLogger from \"@ennit/react-external-errorlogger\";\nimport LoadingOverlay from \"../LoadingOverlay\";\nimport FormatHelper from \"../../lib/FormatHelper\";\nimport {\n initialFormValuesState,\n initialFormValueErrorsState,\n createFileFromUrl,\n readFile,\n updateCompanyMutation,\n formatImagesArray,\n schema,\n LOADING_OVERLAY_TIMEOUT,\n querySmartconextConf,\n} from \"../Company/CompanyInfoShared\";\n\n/**\n * useStyles\n */\nconst useStyles = makeStyles((theme) => ({\n intro: {\n margin: 20,\n fontSize: 16,\n lineHeight: \"24px\",\n textAlign: \"left\",\n border: \"none\",\n boxShadow: \"none\",\n backgroundColor: \"#e0f6fa\",\n // backgroundColor: '#fdf4e5'\n },\n introItem: {\n padding: 10,\n },\n icon: {\n color: theme.palette.primary.main,\n },\n introContainer: {\n flexWrap: \"nowrap\",\n },\n item: {\n position: \"relative\",\n width: \"100%\",\n maxWidth: 500,\n margin: \"0 auto\",\n },\n itemStepper: {\n maxWidth: 600,\n },\n itemHeader: {\n maxWidth: 444,\n paddingTop: 44,\n paddingBottom: 24,\n textAlign: \"center\",\n [theme.breakpoints.down(\"sm\")]: {\n paddingTop: 20,\n paddingBottom: 20,\n textAlign: \"left\",\n },\n },\n title: {\n margin: 0,\n fontSize: 24,\n lineHeight: \"30px\",\n },\n buttonBack: {\n width: \"50%\",\n color: theme.palette.primary.main,\n marginLeft: \"auto\",\n fontWeight: \"bold\",\n [theme.breakpoints.down(\"sm\")]: {\n width: \"100%\",\n },\n },\n buttonNext: {\n width: \"50%\",\n color: \"#fff\",\n marginRight: \"auto\",\n fontWeight: \"bold\",\n [theme.breakpoints.down(\"sm\")]: {\n width: \"100%\",\n },\n },\n buttonContainer: {\n marginTop: theme.spacing(4),\n },\n gridContainer: {\n width: \"100%\",\n padding: \"16px 0\",\n [theme.breakpoints.down(\"sm\")]: {\n alignItems: \"flex-start\",\n },\n },\n gridItem: {\n width: \"100%\",\n padding: \"8px 0\",\n [theme.breakpoints.down(\"sm\")]: {\n width: \"100%\",\n },\n },\n checkboxGridItem: {\n // width: '50%',\n padding: \"8px 0\",\n [theme.breakpoints.down(\"sm\")]: {\n width: \"100%\",\n },\n },\n button: {\n color: \"#ffffff\",\n width: \"100%\",\n marginTop: \"20px\",\n marginBottom: \"40px\",\n },\n buttonProgress: {\n color: green[500],\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n marginTop: -12,\n marginLeft: -12,\n },\n formLabel: {\n color: theme.palette.text.primary,\n },\n input: {\n marginLeft: 60,\n },\n logoImg: {\n width: \"50%\",\n padding: \"8px 0\",\n [theme.breakpoints.down(\"sm\")]: {\n width: \"100%\",\n },\n },\n buttonImg: {\n color: \"#ffffff\",\n marginBottom: \"20px\",\n },\n label: {\n color: theme.palette.text.primary,\n },\n root: {\n width: \"100%\",\n // maxWidth: 444\n },\n membershipsLogo: {\n width: 80,\n height: \"auto\",\n paddingRight: 20,\n },\n dialogRoot: {\n flexGrow: 1,\n },\n dialog: {\n width: \"100%\",\n paddingBottom: 56,\n \"&::before\": theme.watermarkLogo,\n [theme.breakpoints.down(\"sm\")]: {\n padding: 20,\n },\n },\n startButton: {\n width: \"100%\",\n color: \"#fff\",\n fontWeight: \"bold\",\n },\n dialogTitle: {\n display: \"flex\",\n justifyContent: \"flex-end\",\n alignItems: \"flex-end\",\n paddingBottom: 0,\n },\n listItemPointer: {\n cursor: \"pointer\",\n },\n tooltipItem: {\n maxWidth: 350,\n zIndex: 1333,\n borderRadius: 5,\n background: \"#006A7A\",\n fontSize: 16,\n textAlign: \"center\",\n \"& div\": {\n margin: 0,\n color: \"#fff\",\n },\n },\n tooltipInfo: {\n maxWidth: \"100%\",\n background: theme.palette.background.default,\n \"& div\": {\n maxWidth: \"100%\",\n color: theme.palette.text.primary,\n fontSize: 12,\n lineHeight: \"20px\",\n },\n \"@media (min-width:768px)\": {\n maxWidth: 450,\n },\n },\n tooltipTitle: {\n display: \"flex\",\n alignItems: \"center\",\n },\n}));\n\nconst CompanyInfoStep = ({ step, setStep }) => {\n const classes = useStyles();\n const { t } = useTranslation();\n const { user, setUser, token, setMessage, unsetUser, unsetToken } =\n useContext(GlobalContext);\n const [formValues, setFormValues] = useState(initialFormValuesState);\n const [loadingOverlayOpen, setLoadingOverlayOpen] = useState(false);\n const [currentFileObjects, setCurrentFileObjects] = useState([]);\n const [colorSchemes, setColorSchemes] = useState([]);\n const [{ fetching: companyIsUpdating }, executeCompanyUpdateMutation] =\n useMutation(updateCompanyMutation);\n const [formValueErrors, setFormValueErrors] = useState(\n initialFormValueErrorsState\n );\n const [result, executeQuerySmartconextConf] = useQuery({\n query: querySmartconextConf,\n pause: true,\n });\n\n /**\n * useEffect executeQuerySmartconextConf\n */\n useEffect(() => {\n if (colorSchemes.length === 0) {\n executeQuerySmartconextConf();\n }\n }, [colorSchemes, executeQuerySmartconextConf]);\n\n /**\n * useEffect set FormData\n */\n useEffect(() => {\n const userData = user.getData();\n setFormValues({\n directoryName:\n userData.company.urlSegment || initialFormValuesState.directoryName,\n employeeCount:\n userData.company.employeeCount || initialFormValuesState.employeeCount,\n legalForm: userData.company.legalForm || initialFormValuesState.legalForm,\n foundingYear:\n userData.company.foundingYear || initialFormValuesState.foundingYear,\n masterOperation:\n FormatHelper.boolToString(userData.company.masterOperation) ||\n initialFormValuesState.masterOperation,\n trainingCompany:\n FormatHelper.boolToString(userData.company.trainingCompany) ||\n initialFormValuesState.trainingCompany,\n colorScheme: initialFormValuesState.colorScheme,\n memberships:\n userData.company.memberships || initialFormValuesState.memberships,\n furtherMemberships: initialFormValuesState.furtherMemberships,\n micrositeColorScheme:\n userData.company.micrositeColorScheme ||\n initialFormValuesState.micrositeColorScheme,\n micrositeDescription:\n userData.company.micrositeDescription ||\n initialFormValuesState.micrositeDescription,\n micrositeEmailApplicationText:\n userData.company.micrositeEmailApplicationText ||\n initialFormValuesState.micrositeEmailApplicationText,\n micrositeLogo:\n userData.company.micrositeLogo || initialFormValuesState.micrositeLogo,\n micrositeImages:\n userData.company.micrositeImages ||\n initialFormValuesState.micrositeImages,\n additionalMemberships:\n userData.company.additionalMemberships ||\n initialFormValuesState.additionalMemberships,\n });\n }, [user]);\n\n /**\n * GraphQL trigger and result handling\n */\n useEffect(() => {\n if (!result.fetching) {\n if (result.error) {\n // Check if the user need to be logged out\n if (result.error.message.indexOf(\"User forced logout\") !== -1) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.user.forced.logout\"));\n unsetUser();\n unsetToken();\n navigate(\"/\");\n } else {\n // Something went very wrong\n ExternalErrorLogger.log({\n text: \"Error fetching smartconext conf on CompanyInfo\",\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n errorMessage: result.error.message,\n },\n });\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.general\"));\n }\n } else {\n // Query not fetching right now\n if (\n typeof result.data !== \"undefined\" &&\n typeof result.data.readSmartconextConf !== \"undefined\"\n ) {\n if (colorSchemes.length === 0) {\n setColorSchemes(\n result.data.readSmartconextConf[0].microsite_color_schemes\n );\n setFormValues({\n ...formValues,\n colorScheme: user.getData().company.micrositeColorScheme || \"3\", // Default colorScheme = \"Schweiz\"\n });\n }\n }\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [result])\n\n const handleButtonBack = () => {\n setStep(step - 1 || 0);\n };\n\n const handleButtonNext = async () => {\n formValues.memberships.map((item) => {\n delete item.__typename;\n return item;\n });\n\n formValues.micrositeImages.map((item) => {\n delete item.__typename;\n return item;\n });\n\n const formattedImagesArray = formatImagesArray(formValues);\n\n const fileObjs = await Promise.all(\n formattedImagesArray.map(async (initialFile) => {\n let file;\n if (typeof initialFile.Src === \"string\") {\n file = await createFileFromUrl(initialFile.Src);\n } else {\n file = initialFile.Src;\n }\n const data = await readFile(file);\n\n return {\n file,\n data,\n };\n })\n );\n\n const convertedImagesArray = [];\n fileObjs.map((item) => {\n if (item.data) {\n convertedImagesArray.push({\n Src: item.data,\n Title: item.file.name,\n Alt: item.file.name,\n });\n } else {\n convertedImagesArray.push(item);\n }\n return item;\n });\n\n const logoData = { Src: \"\", Alt: \"\", Title: \"\" };\n if (currentFileObjects[0]) {\n logoData.Src = currentFileObjects[0].data;\n logoData.Alt = currentFileObjects[0].file.name;\n logoData.Title = currentFileObjects[0].file.name;\n } else if (\n formValues.micrositeLogo.Src !== null &&\n formValues.micrositeLogo.Src !== \"\" &&\n formValues.micrositeLogo.Src !== undefined\n ) {\n const logoArray = [formValues.micrositeLogo];\n const logoFile = await Promise.all(\n logoArray.map(async (initialFile) => {\n let file;\n if (typeof initialFile.Src === \"string\") {\n file = await createFileFromUrl(initialFile.Src);\n } else {\n file = initialFile.Src;\n }\n const data = await readFile(file);\n\n return {\n file,\n data,\n };\n })\n );\n const convertedLogoArray = [];\n logoFile.map((item) => {\n if (item.data) {\n convertedLogoArray.push({\n Src: item.data,\n Title: item.file.name,\n Alt: item.file.name,\n });\n } else {\n convertedLogoArray.push(item);\n }\n return item;\n });\n logoData.Src = convertedLogoArray[0].Src;\n logoData.Alt = convertedLogoArray[0].Alt;\n logoData.Title = convertedLogoArray[0].Title;\n }\n\n const formData = {\n hashID: user.getData().company.hashID,\n employeeCount: formValues.employeeCount,\n legalForm: formValues.legalForm,\n foundingYear: formValues.foundingYear,\n masterOperation: formValues.masterOperation,\n micrositeDescription: formValues.micrositeDescription,\n memberships: formValues.memberships,\n trainingCompany: formValues.trainingCompany,\n micrositeImages: convertedImagesArray,\n micrositeLogo: logoData,\n additionalMemberships: formValues.additionalMemberships,\n micrositeEmailApplicationText: formValues.micrositeEmailApplicationText,\n micrositeColorScheme: formValues.colorScheme,\n };\n\n const { error } = schema.validate(formData, { abortEarly: false });\n\n if (error) {\n console.log(error);\n const formErrors = FormValueErrorsBuilder(error, t);\n setFormValueErrors({ ...formErrors });\n window.scrollTo(0, 0);\n } else {\n setFormValueErrors(initialFormValueErrorsState);\n const showLoadingOverlayTimeout = setTimeout(\n () => setLoadingOverlayOpen(true),\n LOADING_OVERLAY_TIMEOUT\n );\n\n executeCompanyUpdateMutation({\n hashId: user.getData().company.hashID,\n numberOfEmployees: formValues.employeeCount,\n legalForm: formValues.legalForm,\n foundingYear: formValues.foundingYear,\n masterBusiness: formValues.masterOperation,\n trainingCompany: formValues.trainingCompany,\n description: formValues.micrositeDescription,\n memberships: formValues.memberships,\n colorScheme: formValues.colorScheme,\n images: convertedImagesArray,\n logo: logoData,\n additionalMemberships: formValues.additionalMemberships,\n emailApplicationText: formValues.micrositeEmailApplicationText,\n }).then((result) => {\n clearTimeout(showLoadingOverlayTimeout);\n setLoadingOverlayOpen(false);\n\n if (result.error) {\n if (result.error.message.indexOf(\"User forced logout\") !== -1) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.user.forced.logout\"));\n unsetUser();\n unsetToken();\n navigate(\"/\");\n } else {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.save\"));\n ExternalErrorLogger.log({\n text: \"Error submitting data on CompanyInfo\",\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n errorMessage: result.error.message,\n },\n });\n }\n } else {\n const micrositeImages = [];\n result.data.updateCompany[0].MicrositeImages.edges.map((item) => {\n micrositeImages.push(item.node);\n return micrositeImages;\n });\n user.setData({\n company: {\n ...formData,\n ...{ micrositeImages: micrositeImages },\n },\n });\n setStep((prevActiveStep) => prevActiveStep + 1);\n setUser(user);\n }\n });\n }\n };\n\n return (\n <>\n \n

\n {t(\"microsite.details.wizard.step.2.title\")}\n

\n \n \n \n \n \n \n {t(\"microsite.details.wizard.step.2.intro\")}\n \n
\n \n \n \n \n \n \n \n \n \n \n {t(\"form.label.back\")}\n \n \n {t(\"form.label.next\")}\n {companyIsUpdating && (\n \n )}\n \n {loadingOverlayOpen && (\n \n )}\n \n \n );\n};\n\nexport default CompanyInfoStep;\n","import React, { useState } from 'react'\nimport Grid from '@material-ui/core/Grid'\nimport CircularProgress from '@material-ui/core/CircularProgress'\nimport { TextField, Typography } from '@material-ui/core'\nimport GetSafe from '../../lib/GetSafe'\nimport { useTranslation } from 'react-i18next'\nimport MenuItem from '@material-ui/core/MenuItem'\nimport FormControlLabel from '@material-ui/core/FormControlLabel'\nimport Checkbox from '@material-ui/core/Checkbox'\nimport Divider from '@material-ui/core/Divider'\nimport UserTypes from '../Onboarding/UserTypes'\n\nconst CompanyBusinessActivitiesForm = ({\n user,\n token,\n classes,\n formValues,\n setFormValues,\n formValueErrors,\n setFormValueErrors,\n initialFormValueErrorsState,\n branchData,\n setBranchData,\n result\n}) => {\n const { t } = useTranslation()\n\n const [hasBranchSubData, setHasBranchSubData] = useState(false)\n\n /**\n * handleBranchCategoryChange\n *\n * @param event\n */\n const handleBranchCategoryChange = event => {\n setFormValueErrors(initialFormValueErrorsState)\n setFormValues(\n Object.assign({}, formValues, {\n branchCategory: event.target.value,\n branchSubs: []\n })\n )\n }\n\n /**\n * branchCategories\n *\n * @returns {[]}\n */\n const branchCategories = () => {\n const branchCategories = []\n\n branchCategories.push(\n \n {t('form.label.please.select')}\n \n )\n\n Object.keys(branchData).forEach(index => {\n branchCategories.push(\n \n {branchData[index].Title}\n \n )\n })\n\n return branchCategories\n }\n\n /**\n * branchCategorySubs\n *\n * @returns {[]}\n */\n const branchCategorySubs = () => {\n const branchCategorySubs = []\n\n Object.keys(branchData).forEach(index => {\n if (\n parseInt(branchData[index].ID) === parseInt(formValues.branchCategory)\n ) {\n for (\n let i = 0;\n i < branchData[index].BusinessSpecialities.edges.length;\n i++\n ) {\n branchCategorySubs.push(\n \n \n }\n label={`${branchData[index].BusinessSpecialities.edges[i].node.Title}`}\n />\n \n )\n }\n }\n })\n\n if (branchCategorySubs.length > 0 && !hasBranchSubData) {\n setHasBranchSubData(true)\n } else if (branchCategorySubs.length === 0 && hasBranchSubData) {\n setHasBranchSubData(false)\n }\n return branchCategorySubs\n }\n\n /**\n * isSubBranchChecked\n *\n * @param subBranches\n */\n const isSubBranchChecked = subBranches => {\n let isChecked = false\n subBranches.map(item => {\n if (otherBranchSubIsChecked(item.node.ID)) {\n isChecked = true\n }\n return item\n })\n\n return isChecked\n }\n\n /**\n * handleOtherBranchChange\n *\n * @param event\n */\n const handleOtherBranchChange = event => {\n const branchID = parseInt(event.target.value)\n if (event.target.checked) {\n handleOtherBranchAdd(branchID)\n } else {\n handleOtherBranchRemove(branchID)\n }\n }\n\n /**\n * branchSubIsChecked\n *\n * @param branchSubId\n */\n const branchSubIsChecked = branchSubId => {\n for (let i = 0; i < formValues.branchSubs.length; i++) {\n if (formValues.branchSubs[i] === parseInt(branchSubId)) {\n return true\n }\n }\n\n return false\n }\n\n /**\n * otherBranchIsChecked\n *\n * @param branchID\n * @returns {boolean}\n */\n const otherBranchIsChecked = branchID => {\n for (let i = 0; i < formValues.otherBusinessActivities.length; i++) {\n if (formValues.otherBusinessActivities[i] === parseInt(branchID)) {\n return true\n }\n }\n return false\n }\n\n /**\n * otherBranchSubIsChecked\n *\n * @param branchSubID\n * @returns {boolean}\n */\n const otherBranchSubIsChecked = branchSubID => {\n for (let i = 0; i < formValues.otherBusinessSpecialities.length; i++) {\n if (formValues.otherBusinessSpecialities[i] === parseInt(branchSubID)) {\n return true\n }\n }\n return false\n }\n\n /**\n * handleBranchSubRemove\n *\n * @param branchSubId\n */\n const handleBranchSubRemove = branchSubId => {\n const newBranchesArray = formValues.branchSubs\n\n for (let i = 0; i < formValues.branchSubs.length; i++) {\n if (newBranchesArray[i] === parseInt(branchSubId)) {\n newBranchesArray.splice(i, 1)\n }\n }\n\n setFormValues(\n Object.assign({}, formValues, { branchSubs: newBranchesArray })\n )\n }\n\n /**\n * handleOtherBranchRemove\n *\n * @param branchId\n */\n const handleOtherBranchRemove = branchId => {\n const newBranchesArray = formValues.otherBusinessActivities\n\n for (let i = 0; i < formValues.otherBusinessActivities.length; i++) {\n if (newBranchesArray[i] === parseInt(branchId)) {\n newBranchesArray.splice(i, 1)\n }\n }\n\n setFormValues(\n Object.assign({}, formValues, {\n otherBusinessActivities: newBranchesArray\n })\n )\n }\n\n /**\n * handleOtherBranchSubRemove\n *\n * @param branchId\n */\n const handleOtherBranchSubRemove = branchId => {\n const newBranchesArray = formValues.otherBusinessSpecialities\n\n for (let i = 0; i < formValues.otherBusinessSpecialities.length; i++) {\n if (newBranchesArray[i] === parseInt(branchId)) {\n newBranchesArray.splice(i, 1)\n }\n }\n\n setFormValues(\n Object.assign({}, formValues, {\n otherBusinessSpecialities: newBranchesArray\n })\n )\n }\n\n /**\n * handleBranchesChange\n *\n * @param event\n */\n const handleBranchSubChange = event => {\n const branchSubId = parseInt(event.target.value)\n if (event.target.checked) {\n handleBranchSubAdd(branchSubId)\n } else {\n handleBranchSubRemove(branchSubId)\n }\n }\n\n /**\n * handleOtherBranchAdd\n *\n * @param branchId\n */\n const handleOtherBranchAdd = branchId => {\n const otherActivities = formValues.otherBusinessActivities\n otherActivities.push(branchId)\n setFormValues(\n Object.assign({}, formValues, {\n otherBusinessActivities: otherActivities\n })\n )\n }\n\n /**\n * handleBranchSubAdd\n *\n * @param branchSubId\n */\n const handleBranchSubAdd = branchSubId => {\n const subs = formValues.branchSubs\n subs.push(branchSubId)\n setFormValues(\n Object.assign({}, formValues, {\n branchSubs: subs\n })\n )\n }\n\n /**\n * handleOtherBranchSubAdd\n *\n * @param branchId\n */\n const handleOtherBranchSubAdd = branchId => {\n const otherSpecialities = formValues.otherBusinessSpecialities\n otherSpecialities.push(branchId)\n setFormValues(\n Object.assign({}, formValues, {\n otherBusinessSpecialities: otherSpecialities\n })\n )\n }\n\n /**\n * handleOtherBranchSubChange\n *\n * @param event\n */\n const handleOtherBranchSubChange = event => {\n const mainBranchID = event.target.getAttribute('main_branch_id')\n\n const branchID = parseInt(event.target.value)\n if (event.target.checked) {\n handleOtherBranchSubAdd(branchID)\n handleOtherBranchChange({\n target: { checked: true, value: mainBranchID }\n })\n } else {\n handleOtherBranchSubRemove(branchID)\n handleOtherBranchChange({\n target: { checked: false, value: mainBranchID }\n })\n }\n }\n\n /**\n * otherBranchCategories\n *\n * @returns {[]}\n */\n const otherBranchCategories = () => {\n // Only PRO users may chose additional activities\n if (user.getData().mode !== UserTypes.PRO) {\n return null\n }\n\n const branches = []\n\n Object.keys(branchData).forEach(index => {\n if (\n parseInt(branchData[index].ID) !== parseInt(formValues.branchCategory)\n ) {\n branches.push(\n \n \n }\n label={`${branchData[index].Title}`}\n />\n {branchData[index].BusinessSpecialities.edges.map(item => {\n return (\n \n \n }\n label={item.node.Title}\n />\n \n )\n })}\n \n )\n }\n })\n\n return (\n <>\n \n \n \n \n \n {t('form.label.other.activity.fields')}\n \n \n \n {branches}\n \n \n )\n }\n\n return (\n <>\n \n {result.fetching && !branchData && (\n \n )}\n {!result.fetching && branchData && (\n {\n handleBranchCategoryChange(event)\n }}\n variant='outlined'\n align='left'\n error={GetSafe(\n () => formValueErrors.branchCategory.hasError,\n false\n )}\n helperText={GetSafe(\n () => formValueErrors.branchCategory.message,\n ''\n )}\n >\n {branchCategories()}\n \n )}\n \n \n {hasBranchSubData && (\n \n {t('form.label.precise.selection')}\n \n )}\n \n \n {branchCategorySubs()}\n \n {otherBranchCategories()}\n \n )\n}\n\nexport default CompanyBusinessActivitiesForm\n","import Joi from '@hapi/joi'\n\n/**\n * Joi validation schema\n */\nexport const schema = Joi.object({\n id: Joi.number(),\n hashID: Joi.string().required(),\n branchCategory: Joi.number()\n .min(0)\n .allow(''),\n branchSubs: Joi.array().items(Joi.number()),\n otherBusinessActivities: Joi.array().items(Joi.number()),\n otherBusinessSpecialities: Joi.array().items(Joi.number())\n})\n\nexport const queryBranches = `\n {\n readBusinessActivities (\n sortBy: [{field: Sort, direction: ASC}],\n ){\n ID,\n Title,\n NogaCode,\n BusinessSpecialities {\n edges {\n node {\n ID,\n Title\n }\n }\n }\n }\n }\n`\n\nexport const updateCompanyMutation = `\n mutation UpdateCompany(\n $hashId: String!,\n $businessActivityID: ID,\n $businessSpecialties: [BusinessSpecialityInput],\n $otherBusinessActivities: [BusinessActivityInput],\n $otherBusinessSpecialities: [BusinessSpecialityInput]\n ) {\n updateCompany(\n HashID: $hashId, \n BusinessActivityID: $businessActivityID\n BusinessSpecialities: $businessSpecialties\n OtherBusinessActivities: $otherBusinessActivities\n OtherBusinessSpecialities: $otherBusinessSpecialities\n ) {\n BusinessActivityID\n BusinessSpecialities {\n edges {\n node {\n ID\n Title\n }\n }\n }\n OtherBusinessActivities {\n edges {\n node {\n ID\n }\n }\n }\n OtherBusinessSpecialities {\n edges {\n node {\n ID\n }\n }\n }\n }\n }\n`\n\nexport const initialFormValuesState = {\n id: '',\n branchCategory: 0,\n branchSubs: [],\n otherBusinessActivities: [],\n otherBusinessSpecialities: []\n}\n\nexport const initialFormValueErrorsState = {\n id: { hasError: false, message: '' },\n branchCategory: { hasError: false, message: '' }\n}\n\nexport const LOADING_OVERLAY_TIMEOUT = 5000\n","import React, { useContext, useState, useCallback, useEffect } from \"react\";\nimport { makeStyles, Grid, Button, Card } from \"@material-ui/core\";\nimport InfoOutlinedIcon from \"@material-ui/icons/InfoOutlined\";\nimport clsx from \"clsx\";\nimport { useTranslation } from \"react-i18next\";\nimport MicrositeDetailsWizardStepper from \"./MicrositeDetailsWizardStepper\";\nimport GlobalContext from \"../../lib/GlobalContext\";\nimport CompanyBusinessActivitiesForm from \"../Company/CompanyBusinessActivitiesForm\";\nimport { useMutation, useQuery } from \"urql\";\nimport FormValueErrorsBuilder from \"../../lib/FormValueErrorsBuilder\";\nimport { MESSAGE_TYPES } from \"../PopupMessages\";\nimport { navigate } from \"hookrouter\";\nimport ExternalErrorLogger from \"@ennit/react-external-errorlogger\";\nimport LoadingOverlay from \"../LoadingOverlay\";\nimport CircularProgress from \"@material-ui/core/CircularProgress\";\nimport { green } from \"@material-ui/core/colors\";\nimport {\n queryBranches,\n updateCompanyMutation,\n initialFormValuesState,\n initialFormValueErrorsState,\n LOADING_OVERLAY_TIMEOUT,\n schema,\n} from \"../Company/CompanyBasicSettingsShared\";\n\n/**\n * useStyles\n */\nconst useStyles = makeStyles((theme) => ({\n intro: {\n margin: 20,\n fontSize: 16,\n lineHeight: \"24px\",\n textAlign: \"left\",\n border: \"none\",\n boxShadow: \"none\",\n backgroundColor: \"#e0f6fa\",\n // backgroundColor: '#fdf4e5'\n },\n introItem: {\n padding: 10,\n },\n icon: {\n color: theme.palette.primary.main,\n },\n introContainer: {\n flexWrap: \"nowrap\",\n },\n item: {\n position: \"relative\",\n width: \"100%\",\n maxWidth: 500,\n margin: \"0 auto\",\n },\n itemStepper: {\n maxWidth: 600,\n },\n itemHeader: {\n maxWidth: 444,\n paddingTop: 44,\n paddingBottom: 24,\n textAlign: \"center\",\n [theme.breakpoints.down(\"sm\")]: {\n paddingTop: 20,\n paddingBottom: 20,\n textAlign: \"left\",\n },\n },\n title: {\n margin: 0,\n fontSize: 24,\n lineHeight: \"30px\",\n },\n buttonBack: {\n width: \"50%\",\n color: theme.palette.primary.main,\n marginLeft: \"auto\",\n fontWeight: \"bold\",\n [theme.breakpoints.down(\"sm\")]: {\n width: \"100%\",\n },\n },\n buttonNext: {\n width: \"50%\",\n color: \"#fff\",\n marginRight: \"auto\",\n fontWeight: \"bold\",\n [theme.breakpoints.down(\"sm\")]: {\n width: \"100%\",\n },\n },\n buttonContainer: {\n marginTop: theme.spacing(4),\n },\n gridContainer: {\n width: \"100%\",\n maxWidth: 1280,\n padding: \"16px 24px\",\n [theme.breakpoints.down(\"sm\")]: {\n alignItems: \"flex-start\",\n },\n },\n gridItem: {\n width: \"100%\",\n padding: \"8px 0\",\n [theme.breakpoints.down(\"sm\")]: {\n width: \"100%\",\n },\n },\n button: {\n color: \"#ffffff\",\n width: \"100%\",\n marginTop: \"20px\",\n marginBottom: \"40px\",\n },\n branchSubCategories: {\n width: \"50%\",\n marginLeft: \"20px\",\n [theme.breakpoints.down(\"sm\")]: {\n width: \"100%\",\n },\n },\n buttonProgress: {\n color: green[500],\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n marginTop: -12,\n marginLeft: -12,\n },\n input: {\n marginLeft: 60,\n },\n checkboxControlIndented: {\n marginLeft: 20,\n },\n}));\n\nconst CompanyBusinessActivitiesStep = ({ step, setStep }) => {\n const classes = useStyles();\n const { t } = useTranslation();\n const { user, token, setUser, setToken, setMessage, unsetUser, unsetToken } =\n useContext(GlobalContext);\n const [branchData, setBranchData] = useState(false);\n const [formValues, setFormValues] = useState(initialFormValuesState);\n const [formValueErrors, setFormValueErrors] = useState(\n initialFormValueErrorsState\n );\n const [loadingOverlayOpen, setLoadingOverlayOpen] = useState(false);\n\n const [{ fetching: companyIsUpdating }, executeCompanyUpdateMutation] =\n useMutation(updateCompanyMutation);\n\n // GraphQL query for branches, gets triggered by calling \"executeBranchesQuery()\"\n const [result, executeBranchesQuery] = useQuery({\n query: queryBranches,\n variables: {},\n pause: true,\n });\n\n /**\n * executeBranchesQueryCallback\n * Implementation of https://reactjs.org/docs/hooks-faq.html#is-it-safe-to-omit-functions-from-the-list-of-dependencies\n */\n const executeBranchesQueryCallback = useCallback(() => {\n if (!result.fetching && !branchData) {\n executeBranchesQuery();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [result.fetching, token.api, branchData, executeBranchesQuery, setToken]);\n\n /**\n * useEffect\n */\n useEffect(() => {\n const userData = user.getData();\n setFormValues({\n id: userData.company.hashID,\n branchCategory:\n userData.company.branchCategory ||\n initialFormValuesState.branchCategory,\n branchSubs:\n userData.company.branchSubs || initialFormValuesState.branchSubs,\n otherBusinessActivities: userData.company.otherBusinessActivities,\n otherBusinessSpecialities: userData.company.otherBusinessSpecialities,\n });\n executeBranchesQueryCallback();\n }, [user, executeBranchesQueryCallback]);\n\n const handleButtonBack = () => {\n setStep(step - 1 || 0);\n };\n\n // GraphQL trigger and result handling\n useEffect(() => {\n if (!result.fetching) {\n if (result.error) {\n if (result.error.message.indexOf(\"User forced logout\") !== -1) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.user.forced.logout\"));\n unsetUser();\n unsetToken();\n navigate(\"/\");\n } else {\n // Something went very wrong\n ExternalErrorLogger.log({\n text: \"Error fetching branches on CompanyBasicSettings\",\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n errorMessage: result.error.message,\n },\n });\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.fetching.branches\"));\n }\n } else {\n // Query not fetching right now\n if (\n typeof result.data !== \"undefined\" &&\n typeof result.data.readBusinessActivities !== \"undefined\" &&\n !branchData\n ) {\n // Without business branches/activities we cannot continue\n if (result.data.readBusinessActivities.length === 0) {\n throw Error(\"No business branches/activities found\");\n }\n\n // Add the projects to the global context\n setBranchData(result.data.readBusinessActivities);\n }\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [result])\n\n const handleButtonNext = () => {\n const formData = {\n hashID: user.getData().company.hashID,\n branchCategory: formValues.branchCategory,\n branchSubs: formValues.branchSubs,\n otherBusinessActivities: formValues.otherBusinessActivities,\n otherBusinessSpecialities: formValues.otherBusinessSpecialities,\n };\n const { error } = schema.validate(formData, { abortEarly: false });\n if (error) {\n const formErrors = FormValueErrorsBuilder(error, t);\n setFormValueErrors({ ...formErrors });\n window.scrollTo(0, 0);\n } else {\n user.setData({ company: { ...formData } });\n setFormValueErrors(initialFormValueErrorsState);\n\n let branchSubsRefined = [];\n formValues.branchSubs.map((item) => {\n branchSubsRefined.push({\n ID: item,\n });\n return item;\n });\n if (!branchSubsRefined.length) {\n branchSubsRefined = null;\n }\n\n let otherBranchesRefined = [];\n formValues.otherBusinessActivities.map((item) => {\n otherBranchesRefined.push({\n ID: item,\n });\n return item;\n });\n if (!otherBranchesRefined.length) {\n otherBranchesRefined = null;\n }\n\n let otherBusinessSpecialitiesRefined = [];\n formValues.otherBusinessSpecialities.map((item) => {\n otherBusinessSpecialitiesRefined.push({\n ID: item,\n });\n return item;\n });\n if (!otherBusinessSpecialitiesRefined.length) {\n otherBusinessSpecialitiesRefined = null;\n }\n\n const showLoadingOverlayTimeout = setTimeout(\n () => setLoadingOverlayOpen(true),\n LOADING_OVERLAY_TIMEOUT\n );\n\n executeCompanyUpdateMutation({\n hashId: user.getData().company.hashID,\n businessActivityID: formValues.branchCategory,\n businessSpecialties: branchSubsRefined,\n otherBusinessActivities: otherBranchesRefined,\n otherBusinessSpecialities: otherBusinessSpecialitiesRefined,\n }).then((result) => {\n clearTimeout(showLoadingOverlayTimeout);\n setLoadingOverlayOpen(false);\n\n if (result.error) {\n if (result.error.message.indexOf(\"User forced logout\") !== -1) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.user.forced.logout\"));\n unsetUser();\n unsetToken();\n navigate(\"/\");\n } else {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.save\"));\n ExternalErrorLogger.log({\n text: \"Error submitting data on CompanyBusinessActivities\",\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n errorMessage: result.error.message,\n },\n });\n }\n } else {\n setStep((prevActiveStep) => prevActiveStep + 1);\n setMessage(MESSAGE_TYPES.SUCCESS, t(\"general.label.save.success\"));\n setUser(user);\n }\n });\n }\n };\n\n return (\n <>\n \n

\n {t(\"microsite.details.wizard.step.3.title\")}\n

\n \n \n \n \n \n \n {t(\"microsite.details.wizard.step.3.intro\")}\n \n
\n \n \n \n \n \n \n \n \n \n \n {t(\"form.label.back\")}\n \n \n {t(\"form.label.next\")}\n {companyIsUpdating && (\n \n )}\n \n {loadingOverlayOpen && (\n \n )}\n \n \n );\n};\n\nexport default CompanyBusinessActivitiesStep;\n","/**\n * DataUrlToFileConverter\n *\n * Usage: var file = dataURLtoFile('data:text/plain;base64,aGVsbG8gd29ybGQ=','hello.txt')\n *\n * @param dataUrl\n * @param filename\n * @returns {File}\n */\nconst dataURLtoFile = (dataUrl, filename) => {\n const arr = dataUrl.split(',')\n const mime = arr[0].match(/:(.*?);/)[1]\n const biteStr = window.atob(arr[1])\n let n = biteStr.length\n const u8arr = new Uint8Array(n)\n\n while (n--) {\n u8arr[n] = biteStr.charCodeAt(n)\n }\n\n return new window.File([u8arr], filename, { type: mime })\n}\n\nexport default dataURLtoFile\n","import Joi from '@hapi/joi'\n\nexport const updateCompanyMutation = `\nmutation UpdateCompany(\n $hashId: String!,\n $references: [MicrositeReferencesInput]\n ) {\n updateCompany(\n HashID: $hashId,\n MicrositeReferences: $references\n ) {\n MicrositeReferences {\n edges {\n node {\n Sort\n Title\n Content\n Location\n Year\n Month\n ButtonTitle\n ButtonLink\n MicrositeReferencesImages {\n edges { \n node {\n Src\n Title\n Alt\n }\n }\n }\n }\n }\n }\n }\n }\n`\n\n/**\n * Joi validation schema\n */\nexport const schema = Joi.object({\n Sort: Joi.number().allow(null),\n Title: Joi.string().required(),\n ButtonLink: Joi.string().allow(''),\n ButtonTitle: Joi.string().allow(''),\n Content: Joi.string().allow(''),\n Location: Joi.string().allow(''),\n Month: Joi.number().allow(''),\n Year: Joi.number().allow(''),\n MicrositeReferencesImages: Joi.array().min(0)\n})\n\nexport const REFERENCE_DESCRIPTION_LENGTH = 1000\n","import React, { useState, useEffect, useContext } from \"react\";\nimport { DragDropContext, Draggable, Droppable } from \"react-beautiful-dnd\";\nimport ListItem from \"@material-ui/core/ListItem\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport ListItemIcon from \"@material-ui/core/ListItemIcon\";\nimport ListItemText from \"@material-ui/core/ListItemText\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport List from \"@material-ui/core/List\";\nimport Grid from \"@material-ui/core/Grid\";\nimport clsx from \"clsx\";\nimport LoadingOverlay from \"../LoadingOverlay\";\nimport GlobalContext from \"../../lib/GlobalContext\";\nimport { MESSAGE_TYPES } from \"../PopupMessages\";\nimport { navigate } from \"hookrouter\";\nimport ExternalErrorLogger from \"@ennit/react-external-errorlogger\";\nimport { useTranslation } from \"react-i18next\";\nimport GetSafe from \"../../lib/GetSafe\";\nimport DataUrlToFileConverter from \"../../lib/DataUrlToFileConverter\";\nimport { DropzoneDialogBase } from \"material-ui-dropzone\";\nimport {\n Dialog,\n DialogContent,\n DialogTitle,\n Divider,\n TextField,\n Typography,\n Button,\n} from \"@material-ui/core\";\nimport CircularProgress from \"@material-ui/core/CircularProgress\";\nimport FormValueErrorsBuilder from \"../../lib/FormValueErrorsBuilder\";\nimport { useMutation } from \"urql\";\nimport {\n Edit as EditIcon,\n Add as AddIcon,\n DragIndicator as DragIndicatorIcon,\n Delete as DeleteIcon,\n Close as CloseIcon,\n} from \"@material-ui/icons\";\nimport {\n schema,\n updateCompanyMutation,\n REFERENCE_DESCRIPTION_LENGTH,\n} from \"./CompanyReferencesShared\";\n\nconst CompanyReferencesForm = ({\n classes,\n formValues,\n setFormValues,\n setFormValueErrors,\n formValueErrors,\n initialFormValues,\n initialFormValueErrorsState,\n references,\n setReferences,\n dialogContent,\n introText,\n}) => {\n const { t } = useTranslation();\n const [editReferenceDialogOpen, setEditReferenceDialogOpen] = useState(false);\n const [imageUploadDialogOpen, setImageUploadDialogOpen] = useState(false);\n const [referenceImagesObjects, setReferenceImagesObjects] = useState([]);\n const [loadingOverlayOpen, setLoadingOverlayOpen] = useState(false);\n const { user, unsetUser, token, unsetToken, setMessage } =\n useContext(GlobalContext);\n\n const months = [\n t(\"general.label.january\"),\n t(\"general.label.february\"),\n t(\"general.label.march\"),\n t(\"general.label.april\"),\n t(\"general.label.may\"),\n t(\"general.label.june\"),\n t(\"general.label.july\"),\n t(\"general.label.august\"),\n t(\"general.label.september\"),\n t(\"general.label.october\"),\n t(\"general.label.november\"),\n t(\"general.label.december\"),\n ];\n\n const [{ fetching: companyIsUpdating }, executeCompanyUpdateMutation] =\n useMutation(updateCompanyMutation);\n\n /**\n * useEffect\n */\n useEffect(() => {\n setReferences(user.getData().company.micrositeReferences);\n }, [setReferences, user]);\n\n /**\n * reorder\n *\n * @param list\n * @param startIndex\n * @param endIndex\n * @returns {unknown[]}\n */\n const reorder = (list, startIndex, endIndex) => {\n const result = Array.from(list);\n const [removed] = result.splice(startIndex, 1);\n result.splice(endIndex, 0, removed);\n\n return result;\n };\n\n /**\n * handleReferenceImagesSave\n *\n * @param images\n */\n const handleReferenceImagesSave = (images) => {\n setFormValues({ ...formValues, Images: formatImagesObject(images) });\n };\n\n /**\n * onDragEnd\n *\n * @param result\n */\n const onDragEnd = async (result) => {\n // dropped outside the list\n if (!result.destination) {\n return;\n }\n\n const reorderedListData = reorder(\n references,\n result.source.index,\n result.destination.index\n );\n\n setReferences(reorderedListData);\n setLoadingOverlayOpen(true);\n\n // Convert the images to base64 to push them into the API\n const asyncRes = convertImagesToBase64(reorderedListData);\n\n Promise.all(asyncRes).then((completedReorderedList) => {\n executeCompanyUpdateMutation({\n hashId: user.getData().company.hashID,\n references: completedReorderedList,\n }).then((result) => {\n if (result.error) {\n if (result.error.message.indexOf(\"User forced logout\") !== -1) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.user.forced.logout\"));\n unsetUser();\n unsetToken();\n navigate(\"/\");\n } else {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.save\"));\n ExternalErrorLogger.log({\n text: \"Error submitting data on CompanyReferences\",\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n errorMessage: result.error.message,\n },\n });\n }\n } else {\n const micrositeReferences = [];\n result.data.updateCompany[0].MicrositeReferences.edges.map((item) => {\n delete item.node.__typename;\n const referenceImages = [];\n item.node.MicrositeReferencesImages.edges.map((image) => {\n delete image.node.__typename;\n referenceImages.push(image.node);\n return image;\n });\n item.node.MicrositeReferencesImages = referenceImages;\n micrositeReferences.push(item.node);\n return micrositeReferences;\n });\n user.setData({\n company: {\n micrositeReferences: micrositeReferences,\n },\n });\n setMessage(MESSAGE_TYPES.SUCCESS, t(\"general.label.save.success\"));\n }\n });\n });\n };\n\n /**\n * onImagesDragEnd\n *\n * @param result\n */\n const onImagesDragEnd = (result) => {\n // dropped outside the list\n if (!result.destination) {\n return;\n }\n\n const items = reorder(\n referenceImagesObjects,\n result.source.index,\n result.destination.index\n );\n\n setReferenceImagesObjects(items);\n handleReferenceImagesSave(items);\n };\n\n /**\n * getMonths\n *\n * @returns {[]}\n */\n const getMonths = () => {\n const menuItems = [];\n months.map((item, index) => {\n menuItems.push(\n \n {item}\n \n );\n return item;\n });\n return menuItems;\n };\n\n /**\n * getYears\n *\n * @returns {[]}\n */\n const getYears = () => {\n const years = [];\n const lowEnd = 1900;\n const highEnd = new Date().getFullYear();\n for (let i = highEnd; i >= lowEnd; i--) {\n years.push(\n \n {i}\n \n );\n }\n\n return years;\n };\n\n /**\n * handleReferenceTitleChange\n *\n * @param event\n */\n const handleReferenceTitleChange = (event) => {\n setFormValues({ ...formValues, Title: event.target.value });\n };\n\n /**\n * handleReferenceButtonTitleChange\n *\n * @param event\n */\n const handleReferenceButtonTitleChange = (event) => {\n setFormValues({ ...formValues, ButtonTitle: event.target.value });\n };\n\n /**\n * handleReferenceButtonLinkChange\n *\n * @param event\n */\n const handleReferenceButtonLinkChange = (event) => {\n setFormValues({ ...formValues, ButtonLink: event.target.value });\n };\n\n /**\n * handleReferenceContentChange\n *\n * @param event\n */\n const handleReferenceContentChange = (event) => {\n setFormValues({ ...formValues, Content: event.target.value });\n };\n\n /**\n * handleReferenceLocationChange\n *\n * @param event\n */\n const handleReferenceLocationChange = (event) => {\n setFormValues({ ...formValues, Location: event.target.value });\n };\n\n /**\n * handleMonthChange\n *\n * @param event\n */\n const handleMonthChange = (event) => {\n setFormValues({ ...formValues, Month: event.target.value });\n };\n\n /**\n * handleYearChange\n *\n * @param event\n */\n const handleYearChange = (event) => {\n setFormValues({ ...formValues, Year: event.target.value });\n };\n\n /**\n * handleDeleteReference\n *\n * @param item\n */\n const handleDeleteReference = (item) => {\n const clearedArray = references.filter(\n (element) => element.Sort !== item.Sort\n );\n\n user.setData({\n company: {\n micrositeReferences: clearedArray,\n },\n });\n setLoadingOverlayOpen(true);\n\n // Convert the images to base64 to push them into the API\n const asyncRes = convertImagesToBase64(clearedArray);\n\n Promise.all(asyncRes).then((convertedReferences) => {\n executeCompanyUpdateMutation({\n hashId: user.getData().company.hashID,\n references: convertedReferences,\n }).then((result) => {\n if (result.error) {\n if (result.error.message.indexOf(\"User forced logout\") !== -1) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.user.forced.logout\"));\n unsetUser();\n unsetToken();\n navigate(\"/\");\n } else {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.save\"));\n ExternalErrorLogger.log({\n text: \"Error submitting data on CompanyReferences\",\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n errorMessage: result.error.message,\n },\n });\n }\n } else {\n const micrositeReferences = [];\n result.data.updateCompany[0].MicrositeReferences.edges.map((item) => {\n delete item.node.__typename;\n const referenceImages = [];\n item.node.MicrositeReferencesImages.edges.map((image) => {\n delete image.node.__typename;\n referenceImages.push(image.node);\n return image;\n });\n item.node.MicrositeReferencesImages = referenceImages;\n micrositeReferences.push(item.node);\n return micrositeReferences;\n });\n user.setData({\n company: {\n micrositeReferences: micrositeReferences,\n },\n });\n setMessage(MESSAGE_TYPES.SUCCESS, t(\"general.label.delete.success\"));\n }\n });\n });\n };\n\n /**\n * editReferenceDialog\n */\n const editReferenceDialog = () => {\n return (\n \n \n {\n setEditReferenceDialogOpen(false);\n setFormValues(initialFormValues);\n }}\n >\n \n \n \n \n {\n dialogContent = node;\n }}\n >\n \n \n

\n {t(\"company.label.references\")}\n

\n

{introText}

\n
\n \n formValueErrors.Title.hasError, false)}\n label={t(\"form.label.title\")}\n value={formValues.Title}\n helperText={GetSafe(() => formValueErrors.Title.message, \"\")}\n onChange={handleReferenceTitleChange}\n margin=\"normal\"\n fullWidth\n />\n \n \n formValueErrors.Content.hasError, false)}\n label={t(\"form.label.text\")}\n value={formValues.Content}\n helperText={\n `${\n formValues.Content?.length || 0\n }/${REFERENCE_DESCRIPTION_LENGTH}` +\n \" \" +\n GetSafe(() => formValueErrors.Content.message, \"\")\n }\n onChange={handleReferenceContentChange}\n margin=\"normal\"\n fullWidth\n />\n \n \n formValueErrors.Location.hasError,\n false\n )}\n label={t(\"form.label.location\")}\n value={formValues.Location}\n helperText={GetSafe(\n () => formValueErrors.Location.message,\n \"\"\n )}\n onChange={handleReferenceLocationChange}\n margin=\"normal\"\n fullWidth\n />\n \n \n \n formValueErrors.Month.hasError, false)}\n helperText={GetSafe(() => formValueErrors.Month.message, \"\")}\n onChange={handleMonthChange}\n margin=\"normal\"\n >\n {getMonths()}\n \n formValueErrors.Year.hasError, false)}\n helperText={GetSafe(() => formValueErrors.Year.message, \"\")}\n onChange={handleYearChange}\n margin=\"normal\"\n >\n {getYears()}\n \n \n \n formValueErrors.ButtonTitle.hasError, false)}\n label={t(\"form.label.buttontitle\")}\n value={formValues.ButtonTitle}\n helperText={GetSafe(() => formValueErrors.ButtonTitle.message, \"\")}\n onChange={handleReferenceButtonTitleChange}\n margin=\"normal\"\n fullWidth\n />\n \n \n formValueErrors.ButtonLink.hasError, false)}\n label={t(\"form.label.buttonlink\")}\n value={formValues.ButtonLink}\n helperText={GetSafe(() => formValueErrors.ButtonLink.message, \"\")}\n onChange={handleReferenceButtonLinkChange}\n margin=\"normal\"\n fullWidth\n />\n \n \n \n {t(\"form.label.images.references\")}\n \n \n {/* eslint-disable-next-line react/jsx-handler-names */}\n \n \n {(provided) => (\n \n {referenceImagesObjects.map((item, index) => {\n const internalID = index + 1;\n return (\n \n \n {(provided) => (\n \n \n \n \n \n }\n secondary={\n \n {item.file.name}\n \n }\n />\n {\n const clearedArray =\n referenceImagesObjects.filter(\n (element) =>\n element.data !== item.data\n );\n setReferenceImagesObjects(\n clearedArray\n );\n handleReferenceImagesSave(\n clearedArray\n );\n }} // eslint-disable-line\n >\n \n \n \n )}\n \n \n \n );\n })}\n {provided.placeholder}\n \n )}\n \n \n {referenceImagesObjects.length < 5 && (\n setImageUploadDialogOpen(true)}\n >\n {t(\"form.label.reference.images.add\")}\n \n )}\n {GetSafe(() => formValueErrors.Images.hasError, false) && (\n
\n {formValueErrors.Images.message}\n
\n )}\n }\n dropzoneText={t(\"form.label.company.images.upload\")}\n acceptedFiles={[\"image/jpeg\", \"image/png\", \"image/svg+xml\"]}\n filesLimit={5}\n fileObjects={referenceImagesObjects}\n cancelButtonText={t(\"general.label.abort\")}\n submitButtonText={t(\"general.label.save\")}\n maxFileSize={800000}\n open={imageUploadDialogOpen}\n onAdd={(newFileObjs) => {\n setReferenceImagesObjects(\n [].concat(referenceImagesObjects, newFileObjs)\n );\n }}\n onDelete={(deleteFileObj) => {\n const clearedArray = referenceImagesObjects.filter(\n (element) => element.data !== deleteFileObj.data\n );\n setReferenceImagesObjects(clearedArray);\n }}\n onClose={() => setImageUploadDialogOpen(false)}\n onSave={() => {\n setImageUploadDialogOpen(false);\n handleReferenceImagesSave(referenceImagesObjects);\n }}\n showPreviews\n showFileNamesInPreview={false}\n alertSnackbarProps={{\n anchorOrigin: {\n vertical: \"bottom\",\n horizontal: \"right\",\n },\n }}\n getFileAddedMessage={(fileName) => {\n return t(\"company.info.logo.added\", {\n fileName: fileName,\n });\n }}\n getFileRemovedMessage={(fileName) => {\n return t(\"company.info.logo.removed\", {\n fileName: fileName,\n });\n }}\n getFileLimitExceedMessage={(filesLimit) => {\n return t(\"company.info.logo.filesLimit\", {\n filesLimit: filesLimit,\n });\n }}\n getDropRejectMessage={(\n rejectedFile,\n acceptedFiles,\n maxFileSize\n ) => {\n return t(\"company.info.logo.rejected\", {\n rejectedFile: rejectedFile.name,\n acceptedFiles: acceptedFiles,\n maxFileSize: maxFileSize / 1000,\n });\n }}\n />\n
\n
\n \n \n {t(\"general.label.save\")}\n {companyIsUpdating && (\n \n )}\n \n \n \n \n
\n \n );\n };\n\n /**\n * handleEditReference\n *\n * @param item\n */\n const handleEditReference = (item) => {\n // Convert the images to base64 to push them into the API\n const asyncRes = convertImagesToBase64([item]);\n\n Promise.all(asyncRes).then(() => {\n setFormValues({\n Sort: item.Sort,\n Title: item.Title,\n ButtonTitle: item.ButtonTitle,\n ButtonLink: item.ButtonLink,\n Content: item.Content,\n Location: item.Location,\n Month: item.Month,\n Year: item.Year,\n Images: item.MicrositeReferencesImages,\n });\n\n if (item.MicrositeReferencesImages !== undefined) {\n const reformattedImages = [];\n item.MicrositeReferencesImages.map((element) => {\n if (element.Src.indexOf('missing-') === -1) {\n reformattedImages.push({\n data: element.Src,\n file: DataUrlToFileConverter(element.Src, element.Title),\n });\n }\n \n return element;\n });\n\n if (reformattedImages.length > 0) {\n setReferenceImagesObjects(reformattedImages);\n }\n }\n\n setEditReferenceDialogOpen(true);\n });\n };\n\n /**\n * convertImagesToBase64\n *\n * @param referenceListData array of objects\n * @returns {*}\n */\n const convertImagesToBase64 = (referenceListData) => {\n return referenceListData.map(async (item) => {\n delete item.__typename;\n\n const referenceImages = [];\n item.MicrositeReferencesImages.map((element) => {\n referenceImages.push(element.Src);\n return element;\n });\n\n const fileObjs = await Promise.all(\n referenceImages.map(async (referenceImage) => {\n let file;\n \n if (typeof referenceImage === \"string\") {\n file = await createFileFromUrl(referenceImage);\n } else {\n file = referenceImage;\n }\n\n const data = await readFile(file);\n\n return {\n file,\n data,\n };\n })\n );\n \n item.MicrositeReferencesImages = formatImagesObject(fileObjs);\n return item;\n });\n };\n\n /**\n * formatImagesObject\n *\n * @param images\n * @returns {[]}\n */\n const formatImagesObject = (images) => {\n const formattedImagesObject = [];\n \n images.map((item, index) => {\n formattedImagesObject.push({\n Src: item.data || `missing-${index}`,\n Title: item.file?.name || `missing-${index}`,\n Alt: item.file?.name || `missing-${index}`,\n });\n \n return item;\n });\n \n return formattedImagesObject;\n };\n\n /**\n * readFile\n *\n * @param file\n * @returns {Promise}\n */\n const readFile = (file) => {\n if (!file) {\n return Promise.resolve()\n }\n\n return new Promise((resolve, reject) => {\n const reader = new window.FileReader();\n \n reader.onload = (event) => {\n if (event && event.target) {\n resolve(event.target.result);\n }\n };\n \n reader.onerror = (event) => {\n reader.abort();\n reject(event);\n };\n \n reader.readAsDataURL(file);\n });\n };\n\n /**\n * createFileFromUrl\n *\n * @param url\n * @returns {Promise}\n */\n const createFileFromUrl = async (url) => {\n const response = await window.fetch(url);\n const data = await response.blob();\n const metadata = { type: data.type };\n const filename = url.replace(/\\?.+/, \"\").split(\"/\").pop();\n return new window.File([data], filename, metadata);\n };\n\n /**\n * handleFormSubmit\n */\n const handleFormSubmit = () => {\n // Convert the images to base64 to push them into the API\n const asyncRes = convertImagesToBase64(references);\n\n Promise.all(asyncRes).then((convertedReferences) => {\n const formData = {\n Sort: formValues.Sort,\n Title: formValues.Title,\n Content: formValues.Content,\n Location: formValues.Location,\n ButtonTitle: formValues.ButtonTitle,\n ButtonLink: formValues.ButtonLink,\n Month: formValues.Month?.toString(),\n Year: formValues.Year?.toString(),\n MicrositeReferencesImages: formValues.Images,\n };\n const { error } = schema.validate(formData, {\n abortEarly: false,\n });\n if (error) {\n const formErrors = FormValueErrorsBuilder(error, t);\n setFormValueErrors({ ...formErrors });\n if (dialogContent) {\n dialogContent.scrollIntoView({\n behavior: \"smooth\",\n block: \"start\",\n });\n }\n } else {\n setFormValueErrors(initialFormValueErrorsState);\n\n let newReferences = [];\n if (formData.Sort === null) {\n // it is a new reference\n const highestSortValue = Math.max.apply(\n Math,\n convertedReferences.map((object) => {\n return object.Sort;\n })\n );\n formData.Sort = highestSortValue + 1;\n newReferences = convertedReferences.concat(formData);\n } else {\n // it is an existing reference\n const index = convertedReferences.findIndex(\n (element) => element.Sort === formData.Sort\n );\n // if we got an index, replace\n if (~index) {\n convertedReferences[index] = formData;\n }\n newReferences = convertedReferences;\n }\n\n newReferences.map((item) => {\n delete item.__typename;\n return item;\n });\n\n executeCompanyUpdateMutation({\n hashId: user.getData().company.hashID,\n references: newReferences,\n }).then((result) => {\n if (result.error) {\n if (result.error.message.indexOf(\"User forced logout\") !== -1) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.user.forced.logout\"));\n unsetUser();\n unsetToken();\n navigate(\"/\");\n } else {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.save\"));\n ExternalErrorLogger.log({\n text: \"Error submitting data on CompanyReferences\",\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n errorMessage: result.error.message,\n },\n });\n }\n } else {\n const micrositeReferences = [];\n result.data.updateCompany[0].MicrositeReferences.edges.map(\n (item) => {\n delete item.node.__typename;\n const referenceImages = [];\n item.node.MicrositeReferencesImages.edges.map((image) => {\n delete image.node.__typename;\n referenceImages.push(image.node);\n return image;\n });\n item.node.MicrositeReferencesImages = referenceImages;\n micrositeReferences.push(item.node);\n return micrositeReferences;\n }\n );\n user.setData({\n company: {\n micrositeReferences: micrositeReferences,\n },\n });\n setMessage(MESSAGE_TYPES.SUCCESS, t(\"general.label.save.success\"));\n }\n });\n }\n });\n };\n\n /**\n * return\n */\n return (\n <>\n \n \n {/* eslint-disable-next-line react/jsx-handler-names */}\n {references !== null && (\n \n \n {(provided) => (\n
\n {references.map((item, index) => {\n const internalID = item.Sort + 1;\n return (\n \n \n {(provided) => (\n \n \n \n \n \n \n {item.Content}\n \n
\n \n {item.Location}{\" \"}\n {item.Month\n ? item.Month.toString().length === 1\n ? 0 + item.Month.toString() + \".\"\n : item.Month + \".\"\n : \"\"}\n {item.Year}\n \n
\n {item.MicrositeReferencesImages !==\n undefined &&\n item.MicrositeReferencesImages.map(\n (image) => {\n return image.Src && image.Src.length > 0 ? (\n \n ) : null;\n }\n )}\n \n }\n />\n handleEditReference(item)}\n >\n \n \n handleDeleteReference(item)}\n >\n \n \n \n )}\n
\n \n
\n );\n })}\n {provided.placeholder}\n
\n )}\n
\n
\n )}\n {references !== null && references.length < 4 && (\n setEditReferenceDialogOpen(true)}\n >\n \n \n \n \n \n )}\n {editReferenceDialog()}\n
\n {loadingOverlayOpen && (\n \n )}\n
\n \n );\n};\n\nexport default CompanyReferencesForm;\n","import React, { useState } from 'react'\nimport { makeStyles, Grid, Button, Card } from '@material-ui/core'\nimport InfoOutlinedIcon from '@material-ui/icons/InfoOutlined'\nimport clsx from 'clsx'\nimport { useTranslation } from 'react-i18next'\nimport MicrositeDetailsWizardStepper from './MicrositeDetailsWizardStepper'\nimport CompanyReferencesForm from '../Company/CompanyReferencesForm'\nimport { navigate } from 'hookrouter'\n\n/**\n * useStyles\n */\nconst useStyles = makeStyles(theme => ({\n intro: {\n margin: 20,\n fontSize: 16,\n lineHeight: '24px',\n textAlign: 'left',\n border: 'none',\n boxShadow: 'none',\n backgroundColor: '#e0f6fa'\n // backgroundColor: '#fdf4e5'\n },\n introItem: {\n padding: 10\n },\n icon: {\n color: theme.palette.primary.main\n },\n introContainer: {\n flexWrap: 'nowrap'\n },\n item: {\n position: 'relative',\n width: '100%',\n maxWidth: 500,\n margin: '0 auto'\n },\n itemStepper: {\n maxWidth: 600\n },\n itemHeader: {\n maxWidth: 444,\n paddingTop: 44,\n paddingBottom: 24,\n textAlign: 'center',\n [theme.breakpoints.down('sm')]: {\n paddingTop: 20,\n paddingBottom: 20,\n textAlign: 'left'\n }\n },\n title: {\n margin: 0,\n fontSize: 24,\n lineHeight: '30px'\n },\n buttonBack: {\n width: '50%',\n color: theme.palette.primary.main,\n marginLeft: 'auto',\n fontWeight: 'bold',\n [theme.breakpoints.down('sm')]: {\n width: '100%'\n }\n },\n buttonNext: {\n width: '50%',\n color: '#fff',\n marginRight: 'auto',\n fontWeight: 'bold',\n [theme.breakpoints.down('sm')]: {\n width: '100%'\n }\n },\n buttonContainer: {\n marginTop: theme.spacing(4)\n },\n gridContainer: {\n width: '100%',\n padding: '16px 0',\n [theme.breakpoints.down('sm')]: {\n alignItems: 'flex-start'\n }\n },\n gridItem: {\n width: '100%',\n padding: '8px 0',\n [theme.breakpoints.down('sm')]: {\n width: '100%'\n }\n },\n button: {\n color: '#ffffff',\n width: '100%',\n marginTop: '20px',\n marginBottom: '40px'\n },\n img: {\n width: '20%',\n padding: '8px 8px 8px 0px',\n [theme.breakpoints.down('sm')]: {\n width: '100%'\n }\n },\n label: {\n color: theme.palette.text.primary\n },\n root: {\n width: '100%'\n },\n dialogRoot: {\n flexGrow: 1\n },\n dialogTitle: {\n display: 'flex',\n justifyContent: 'flex-end',\n alignItems: 'flex-end',\n paddingBottom: 0\n },\n dialog: {\n width: '100%',\n paddingBottom: 56,\n '&::before': theme.watermarkLogo,\n [theme.breakpoints.down('sm')]: {\n padding: 20\n }\n },\n startButton: {\n width: '100%',\n color: '#fff',\n fontWeight: 'bold'\n },\n textFieldSmall: {\n width: '50%',\n '&:first-of-type': {\n width: 'calc(50% - 24px)',\n marginRight: 24\n },\n [theme.breakpoints.down('sm')]: {\n width: '100%',\n '&:first-of-type': {\n width: '100%'\n }\n }\n },\n buttonImg: {\n color: '#ffffff',\n marginBottom: '20px'\n },\n logoImg: {\n width: '50%',\n padding: '8px 0',\n [theme.breakpoints.down('sm')]: {\n width: '100%'\n }\n },\n imagesError: {\n fontSize: '0.75rem',\n marginLeft: 14,\n marginRight: 14,\n color: '#ff1744'\n },\n addButtonText: {\n paddingTop: 3,\n paddingRight: 15,\n paddingBottom: 3,\n paddingLeft: 15,\n fontWeight: 'bold'\n },\n addReferenceButton: {\n color: theme.palette.primary.main,\n border: '1px solid rgba(0, 179, 207, 0.5)',\n backgroundColor: 'white'\n },\n listItemPointer: {\n cursor: 'pointer'\n },\n loadingProgress: {\n position: 'absolute',\n top: '50%',\n left: '50%',\n marginTop: -12,\n marginLeft: -12\n }\n}))\n\nconst initialFormValues = {\n Sort: null,\n Title: '',\n Content: '',\n Location: '',\n Month: '',\n Year: '',\n Images: []\n}\n\nconst initialFormValueErrorsState = {\n Title: { hasError: false, message: '' },\n Content: { hasError: false, message: '' },\n Location: { hasError: false, message: '' },\n Month: { hasError: false, message: '' },\n Year: { hasError: false, message: '' },\n Images: { hasError: false, message: '' }\n}\n\nconst CompanyReferencesStep = ({ step, setStep }) => {\n const dialogContent = null\n const classes = useStyles()\n const { t } = useTranslation()\n const [references, setReferences] = useState(null)\n const [formValues, setFormValues] = useState(initialFormValues)\n const [formValueErrors, setFormValueErrors] = useState(\n initialFormValueErrorsState\n )\n\n const handleButtonBack = () => {\n setStep(step - 1 || 0)\n }\n\n const handleButtonDone = () => {\n navigate('/')\n }\n\n return (\n <>\n \n

\n {t('microsite.details.wizard.step.4.title')}\n

\n \n \n \n \n \n \n {t('microsite.details.wizard.step.4.intro')}\n \n
\n \n \n \n \n \n \n \n \n \n \n {t('form.label.back')}\n \n \n {t('microsite.details.wizard.label.complete')}\n \n \n \n )\n}\n\nexport default CompanyReferencesStep\n","import React from 'react'\nimport { makeStyles, Grid, Button } from '@material-ui/core'\nimport clsx from 'clsx'\nimport { useTranslation } from 'react-i18next'\nimport MicrositeDetailsWizardStepper from './MicrositeDetailsWizardStepper'\n\n/**\n * useStyles\n */\nconst useStyles = makeStyles(theme => ({\n item: {\n position: 'relative',\n width: '100%',\n maxWidth: 330,\n margin: '0 auto'\n },\n itemStepper: {\n maxWidth: 600\n },\n itemHeader: {\n maxWidth: 444,\n paddingTop: 44,\n paddingBottom: 24,\n textAlign: 'center',\n [theme.breakpoints.down('sm')]: {\n paddingTop: 20,\n paddingBottom: 20,\n textAlign: 'left'\n }\n },\n title: {\n margin: 0,\n fontSize: 24,\n lineHeight: '30px'\n },\n buttonBack: {\n width: '50%',\n color: theme.palette.primary.main,\n marginLeft: 'auto',\n fontWeight: 'bold',\n [theme.breakpoints.down('sm')]: {\n width: '100%'\n }\n },\n buttonNext: {\n width: '50%',\n color: '#fff',\n marginRight: 'auto',\n fontWeight: 'bold',\n [theme.breakpoints.down('sm')]: {\n width: '100%'\n }\n },\n buttonContainer: {\n marginTop: theme.spacing(4)\n }\n}))\n\nconst CompleteWizardStep = ({ step, setStep }) => {\n const classes = useStyles()\n const { t } = useTranslation()\n\n const handleButtonBack = () => {\n setStep(step - 1 || 0)\n }\n\n const handleButtonNext = () => {\n console.log('sumbit and redirect to company/profile')\n }\n\n return (\n <>\n \n

{t('microsite.details.wizard.title')}

\n

\n {t('microsite.details.wizard.step.5.intro')}\n

\n
\n \n \n \n \n CompleteWizardStep\n \n \n \n {t('form.label.back')}\n \n \n {t('form.label.submit')}\n \n \n \n )\n}\n\nexport default CompleteWizardStep\n","import React, { useContext } from 'react'\nimport { Dialog, DialogContent, Grid, makeStyles } from '@material-ui/core'\nimport CompanyProfileStep from '../components/MicrositeDetailsWizard/CompanyProfileStep'\nimport CompanyInfoStep from '../components/MicrositeDetailsWizard/CompanyInfoStep'\nimport CompanyBusinessActivitiesStep from '../components/MicrositeDetailsWizard/CompanyBusinessActivitiesStep'\nimport CompanyReferencesStep from '../components/MicrositeDetailsWizard/CompanyReferencesStep'\nimport CompleteWizardStep from '../components/MicrositeDetailsWizard/CompleteWizardStep'\nimport GlobalContext from '../lib/GlobalContext'\n\n/**\n * useStyles\n */\nconst useStyles = makeStyles(theme => ({\n root: {\n flexGrow: 1\n },\n dialog: {\n width: '100%',\n paddingBottom: 56,\n '&::before': theme.watermarkLogo,\n [theme.breakpoints.down('sm')]: {\n padding: 20\n }\n }\n}))\n\nconst MicrositeDetailsWizard = () => {\n const classes = useStyles()\n const { wizardStep, setWizardStep } = useContext(GlobalContext)\n\n const getDialogByStep = () => {\n switch (wizardStep) {\n case 4:\n return \n case 3:\n return (\n \n )\n case 2:\n return (\n \n )\n case 1:\n return \n case 0:\n default:\n return \n }\n }\n\n return (\n \n \n \n {getDialogByStep()}\n \n \n \n )\n}\n\nexport default MicrositeDetailsWizard\n","/**\n * Converts a flat key-value json object to query-string.\n * Used for converting json-data to post-data\n *\n * @param flatJsonObject\n * @returns string\n */\nconst convertJsonToQuery = flatJsonObject => {\n return Object.keys(flatJsonObject)\n .map(key => {\n return (\n encodeURIComponent(key) + '=' + encodeURIComponent(flatJsonObject[key])\n )\n })\n .join('&')\n}\n\nexport default convertJsonToQuery\n","import { SILVERSTRIPE_OAUTH_API } from \"../config\";\nimport convertJsonToQuery from \"./ConvertJsonToQuery\";\nimport Joi from \"@hapi/joi\";\nimport hash from \"object-hash\";\nimport ExternalErrorLogger from \"@ennit/react-external-errorlogger\";\nimport { navigate } from \"hookrouter\";\n\nconst TOKEN_LIFETIME_SECONDS = 3600; // Should be 3600 (1 hour), must match with [SS4]/htdocs/app/src/Controllers/OAuth2Controller.php:runTokenServer:setRefreshTokenTTL\n\n/**\n * Token\n * @returns {{unsetData: *, writeLocalStorage: *, getHash: *, deleteLocalStorage: *, isSet: *, setData: *, loadFromLocalStorage: *, api: *, getLocalStorage: *, getData: *}}\n * @constructor\n */\nconst Token = () => {\n const initialData = {\n access_token: \"\",\n expires_in: 0,\n refresh_token: \"\",\n token_type: \"Bearer\",\n expired_timestamp: 0,\n };\n\n let data = {\n access_token: \"\",\n expires_in: 0,\n refresh_token: \"\",\n token_type: \"Bearer\",\n expired_timestamp: 0,\n };\n\n /**\n * Joi validation schema tokenData\n */\n const schemaTokenData = Joi.object({\n access_token: Joi.string().required(),\n expires_in: Joi.number().required(),\n refresh_token: Joi.string().required(),\n token_type: Joi.string().valid(\"Bearer\").required(),\n expired_timestamp: Joi.number().required(),\n __typename: Joi.string().allow(\"\"), // For API-Caching-Reasons this is required\n });\n\n /**\n * Check if the current data has been set\n * @returns {boolean}\n */\n const isSet = () => {\n return data.access_token !== \"\";\n };\n\n /**\n * Check if the current data has a refresh-token set\n * @returns {boolean}\n * @private\n */\n const _isSetRefreshToken = () => {\n return data.refresh_token !== \"\";\n };\n\n /**\n * getHash\n * return String\n */\n const getHash = () => {\n return hash(data);\n };\n\n /**\n * getData\n * @returns {{access_token: string, refresh_token: string, expired_timestamp: number, token_type: string, expires_in: number}}\n */\n const getData = () => {\n return data;\n };\n\n /**\n * setData\n * @param tokenData\n * @returns {boolean}\n */\n const setData = (tokenData) => {\n if (isValid(tokenData)) {\n if (\n !isSet() ||\n (isSet() && tokenData.access_token !== data.access_token)\n ) {\n _updateExpiredTimestamp(tokenData.expires_in);\n delete tokenData.expired_timestamp;\n }\n data = _mergeIntoData(tokenData);\n _writeLocalStorage();\n return true;\n }\n return false;\n };\n\n /**\n * setRefreshToken\n * @param refreshToken\n */\n const setRefreshToken = (refreshToken) => {\n data.expires_in = TOKEN_LIFETIME_SECONDS;\n data.refresh_token = refreshToken;\n };\n\n /**\n * unsetData\n */\n const unsetData = () => {\n data = initialData;\n deleteLocalStorage();\n };\n\n /**\n * _updateExpiredTimestamp\n * @private\n */\n const _updateExpiredTimestamp = (addExpireTime) => {\n const time = Math.round(new Date().getTime() / 1000);\n data.expired_timestamp = time + addExpireTime;\n };\n\n /**\n * isValid\n * @param tokenData\n * @returns {boolean}\n */\n const isValid = (tokenData) => {\n const mergedData = _mergeIntoData(tokenData);\n const { error } = schemaTokenData.validate(mergedData, {\n abortEarly: false,\n });\n \n if (error) {\n ExternalErrorLogger.log({\n text: \"Error token validity - Token has been removed just now\",\n data: {\n error: error,\n tokenData: tokenData,\n mergedData: mergedData,\n }\n });\n\n unsetData();\n return false;\n }\n return true;\n };\n\n /**\n * _mergeIntoData\n * @param tokenData\n * @returns {{access_token, refresh_token, expired_timestamp, token_type, expires_in}}\n * @private\n */\n const _mergeIntoData = (tokenData) => {\n return { ...initialData, ...data, ...tokenData };\n };\n\n /**\n * getLocalStorage\n * @returns {boolean|*|Url|{ext, root, name, dir, base}|null}\n */\n const getLocalStorage = () => {\n const localStoreTokenData = window.localStorage.getItem(\"token\");\n if (localStoreTokenData && localStoreTokenData.length > 0) {\n return JSON.parse(localStoreTokenData);\n }\n return false;\n };\n\n /**\n * loadFromLocalStorage\n * @returns {boolean}\n */\n const loadFromLocalStorage = () => {\n const localStoreTokenData = getLocalStorage();\n if (localStoreTokenData && isValid(localStoreTokenData)) {\n data = localStoreTokenData;\n return true;\n }\n return false;\n };\n\n /**\n * _writeLocalStorage\n * @private\n */\n const _writeLocalStorage = () => {\n window.localStorage.setItem(\"token\", JSON.stringify(data));\n };\n\n /**\n * writeLocalStorage\n * @param tokenData\n */\n const writeLocalStorage = (tokenData) => {\n if (setData(tokenData)) {\n _writeLocalStorage();\n }\n };\n\n /**\n * deleteLocalStorage\n */\n const deleteLocalStorage = () => {\n window.localStorage.removeItem(\"token\");\n };\n\n /**\n * api\n * API handling for the token\n * @returns {{refreshOnDemand: *, refresh: *, authorize: *, isRefreshing: *}}\n */\n const api = () => {\n let _inRefresh = false;\n\n /**\n * authorize\n * Authorize against the api via username and password\n * @param username\n * @param password\n * @returns {Promise}\n */\n const authorize = async (username, password) => {\n const result = await window.fetch(SILVERSTRIPE_OAUTH_API.urls.authorize, {\n method: \"POST\", // *GET, POST, PUT, DELETE, etc.\n mode: \"cors\", // no-cors, *cors, same-origin\n cache: \"no-cache\", // *default, no-cache, reload, force-cache, only-if-cached\n credentials: \"same-origin\", // include, *same-origin, omit\n headers: {\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n },\n redirect: \"follow\", // manual, *follow, error\n referrer: \"client\", // no-referrer, *client\n body: convertJsonToQuery(\n Object.assign({}, SILVERSTRIPE_OAUTH_API.data.authorize, {\n username: username,\n password: password,\n })\n ), // body data type must match \"Content-Type\" header\n });\n if (result.status === 200) {\n const fulfilledResult = await result.text();\n\n if (!fulfilledResult.includes(\"Authorization failed\")) {\n return JSON.parse(fulfilledResult);\n }\n }\n return false;\n };\n\n /**\n * refresh\n * Authorize against the api via refresh-token\n * @param refreshToken\n * @returns {Promise}\n */\n const refresh = async (refreshToken) => {\n try {\n const result = await window.fetch(SILVERSTRIPE_OAUTH_API.urls.refresh, {\n method: \"POST\", // *GET, POST, PUT, DELETE, etc.\n mode: \"cors\", // no-cors, *cors, same-origin\n cache: \"no-cache\", // *default, no-cache, reload, force-cache, only-if-cached\n credentials: \"same-origin\", // include, *same-origin, omit\n headers: {\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n },\n redirect: \"follow\", // manual, *follow, error\n referrer: \"client\", // no-referrer, *client\n body: convertJsonToQuery(\n Object.assign({}, SILVERSTRIPE_OAUTH_API.data.refresh, {\n refresh_token: refreshToken,\n })\n ), // body data type must match \"Content-Type\" header\n });\n\n if (result.status === 200) {\n return JSON.parse(await result.text());\n }\n return false;\n } catch (e) {\n ExternalErrorLogger.log({\n text: \"Error refreshing token\",\n data: {\n error: e,\n refreshToken: refreshToken,\n },\n });\n }\n };\n\n /**\n * refreshOnDemand\n * Check if the token data need to be refreshed (fetch new token using the stored refresh-token)\n * In case the end-of-life of the access-token has been reached, trigger a refresh, optional this can be forced via param\n * Optionally a setState-Function can be passed to update the token-store with the refreshed token-data\n * @param setStateFunction\n * @param force\n * @returns {Promise}\n */\n const refreshOnDemand = async (setStateFunction = false, force = false) => {\n const currTime = Math.round(new Date().getTime() / 1000);\n const tokenEndOfLife = data.expired_timestamp;\n if (force || currTime > tokenEndOfLife) {\n _inRefresh = true;\n try {\n if (_isSetRefreshToken()) {\n const authorizationResponseData = await refresh(data.refresh_token);\n // TODO: move set of _inRefresh here\n if (authorizationResponseData) {\n if (\n Array.isArray(authorizationResponseData) &&\n authorizationResponseData[0].includes(\"User forced logout\")\n ) {\n throw new Error(authorizationResponseData[0]);\n }\n\n _inRefresh = false;\n setData(authorizationResponseData);\n if (setStateFunction) {\n const newToken = Token();\n newToken.setData(getData());\n setStateFunction(newToken);\n }\n }\n } else {\n console.error(\n \"A token-refresh-on-demand is required but no refresh-token has been set\"\n );\n _inRefresh = false;\n }\n } catch (e) {\n _inRefresh = false;\n console.error(e);\n if (e.message.includes(\"User forced logout\")) {\n navigate(\"/logout\");\n }\n }\n }\n };\n\n /**\n * isRefreshing\n * Timing-Helper\n * @returns {boolean}\n */\n const isRefreshing = () => {\n return _inRefresh;\n };\n\n /**\n * return\n */\n return {\n authorize,\n refresh,\n refreshOnDemand,\n isRefreshing,\n };\n };\n\n /**\n * return\n */\n return {\n getHash,\n isSet,\n getData,\n setRefreshToken,\n setData,\n unsetData,\n getLocalStorage,\n writeLocalStorage,\n deleteLocalStorage,\n loadFromLocalStorage,\n api: api(),\n };\n};\n\n/**\n * Export the token instance\n */\nexport default Token();\n","import Dialog from '@material-ui/core/Dialog'\nimport { DialogTitle } from '@material-ui/core'\nimport IconButton from '@material-ui/core/IconButton'\nimport CloseIcon from '@material-ui/icons/Close'\nimport DialogContent from '@material-ui/core/DialogContent'\nimport Typography from '@material-ui/core/Typography'\nimport DialogActions from '@material-ui/core/DialogActions'\nimport Button from '@material-ui/core/Button'\nimport React from 'react'\n\nconst styles = {\n dialogTitleCloseIcon: {\n marginLeft: 'auto',\n padding: 0,\n paddingRight: 23,\n paddingTop: 10\n },\n dialog: {\n width: '100%',\n paddingBottom: 30\n },\n dialogButton: {\n color: '#ffffff',\n width: '50%',\n marginTop: '20px',\n marginBottom: '40px',\n marginLeft: 'auto',\n marginRight: 'auto'\n }\n}\n\n/**\n * UpdateCompanyDataDialog\n * @param setLoadingOverlayOpen function to set loadingOverlayOpen\n * @param loadingOverlayOpen boolean value for opened or closed dialog\n * @param t function to provide translations\n * @returns {JSX.Element}\n * @constructor\n */\nconst UpdateCompanyDataDialog = ({\n setLoadingOverlayOpen,\n loadingOverlayOpen,\n t\n}) => {\n /**\n * handleClose\n */\n const handleClose = () => {\n setLoadingOverlayOpen(false)\n }\n\n return (\n \n \n \n \n \n \n \n ')\n }}\n >\n \n \n \n {t('general.label.acknowledged')}\n \n \n \n )\n}\n\nexport default UpdateCompanyDataDialog\n","import React, { useContext, useState, useEffect } from \"react\";\nimport Grid from \"@material-ui/core/Grid\";\nimport { makeStyles } from \"@material-ui/core\";\nimport Button from \"@material-ui/core/Button\";\nimport { useTranslation } from \"react-i18next\";\nimport GlobalContext from \"../../lib/GlobalContext\";\nimport FormValueErrorsBuilder from \"../../lib/FormValueErrorsBuilder\";\nimport { useMutation } from \"urql\";\nimport CircularProgress from \"@material-ui/core/CircularProgress\";\nimport { green } from \"@material-ui/core/colors\";\nimport { MESSAGE_TYPES } from \"../PopupMessages\";\nimport withAccessControl from \"../HOC/AccessControl\";\nimport GooglePlacesAPIHelper from \"../../lib/GooglePlacesAPIHelper\";\nimport { navigate } from \"hookrouter\";\nimport { ACL_COMPONENTS } from \"../../config\";\nimport Joi from \"@hapi/joi\";\nimport ExternalErrorLogger from \"@ennit/react-external-errorlogger\";\nimport CompanyBasicSettingsForm from \"./CompanyBasicSettingsForm\";\nimport UpdateCompanyDataDialog from \"../UpdateCompanyDataDialog\";\n\nconst useStyles = makeStyles((theme) => ({\n gridContainer: {\n width: \"100%\",\n maxWidth: 1280,\n padding: \"16px 24px\",\n [theme.breakpoints.down(\"sm\")]: {\n alignItems: \"flex-start\",\n },\n },\n gridItem: {\n width: \"50%\",\n padding: \"8px 0\",\n [theme.breakpoints.down(\"sm\")]: {\n width: \"100%\",\n },\n },\n textFieldSmall: {\n width: \"50%\",\n \"&:first-of-type\": {\n width: \"calc(50% - 24px)\",\n marginRight: 24,\n },\n [theme.breakpoints.down(\"sm\")]: {\n width: \"100%\",\n \"&:first-of-type\": {\n width: \"100%\",\n },\n },\n },\n button: {\n color: \"#ffffff\",\n width: \"100%\",\n marginTop: \"20px\",\n marginBottom: \"40px\",\n },\n branchSubCategories: {\n width: \"50%\",\n marginLeft: \"20px\",\n [theme.breakpoints.down(\"sm\")]: {\n width: \"100%\",\n },\n },\n radioButtonHelperText: {\n color: \"#ff1645\",\n },\n buttonProgress: {\n color: green[500],\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n marginTop: -12,\n marginLeft: -12,\n },\n formLabel: {\n color: theme.palette.text.primary,\n },\n input: {\n marginLeft: 60,\n },\n itemPhone: {\n height: 80,\n overflow: \"hidden\",\n \"&.state-phoneField-open\": {\n height: \"auto\",\n overflow: \"visible\",\n zIndex: 3,\n },\n },\n itemMobile: {\n height: 80,\n overflow: \"hidden\",\n \"&.state-mobileField-open\": {\n height: \"auto\",\n overflow: \"visible\",\n zIndex: 3,\n },\n },\n itemFax: {\n height: 80,\n overflow: \"hidden\",\n \"&.state-faxField-open\": {\n height: \"auto\",\n overflow: \"visible\",\n zIndex: 3,\n },\n },\n}));\n\nconst initialFormValuesState = {\n id: \"\",\n name: \"\",\n contactPerson: \"\",\n street: \"\",\n zip: \"\",\n city: \"\",\n phone: \"\",\n mobile: \"\",\n fax: \"\",\n website: \"\",\n email: \"\",\n};\n\nconst initialFormValueErrorsState = {\n id: { hasError: false, message: \"\" },\n name: { hasError: false, message: \"\" },\n contactPerson: { hasError: false, message: \"\" },\n street: { hasError: false, message: \"\" },\n zip: { hasError: false, message: \"\" },\n city: { hasError: false, message: \"\" },\n phone: { hasError: false, message: \"\" },\n mobile: { hasError: false, message: \"\" },\n fax: { hasError: false, message: \"\" },\n website: { hasError: false, message: \"\" },\n email: { hasError: false, message: \"\" },\n};\n\nconst updateCompanyMutation = `\n mutation UpdateCompany(\n $hashId: String!,\n $name: String!,\n $contactPerson: String!,\n $street: String!,\n $zip: String!,\n $city: String!,\n $lat: Float,\n $lon: Float,\n $phone: String!,\n $mobile: String!,\n $fax: String!,\n $website: String!,\n $email: String!\n ) {\n updateCompany(\n HashID: $hashId, \n Name: $name,\n ContactPerson: $contactPerson,\n Street: $street,\n Zip: $zip,\n City: $city,\n Latitude: $lat,\n Longitude: $lon,\n Phone: $phone,\n Mobile: $mobile,\n Fax: $fax,\n Website: $website,\n Email: $email\n ) {\n Name\n ContactPerson\n Street\n Zip\n City\n Latitude\n Longitude\n Phone\n Mobile\n Fax\n Website\n Email\n NumberOfEmployees\n LegalForm\n }\n }\n`;\n\n/**\n * CompanyBasicSettings\n *\n * @returns {*}\n * @constructor\n */\nconst CompanyBasicSettings = () => {\n const classes = useStyles();\n const { t } = useTranslation();\n const {\n user,\n setUser,\n token,\n setMessage,\n unsetUser,\n unsetToken,\n googleMapsIsLoaded,\n } = useContext(GlobalContext);\n const [formValues, setFormValues] = useState(initialFormValuesState);\n const [formValueErrors, setFormValueErrors] = useState(\n initialFormValueErrorsState\n );\n const [{ fetching: companyIsUpdating }, executeCompanyUpdateMutation] =\n useMutation(updateCompanyMutation);\n const [loadingOverlayOpen, setLoadingOverlayOpen] = useState(false);\n const [streetFormValue, setStreetFormValue] = useState(\"\");\n const [zipFormValue, setZipFormValue] = useState(\"\");\n const [cityFormValue, setCityFormValue] = useState(\"\");\n\n /**\n * Joi validation schema\n */\n const schema = Joi.object({\n id: Joi.number(),\n hashID: Joi.string().required(),\n name: Joi.string().required(),\n contactPerson: Joi.string().required(),\n street: Joi.string().trim().required(),\n zip: Joi.string().trim().required(),\n city: Joi.string().trim().required(),\n phone: Joi.string().allow(\"\"),\n mobile: Joi.string().allow(\"\"),\n website: Joi.string()\n .regex(\n /https?:\\/\\/(www\\.)?[-a-zA-ZöäüÖÄÜ0-9@:%._+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b([-a-zA-Z0-9()@:%_+.~#?&/=]*)/\n )\n .allow(\"\"),\n fax: Joi.string().allow(\"\"),\n email: Joi.string().email({ tlds: false }).allow(\"\"),\n });\n\n /**\n * useEffect\n */\n useEffect(() => {\n const userData = user.getData();\n setFormValues({\n id: userData.company.hashID,\n name: userData.company.name || initialFormValuesState.name,\n contactPerson:\n userData.company.contactPerson !== \"\"\n ? userData.company.contactPerson\n : userData.firstName + \" \" + userData.lastName,\n street: userData.company.street || initialFormValuesState.street,\n zip: userData.company.zip || initialFormValuesState.zip,\n city: userData.company.city || initialFormValuesState.city,\n phone: userData.company.phone || initialFormValuesState.phone,\n mobile: userData.company.mobile || initialFormValuesState.mobile,\n fax: userData.company.fax || initialFormValuesState.fax,\n website: userData.company.website || initialFormValuesState.website,\n email: userData.company.email || initialFormValuesState.email,\n });\n }, [user]);\n\n /**\n * determineCountry\n *\n * checks if googlePlacesResult is in CH.\n *\n * @param googlePlacesResult\n * @returns {number}\n */\n const determineCountry = (googlePlacesResult) => {\n let isInCH = [];\n googlePlacesResult.results.map((item) => {\n isInCH = item.address_components.filter((addressComponent) => {\n return addressComponent.short_name === \"CH\";\n });\n return item;\n });\n return isInCH.length;\n };\n\n /**\n * determineZip\n *\n * @param googlePlacesResult\n * @returns {*}\n */\n const determineZip = (googlePlacesResult) => {\n let zip = formValues.zip;\n googlePlacesResult.results.map((item) => {\n item.address_components.map((comp) => {\n if (comp.types[0] === \"postal_code\") {\n zip = comp.long_name;\n }\n return zip;\n });\n return zip;\n });\n return zip;\n };\n\n /**\n * handleFormSubmit\n */\n const handleFormSubmit = () => {\n if (\n formValues.street.trim() === \"\" ||\n formValues.street !== streetFormValue\n ) {\n formValues.street = streetFormValue;\n }\n if (formValues.zip !== zipFormValue) {\n formValues.zip = zipFormValue;\n }\n if (formValues.city.trim() === \"\" || formValues.city !== cityFormValue) {\n formValues.city = cityFormValue;\n }\n\n if (\n formValues.website !== \"\" &&\n !formValues.website.includes(\"http://\") &&\n !formValues.website.includes(\"https://\")\n ) {\n formValues.website = \"https://\" + formValues.website;\n }\n\n const formData = {\n hashID: user.getData().company.hashID,\n name: formValues.name,\n contactPerson: formValues.contactPerson,\n street: formValues.street,\n zip: formValues.zip,\n city: formValues.city,\n phone: formValues.phone,\n mobile: formValues.mobile,\n fax: formValues.fax,\n website: formValues.website,\n email: formValues.email,\n };\n const { error } = schema.validate(formData, { abortEarly: false });\n if (error) {\n console.log(error);\n const formErrors = FormValueErrorsBuilder(error, t);\n setFormValueErrors({ ...formErrors });\n window.scrollTo(0, 0);\n } else {\n user.setData({ company: { ...formData } });\n setFormValueErrors(initialFormValueErrorsState);\n\n const addressString = `${formValues.street}+${\n typeof formValues.number !== \"undefined\" ? formValues.number + \"+\" : \"\"\n }${formValues.zip}+${formValues.city}`;\n\n GooglePlacesAPIHelper.getCoordsByAddress(addressString).then((result) => {\n if (result.status === \"OK\" && determineCountry(result)) {\n const lat = result.results[0].geometry.location.lat;\n const lon = result.results[0].geometry.location.lng;\n\n user.setData({ company: { latitude: lat, longitude: lon } });\n\n setLoadingOverlayOpen(true);\n\n const foundZip = determineZip(result);\n\n executeCompanyUpdateMutation({\n hashId: user.getData().company.hashID,\n name: formValues.name,\n contactPerson: formValues.contactPerson,\n street: formValues.street,\n zip: foundZip,\n city: formValues.city,\n lat: lat,\n lon: lon,\n phone: formValues.phone,\n mobile: formValues.mobile,\n fax: formValues.fax,\n website: formValues.website,\n email: formValues.email,\n }).then((result) => {\n // clearTimeout(showLoadingOverlayTimeout)\n // setLoadingOverlayOpen(false)\n\n if (result.error) {\n if (result.error.message.indexOf(\"User forced logout\") !== -1) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.user.forced.logout\"));\n unsetUser();\n unsetToken();\n navigate(\"/\");\n } else {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.save\"));\n ExternalErrorLogger.log({\n text: \"Error submitting data on CompanyBasicSettings\",\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n errorMessage: result.error.message,\n },\n });\n }\n } else {\n setMessage(\n MESSAGE_TYPES.SUCCESS,\n t(\"general.label.save.success\")\n );\n setUser(user);\n if (foundZip && foundZip !== formValues.zip) {\n setFormValues({ ...formValues, zip: foundZip });\n }\n }\n });\n } else if (result.status === \"OK\" && !determineCountry(result)) {\n setFormValueErrors({\n street: {\n hasError: true,\n message: t(\"error.form.address.not.ch\"),\n },\n zip: {\n hasError: true,\n message: t(\"error.form.address.not.ch\"),\n },\n city: {\n hasError: true,\n message: t(\"error.form.address.not.ch\"),\n },\n });\n window.scrollTo(0, 0);\n } else if (result.status === \"ZERO_RESULTS\") {\n setFormValueErrors({\n street: {\n hasError: true,\n message: t(\"error.form.invalid.address\"),\n },\n zip: {\n hasError: true,\n message: t(\"error.form.invalid.address\"),\n },\n city: {\n hasError: true,\n message: t(\"error.form.invalid.address\"),\n },\n });\n window.scrollTo(0, 0);\n } else {\n let errorMessage = \"\";\n if (result.error_message !== undefined) {\n errorMessage =\n \"
\" +\n '' +\n t(\"general.label.error.message\") +\n \"\" +\n \" \" +\n result.error_message;\n }\n setMessage(\n MESSAGE_TYPES.ERROR,\n t(\"error.general.short\") +\n \"
\" +\n \"
\" +\n '' +\n t(\"general.label.status.code\") +\n \"\" +\n \" \" +\n result.status +\n errorMessage +\n \"
\" +\n \"
\" +\n t(\"general.label.contact.smartconext\")\n );\n ExternalErrorLogger.log({\n text: \"Error fetching Geocoords on CompanyBasicSettings\",\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n errorMessage: result.error_message,\n },\n });\n }\n });\n }\n };\n\n /**\n * return\n */\n return (\n googleMapsIsLoaded && (\n \n \n \n \n {t(\"account.profile.save.changes\")}\n {companyIsUpdating && (\n \n )}\n \n {loadingOverlayOpen &&\n UpdateCompanyDataDialog({\n setLoadingOverlayOpen,\n loadingOverlayOpen,\n t,\n })}\n \n \n )\n );\n};\n\nexport default withAccessControl(\n CompanyBasicSettings,\n ACL_COMPONENTS.COMPANY_BASIC_SETTINGS\n);\n","import React, { useContext, useEffect, useState } from \"react\";\nimport withAccessControl from \"../HOC/AccessControl\";\nimport { ACL_COMPONENTS } from \"../../config\";\nimport Grid from \"@material-ui/core/Grid\";\nimport { makeStyles } from \"@material-ui/core\";\nimport { useTranslation } from \"react-i18next\";\nimport GlobalContext from \"../../lib/GlobalContext\";\nimport { useMutation, useQuery } from \"urql\";\nimport { green } from \"@material-ui/core/colors\";\nimport FormValueErrorsBuilder from \"../../lib/FormValueErrorsBuilder\";\nimport { MESSAGE_TYPES } from \"../PopupMessages\";\nimport { navigate } from \"hookrouter\";\nimport ExternalErrorLogger from \"@ennit/react-external-errorlogger\";\nimport Button from \"@material-ui/core/Button\";\nimport CircularProgress from \"@material-ui/core/CircularProgress\";\nimport CompanyDirectoryNameDialog from \"./CompanyDirectoryNameDialog\";\nimport CompanyInfoForm from \"./CompanyInfoForm\";\nimport FormatHelper from \"../../lib/FormatHelper\";\nimport {\n initialFormValuesState,\n initialFormValueErrorsState,\n createFileFromUrl,\n readFile,\n updateCompanyMutation,\n formatImagesArray,\n schema,\n querySmartconextConf,\n} from \"./CompanyInfoShared\";\nimport UpdateCompanyDataDialog from \"../UpdateCompanyDataDialog\";\n\nconst useStyles = makeStyles((theme) => ({\n gridContainer: {\n width: \"100%\",\n maxWidth: 1280,\n padding: \"16px 24px\",\n [theme.breakpoints.down(\"sm\")]: {\n alignItems: \"flex-start\",\n },\n },\n gridItem: {\n width: \"50%\",\n padding: \"8px 0\",\n [theme.breakpoints.down(\"sm\")]: {\n width: \"100%\",\n },\n },\n checkboxGridItem: {\n // width: '50%',\n padding: \"8px 0\",\n [theme.breakpoints.down(\"sm\")]: {\n width: \"100%\",\n },\n },\n button: {\n color: \"#ffffff\",\n width: \"100%\",\n marginTop: \"20px\",\n marginBottom: \"40px\",\n },\n buttonProgress: {\n color: green[500],\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n marginTop: -12,\n marginLeft: -12,\n },\n formLabel: {\n color: theme.palette.text.primary,\n },\n input: {\n marginLeft: 60,\n },\n logoImg: {\n width: \"50%\",\n padding: \"8px 0\",\n [theme.breakpoints.down(\"sm\")]: {\n width: \"100%\",\n },\n },\n buttonImg: {\n color: \"#ffffff\",\n marginBottom: \"20px\",\n },\n label: {\n color: theme.palette.text.primary,\n },\n root: {\n width: \"100%\",\n // maxWidth: 444\n },\n membershipsLogo: {\n width: 80,\n height: \"auto\",\n paddingRight: 20,\n },\n dialogRoot: {\n flexGrow: 1,\n },\n dialog: {\n width: \"100%\",\n paddingBottom: 56,\n \"&::before\": theme.watermarkLogo,\n [theme.breakpoints.down(\"sm\")]: {\n padding: 20,\n },\n },\n itemHeader: {\n maxWidth: 400,\n paddingTop: 44,\n paddingBottom: 24,\n [theme.breakpoints.down(\"sm\")]: {\n paddingTop: 20,\n paddingBottom: 20,\n },\n },\n startButton: {\n width: \"100%\",\n color: \"#fff\",\n fontWeight: \"bold\",\n },\n dialogTitle: {\n display: \"flex\",\n justifyContent: \"flex-end\",\n alignItems: \"flex-end\",\n paddingBottom: 0,\n },\n listItemPointer: {\n cursor: \"pointer\",\n },\n tooltipItem: {\n maxWidth: 350,\n borderRadius: 5,\n background: \"#006A7A\",\n fontSize: 16,\n textAlign: \"center\",\n \"& div\": {\n margin: 0,\n color: \"#fff\",\n },\n },\n tooltipInfo: {\n maxWidth: \"100%\",\n background: theme.palette.background.default,\n \"& div\": {\n maxWidth: \"100%\",\n color: theme.palette.text.primary,\n fontSize: 12,\n lineHeight: \"20px\",\n },\n \"@media (min-width:768px)\": {\n maxWidth: 450,\n },\n },\n tooltipTitle: {\n display: \"flex\",\n alignItems: \"center\",\n },\n}));\n\n/**\n * CompanyInfo\n *\n * @returns {JSX.Element}\n * @constructor\n */\nconst CompanyInfo = () => {\n const classes = useStyles();\n const { t } = useTranslation();\n const { user, setUser, token, setMessage, unsetUser, unsetToken } =\n useContext(GlobalContext);\n const [loadingOverlayOpen, setLoadingOverlayOpen] = useState(false);\n const [formValues, setFormValues] = useState(initialFormValuesState);\n const [formValueErrors, setFormValueErrors] = useState(\n initialFormValueErrorsState\n );\n const [currentFileObjects, setCurrentFileObjects] = useState([]);\n\n const [verifyDialogOpen, setVerifyDialogOpen] = useState(\n user.getData().company.urlSegment\n );\n const [colorSchemes, setColorSchemes] = useState([]);\n const [{ fetching: companyIsUpdating }, executeCompanyUpdateMutation] =\n useMutation(updateCompanyMutation);\n const [result, executeQuerySmartconextConf] = useQuery({\n query: querySmartconextConf,\n pause: true,\n });\n\n /**\n * useEffect executeQuerySmartconextConf\n */\n useEffect(() => {\n if (colorSchemes.length === 0) {\n executeQuerySmartconextConf();\n }\n }, [colorSchemes, executeQuerySmartconextConf]);\n\n /**\n * useEffect set FormData\n */\n useEffect(() => {\n const userData = user.getData();\n setFormValues({\n directoryName:\n userData.company.urlSegment || initialFormValuesState.directoryName,\n employeeCount:\n userData.company.employeeCount || initialFormValuesState.employeeCount,\n legalForm: userData.company.legalForm || initialFormValuesState.legalForm,\n foundingYear:\n userData.company.foundingYear || initialFormValuesState.foundingYear,\n masterOperation:\n FormatHelper.boolToString(userData.company.masterOperation) ||\n initialFormValuesState.masterOperation,\n trainingCompany:\n FormatHelper.boolToString(userData.company.trainingCompany) ||\n initialFormValuesState.trainingCompany,\n colorScheme: initialFormValuesState.colorScheme,\n memberships:\n userData.company.memberships || initialFormValuesState.memberships,\n furtherMemberships: initialFormValuesState.furtherMemberships,\n micrositeColorScheme:\n userData.company.micrositeColorScheme ||\n initialFormValuesState.micrositeColorScheme,\n micrositeDescription:\n userData.company.micrositeDescription ||\n initialFormValuesState.micrositeDescription,\n micrositeEmailApplicationText:\n userData.company.micrositeEmailApplicationText ||\n initialFormValuesState.micrositeEmailApplicationText,\n micrositeLogo:\n userData.company.micrositeLogo || initialFormValuesState.micrositeLogo,\n micrositeImages:\n userData.company.micrositeImages ||\n initialFormValuesState.micrositeImages,\n additionalMemberships:\n userData.company.additionalMemberships ||\n initialFormValuesState.additionalMemberships,\n });\n }, [user]);\n\n /**\n * GraphQL trigger and result handling\n */\n useEffect(() => {\n if (!result.fetching) {\n if (result.error) {\n // Check if the user need to be logged out\n if (result.error.message.indexOf(\"User forced logout\") !== -1) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.user.forced.logout\"));\n unsetUser();\n unsetToken();\n navigate(\"/\");\n } else {\n // Something went very wrong\n ExternalErrorLogger.log({\n text: \"Error fetching smartconext conf on CompanyInfo\",\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n errorMessage: result.error.message,\n },\n });\n return
{t(\"error.general\")}
;\n }\n } else {\n // Query not fetching right now\n if (\n typeof result.data !== \"undefined\" &&\n typeof result.data.readSmartconextConf !== \"undefined\"\n ) {\n if (colorSchemes.length === 0) {\n setColorSchemes(\n result.data.readSmartconextConf[0].microsite_color_schemes\n );\n setFormValues({\n ...formValues,\n colorScheme: user.getData().company.micrositeColorScheme || \"3\", // Default colorScheme = \"Schweiz\"\n });\n }\n }\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [result])\n\n /**\n * handleFormSubmit\n */\n const handleFormSubmit = async () => {\n formValues.memberships.map((item) => {\n delete item.__typename;\n return item;\n });\n\n formValues.micrositeImages.map((item) => {\n delete item.__typename;\n return item;\n });\n\n const formattedImagesArray = formatImagesArray(formValues);\n\n const fileObjs = await Promise.all(\n formattedImagesArray.map(async (initialFile) => {\n let file;\n if (typeof initialFile.Src === \"string\") {\n file = await createFileFromUrl(initialFile.Src);\n } else {\n file = initialFile.Src;\n }\n const data = await readFile(file);\n\n return {\n file,\n data,\n };\n })\n );\n\n const convertedImagesArray = [];\n fileObjs.map((item) => {\n if (item.data) {\n convertedImagesArray.push({\n Src: item.data,\n Title: item.file.name,\n Alt: item.file.name,\n });\n } else {\n convertedImagesArray.push(item);\n }\n return item;\n });\n\n const logoData = { Src: \"\", Alt: \"\", Title: \"\" };\n\n if (currentFileObjects[0]) {\n logoData.Src = currentFileObjects[0].data;\n logoData.Alt = currentFileObjects[0].file.name;\n logoData.Title = currentFileObjects[0].file.name;\n } else if (\n formValues.micrositeLogo.Src !== null &&\n formValues.micrositeLogo.Src !== \"\" &&\n formValues.micrositeLogo.Src !== undefined\n ) {\n const logoArray = [formValues.micrositeLogo];\n const logoFile = await Promise.all(\n logoArray.map(async (initialFile) => {\n let file;\n if (typeof initialFile.Src === \"string\") {\n file = await createFileFromUrl(initialFile.Src);\n } else {\n file = initialFile.Src;\n }\n const data = await readFile(file);\n\n return {\n file,\n data,\n };\n })\n );\n const convertedLogoArray = [];\n logoFile.map((item) => {\n if (item.data) {\n convertedLogoArray.push({\n Src: item.data,\n Title: item.file.name,\n Alt: item.file.name,\n });\n } else {\n convertedLogoArray.push(item);\n }\n return item;\n });\n logoData.Src = convertedLogoArray[0].Src;\n logoData.Alt = convertedLogoArray[0].Alt;\n logoData.Title = convertedLogoArray[0].Title;\n } else {\n console.log(\"DELETE_LOGO\");\n }\n\n const formData = {\n hashID: user.getData().company.hashID,\n employeeCount: formValues.employeeCount,\n legalForm: formValues.legalForm,\n foundingYear: formValues.foundingYear,\n masterOperation: formValues.masterOperation,\n micrositeDescription: formValues.micrositeDescription,\n memberships: formValues.memberships,\n trainingCompany: formValues.trainingCompany,\n micrositeImages: convertedImagesArray,\n micrositeLogo: logoData,\n additionalMemberships: formValues.additionalMemberships,\n micrositeEmailApplicationText: formValues.micrositeEmailApplicationText,\n micrositeColorScheme: formValues.colorScheme,\n };\n const { error } = schema.validate(formData, { abortEarly: false });\n if (error) {\n console.log(error);\n const formErrors = FormValueErrorsBuilder(error, t);\n setFormValueErrors({ ...formErrors });\n window.scrollTo(0, 0);\n } else {\n setFormValueErrors(initialFormValueErrorsState);\n\n setLoadingOverlayOpen(true);\n\n executeCompanyUpdateMutation({\n hashId: user.getData().company.hashID,\n numberOfEmployees: formValues.employeeCount,\n legalForm: formValues.legalForm,\n foundingYear: formValues.foundingYear,\n masterBusiness: formValues.masterOperation,\n trainingCompany: formValues.trainingCompany,\n description: formValues.micrositeDescription,\n memberships: formValues.memberships,\n colorScheme: formValues.colorScheme,\n images: convertedImagesArray,\n logo: logoData,\n additionalMemberships: formValues.additionalMemberships,\n emailApplicationText: formValues.micrositeEmailApplicationText,\n }).then((result) => {\n if (result.error) {\n if (result.error.message.indexOf(\"User forced logout\") !== -1) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.user.forced.logout\"));\n unsetUser();\n unsetToken();\n navigate(\"/\");\n } else {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.save\"));\n ExternalErrorLogger.log({\n text: \"Error submitting data on CompanyInfo\",\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n errorMessage: result.error.message,\n },\n });\n }\n } else {\n setMessage(MESSAGE_TYPES.SUCCESS, t(\"general.label.save.success\"));\n user.setData({ company: { ...formData } });\n const micrositeImages = [];\n result.data.updateCompany[0].MicrositeImages.edges.map((item) => {\n micrositeImages.push(item.node);\n return micrositeImages;\n });\n user.setData({ company: { micrositeImages: micrositeImages } });\n setUser(user);\n }\n });\n }\n };\n\n /**\n * return\n */\n return (\n <>\n \n \n \n \n \n {t(\"account.profile.save.changes\")}\n {companyIsUpdating && (\n \n )}\n \n {loadingOverlayOpen &&\n UpdateCompanyDataDialog({\n setLoadingOverlayOpen,\n loadingOverlayOpen,\n t,\n })}\n \n \n \n );\n};\n\nexport default withAccessControl(CompanyInfo, ACL_COMPONENTS.COMPANY_INFO);\n","import React, { useCallback, useContext, useEffect, useState } from \"react\";\nimport withAccessControl from \"../HOC/AccessControl\";\nimport { ACL_COMPONENTS } from \"../../config\";\nimport Grid from \"@material-ui/core/Grid\";\nimport { makeStyles } from \"@material-ui/core\";\nimport { green } from \"@material-ui/core/colors\";\nimport { useTranslation } from \"react-i18next\";\nimport { useMutation, useQuery } from \"urql\";\nimport GlobalContext from \"../../lib/GlobalContext\";\nimport { MESSAGE_TYPES } from \"../PopupMessages\";\nimport { navigate } from \"hookrouter\";\nimport ExternalErrorLogger from \"@ennit/react-external-errorlogger\";\nimport Button from \"@material-ui/core/Button\";\nimport FormValueErrorsBuilder from \"../../lib/FormValueErrorsBuilder\";\nimport CompanyBusinessActivitiesForm from \"./CompanyBusinessActivitiesForm\";\nimport {\n queryBranches,\n updateCompanyMutation,\n initialFormValuesState,\n initialFormValueErrorsState,\n schema,\n} from \"./CompanyBasicSettingsShared\";\nimport UpdateCompanyDataDialog from \"../UpdateCompanyDataDialog\";\n\nconst useStyles = makeStyles((theme) => ({\n gridContainer: {\n width: \"100%\",\n maxWidth: 1280,\n padding: \"16px 24px\",\n [theme.breakpoints.down(\"sm\")]: {\n alignItems: \"flex-start\",\n },\n },\n gridItem: {\n width: \"50%\",\n padding: \"8px 0\",\n [theme.breakpoints.down(\"sm\")]: {\n width: \"100%\",\n },\n },\n button: {\n color: \"#ffffff\",\n width: \"100%\",\n marginTop: \"20px\",\n marginBottom: \"40px\",\n },\n dialogButton: {\n color: \"#ffffff\",\n width: \"50%\",\n marginTop: \"20px\",\n marginBottom: \"40px\",\n marginLeft: \"auto\",\n marginRight: \"auto\",\n },\n branchSubCategories: {\n width: \"50%\",\n marginLeft: \"20px\",\n [theme.breakpoints.down(\"sm\")]: {\n width: \"100%\",\n },\n },\n buttonProgress: {\n color: green[500],\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n marginTop: -12,\n marginLeft: -12,\n },\n input: {\n marginLeft: 60,\n },\n checkboxControlIndented: {\n marginLeft: 20,\n },\n dialog: {\n width: \"100%\",\n paddingBottom: 30,\n [theme.breakpoints.down(\"sm\")]: {\n padding: 20,\n },\n },\n dialogTitle: {\n display: \"flex\",\n justifyContent: \"flex-end\",\n alignItems: \"flex-end\",\n paddingBottom: 0,\n },\n dialogTitleCloseIcon: {\n marginLeft: \"auto\",\n padding: 0,\n paddingRight: 23,\n paddingTop: 10,\n },\n}));\n\n/**\n * CompanyBusinessActivities\n *\n * @returns {JSX.Element}\n * @constructor\n */\nconst CompanyBusinessActivities = () => {\n const classes = useStyles();\n const { t } = useTranslation();\n const { user, token, setUser, setMessage, unsetUser, unsetToken } =\n useContext(GlobalContext);\n const [branchData, setBranchData] = useState(false);\n const [formValues, setFormValues] = useState(initialFormValuesState);\n const [formValueErrors, setFormValueErrors] = useState(\n initialFormValueErrorsState\n );\n const [loadingOverlayOpen, setLoadingOverlayOpen] = useState(false);\n\n const [{ fetching: companyIsUpdating }, executeCompanyUpdateMutation] =\n useMutation(updateCompanyMutation);\n\n // GraphQL query for branches, gets triggered by calling \"executeBranchesQuery()\"\n const [result, executeBranchesQuery] = useQuery({\n query: queryBranches,\n variables: {},\n pause: true,\n });\n\n /**\n * executeBranchesQueryCallback\n * Implementation of https://reactjs.org/docs/hooks-faq.html#is-it-safe-to-omit-functions-from-the-list-of-dependencies\n */\n const executeBranchesQueryCallback = useCallback(() => {\n if (!result.fetching && !branchData) {\n executeBranchesQuery();\n }\n }, [result.fetching, branchData, executeBranchesQuery]);\n\n /**\n * useEffect\n */\n useEffect(() => {\n const userData = user.getData();\n setFormValues({\n id: userData.company.hashID,\n branchCategory:\n userData.company.branchCategory ||\n initialFormValuesState.branchCategory,\n branchSubs:\n userData.company.branchSubs || initialFormValuesState.branchSubs,\n otherBusinessActivities: userData.company.otherBusinessActivities,\n otherBusinessSpecialities: userData.company.otherBusinessSpecialities,\n });\n executeBranchesQueryCallback();\n }, [user, executeBranchesQueryCallback]);\n\n // GraphQL trigger and result handling\n useEffect(() => {\n if (!result.fetching) {\n if (result.error) {\n if (result.error.message.indexOf(\"User forced logout\") !== -1) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.user.forced.logout\"));\n unsetUser();\n unsetToken();\n navigate(\"/\");\n } else {\n // Something went very wrong\n ExternalErrorLogger.log({\n text: \"Error fetching branches on CompanyBasicSettings\",\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n errorMessage: result.error.message,\n },\n });\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.fetching.branches\"));\n }\n } else {\n // Query not fetching right now\n if (\n typeof result.data !== \"undefined\" &&\n typeof result.data.readBusinessActivities !== \"undefined\" &&\n !branchData\n ) {\n // Without business branches/activities we cannot continue\n if (result.data.readBusinessActivities.length === 0) {\n throw Error(\"No business branches/activities found\");\n }\n\n // Add the projects to the global context\n setBranchData(result.data.readBusinessActivities);\n }\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [result])\n\n /**\n * handleFormSubmit\n */\n const handleFormSubmit = () => {\n const formData = {\n hashID: user.getData().company.hashID,\n branchCategory: formValues.branchCategory,\n branchSubs: formValues.branchSubs,\n otherBusinessActivities: formValues.otherBusinessActivities,\n otherBusinessSpecialities: formValues.otherBusinessSpecialities,\n };\n const { error } = schema.validate(formData, { abortEarly: false });\n if (error) {\n const formErrors = FormValueErrorsBuilder(error, t);\n setFormValueErrors({ ...formErrors });\n window.scrollTo(0, 0);\n } else {\n user.setData({ company: { ...formData } });\n setFormValueErrors(initialFormValueErrorsState);\n\n let branchSubsRefined = [];\n formValues.branchSubs.map((item) => {\n branchSubsRefined.push({\n ID: item,\n });\n return item;\n });\n if (!branchSubsRefined.length) {\n branchSubsRefined = null;\n }\n\n let otherBranchesRefined = [];\n formValues.otherBusinessActivities.map((item) => {\n otherBranchesRefined.push({\n ID: item,\n });\n return item;\n });\n if (!otherBranchesRefined.length) {\n otherBranchesRefined = null;\n }\n\n let otherBusinessSpecialitiesRefined = [];\n formValues.otherBusinessSpecialities.map((item) => {\n otherBusinessSpecialitiesRefined.push({\n ID: item,\n });\n return item;\n });\n if (!otherBusinessSpecialitiesRefined.length) {\n otherBusinessSpecialitiesRefined = null;\n }\n\n setLoadingOverlayOpen(true);\n handleUpdateCompanyMutation(\n branchSubsRefined,\n otherBranchesRefined,\n otherBusinessSpecialitiesRefined\n ).then();\n }\n };\n\n /**\n * handleUpdateCompanyMutation\n *\n * @param branchSubsRefined\n * @param otherBranchesRefined\n * @param otherBusinessSpecialitiesRefined\n * @returns {Promise}\n */\n const handleUpdateCompanyMutation = async (\n branchSubsRefined,\n otherBranchesRefined,\n otherBusinessSpecialitiesRefined\n ) => {\n await executeCompanyUpdateMutation({\n hashId: user.getData().company.hashID,\n businessActivityID: formValues.branchCategory,\n businessSpecialties: branchSubsRefined,\n otherBusinessActivities: otherBranchesRefined,\n otherBusinessSpecialities: otherBusinessSpecialitiesRefined,\n }).then((result) => {\n if (result.error) {\n if (result.error.message.indexOf(\"User forced logout\") !== -1) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.user.forced.logout\"));\n unsetUser();\n unsetToken();\n navigate(\"/\");\n } else if (result.error.message.indexOf(\"Failed to fetch\") === -1) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.save\"));\n ExternalErrorLogger.log({\n text: \"Error submitting data on CompanyBusinessActivities\",\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n errorMessage: result.error.message,\n },\n });\n } else {\n ExternalErrorLogger.log({\n text: \"Error on CompanyBusinessActivities - Failed to fetch\",\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n errorMessage: result.error.message,\n },\n });\n }\n } else {\n setMessage(\n MESSAGE_TYPES.SUCCESS,\n t(\"company.label.businessActivities.saved\")\n );\n setUser(user);\n }\n });\n };\n\n /**\n * return\n */\n return (\n \n \n \n \n {!companyIsUpdating && t(\"account.profile.save.changes\")}\n {companyIsUpdating && t(\"general.label.processing.data\")}\n \n {loadingOverlayOpen &&\n UpdateCompanyDataDialog({\n setLoadingOverlayOpen,\n loadingOverlayOpen,\n t,\n })}\n \n \n );\n};\n\nexport default withAccessControl(\n CompanyBusinessActivities,\n ACL_COMPONENTS.COMPANY_BUSINESS_ACTIVITIES\n);\n","import React, { useContext, useState } from 'react'\nimport withAccessControl from '../HOC/AccessControl'\nimport { ACL_COMPONENTS } from '../../config'\nimport { makeStyles } from '@material-ui/core'\nimport Grid from '@material-ui/core/Grid'\nimport CompanyDirectoryNameDialog from './CompanyDirectoryNameDialog'\nimport GlobalContext from '../../lib/GlobalContext'\nimport CompanyReferencesForm from './CompanyReferencesForm'\nimport { useTranslation } from 'react-i18next'\n\nconst useStyles = makeStyles(theme => ({\n gridContainer: {\n width: '100%',\n maxWidth: 1280,\n padding: '16px 24px',\n [theme.breakpoints.down('sm')]: {\n alignItems: 'flex-start'\n }\n },\n gridItem: {\n width: '70%',\n padding: '8px 0',\n [theme.breakpoints.down('sm')]: {\n width: '100%'\n }\n },\n button: {\n color: '#ffffff',\n width: '100%',\n marginTop: '20px',\n marginBottom: '40px'\n },\n img: {\n width: '20%',\n padding: '8px 8px 8px 0px',\n [theme.breakpoints.down('sm')]: {\n width: '100%'\n }\n },\n label: {\n color: theme.palette.text.primary\n },\n root: {\n width: '100%'\n },\n dialogRoot: {\n flexGrow: 1\n },\n dialogTitle: {\n display: 'flex',\n justifyContent: 'flex-end',\n alignItems: 'flex-end',\n paddingBottom: 0\n },\n dialog: {\n width: '100%',\n paddingBottom: 56,\n '&::before': theme.watermarkLogo,\n [theme.breakpoints.down('sm')]: {\n padding: 20\n }\n },\n itemHeader: {\n maxWidth: 400,\n paddingTop: 44,\n paddingBottom: 24,\n [theme.breakpoints.down('sm')]: {\n paddingTop: 20,\n paddingBottom: 20\n }\n },\n title: {\n margin: 0,\n fontSize: 24,\n lineHeight: '30px',\n textAlign: 'center',\n [theme.breakpoints.down('sm')]: {\n textAlign: 'left'\n }\n },\n startButton: {\n width: '100%',\n color: '#fff',\n fontWeight: 'bold'\n },\n textFieldSmall: {\n width: '50%',\n '&:first-of-type': {\n width: 'calc(50% - 24px)',\n marginRight: 24\n },\n [theme.breakpoints.down('sm')]: {\n width: '100%',\n '&:first-of-type': {\n width: '100%'\n }\n }\n },\n buttonImg: {\n color: '#ffffff',\n marginBottom: '20px'\n },\n logoImg: {\n width: '50%',\n padding: '8px 0',\n [theme.breakpoints.down('sm')]: {\n width: '100%'\n }\n },\n imagesError: {\n fontSize: '0.75rem',\n marginLeft: 14,\n marginRight: 14,\n color: '#ff1744'\n },\n addButtonText: {\n paddingTop: 3,\n paddingRight: 15,\n paddingBottom: 3,\n paddingLeft: 15,\n fontWeight: 'bold'\n },\n addReferenceButton: {\n color: theme.palette.primary.main,\n border: '1px solid rgba(0, 179, 207, 0.5)',\n backgroundColor: 'white'\n },\n listItemPointer: {\n cursor: 'pointer'\n },\n loadingProgress: {\n position: 'absolute',\n top: '50%',\n left: '50%',\n marginTop: -12,\n marginLeft: -12\n }\n}))\n\nconst initialFormValues = {\n Sort: null,\n Title: '',\n Content: '',\n Location: '',\n Month: '',\n Year: '',\n Images: []\n}\n\nconst initialFormValueErrorsState = {\n Title: { hasError: false, message: '' },\n Content: { hasError: false, message: '' },\n Location: { hasError: false, message: '' },\n Month: { hasError: false, message: '' },\n Year: { hasError: false, message: '' },\n Images: { hasError: false, message: '' }\n}\n\n/**\n * CompanyReferences\n *\n * @returns {JSX.Element}\n * @constructor\n */\nconst CompanyReferences = () => {\n const dialogContent = null\n const classes = useStyles()\n const { t } = useTranslation()\n const { user } = useContext(GlobalContext)\n const [references, setReferences] = useState(null)\n const [formValues, setFormValues] = useState(initialFormValues)\n const [formValueErrors, setFormValueErrors] = useState(\n initialFormValueErrorsState\n )\n const [verifyDialogOpen, setVerifyDialogOpen] = useState(\n user.getData().company.urlSegment\n )\n\n /**\n * return\n */\n return (\n <>\n \n \n \n \n \n )\n}\n\nexport default withAccessControl(\n CompanyReferences,\n ACL_COMPONENTS.COMPANY_REFERENCES\n)\n","import React, { useContext, useEffect } from 'react'\nimport Paper from '@material-ui/core/Paper'\nimport { makeStyles } from '@material-ui/core'\nimport Tab from '@material-ui/core/Tab'\nimport Tabs from '@material-ui/core/Tabs'\nimport Divider from '@material-ui/core/Divider'\nimport { useTranslation } from 'react-i18next'\nimport CompanyBasicSettings from '../components/Company/CompanyBasicSettings'\nimport CompanyInfo from '../components/Company/CompanyInfo'\nimport { getWorkingPath, navigate } from 'hookrouter'\nimport withAccessControl from '../components/HOC/AccessControl'\nimport GlobalContext from '../lib/GlobalContext'\nimport UserTypes from '../components/Onboarding/UserTypes'\nimport Tooltip from '@material-ui/core/Tooltip'\nimport { ACL_COMPONENTS } from '../config'\nimport CompanyBusinessActivities from '../components/Company/CompanyBusinessActivities'\nimport CompanyReferences from '../components/Company/CompanyReferences'\n\nconst useStyles = makeStyles(() => ({\n root: {\n flexGrow: 1,\n width: '100%'\n },\n tabs: {\n fontSize: 14,\n height: '100%',\n width: '100%'\n },\n tab: {\n height: 64,\n fontWeight: 'bold',\n textAlign: 'center',\n color: '#525252'\n }\n}))\n\n/**\n * Company\n *\n * @returns {*}\n * @constructor\n */\nconst Company = () => {\n const classes = useStyles()\n const { t } = useTranslation()\n const {\n user,\n upgradeToPremiumOpen,\n setUpgradeToPremiumOpen,\n companyTabValue,\n setCompanyTabValue\n } = useContext(GlobalContext)\n\n /**\n * useEffect\n */\n useEffect(() => {\n switch (getWorkingPath()) {\n case '/company/references':\n setCompanyTabValue(3)\n break\n case '/company/activities':\n setCompanyTabValue(2)\n break\n case '/company/info':\n setCompanyTabValue(1)\n break\n case '/company/profile':\n setCompanyTabValue(0)\n break\n default:\n navigate('/company/profile')\n setCompanyTabValue(0)\n break\n }\n })\n\n /**\n * handleTabChange\n *\n * @param event\n * @param newValue\n */\n const handleTabChange = (event, newValue) => {\n setCompanyTabValue(newValue)\n switch (newValue) {\n case 3:\n if (user.getData().mode !== UserTypes.PRO) {\n setUpgradeToPremiumOpen(!upgradeToPremiumOpen)\n } else {\n navigate('/company/references')\n }\n break\n case 2:\n navigate('/company/activities')\n break\n case 1:\n if (user.getData().mode !== UserTypes.PRO) {\n setUpgradeToPremiumOpen(!upgradeToPremiumOpen)\n } else {\n navigate('/company/info')\n }\n break\n case 0:\n default:\n navigate('/company/profile')\n break\n }\n }\n\n /**\n * getContentRelatedToActiveTab\n */\n const getContentRelatedToActiveTab = () => {\n switch (companyTabValue) {\n case 3:\n return \n case 2:\n return \n case 1:\n return \n case 0:\n default:\n return \n }\n }\n\n /**\n * return\n */\n return (\n \n \n \n {user.getData().mode !== UserTypes.PRO && (\n \n \n \n )}\n {user.getData().mode === UserTypes.PRO && (\n \n )}\n \n {user.getData().mode !== UserTypes.PRO && (\n \n \n \n )}\n {user.getData().mode === UserTypes.PRO && (\n \n )}\n \n \n {getContentRelatedToActiveTab()}\n \n )\n}\n\nexport default withAccessControl(Company, ACL_COMPONENTS.COMPANY)\n","import i18n from 'i18next'\nimport Backend from 'i18next-xhr-backend'\nimport detector from 'i18next-browser-languagedetector'\nimport { initReactI18next } from 'react-i18next'\nimport { VERSION, DEFAULT_LANGUAGE } from './config'\n\ni18n\n .use(detector)\n .use(Backend)\n .use(initReactI18next)\n .init({\n lng: DEFAULT_LANGUAGE,\n backend: {\n loadPath: '/assets/i18n/{{ns}}/{{lng}}.json?v=' + VERSION\n },\n fallbackLng: DEFAULT_LANGUAGE,\n debug: false,\n ns: ['translations'],\n defaultNS: 'translations',\n keySeparator: false,\n interpolation: {\n escapeValue: false,\n formatSeparator: ','\n },\n react: {\n wait: true\n }\n })\n\nexport default i18n\n","import React, { Component } from 'react'\nimport User from './User'\nimport Layout from '../components/Layout'\nimport GlobalContext from './GlobalContext'\nimport CssBaseline from '@material-ui/core/CssBaseline'\nimport { ThemeProvider } from '@material-ui/styles'\nimport { theme } from '../App'\nimport ExternalErrorLogger from '@ennit/react-external-errorlogger'\n\n/**\n * ErrorBoundary\n */\nclass ErrorBoundary extends Component {\n /**\n * constructor\n *\n * @param props\n */\n constructor (props) {\n super(props)\n this.state = { hasError: false }\n }\n\n /**\n * componentDidCatch\n *\n * @param error\n * @param info\n */\n componentDidCatch (error, info) {\n this.setState({ hasError: true })\n ExternalErrorLogger.log({\n text: 'The app runs into the Error Boundary',\n data: {\n error: error,\n info: JSON.stringify(info),\n user: JSON.stringify(this.props.user?.getData() || {})\n }\n })\n }\n\n /**\n * render\n *\n * @returns {React.ReactNode|*}\n */\n render () {\n if (this.state.hasError) {\n return (\n \n \n \n \n

Something went wrong!

\n
\n \n
\n )\n }\n return this.props.children\n }\n}\n\nexport default ErrorBoundary\n","import React, { useContext, useEffect, useState } from \"react\";\nimport clsx from \"clsx\";\nimport Grid from \"@material-ui/core/Grid\";\nimport Card from \"@material-ui/core/Card\";\nimport CardContent from \"@material-ui/core/CardContent\";\nimport { useTranslation } from \"react-i18next\";\nimport withAccessControl, { parsePermissions } from \"../HOC/AccessControl\";\nimport { useMutation, useQuery } from \"urql\";\nimport { makeStyles } from \"@material-ui/core\";\nimport CircularProgress from \"@material-ui/core/CircularProgress\";\nimport UserTypes from \"../Onboarding/UserTypes\";\nimport ChevronLeftIcon from \"@material-ui/icons/ChevronLeft\";\nimport Link from \"@material-ui/core/Link\";\nimport Checkbox from \"@material-ui/core/Checkbox\";\nimport Typography from \"@material-ui/core/Typography\";\nimport GlobalContext from \"../../lib/GlobalContext\";\nimport { navigate } from \"hookrouter\";\nimport LoadingOverlay from \"../LoadingOverlay\";\nimport { MESSAGE_TYPES } from \"../PopupMessages\";\nimport { externalLinkTitles, getAbsoluteLink } from \"../../lib/CmsLinkHandler\";\nimport { ACL_COMPONENTS, STRIPE_PLAN_IDS } from \"../../config\";\nimport ExternalErrorLogger from \"@ennit/react-external-errorlogger\";\nimport FormatHelper from \"../../lib/FormatHelper\";\n\n/**\n * useStyles\n */\nconst useStyles = makeStyles((theme) => ({\n planList: {\n paddingTop: 80,\n [theme.breakpoints.down(\"sm\")]: {\n paddingTop: 0,\n },\n },\n card: {\n width: \"100%\",\n maxWidth: 330,\n marginTop: 20,\n marginBottom: 20,\n \"&:hover\": {\n borderColor: theme.palette.primary.main,\n cursor: \"pointer\",\n },\n },\n cardContent: {\n paddingTop: 20,\n paddingBottom: 20,\n },\n gridItemContainer: {\n flexWrap: \"wrap\",\n [theme.breakpoints.down(\"sm\")]: {\n flexWrap: \"nowrap\",\n },\n },\n gridItemLeft: {\n textAlign: \"center\",\n color: theme.palette.primary.main,\n paddingTop: 5,\n },\n gridItemRight: {\n color: \"#999999\",\n fontSize: 14,\n lineHeight: \"24px\",\n fontWeight: \"bold\",\n textAlign: \"left\",\n [theme.breakpoints.down(\"sm\")]: {\n paddingRight: 10,\n paddingLeft: 10,\n },\n },\n icon: {\n fontSize: 32,\n },\n title: {\n margin: 0,\n fontSize: 24,\n lineHeight: \"30px\",\n },\n link: {\n display: \"inline-block\",\n width: \"100%\",\n maxWidth: 330,\n margin: \"0 auto\",\n paddingBottom: 84,\n textAlign: \"left\",\n },\n checkbox: {\n color: theme.palette.primary.main,\n \"&:checked\": {\n color: theme.palette.primary.main,\n },\n },\n pricing: {\n fontSize: 24,\n color: \"#525252\",\n fontWeight: \"bold\",\n padding: \"10px 0\",\n },\n strikePrice: {\n fontSize: 24,\n color: \"#525252\",\n fontWeight: \"bold\",\n padding: \"10px 0\",\n textDecoration: \"line-through\",\n },\n benefits: {\n fontSize: 14,\n color: \"#525252\",\n fontWeight: \"normal\",\n },\n taxHint: {\n fontSize: 12,\n color: \"#525252\",\n fontWeight: \"bold\",\n padding: \"10px 0\",\n },\n trialNotificationBox: {\n marginBottom: 10,\n },\n trialNotification: {\n fontSize: 14,\n fontWeight: \"normal\",\n color: \"#ffffff\",\n backgroundColor: theme.palette.primary.main,\n height: 32,\n display: \"table-cell\",\n verticalAlign: \"middle\",\n padding: \"5px 10px 3px 10px\",\n marginBottom: 10,\n },\n trialEndedNotification: {\n fontSize: 14,\n fontWeight: \"normal\",\n display: \"table-cell\",\n verticalAlign: \"middle\",\n padding: \"20px 10px 0px 10px\",\n },\n container: {\n position: \"relative\",\n },\n loadingProgress: {\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n marginTop: -36,\n marginLeft: -12,\n },\n}));\n\nconst stripeProductsQuery = `\n {\n readProduct {\n id\n description\n metadata {\n FeatureSet\n }\n name\n plans {\n id\n nickname\n amount\n currency\n interval\n interval_count\n active\n trial_period_days\n trial_possible\n }\n }\n }\n`;\n\nconst updateStripePlanMutation = `\n mutation UpdateCompany (\n $hashId: String!,\n $futurePlanID: String\n ) {\n updateCompany (\n HashID: $hashId, \n FuturePlanID: $futurePlanID\n ) {\n Name\n FeatureSet\n }\n }\n`;\n\nconst queryMyself = `\n{\n readMyself {\n ID\n HashID\n Locale\n Email\n Firstname\n Surname\n Salutation\n StripePublicKey\n CreditCard {\n id\n name\n last4\n expired\n }\n Locations {\n edges {\n node {\n HashID\n Title\n Street\n Zip\n City\n Longitude\n Latitude\n Radius\n Version\n Sort\n Removed\n }\n }\n }\n Company {\n ID\n AdminUserID\n HashID\n FeatureSet\n ZipSearchAreas\n ZipSearchStatistic\n ApplicationFollowUpTimeInDays\n StripeIsTrialing\n StripeTrialingDays\n StripePlanID\n StripeValidThrough\n StripeProductID\n StripeCancelAt\n Name\n URLSegment\n ContactPerson\n Street\n Zip\n City\n Canton\n Distance\n Latitude\n Longitude\n Phone\n Fax\n Website\n Email\n NumberOfEmployees\n LegalForm\n FoundingYear\n MasterBusiness\n TrainingCompany\n BusinessActivityID\n BusinessSpecialities{\n edges {\n node {\n ID\n Title\n NogaCode\n SCCodeCompetence\n BoostScore\n }\n }\n }\n OtherBusinessActivities {\n edges {\n node {\n ID\n }\n }\n }\n OtherBusinessSpecialities {\n edges {\n node {\n ID\n }\n }\n }\n User{\n edges {\n node {\n HashID\n Email\n Firstname\n Surname\n Removed\n SearchAreas {\n HashID\n Title\n ZipList\n }\n }\n }\n }\n Memberships {\n edges {\n node {\n ID\n Title\n LogoUrl\n }\n }\n }\n AllMemberships {\n edges {\n node {\n ID\n Title\n LogoUrl\n IsBadge\n }\n }\n }\n MicrositeCertified\n MicrositeCertifiedUntil\n AdditionalMemberships\n MicrositeColorScheme\n MicrositeDescription\n MicrositeEmailApplicationText\n MicrositeImages {\n edges {\n node {\n Src\n Title\n Alt\n }\n }\n }\n MicrositeLogo {\n Src\n Title\n Alt\n }\n MicrositeReferences {\n edges {\n node {\n Sort\n Title\n Content\n Location\n Year\n Month\n ButtonLink\n ButtonTitle\n MicrositeReferencesImages {\n edges { \n node {\n Src\n Title\n Alt\n }\n }\n }\n }\n }\n }\n ApiAccess {\n edges {\n node {\n RequestUrl\n }\n } \n } \n }\n DossierTemplates {\n edges {\n node {\n HashID\n TemplateName\n }\n }\n }\n Permissions {\n Name\n RequireAdminStatus\n }\n FulltextSearchRequests {\n ID\n Title\n }\n SearchAreas {\n HashID\n Title\n ZipList\n }\n }\n readProduct {\n plans {\n id\n trial_possible\n }\n }\n}\n`;\n\nlet triggerMyselfHandling = false;\n\n/**\n * FreeToPremiumDialogueStep0\n *\n * @returns {*}\n * @constructor\n */\nconst FreeToPremiumDialogueStep0 = (props) => {\n const classes = useStyles();\n const { t } = useTranslation();\n const {\n user,\n token,\n setToken,\n setUser,\n setUpgradeToPremiumOpen,\n setMessage,\n unsetUser,\n unsetToken,\n cmsLinks,\n } = useContext(GlobalContext);\n const [stripeProductData, setStripeProductData] = useState([]);\n const [checkboxState, setCheckboxState] = useState({\n smart: false,\n pro: false,\n });\n\n /**\n * GraphQL query for products\n */\n const [result, executeStripeProductsQuery] = useQuery({\n query: stripeProductsQuery,\n requestPolicy: \"network-only\",\n pause: true,\n });\n\n /**\n * GraphQL mutation for updating the company plan\n */\n const [{ fetching }, executeUpdateStripePlanMutation] = useMutation(\n updateStripePlanMutation\n );\n\n /**\n * GraphQL query for user-data (myself), gets triggered by calling \"executeMyselfQuery()\"\n */\n const [resultMyself, executeMyselfQuery] = useQuery({\n query: queryMyself,\n variables: { token: token.getData().access_token }, // Required as cache-control mechanism\n requestPolicy: \"network-only\",\n pause: true,\n });\n\n /**\n * useEffect\n */\n useEffect(() => {\n if (!stripeProductData.length) {\n executeStripeProductsQuery();\n }\n }, [stripeProductData.length, executeStripeProductsQuery, token, setToken]);\n\n /**\n * GraphQL trigger and result handling\n */\n useEffect(() => {\n if (!fetching && !result.fetching && !resultMyself.fetching) {\n if (result.error) {\n // Check if the user need to be logged out\n if (result.error.message.indexOf(\"User forced logout\") !== -1) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.user.forced.logout\"));\n unsetUser();\n unsetToken();\n navigate(\"/\");\n } else {\n // The query did not return any results!\n ExternalErrorLogger.log({\n text: \"Error fetching stripe productdata on FreeToPremiumDialogueStep0\",\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n errorMessage: result.error.message,\n },\n });\n }\n } else {\n if (\n typeof result.data !== \"undefined\" &&\n typeof result.data.readProduct !== \"undefined\" &&\n !stripeProductData.length\n ) {\n const orderedStripeProductData = result.data.readProduct;\n // reorder the result so Free is at the end\n const priority = [\"smart\", \"pro\", \"gratis\"];\n orderedStripeProductData.sort((a, b) => {\n return (\n priority.indexOf(a.name.toLowerCase().split(\" \").pop()) -\n priority.indexOf(b.name.toLowerCase().split(\" \").pop())\n );\n });\n setStripeProductData(orderedStripeProductData);\n }\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [fetching, result, resultMyself])\n\n /**\n * GraphQL trigger and result handling\n */\n useEffect(() => {\n if (\n !fetching &&\n !result.fetching &&\n !resultMyself.fetching &&\n token.isSet()\n ) {\n if (resultMyself.error) {\n // Check if the user need to be logged out\n if (resultMyself.error.message.indexOf(\"User forced logout\") !== -1) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.user.forced.logout\"));\n unsetUser();\n unsetToken();\n navigate(\"/\");\n } else {\n // The query did not return any results!\n ExternalErrorLogger.log({\n text: \"Error fetching myself on FreeToPremiumDialogueStep0\",\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n errorMessage: resultMyself.error.message,\n },\n });\n }\n } else {\n // Query not fetching right now\n if (\n triggerMyselfHandling &&\n typeof resultMyself.data !== \"undefined\" &&\n typeof resultMyself.data.readMyself !== \"undefined\"\n ) {\n triggerMyselfHandling = false;\n const branchSubsData = [];\n resultMyself.data.readMyself[0].Company.BusinessSpecialities.edges.map(\n (item) => {\n branchSubsData.push(parseInt(item.node.ID));\n return branchSubsData;\n }\n );\n\n const locationData = [];\n resultMyself.data.readMyself[0].Locations.edges.map((item) => {\n const constructionSums = [];\n item.node.ConstructionSumList.edges.map((constructionSum) => {\n constructionSums.push(constructionSum.node.Code);\n return constructionSums;\n });\n\n item.node.ConstructionSums = constructionSums;\n\n locationData.push(item.node);\n return locationData;\n });\n\n locationData.sort((a, b) => {\n return a.Sort - b.Sort;\n });\n\n const companyUsersData = [];\n resultMyself.data.readMyself[0].Company.User.edges.map((item) => {\n if (item.node.HashID !== resultMyself.data.readMyself[0].HashID) {\n companyUsersData.push(item.node);\n }\n return companyUsersData;\n });\n\n const memberships = [];\n resultMyself.data.readMyself[0].Company.Memberships.edges.map(\n (item) => {\n memberships.push(item.node);\n return memberships;\n }\n );\n\n const allMemberships = [];\n resultMyself.data.readMyself[0].Company.AllMemberships.edges.map(\n (item) => {\n allMemberships.push(item.node);\n return allMemberships;\n }\n );\n\n const dossierTemplatesData = [];\n resultMyself.data.readMyself[0].DossierTemplates.edges.map((item) => {\n dossierTemplatesData.push(item.node);\n return dossierTemplatesData;\n });\n\n companyUsersData.sort((a, b) => {\n if (a.Firstname.toLowerCase() < b.Firstname.toLowerCase()) {\n return -1;\n }\n if (a.Firstname.toLowerCase() > b.Firstname.toLowerCase()) {\n return 1;\n }\n return 0;\n });\n\n // Close upgrade process\n setUpgradeToPremiumOpen(false);\n\n let trialPossible = false;\n\n result.data.readProduct.map((productItem) => {\n productItem.plans.map((item) => {\n if (item.id.includes(STRIPE_PLAN_IDS.SMART.YEARLY)) {\n trialPossible = item.trial_possible;\n }\n return item;\n });\n return productItem;\n });\n\n // Map the user-data\n user.setData({\n id: resultMyself.data.readMyself[0].ID,\n hashID: resultMyself.data.readMyself[0].HashID,\n locale: resultMyself.data.readMyself[0].Locale || \"\",\n email: resultMyself.data.readMyself[0].Email,\n firstName: resultMyself.data.readMyself[0].Firstname,\n lastName: resultMyself.data.readMyself[0].Surname,\n salutation: resultMyself.data.readMyself[0].Salutation || \"\",\n mode:\n resultMyself.data.readMyself[0].Company.FeatureSet === null\n ? null\n : resultMyself.data.readMyself[0].Company.FeatureSet.toLowerCase(),\n stripePublicKey:\n resultMyself.data.readMyself[0].StripePublicKey || \"\",\n creditCard: resultMyself.data.readMyself[0].CreditCard,\n locations: locationData || [],\n company: {\n id: resultMyself.data.readMyself[0].Company.ID,\n hashID: resultMyself.data.readMyself[0].Company.HashID,\n name:\n resultMyself.data.readMyself[0].Company.Name ||\n \"TODO COMPANY-NAME\", // TODO: Remove fallback company name for production (requires consistent data)\n street: resultMyself.data.readMyself[0].Company.Street || \"\",\n zip: resultMyself.data.readMyself[0].Company.Zip || \"\",\n city: resultMyself.data.readMyself[0].Company.City || \"\",\n canton: resultMyself.data.readMyself[0].Company.Canton || \"\",\n distance: resultMyself.data.readMyself[0].Company.Distance || 50,\n latitude: resultMyself.data.readMyself[0].Company.Latitude || null,\n longitude:\n resultMyself.data.readMyself[0].Company.Longitude || null,\n phone: resultMyself.data.readMyself[0].Company.Phone || \"\",\n mobile: resultMyself.data.readMyself[0].Company.Mobile || \"\",\n fax: resultMyself.data.readMyself[0].Company.Fax || \"\",\n email: resultMyself.data.readMyself[0].Company.Email || \"\",\n website: resultMyself.data.readMyself[0].Company.Website || \"\",\n employeeCount:\n resultMyself.data.readMyself[0].Company.NumberOfEmployees || \"\",\n legalForm: resultMyself.data.readMyself[0].Company.LegalForm || \"\",\n foundingYear:\n resultMyself.data.readMyself[0].Company.FoundingYear || \"\",\n masterOperation:\n FormatHelper.boolToString(\n resultMyself.data.readMyself[0].Company.MasterBusiness\n ) || \"\",\n trainingCompany:\n FormatHelper.boolToString(\n resultMyself.data.readMyself[0].Company.TrainingCompany\n ) || \"\",\n branchCategory:\n resultMyself.data.readMyself[0].Company.BusinessActivityID || \"\",\n branchSubs: branchSubsData || [],\n users: companyUsersData || [],\n stripeIsTrialing:\n resultMyself.data.readMyself[0].Company.StripeIsTrialing,\n stripeTrialingDays:\n resultMyself.data.readMyself[0].Company.StripeTrialingDays,\n stripePlanId: resultMyself.data.readMyself[0].Company.StripePlanID,\n stripeValidThrough:\n resultMyself.data.readMyself[0].Company.StripeValidThrough,\n stripeProductId:\n resultMyself.data.readMyself[0].Company.StripeProductID,\n stripeCancelAt:\n resultMyself.data.readMyself[0].Company.StripeCancelAt,\n stripeFuturePlans:\n resultMyself.data.readMyself[0].Company.StripeFuturePlans,\n trialPossible: trialPossible,\n memberships: memberships,\n allMemberships: allMemberships,\n zipSearchAreas:\n resultMyself.data.readMyself[0].Company.ZipSearchAreas,\n zipSearchStatistic:\n resultMyself.data.readMyself[0].Company.ZipSearchStatistic,\n applicationFollowUpTimeInDays:\n resultMyself.data.readMyself[0].Company.ApplicationFollowUpTimeInDays\n },\n dossierTemplates: dossierTemplatesData,\n permissions: parsePermissions(\n resultMyself.data.readMyself[0].Permissions\n ),\n fulltextSearchRequests:\n resultMyself.data.readMyself[0].FulltextSearchRequests,\n searchAreas: resultMyself.data.readMyself[0].SearchAreas,\n });\n\n // Add the user to global context\n setUser(user);\n\n // Redirect\n navigate(\"/projects-free\");\n }\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [result, resultMyself, fetching, token])\n\n /**\n * handlePlanChange\n *\n * @param planData\n */\n const handlePlanChange = (planData) => {\n if (planData.name.toLowerCase().includes(\"gratis\")) {\n if (user.getData().mode === UserTypes.FREE) {\n setUpgradeToPremiumOpen(false);\n navigate(\"/projects-free\");\n } else {\n setCheckboxState({\n smart: false,\n pro: false,\n });\n\n executeUpdateStripePlanMutation({\n hashId: user.getData().company.hashID,\n futurePlanID: planData.plans[0].id,\n }).then((result) => {\n if (result.error) {\n // Check if the user need to be logged out\n if (result.error.message.indexOf(\"User forced logout\") !== -1) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.user.forced.logout\"));\n setUpgradeToPremiumOpen(false);\n unsetUser();\n unsetToken();\n navigate(\"/\");\n } else {\n ExternalErrorLogger.log({\n text: \"Error changing plan on FreeToPremiumDialogueStep0\",\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n planData: JSON.stringify(planData),\n errorMessage: result.error.message,\n },\n });\n }\n } else {\n if (\n typeof result.data !== \"undefined\" &&\n typeof result.data.updateCompany !== \"undefined\" &&\n result.data.updateCompany !== null\n ) {\n triggerMyselfHandling = true;\n // Update the user with updated company setup\n executeMyselfQuery();\n }\n }\n });\n }\n } else {\n let monthlyPlanData = {};\n let yearlyPlanData = {};\n planData.plans.map((item) => {\n if (item.id.includes(\"monthly\")) {\n monthlyPlanData = item;\n } else if (\n item.id.includes(STRIPE_PLAN_IDS.SMART.YEARLY) ||\n item.id.includes(STRIPE_PLAN_IDS.PRO.YEARLY)\n ) {\n yearlyPlanData = item;\n }\n return item;\n });\n props.setFormData(\n Object.assign({}, props.formData, {\n step0: {\n plans: { monthly: monthlyPlanData, yearly: yearlyPlanData },\n },\n step2: {\n branchSubs: user.getData().company.branchSubs,\n },\n })\n );\n if (user.hasAddress()) {\n props.setStep(3);\n } else {\n props.setStep(1);\n }\n }\n };\n\n /**\n * FreePlanCard\n *\n * @param data\n * @returns {*}\n * @constructor\n */\n const FreePlanCard = (data) => {\n return (\n handlePlanChange(data)}\n >\n \n \n \n \n \n \n {t(\"general.label.back.to.free\")}\n \n \n \n \n );\n };\n\n /**\n * SmartPlanCard\n *\n * @param data\n * @returns {*}\n * @constructor\n */\n const SmartPlanCard = (data) => {\n let yearlyPlanData = null;\n\n data.plans.map((item) => {\n if (item.id.includes(STRIPE_PLAN_IDS.SMART.YEARLY)) {\n yearlyPlanData = item;\n }\n return item;\n });\n\n return yearlyPlanData ? (\n handlePlanChange(data)}\n onMouseEnter={() => {\n setCheckboxState({\n ...checkboxState,\n smart: true,\n });\n }}\n onMouseLeave={() => {\n setCheckboxState({\n ...checkboxState,\n smart: false,\n });\n }}\n >\n \n \n \n \n \n \n \n {data.name}\n \n \n {yearlyPlanData.currency.toUpperCase()}{\" \"}\n {(\n parseInt(yearlyPlanData.amount).toFixed(2) /\n 100 /\n 12\n ).toFixed(2)}{\" \"}\n / {t(\"general.label.month\")}\n \n {props.showSmartTrialNotification(\n yearlyPlanData.trial_period_days,\n yearlyPlanData.trial_possible\n ) && (\n
\n \n {t(\"general.label.days.of.testing\", {\n days: yearlyPlanData.trial_period_days,\n })}\n \n
\n )}\n \n {t(\"general.label.smart.benefits\")}\n \n
\n
\n
\n \n
\n \n ) : null;\n };\n\n /**\n * ProPlanCard\n *\n * @param data\n * @returns {*}\n * @constructor\n */\n const ProPlanCard = (data) => {\n let yearlyPlanData = null;\n data.plans.map((item) => {\n if (item.id.includes(STRIPE_PLAN_IDS.PRO.YEARLY)) {\n yearlyPlanData = item;\n }\n return item;\n });\n\n return yearlyPlanData ? (\n handlePlanChange(data)}\n onMouseEnter={() => {\n setCheckboxState({ ...checkboxState, pro: true });\n }}\n onMouseLeave={() => {\n setCheckboxState({ ...checkboxState, pro: false });\n }}\n >\n \n \n \n \n \n \n \n {data.name}\n \n \n {yearlyPlanData.currency.toUpperCase()}{\" \"}\n {(\n parseInt(yearlyPlanData.amount).toFixed(2) /\n 100 /\n 12\n ).toFixed(2)}{\" \"}\n / {t(\"general.label.month\")}\n \n \n {t(\"general.label.pro.benefits\")}\n \n \n \n \n \n \n \n ) : null;\n };\n\n /**\n * displayPlans\n *\n * @param plan\n * @returns {null|*}\n */\n const displayPlans = (plan) => {\n switch (plan.metadata.FeatureSet.toLowerCase()) {\n case UserTypes.FREE:\n return FreePlanCard(plan);\n case UserTypes.SMART:\n return SmartPlanCard(plan);\n case UserTypes.PRO:\n return ProPlanCard(plan);\n default:\n return null;\n }\n };\n\n /**\n * showTrialHasEnded\n *\n * @returns {string}\n */\n const showTrialHasEnded = () => {\n if (\n user.getData().company.stripeIsTrialing &&\n user.getData().company.stripeTrialingDays === 0\n ) {\n return (\n \n {t(\"general.label.trial.ended\")}\n \n );\n }\n };\n\n /**\n * return\n */\n return (\n <>\n \n

{t(\"general.label.premium.upgrade\")}

\n {result.fetching && (\n \n )}\n
\n {showTrialHasEnded()}\n \n {stripeProductData.map((item) => displayPlans(item))}\n {(fetching || resultMyself.fetching) && }\n \n \n \n {!result.fetching && t(\"form.label.further.tariff.information\")}\n \n {!result.fetching && (\n \n {t(\"general.label.tax.hint\")}\n \n )}\n \n \n );\n};\n\nexport default withAccessControl(\n FreeToPremiumDialogueStep0,\n ACL_COMPONENTS.FREE_TO_PREMIUM_DIALOGUE_STEP_0\n);\n","import React from 'react'\nimport { makeStyles, useTheme } from '@material-ui/core/styles'\nimport Stepper from '@material-ui/core/Stepper'\nimport Step from '@material-ui/core/Step'\nimport StepLabel from '@material-ui/core/StepLabel'\nimport { useTranslation } from 'react-i18next'\nimport useMediaQuery from '@material-ui/core/useMediaQuery'\n\n/**\n * useStyles\n */\nconst useStyles = makeStyles(theme => ({\n stepper: {\n justifyContent: 'center',\n paddingTop: theme.spacing(7),\n paddingRight: '0',\n paddingBottom: theme.spacing(7),\n paddingLeft: '0',\n background: 'transparent'\n },\n stepperMobile: {\n paddingLeft: 0\n },\n labelTextMobile: {\n alignItems: 'flex-start',\n textAlign: 'left'\n },\n iconText: {\n fill: '#fff'\n },\n labelText: {\n hyphens: 'auto'\n }\n}))\n\n/**\n * FreeToPremiumStepper\n *\n * @param props\n * @returns {*}\n * @constructor\n */\nconst FreeToPremiumStepper = props => {\n const classes = useStyles()\n const theme = useTheme()\n const matches = useMediaQuery(theme.breakpoints.up('sm'))\n const { t } = useTranslation()\n const steps = [\n t('form.0.label.steps.1'),\n t('form.0.label.steps.2'),\n t('form.0.label.steps.3')\n ]\n\n /**\n * return\n */\n return (\n
\n {matches && (\n \n {steps.map(label => (\n \n \n {label}\n \n \n ))}\n \n )}\n {!matches && (\n \n {steps.map(label => (\n \n \n {label}\n \n \n ))}\n \n )}\n
\n )\n}\n\nexport default FreeToPremiumStepper\n","import React, { useContext, useEffect, useState } from 'react'\nimport clsx from 'clsx'\nimport { makeStyles } from '@material-ui/core/styles'\nimport TextField from '@material-ui/core/TextField'\nimport Button from '@material-ui/core/Button'\nimport Grid from '@material-ui/core/Grid'\nimport { useTranslation } from 'react-i18next'\nimport Joi from '@hapi/joi'\nimport FreeToPremiumStepper from './FreeToPremiumStepper'\nimport FormValueErrorsBuilder from '../../lib/FormValueErrorsBuilder'\nimport GetSafe from '../../lib/GetSafe'\nimport withAccessControl from '../HOC/AccessControl'\nimport GooglePlacesAPIHelper from '../../lib/GooglePlacesAPIHelper'\nimport PhoneField from '../PhoneField'\nimport ZefixCompanyAutocompleteField from '../ZefixCompanyAutocompleteField'\nimport { ACL_COMPONENTS } from '../../config'\nimport GooglePlacesAutosuggestStreet from '../GooglePlacesAutosuggestFields/GooglePlacesAutosuggestStreet'\nimport GooglePlacesAutosuggestZip from '../GooglePlacesAutosuggestFields/GooglePlacesAutosuggestZip'\nimport GooglePlacesAutosuggestCity from '../GooglePlacesAutosuggestFields/GooglePlacesAutosuggestCity'\nimport { MESSAGE_TYPES } from '../PopupMessages'\nimport GlobalContext from '../../lib/GlobalContext'\nimport ExternalErrorLogger from '@ennit/react-external-errorlogger'\n\nconst useStyles = makeStyles(theme => ({\n textField: {\n width: 160,\n '&:first-of-type': {\n marginRight: 5\n },\n '&:last-of-type': {\n marginLeft: 5\n },\n [theme.breakpoints.down('sm')]: {\n width: '100%',\n '&:first-of-type': {\n marginRight: 0\n },\n '&:last-of-type': {\n marginLeft: 0\n }\n }\n },\n textFieldLong: {\n width: '100%',\n maxWidth: 330,\n '&:first-of-type': {\n marginRight: '0'\n },\n '&:last-of-type': {\n marginLeft: '0'\n }\n },\n title: {\n margin: 0,\n fontSize: 24,\n lineHeight: '30px'\n },\n intro: {\n fontSize: 16,\n lineHeight: '24px',\n textAlign: 'left'\n },\n item: {\n position: 'relative',\n width: '100%',\n maxWidth: 330,\n margin: '0 auto'\n },\n itemStepper: {\n maxWidth: 600\n },\n itemHeader: {\n maxWidth: 444,\n paddingTop: 44,\n paddingBottom: 24,\n textAlign: 'center',\n [theme.breakpoints.down('sm')]: {\n paddingTop: 20,\n paddingBottom: 20,\n textAlign: 'left'\n }\n },\n input: {\n marginLeft: 60\n },\n itemPhone: {\n height: 80,\n overflow: 'hidden',\n '&.state-phoneField-open': {\n height: 'auto',\n overflow: 'visible',\n zIndex: 3\n }\n },\n itemMobile: {\n height: 80,\n overflow: 'hidden',\n '&.state-mobileField-open': {\n height: 'auto',\n overflow: 'visible',\n zIndex: 3\n }\n },\n itemFax: {\n height: 80,\n overflow: 'hidden',\n '&.state-faxField-open': {\n height: 'auto',\n overflow: 'visible',\n zIndex: 3\n }\n },\n buttonBack: {\n width: 147,\n color: theme.palette.primary.main,\n marginLeft: 'auto',\n fontWeight: 'bold',\n [theme.breakpoints.down('sm')]: {\n width: '100%'\n }\n },\n buttonNext: {\n width: 147,\n color: '#fff',\n marginRight: 'auto',\n fontWeight: 'bold',\n [theme.breakpoints.down('sm')]: {\n width: '100%'\n }\n },\n buttonContainer: {\n marginTop: theme.spacing(4)\n }\n}))\n\n/**\n * FreeToPremiumDialogueStep1\n *\n * @returns {*}\n * @constructor\n */\nconst FreeToPremiumDialogueStep1 = props => {\n const classes = useStyles()\n const { t } = useTranslation()\n const { setMessage, token, user } = useContext(GlobalContext)\n const [formValues, setFormValues] = useState({\n company: '',\n street: '',\n zip: '',\n city: '',\n phone: '',\n mobile: '',\n fax: '',\n website: '',\n email: ''\n })\n const [formValueErrors, setFormValueErrors] = useState({\n company: { hasError: false, message: '' },\n street: { hasError: false, message: '' },\n zip: { hasError: false, message: '' },\n city: { hasError: false, message: '' },\n phone: { hasError: false, message: '' },\n mobile: { hasError: false, message: '' },\n fax: { hasError: false, message: '' },\n website: { hasError: false, message: '' },\n email: { hasError: false, message: '' }\n })\n const [autoCompleteCompanyData, setAutoCompleteCompanyData] = useState({})\n const [activePhone, setActivePhone] = useState('state-phoneField-closed')\n const [activeMobile, setActiveMobile] = useState('state-mobileField-closed')\n const [activeFax, setActiveFax] = useState('state-faxField-closed')\n const [streetFormValue, setStreetFormValue] = useState('')\n const [zipFormValue, setZipFormValue] = useState('')\n const [cityFormValue, setCityFormValue] = useState('')\n\n /**\n * useEffect\n */\n useEffect(() => {\n setFormValues(props.formData.step1)\n }, [props.formData.step1])\n\n /**\n * Joi validation schema\n */\n const schema = Joi.object({\n company: Joi.string().required(),\n street: Joi.string()\n .trim()\n .required(),\n zip: Joi.string()\n .trim()\n .required(),\n city: Joi.string()\n .trim()\n .required(),\n lat: Joi.any(),\n lon: Joi.any(),\n phone: Joi.string().allow(''),\n mobile: Joi.string().allow(''),\n fax: Joi.string().allow(''),\n website: Joi.string()\n .regex(\n /https?:\\/\\/(www\\.)?[-a-zA-ZöäüÖÄÜ0-9@:%._+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b([-a-zA-Z0-9()@:%_+.~#?&/=]*)/\n )\n .allow(''),\n email: Joi.string()\n .email({ tlds: false })\n .allow('')\n })\n\n /**\n * determineCountry\n *\n * checks if googlePlacesResult is in CH.\n *\n * @param googlePlacesResult\n * @returns {number}\n */\n const determineCountry = googlePlacesResult => {\n let isInCH = []\n googlePlacesResult.results.map(item => {\n isInCH = item.address_components.filter(addressComponent => {\n return addressComponent.short_name === 'CH'\n })\n return item\n })\n return isInCH.length\n }\n\n /**\n * handleFormBack\n */\n const handleFormBack = () => {\n props.setStep(0)\n }\n\n /**\n * handleFromNext\n */\n const handleFormNext = () => {\n if (formValues.street.trim() === '') {\n formValues.street = streetFormValue\n }\n if (formValues.zip.trim() === '') {\n formValues.zip = zipFormValue\n }\n if (formValues.city.trim() === '') {\n formValues.city = cityFormValue\n }\n\n if (\n formValues.website !== '' &&\n !formValues.website.includes('http://') &&\n !formValues.website.includes('https://')\n ) {\n formValues.website = 'https://' + formValues.website\n }\n\n const { error } = schema.validate(formValues, { abortEarly: false })\n\n if (error) {\n const formErrors = FormValueErrorsBuilder(error, t)\n setFormValueErrors({ ...formErrors })\n } else {\n const addressString = `${formValues.street}+${formValues.zip}+${formValues.city}`\n\n GooglePlacesAPIHelper.getCoordsByAddress(addressString).then(result => {\n if (result.status === 'OK' && determineCountry(result)) {\n formValues.lat = result.results[0].geometry.location.lat\n formValues.lon = result.results[0].geometry.location.lng\n\n props.setFormData(\n Object.assign({}, props.formData, { step1: formValues })\n )\n\n props.setStep(2)\n } else if (result.status === 'OK' && !determineCountry(result)) {\n setFormValueErrors({\n street: {\n hasError: true,\n message: t('error.form.address.not.ch')\n },\n zip: { hasError: true, message: t('error.form.address.not.ch') },\n city: { hasError: true, message: t('error.form.address.not.ch') }\n })\n } else if (result.status === 'ZERO_RESULTS') {\n setFormValueErrors({\n street: {\n hasError: true,\n message: t('error.form.invalid.address')\n },\n zip: { hasError: true, message: t('error.form.invalid.address') },\n city: { hasError: true, message: t('error.form.invalid.address') }\n })\n } else {\n let errorMessage = ''\n if (result.error_message !== undefined) {\n ExternalErrorLogger.log({\n text: 'Error get coords by address on FreeToPremiumDialogueStep1',\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n address: JSON.stringify(addressString),\n errorMessage: result.error_message\n }\n })\n errorMessage =\n '
' +\n '' +\n t('general.label.error.message') +\n '' +\n ' ' +\n result.error_message\n }\n setMessage(\n MESSAGE_TYPES.ERROR,\n t('error.general.short') +\n '
' +\n '
' +\n '' +\n t('general.label.status.code') +\n '' +\n ' ' +\n result.status +\n errorMessage +\n '
' +\n '
' +\n t('general.label.contact.smartconext')\n )\n }\n })\n }\n }\n\n /**\n * handleCompanyChange\n *\n * @param event\n */\n const handleCompanyChange = event => {\n setFormValues({ ...formValues, company: event.target.value })\n }\n\n /**\n * handleStreetChange\n *\n * @param autosuggestResult\n */\n const handleStreetChange = autosuggestResult => {\n setFormValues({\n ...formValues,\n street:\n autosuggestResult.addressObject.street +\n ' ' +\n autosuggestResult.addressObject.number,\n zip: autosuggestResult.addressObject.zip,\n city:\n autosuggestResult.addressObject.city === ''\n ? formValues.city\n : autosuggestResult.addressObject.city\n })\n }\n\n /**\n * handleZipChange\n *\n * @param autosuggestResult\n */\n const handleZipChange = autosuggestResult => {\n setFormValues({\n ...formValues,\n zip: autosuggestResult.addressObject.zip,\n city:\n autosuggestResult.addressObject.city === ''\n ? formValues.city\n : autosuggestResult.addressObject.city\n })\n }\n\n /**\n * handleCityChange\n *\n * @param autosuggestResult\n */\n const handleCityChange = autosuggestResult => {\n setFormValues({ ...formValues, city: autosuggestResult.addressObject.city })\n }\n\n /**\n * handlePhoneChange\n *\n * @param event\n */\n const handlePhoneChange = event => {\n setFormValues({ ...formValues, phone: event.target.value })\n }\n\n /**\n * handleMobileChange\n *\n * @param event\n */\n const handleMobileChange = event => {\n setFormValues({ ...formValues, mobile: event.target.value })\n }\n\n /**\n * handleFaxChange\n *\n * @param event\n */\n const handleFaxChange = event => {\n setFormValues({ ...formValues, fax: event.target.value })\n }\n\n /**\n * handleWebsiteChange\n *\n * @param event\n */\n const handleWebsiteChange = event => {\n setFormValues({ ...formValues, website: event.target.value })\n }\n\n /**\n * handleEmailChange\n *\n * @param event\n */\n const handleEmailChange = event => {\n setFormValues({ ...formValues, email: event.target.value })\n }\n\n /**\n * onAutocompleteSelect\n * Handle the result of the autocomplete\n * @param company\n */\n const onAutocompleteSelect = company => {\n if (company !== autoCompleteCompanyData) {\n setAutoCompleteCompanyData(company)\n\n setFormValues({\n company: company.Name,\n street: company.Address.AddressInformation.Street,\n zip: company.Address.AddressInformation.SwissZipCode,\n city: company.Address.AddressInformation.Town,\n phone: '',\n mobile: '',\n fax: '',\n website: '',\n email: ''\n })\n }\n }\n\n /**\n * return\n */\n return (\n <>\n \n

{t('general.label.premium.upgrade')}

\n

{t('onboarding.intro')}

\n
\n \n \n \n \n \n formValueErrors.company.hasError, false)}\n helperText={GetSafe(() => formValueErrors.company.message, '')}\n onChange={handleCompanyChange}\n margin='normal'\n />\n \n \n formValueErrors.street.hasError,\n false\n )}\n helperText={GetSafe(() => formValueErrors.street.message, '')}\n formValue={streetFormValue}\n formValueSetter={setStreetFormValue}\n />\n \n \n formValueErrors.zip.hasError, false)}\n helperText={GetSafe(() => formValueErrors.zip.message, '')}\n formValue={zipFormValue}\n formValueSetter={setZipFormValue}\n />\n formValueErrors.city.hasError, false)}\n helperText={GetSafe(() => formValueErrors.city.message, '')}\n formValue={cityFormValue}\n formValueSetter={setCityFormValue}\n />\n \n {\n if (activePhone === 'state-phoneField-closed') {\n setActivePhone('state-phoneField-open')\n } else {\n setActivePhone('state-phoneField-closed')\n }\n }}\n >\n \n formValueErrors.phone.hasError, false)}\n helperText={GetSafe(() => formValueErrors.phone.message, '')}\n onChange={handlePhoneChange}\n margin='normal'\n fullWidth\n defaultCountry='CH'\n InputProps={{ classes: { input: classes.input } }}\n />\n \n \n {\n if (activeMobile === 'state-mobileField-closed') {\n setActiveMobile('state-mobileField-open')\n } else {\n setActiveMobile('state-mobileField-closed')\n }\n }}\n >\n \n formValueErrors.mobile.hasError, false)}\n helperText={GetSafe(() => formValueErrors.mobile.message, '')}\n onChange={handleMobileChange}\n margin='normal'\n fullWidth\n defaultCountry='CH'\n InputProps={{ classes: { input: classes.input } }}\n />\n \n \n {\n if (activeFax === 'state-faxField-closed') {\n setActiveFax('state-faxField-open')\n } else {\n setActiveFax('state-faxField-closed')\n }\n }}\n >\n formValueErrors.fax.hasError, false)}\n helperText={GetSafe(() => formValueErrors.fax.message, '')}\n onChange={handleFaxChange}\n margin='normal'\n fullWidth\n defaultCountry='CH'\n InputProps={{ classes: { input: classes.input } }}\n />\n \n \n formValueErrors.website.hasError, false)}\n helperText={GetSafe(() => formValueErrors.website.message, '')}\n onChange={handleWebsiteChange}\n margin='normal'\n />\n \n \n formValueErrors.email.hasError, false)}\n helperText={GetSafe(() => formValueErrors.email.message, '')}\n onChange={handleEmailChange}\n margin='normal'\n />\n \n\n \n \n {t('form.label.back')}\n \n \n {t('form.label.next')}\n \n \n \n )\n}\n\nexport default withAccessControl(\n FreeToPremiumDialogueStep1,\n ACL_COMPONENTS.FREE_TO_PREMIUM_DIALOGUE_STEP_1\n)\n","import React, { useCallback, useContext, useEffect, useState } from \"react\";\nimport clsx from \"clsx\";\nimport TextField from \"@material-ui/core/TextField\";\nimport Button from \"@material-ui/core/Button\";\nimport Grid from \"@material-ui/core/Grid\";\nimport { useTranslation } from \"react-i18next\";\nimport Joi from \"@hapi/joi\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport FormControlLabel from \"@material-ui/core/FormControlLabel\";\nimport Checkbox from \"@material-ui/core/Checkbox\";\nimport FreeToPremiumStepper from \"./FreeToPremiumStepper\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport Typography from \"@material-ui/core/Typography\";\nimport FormValueErrorsBuilder from \"../../lib/FormValueErrorsBuilder\";\nimport GetSafe from \"../../lib/GetSafe\";\nimport { useQuery } from \"urql\";\nimport GlobalContext from \"../../lib/GlobalContext\";\nimport CircularProgress from \"@material-ui/core/CircularProgress\";\nimport { green } from \"@material-ui/core/colors\";\nimport withAccessControl from \"../HOC/AccessControl\";\nimport { MESSAGE_TYPES } from \"../PopupMessages\";\nimport { navigate } from \"hookrouter\";\nimport { ACL_COMPONENTS } from \"../../config\";\nimport ExternalErrorLogger from \"@ennit/react-external-errorlogger\";\n\nconst useStyles = makeStyles((theme) => ({\n textField: {\n width: 160,\n \"&:first-of-type\": {\n marginRight: 5,\n },\n \"&:last-of-type\": {\n marginLeft: 5,\n },\n [theme.breakpoints.down(\"sm\")]: {\n width: \"100%\",\n \"&:first-of-type\": {\n marginRight: 0,\n },\n \"&:last-of-type\": {\n marginLeft: 0,\n },\n },\n },\n textFieldLong: {\n width: \"100%\",\n maxWidth: 330,\n \"&:first-of-type\": {\n marginRight: \"0\",\n },\n \"&:last-of-type\": {\n marginLeft: \"0\",\n },\n },\n checkboxControl: {\n marginRight: 0,\n },\n title: {\n margin: 0,\n fontSize: 24,\n lineHeight: \"30px\",\n },\n intro: {\n fontSize: 16,\n lineHeight: \"24px\",\n textAlign: \"left\",\n },\n item: {\n width: \"100%\",\n maxWidth: 330,\n margin: \"0 auto\",\n },\n itemStepper: {\n maxWidth: 600,\n },\n itemHeader: {\n maxWidth: 444,\n paddingTop: 44,\n paddingBottom: 24,\n textAlign: \"center\",\n [theme.breakpoints.down(\"sm\")]: {\n paddingTop: 20,\n paddingBottom: 20,\n textAlign: \"left\",\n },\n },\n itemSelection: {\n paddingTop: 24,\n },\n buttonBack: {\n width: 147,\n color: theme.palette.primary.main,\n marginLeft: \"auto\",\n fontWeight: \"bold\",\n [theme.breakpoints.down(\"sm\")]: {\n width: \"100%\",\n },\n },\n buttonNext: {\n width: 147,\n color: \"#fff\",\n marginRight: \"auto\",\n fontWeight: \"bold\",\n [theme.breakpoints.down(\"sm\")]: {\n width: \"100%\",\n },\n },\n buttonContainer: {\n marginTop: theme.spacing(4),\n },\n preciseTag: {\n width: \"100%\",\n maxWidth: 330,\n marginTop: theme.spacing(2),\n marginBottom: theme.spacing(1),\n textAlign: \"left\",\n },\n branchCategorySub: {\n width: \"100%\",\n maxWidth: 330,\n marginTop: theme.spacing(2),\n marginBottom: theme.spacing(1),\n textAlign: \"left\",\n },\n loadingProgress: {\n color: green[500],\n top: \"50%\",\n left: \"50%\",\n },\n}));\n\nconst queryBranches = `\n {\n readBusinessActivities (\n sortBy: [{field: Sort, direction: ASC}],\n ){\n ID,\n Title,\n NogaCode,\n BusinessSpecialities {\n edges {\n node {\n ID,\n Title\n }\n }\n }\n }\n }\n`;\n\nconst initialFormErrorsState = {\n branchCategory: { hasError: false, message: \"\" },\n branchSubs: { hasError: false, message: \"\" },\n};\n\n/**\n * FreeToPremiumDialogueStep2\n *\n * @returns {*}\n * @constructor\n */\nconst FreeToPremiumDialogueStep2 = (props) => {\n const classes = useStyles();\n const { t } = useTranslation();\n const { token, setMessage, unsetUser, unsetToken, user } =\n useContext(GlobalContext);\n const [formValues, setFormValues] = useState({\n branchCategory: 0,\n branchSubs: [],\n });\n const [formValueErrors, setFormValueErrors] = useState(\n initialFormErrorsState\n );\n const [branchData, setBranchData] = useState(false);\n const [hasBranchSubData, setHasBranchSubData] = useState(false);\n\n // GraphQL query for branches, gets triggered by calling \"executeBranchesQuery()\"\n const [result, executeBranchesQuery] = useQuery({\n query: queryBranches,\n variables: {},\n pause: true,\n });\n\n /**\n * executeBranchesQueryCallback\n * Implementation of https://reactjs.org/docs/hooks-faq.html#is-it-safe-to-omit-functions-from-the-list-of-dependencies\n */\n const executeBranchesQueryCallback = useCallback(() => {\n if (!result.fetching && !branchData) {\n executeBranchesQuery();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [result, branchData]);\n\n /**\n * useEffect\n */\n useEffect(() => {\n setFormValues(props.formData.step2);\n executeBranchesQueryCallback();\n }, [props.formData.step2, executeBranchesQueryCallback]);\n\n // GraphQL trigger and result handling\n useEffect(() => {\n if (!result.fetching) {\n if (result.error) {\n // Check if the user need to be logged out\n if (result.error.message.indexOf(\"User forced logout\") !== -1) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.user.forced.logout\"));\n unsetUser();\n unsetToken();\n navigate(\"/\");\n } else {\n // Something went very wrong\n ExternalErrorLogger.log({\n text: \"Error fetching branches on FreeToPremiumDialogueStep2\",\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n errorMessage: result.error.message,\n },\n });\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.fetching.projects\"));\n }\n } else {\n // Query not fetching right now\n if (\n typeof result.data !== \"undefined\" &&\n typeof result.data.readBusinessActivities !== \"undefined\" &&\n !branchData\n ) {\n // Without business branches/activities we cannot continue\n if (result.data.readBusinessActivities.length === 0) {\n throw Error(\"No business branches/activities found\");\n }\n\n // Add the projects to the global context\n setBranchData(result.data.readBusinessActivities);\n }\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [result])\n\n /**\n * Joi validation schema\n */\n const schema = Joi.object({\n branchCategory: Joi.number().integer().min(1).required(),\n branchSubs: Joi.array().items(Joi.number()),\n });\n\n /**\n * handleFromSubmit\n */\n const handleFormSubmit = (toStep) => {\n if (toStep === 1) {\n props.setStep(toStep);\n } else {\n const { error } = schema.validate(formValues, { abortEarly: false });\n\n if (error) {\n const formErrors = FormValueErrorsBuilder(error, t);\n setFormValueErrors({ ...formErrors });\n } else {\n props.setFormData(\n Object.assign({}, props.formData, { step2: formValues })\n );\n props.setStep(toStep);\n }\n }\n };\n\n /**\n * handleBranchCategoryChange\n *\n * @param event\n */\n const handleBranchCategoryChange = (event) => {\n setFormValueErrors(initialFormErrorsState);\n setFormValues(\n Object.assign({}, { branchCategory: event.target.value, branchSubs: [] })\n );\n };\n\n /**\n * handleBranchesChange\n *\n * @param event\n */\n const handleBranchSubChange = (event) => {\n const branchSubId = parseInt(event.target.value);\n if (event.target.checked) {\n handleBranchSubAdd(branchSubId);\n } else {\n handleBranchSubRemove(branchSubId);\n }\n };\n\n /**\n * handleBranchSubAdd\n *\n * @param branchSubId\n */\n const handleBranchSubAdd = (branchSubId) => {\n const subs = formValues.branchSubs;\n subs.push(branchSubId);\n setFormValues(\n Object.assign({}, formValues, {\n branchSubs: subs,\n })\n );\n };\n\n /**\n * handleBranchSubRemove\n *\n * @param branchSubId\n */\n const handleBranchSubRemove = (branchSubId) => {\n const newBranchesArray = formValues.branchSubs;\n\n for (let i = 0; i < formValues.branchSubs.length; i++) {\n if (newBranchesArray[i] === parseInt(branchSubId)) {\n newBranchesArray.splice(i, 1);\n }\n }\n\n setFormValues(\n Object.assign({}, formValues, { branchSubs: newBranchesArray })\n );\n };\n\n /**\n * branchCategories\n *\n * @returns {[]}\n */\n const branchCategories = () => {\n const branchCategories = [];\n\n branchCategories.push(\n \n {t(\"form.label.please.select\")}\n \n );\n\n Object.keys(branchData).forEach((index) => {\n branchCategories.push(\n \n {branchData[index].Title}\n \n );\n });\n\n return branchCategories;\n };\n\n /**\n * branchSubIsChecked\n *\n * @param branchSubId\n * @returns {boolean}\n */\n const branchSubIsChecked = (branchSubId) => {\n for (let i = 0; i < formValues.branchSubs.length; i++) {\n if (formValues.branchSubs[i] === parseInt(branchSubId)) {\n return true;\n }\n }\n\n return false;\n };\n\n /**\n * branchCategorySubs\n */\n const branchCategorySubs = () => {\n const branchCategorySubs = [];\n\n Object.keys(branchData).forEach((index) => {\n if (parseInt(branchData[index].ID) === formValues.branchCategory) {\n for (\n let i = 0;\n i < branchData[index].BusinessSpecialities.edges.length;\n i++\n ) {\n branchCategorySubs.push(\n \n \n }\n label={`${branchData[index].BusinessSpecialities.edges[i].node.Title}`}\n />\n \n );\n }\n }\n });\n\n if (branchCategorySubs.length > 0 && !hasBranchSubData) {\n setHasBranchSubData(true);\n } else if (branchCategorySubs.length === 0 && hasBranchSubData) {\n setHasBranchSubData(false);\n }\n return branchCategorySubs;\n };\n\n /**\n * return\n */\n return (\n <>\n \n

{t(\"general.label.premium.upgrade\")}

\n

{t(\"onboarding.intro\")}

\n
\n \n \n \n \n {result.fetching && !branchData && (\n \n )}\n {!result.fetching && branchData && (\n {\n handleBranchCategoryChange(event);\n }}\n variant=\"outlined\"\n align=\"left\"\n error={GetSafe(\n () => formValueErrors.branchCategory.hasError,\n false\n )}\n helperText={GetSafe(\n () => formValueErrors.branchCategory.message,\n \"\"\n )}\n >\n {branchCategories()}\n \n )}\n \n \n {hasBranchSubData && (\n \n {t(\"form.label.precise.selection\")}\n \n )}\n \n \n
{branchCategorySubs()}
\n
\n \n {\n handleFormSubmit(1);\n }}\n disabled={result.fetching || !branchData}\n >\n {t(\"form.label.back\")}\n \n {\n handleFormSubmit(3);\n }}\n disabled={result.fetching || !branchData}\n >\n {t(\"form.label.next\")}\n \n \n \n );\n};\n\nexport default withAccessControl(\n FreeToPremiumDialogueStep2,\n ACL_COMPONENTS.FREE_TO_PREMIUM_DIALOGUE_STEP_2\n);\n","import React, { useContext, useEffect, useState } from \"react\";\nimport clsx from \"clsx\";\nimport Button from \"@material-ui/core/Button\";\nimport Grid from \"@material-ui/core/Grid\";\nimport { useTranslation } from \"react-i18next\";\nimport Joi from \"@hapi/joi\";\nimport FormControlLabel from \"@material-ui/core/FormControlLabel\";\nimport Checkbox from \"@material-ui/core/Checkbox\";\nimport FreeToPremiumStepper from \"./FreeToPremiumStepper\";\nimport { makeStyles, withStyles } from \"@material-ui/core/styles\";\nimport Typography from \"@material-ui/core/Typography\";\nimport FormControl from \"@material-ui/core/FormControl\";\nimport FormHelperText from \"@material-ui/core/FormHelperText\";\nimport FormValueErrorsBuilder from \"../../lib/FormValueErrorsBuilder\";\nimport GetSafe from \"../../lib/GetSafe\";\nimport withAccessControl from \"../HOC/AccessControl\";\nimport GlobalContext from \"../../lib/GlobalContext\";\nimport { useMutation, useQuery } from \"urql\";\nimport CircularProgress from \"@material-ui/core/CircularProgress\";\nimport { green } from \"@material-ui/core/colors\";\nimport Switch from \"@material-ui/core/Switch\";\nimport UserTypes from \"../Onboarding/UserTypes\";\nimport Link from \"@material-ui/core/Link\";\nimport { getAbsoluteLink, externalLinkTitles } from \"../../lib/CmsLinkHandler\";\nimport { MESSAGE_TYPES } from \"../PopupMessages\";\nimport { navigate } from \"hookrouter\";\nimport { ACL_COMPONENTS, STRIPE_PLAN_IDS } from \"../../config\";\nimport ExternalErrorLogger from \"@ennit/react-external-errorlogger\";\nimport LoadingOverlay from \"../LoadingOverlay\";\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n [theme.breakpoints.down(\"sm\")]: {\n flexDirection: \"row\",\n },\n [theme.breakpoints.up(\"sm\")]: {\n flexDirection: \"column\",\n },\n },\n formControl: {\n justifyContent: \"center\",\n width: \"100%\",\n maxWidth: 330,\n marginTop: theme.spacing(2),\n marginBottom: theme.spacing(2),\n textAlign: \"left\",\n },\n formControlTerm: {\n maxWidth: 540,\n width: 520,\n justifyContent: \"center\",\n [theme.breakpoints.down(\"sm\")]: {\n display: \"block\",\n },\n },\n checkboxControl: {\n marginRight: 0,\n [theme.breakpoints.down(\"sm\")]: {\n hyphens: \"auto\",\n },\n },\n title: {\n margin: 0,\n fontSize: 24,\n lineHeight: \"30px\",\n },\n intro: {\n fontSize: 16,\n lineHeight: \"24px\",\n textAlign: \"left\",\n },\n item: {\n width: \"100%\",\n maxWidth: 330,\n margin: \"0 auto\",\n },\n itemTerm: {\n paddingRight: 10,\n paddingLeft: 10,\n fontSize: 16,\n [theme.breakpoints.down(\"sm\")]: {\n textAlign: \"center\",\n },\n },\n itemTermSwitcher: {\n [theme.breakpoints.down(\"sm\")]: {\n display: \"flex\",\n justifyContent: \"center\",\n margin: \"10px auto\",\n },\n },\n itemTermSwitch: {\n maxWidth: 504,\n },\n itemStepper: {\n maxWidth: 600,\n },\n itemHeader: {\n maxWidth: 444,\n paddingTop: 44,\n paddingBottom: 24,\n textAlign: \"center\",\n [theme.breakpoints.down(\"sm\")]: {\n paddingTop: 20,\n paddingBottom: 20,\n textAlign: \"left\",\n },\n },\n itemLabel: {\n fontSize: 14,\n color: \"#999\",\n fontWeight: \"bold\",\n },\n buttonNext: {\n width: \"100%\",\n color: \"#fff\",\n marginRight: \"auto\",\n fontWeight: \"bold\",\n },\n buttonContainer: {\n marginTop: theme.spacing(4),\n },\n pricing: {\n fontSize: 24,\n color: theme.palette.text.primary,\n fontWeight: \"bold\",\n padding: \"10px 0\",\n },\n strikePrice: {\n fontSize: 24,\n color: theme.palette.text.primary,\n fontWeight: \"bold\",\n padding: \"10px 0\",\n textDecoration: \"line-through\",\n },\n benefits: {\n fontSize: 14,\n color: theme.palette.text.primary,\n fontWeight: \"normal\",\n },\n trialNotificationBox: {\n marginBottom: 10,\n },\n trialNotification: {\n fontSize: 14,\n fontWeight: \"normal\",\n color: \"#ffffff\",\n backgroundColor: theme.palette.primary.main,\n height: 32,\n display: \"table-cell\",\n verticalAlign: \"middle\",\n padding: \"5px 10px 3px 10px\",\n marginBottom: 10,\n },\n buttonProgress: {\n color: green[500],\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n marginTop: -12,\n marginLeft: -12,\n },\n taxHint: {\n fontSize: 12,\n color: \"#525252\",\n fontWeight: \"normal\",\n padding: \"0 0 10px 0\",\n },\n trialHint: {\n fontSize: 14,\n color: \"#525252\",\n fontWeight: \"normal\",\n padding: \"0 0 10px 0\",\n },\n}));\n\nconst AntSwitch = withStyles((theme) => ({\n root: {\n width: 28,\n height: 16,\n padding: 0,\n display: \"flex\",\n },\n switchBase: {\n padding: 2,\n color: theme.palette.common.white,\n \"&$checked\": {\n transform: \"translateX(12px)\",\n color: theme.palette.common.white,\n \"& + $track\": {\n opacity: 1,\n backgroundColor: theme.palette.primary.main,\n borderColor: theme.palette.primary.main,\n },\n },\n },\n thumb: {\n width: 12,\n height: 12,\n boxShadow: \"none\",\n },\n track: {\n border: `1px solid ${theme.palette.primary.main}`,\n borderRadius: 16 / 2,\n opacity: 1,\n backgroundColor: theme.palette.primary.main,\n },\n checked: {},\n}))(Switch);\n\nconst updateCompanyMutation = `\n mutation UpdateCompany(\n $hashId: String!,\n $name: String,\n $street: String,\n $zip: String,\n $city: String,\n $lat: Float,\n $lon: Float,\n $phone: String,\n $mobile: String,\n $fax: String,\n $website: String,\n $email: String,\n $businessActivityID: ID,\n $businessSpecialties: [BusinessSpecialityInput]\n $futurePlanID: String\n ) {\n updateCompany(\n HashID: $hashId, \n Name: $name,\n Street: $street,\n Zip: $zip,\n City: $city,\n Latitude: $lat,\n Longitude: $lon,\n Phone: $phone,\n Mobile: $mobile,\n Fax: $fax,\n Website: $website,\n Email: $email,\n BusinessActivityID: $businessActivityID\n BusinessSpecialities: $businessSpecialties\n FuturePlanID: $futurePlanID\n ) {\n Name\n Street\n Zip\n City\n Latitude\n Longitude\n Phone\n Mobile\n Fax\n Website\n Email\n BusinessActivityID\n }\n }\n`;\n\nconst stripeProductsQuery = `\n {\n readProduct {\n id\n description\n metadata {\n FeatureSet\n }\n name\n plans {\n id\n nickname\n amount\n currency\n interval\n interval_count\n active\n trial_period_days\n trial_possible\n }\n }\n }\n`;\n\nconst LOADING_OVERLAY_TIMEOUT = 5000;\n\n/**\n * FreeToPremiumDialogueStep3\n *\n * @returns {*}\n * @constructor\n */\nconst FreeToPremiumDialogueStep3 = (props) => {\n const MONTHLY = \"monthly\";\n const YEARLY = \"yearly\";\n const classes = useStyles();\n const { t } = useTranslation();\n const {\n user,\n token,\n setToken,\n cmsLinks,\n setMessage,\n unsetUser,\n unsetToken,\n } = useContext(GlobalContext);\n const [formValues, setFormValues] = useState({\n chosenPlan: YEARLY,\n terms: false,\n });\n const [formValueErrors, setFormValueErrors] = useState({\n terms: { hasError: false, message: \"\" },\n });\n const [termSwitchState, setTermSwitchState] = useState(true);\n const [stripeProductData, setStripeProductData] = useState(null);\n const [loadingOverlayOpen, setLoadingOverlayOpen] = useState(false);\n\n const [{ fetching }, executeUpdateCompanyMutation] = useMutation(\n updateCompanyMutation\n );\n \n const [stripeProductsQueryResult, executeStripeProductsQuery] = useQuery({\n query: stripeProductsQuery,\n requestPolicy: \"network-only\",\n pause: true,\n });\n\n useEffect(() => {\n setFormValues(props.formData.step3);\n }, [props.formData.step3]);\n\n useEffect(() => {\n if (Object.keys(props.formData.step0.plans.monthly).length === 0) {\n executeStripeProductsQuery();\n }\n }, [props.formData.step0, executeStripeProductsQuery, token, setToken]);\n\n const schema = Joi.object({\n chosenPlan: Joi.string(),\n terms: Joi.boolean().invalid(false),\n });\n\n useEffect(() => {\n if (!stripeProductsQueryResult.fetching) {\n if (stripeProductsQueryResult.error) {\n // Check if the user need to be logged out\n if (\n stripeProductsQueryResult.error.message.indexOf(\n \"User forced logout\"\n ) !== -1\n ) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.user.forced.logout\"));\n unsetUser();\n unsetToken();\n navigate(\"/\");\n } else {\n // The query did not return any results!\n ExternalErrorLogger.log({\n text: \"Error fetching stripe products data on FreeToPremiumDialogueStep3\",\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n errorMessage: stripeProductsQueryResult.error.message,\n },\n });\n }\n } else {\n // Query not fetching right now\n if (\n typeof stripeProductsQueryResult.data !== \"undefined\" &&\n typeof stripeProductsQueryResult.data.readProduct !== \"undefined\" &&\n !stripeProductData\n ) {\n let plan = null;\n stripeProductsQueryResult.data.readProduct.map((item) => {\n if (\n typeof item.metadata.FeatureSet !== \"undefined\" &&\n item.metadata.FeatureSet.toLowerCase().includes(\n user.getData().mode\n )\n ) {\n plan = item;\n }\n return item;\n });\n\n let monthlyPlanData = {};\n let yearlyPlanData = {};\n plan.plans.map((item) => {\n if (item.id.includes(\"monthly\")) {\n monthlyPlanData = item;\n } else if (\n item.id.includes(STRIPE_PLAN_IDS.SMART.YEARLY) ||\n item.id.includes(STRIPE_PLAN_IDS.PRO.YEARLY)\n ) {\n yearlyPlanData = item;\n }\n return item;\n });\n\n if (!stripeProductData) {\n setStripeProductData(plan);\n }\n\n props.setFormData(\n Object.assign({}, props.formData, {\n step0: {\n plans: { monthly: monthlyPlanData, yearly: yearlyPlanData },\n },\n })\n );\n }\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [stripeProductsQueryResult]);\n\n /**\n * handleFromSubmit\n */\n const handleFormSubmit = () => {\n const { error } = schema.validate(formValues, { abortEarly: false });\n if (error) {\n const formErrors = FormValueErrorsBuilder(error, t);\n setFormValueErrors({ ...formErrors });\n } else {\n props.setFormData(\n Object.assign({}, props.formData, { step3: formValues })\n );\n\n if (\n props.showSmartTrialNotification(\n props.formData.step0.plans[formValues.chosenPlan].trial_period_days,\n props.formData.step0.plans[formValues.chosenPlan].trial_possible\n )\n ) {\n let branchSubsRefined = [];\n\n if (props.formData.step2.branchSubs) {\n props.formData.step2.branchSubs.map((item) => {\n branchSubsRefined.push({\n ID: item,\n });\n return item;\n });\n }\n\n if (!branchSubsRefined.length) {\n branchSubsRefined = null;\n }\n\n const showLoadingOverlayTimeout = setTimeout(\n () => setLoadingOverlayOpen(true),\n LOADING_OVERLAY_TIMEOUT\n );\n\n executeUpdateCompanyMutation({\n hashId: user.getData().company.hashID,\n name: props.formData.step1.company || user.getData().company.name,\n street: props.formData.step1.street || user.getData().company.street,\n zip: props.formData.step1.zip || user.getData().company.zip,\n city: props.formData.step1.city || user.getData().company.city,\n lat: props.formData.step1.lat || user.getData().company.latitude,\n lon: props.formData.step1.lon || user.getData().company.longitude,\n phone: props.formData.step1.phone || user.getData().company.phone,\n mobile: props.formData.step1.mobile || user.getData().company.mobile,\n fax: props.formData.step1.fax || user.getData().company.fax,\n website:\n props.formData.step1.website || user.getData().company.website,\n email: props.formData.step1.email || user.getData().company.email,\n futurePlanID: props.formData.step0.plans[formValues.chosenPlan].id,\n businessActivityID:\n props.formData.step2.branchCategory ||\n user.getData().company.branchCategory,\n businessSpecialties: branchSubsRefined,\n }).then((result) => {\n clearTimeout(showLoadingOverlayTimeout);\n setLoadingOverlayOpen(false);\n\n if (result.error) {\n // Check if the user need to be logged out\n if (result.error.message.indexOf(\"User forced logout\") !== -1) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.user.forced.logout\"));\n unsetUser();\n unsetToken();\n navigate(\"/\");\n } else {\n if (\n result.error.message.indexOf(\n \"The selected plan has already been subscribed\"\n ) !== -1\n ) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.subsription.exists\"));\n } else {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.general\"));\n }\n ExternalErrorLogger.log({\n text: \"Error save data on FreeToPremiumDialogueStep3\",\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n errorMessage: result.error.message,\n },\n });\n }\n } else {\n props.setStep(5)\n }\n });\n } else {\n props.setStep(4);\n }\n }\n };\n\n /**\n * handleCheckTermsChange\n *\n * @param event\n */\n const handleCheckTermsChange = (event) => {\n setFormValues(\n Object.assign({}, formValues, { terms: event.target.checked })\n );\n };\n\n /**\n * handlePlanChange\n */\n const handlePlanChange = () => {\n if (!termSwitchState) {\n setFormValues({ ...formValues, chosenPlan: YEARLY });\n } else {\n setFormValues({ ...formValues, chosenPlan: MONTHLY });\n }\n setTermSwitchState(!termSwitchState);\n };\n\n /**\n * determineChosenPlan\n *\n * @returns {*}\n */\n const determineChosenPlan = () => {\n const firstPlanID =\n props.formData.step0.plans[Object.keys(props.formData.step0.plans)[0]].id;\n\n if (firstPlanID.includes(UserTypes.SMART)) {\n return UserTypes.SMART;\n }\n if (firstPlanID.includes(UserTypes.PRO)) {\n return UserTypes.PRO;\n }\n };\n\n /**\n * renderChosenPlan\n *\n * @returns {*}\n */\n const renderChosenPlan = () => {\n if (determineChosenPlan() === UserTypes.SMART) {\n return ;\n }\n\n if (determineChosenPlan() === UserTypes.PRO) {\n return ;\n }\n };\n\n /**\n * showPricePerMonth\n *\n * @returns {string}\n */\n const showPricePerMonth = () => {\n if (formValues.chosenPlan === MONTHLY) {\n return (\n parseInt(\n props.formData.step0.plans[formValues.chosenPlan].amount\n ).toFixed(2) /\n 100 +\n \" \"\n );\n } else {\n return (\n Math.round(\n parseInt(\n props.formData.step0.plans[formValues.chosenPlan].amount\n ).toFixed(2) /\n 100 /\n 12\n ) + \" \"\n );\n }\n };\n\n /**\n * SmartPlanLabel\n *\n * @returns {*}\n * @constructor\n */\n const SmartPlanLabel = () => {\n return (\n \n \n {t(\"general.label.smart\")}\n \n \n \n {props.formData.step0.plans[\n formValues.chosenPlan\n ].currency.toUpperCase()}{\" \"}\n {showPricePerMonth()}/ {t(\"general.label.month\")}\n \n {props.showSmartTrialNotification(\n props.formData.step0.plans[formValues.chosenPlan].trial_period_days,\n props.formData.step0.plans[formValues.chosenPlan].trial_possible\n ) && (\n <>\n
\n \n {t(\"general.label.days.of.testing\", {\n days: props.formData.step0.plans[formValues.chosenPlan]\n .trial_period_days,\n })}\n \n
\n \n {t(\"general.label.trial.hint\")}\n \n \n )}\n \n {t(\"general.label.tax.hint\")}\n \n \n {t(\"general.label.one.user\")}\n \n
\n
\n );\n };\n\n /**\n * ProPlanLabel\n *\n * @returns {*}\n * @constructor\n */\n const ProPlanLabel = () => {\n return (\n \n \n {t(\"general.label.pro\")}\n \n \n \n {props.formData.step0.plans[\n formValues.chosenPlan\n ].currency.toUpperCase()}{\" \"}\n {showPricePerMonth()}/ {t(\"general.label.month\")}\n \n \n {t(\"general.label.tax.hint\")}\n \n \n {t(\"general.label.pro.benefits\")}\n \n \n \n );\n };\n\n /**\n * showTermSwitch\n *\n * @returns {boolean}\n */\n const showTermSwitch = () => {\n // let showSwitch = true\n let showSwitch = false; // Disabled so customers could never switch to monthly terms\n if (\n props.showSmartTrialNotification(\n props.formData.step0.plans[formValues.chosenPlan].trial_period_days,\n props.formData.step0.plans[formValues.chosenPlan].trial_possible\n ) &&\n props.formData.step0.plans[formValues.chosenPlan].id.includes(\"smart\")\n ) {\n showSwitch = false;\n }\n\n return showSwitch;\n };\n\n /**\n * return\n */\n return (\n <>\n \n

{t(\"general.label.premium.upgrade\")}

\n

{t(\"onboarding.intro\")}

\n
\n \n \n \n {Object.keys(props.formData.step0.plans.monthly).length === 0 && (\n \n \n \n )}\n {Object.keys(props.formData.step0.plans.monthly).length !== 0 && (\n <>\n {showTermSwitch() && (\n \n \n \n {t(\"general.label.monthly.term\")}\n \n\n \n \n \n\n \n {t(\"general.label.yearly.term\")}\n \n \n \n )}\n \n \n \n \n }\n label={renderChosenPlan()}\n />\n \n \n \n \n formValueErrors.terms.hasError, false)}\n component=\"fieldset\"\n >\n \n }\n label={\n
\n {t(\"form.label.i.accept\")}{\" \"}\n \n {t(\"footer.label.conditions\")}\n \n
\n }\n />\n {GetSafe(() => formValueErrors.terms.hasError, false) && (\n \n {formValueErrors.terms.message}\n \n )}\n \n
\n
\n \n {\n handleFormSubmit();\n }}\n disabled={fetching}\n >\n {props.showSmartTrialNotification(\n props.formData.step0.plans[formValues.chosenPlan]\n .trial_period_days,\n props.formData.step0.plans[formValues.chosenPlan]\n .trial_possible\n )\n ? t(\"general.label.start.test\")\n : t(\"general.label.premium.order\")}\n {fetching && (\n \n )}\n \n {loadingOverlayOpen && (\n \n )}\n \n
\n \n )}\n \n );\n};\n\nexport default withAccessControl(\n FreeToPremiumDialogueStep3,\n ACL_COMPONENTS.FREE_TO_PREMIUM_DIALOGUE_STEP_3\n);\n","import React, { useContext, useEffect, useState } from \"react\";\nimport { injectStripe, CardElement } from \"react-stripe-elements\";\nimport { useQuery } from \"urql\";\nimport { MESSAGE_TYPES } from \"../PopupMessages\";\nimport GlobalContext from \"../../lib/GlobalContext\";\nimport { useTranslation } from \"react-i18next\";\nimport GetSafe from \"../../lib/GetSafe\";\nimport TextField from \"@material-ui/core/TextField/TextField\";\nimport { makeStyles } from \"@material-ui/core\";\nimport Button from \"@material-ui/core/Button/Button\";\nimport { navigate } from \"hookrouter\";\nimport ExternalErrorLogger from \"@ennit/react-external-errorlogger\";\n\nconst useStyles = makeStyles((theme) => ({\n textField: {\n width: \"100%\",\n },\n buttonNext: {\n width: \"100%\",\n color: \"#fff\",\n marginRight: \"auto\",\n marginBottom: 20,\n fontWeight: \"bold\",\n },\n cardHolder: {\n width: \"100%\",\n margin: \"20px 0\",\n background: \"#fff\",\n borderRadius: \"4px\",\n border: \"1px solid #D3D3D3\",\n },\n cardElement: {\n display: \"inline-block\",\n width: \"auto\",\n marginLeft: 0,\n padding: \"0\",\n color: \"#a6a6a6\",\n fontSize: 12,\n textAlign: \"left\",\n },\n cardItem: {\n paddingRight: 5,\n paddingLeft: 5,\n },\n stripeElement: {\n display: \"block\",\n margin: 0,\n maxWidth: \"100%\",\n padding: \"10px 0\",\n boxShadow: 0,\n border: 0,\n outline: 0,\n borderRadius: 4,\n background: \"#fff\",\n },\n InputElement: {\n [theme.breakpoints.down(\"sm\")]: {\n fontSize: 11,\n },\n },\n}));\n\nconst queryStripeSetupIntent = `\n {\n readStripeSetupIntent {\n client_secret\n }\n }\n`;\n\n/**\n * CreditCardForm\n *\n * @param props\n * @returns {*}\n * @constructor\n */\nconst CreditCardForm = (props) => {\n const classes = useStyles();\n const { t } = useTranslation();\n const {\n setMessage,\n setPaymentMethodId,\n user,\n unsetUser,\n token,\n unsetToken,\n } = useContext(GlobalContext);\n\n const [formValues, setFormValues] = useState({\n cardHolder: \"\",\n });\n\n const [stripeSubmitClicked, setStripeSubmitClicked] = useState(false);\n\n const [formValueErrors, setFormValueErrors] = useState({\n cardHolder: { hasError: false, message: \"\" },\n });\n\n const [result, executeQueryStripeSetupIntent] = useQuery({\n query: queryStripeSetupIntent,\n pause: true,\n });\n\n /**\n * useEffect\n */\n useEffect(() => {\n setFormValues({\n cardHolder: user.getData().firstName + \" \" + user.getData().lastName,\n });\n setFormValueErrors({ cardHolder: { hasError: false, message: \"\" } });\n\n executeQueryStripeSetupIntent();\n }, [executeQueryStripeSetupIntent, user]);\n\n /**\n * handleCardHolderChange\n *\n * @param event\n */\n const handleCardHolderChange = (event) => {\n setFormValueErrors({\n cardHolder: { hasError: false, message: \"\" },\n });\n setFormValues({ ...formValues, cardHolder: event.target.value });\n };\n\n /**\n * handleSubmit\n */\n const handleSubmit = () => {\n setStripeSubmitClicked(true);\n\n if (user.getData().creditCard.id) {\n setPaymentMethodId(user.getData().creditCard.id);\n } else {\n if (formValues.cardHolder === \"\") {\n setFormValueErrors({\n cardHolder: { hasError: true, message: t(\"error.form.required\") },\n });\n setStripeSubmitClicked(false);\n }\n\n if (!result.fetching) {\n if (result.error) {\n if (result.error.message.indexOf(\"User forced logout\") !== -1) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.user.forced.logout\"));\n unsetUser();\n unsetToken();\n navigate(\"/\");\n } else {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.fetching.setupintent\"));\n setStripeSubmitClicked(false);\n ExternalErrorLogger.log({\n text: \"Error fetching setupintent on CreditCardForm\",\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n errorMessage: result.error.message,\n },\n });\n }\n } else {\n if (\n result.data &&\n typeof result.data !== \"undefined\" &&\n typeof result.data.readStripeSetupIntent !== \"undefined\" &&\n result.data.readStripeSetupIntent &&\n typeof result.data.readStripeSetupIntent.client_secret !==\n \"undefined\"\n ) {\n // See our getElement documentation for more:\n // https://stripe.com/docs/stripe-js/reference#elements-get-element\n // const cardElement = props.elements.getElement('cardNumber')\n const cardElement = props.elements.getElement(\"card\");\n const cardholderName = document.getElementById(\"cardholder-name\");\n // See our createPaymentMethod documentation for more:\n // https://stripe.com/docs/stripe-js/reference#stripe-create-payment-method\n props.stripe\n .createPaymentMethod({\n type: \"card\",\n card: cardElement,\n billing_details: {\n name: cardholderName.value,\n },\n })\n .then((paymentResult) => {\n if (paymentResult.error) {\n switch (paymentResult.error.code) {\n case \"incomplete_number\":\n setMessage(\n MESSAGE_TYPES.ERROR,\n t(\"error.payment.incomplete_number\")\n );\n break;\n case \"incomplete_expiry\":\n setMessage(\n MESSAGE_TYPES.ERROR,\n t(\"error.payment.incomplete_expiry\")\n );\n break;\n case \"incomplete_cvc\":\n setMessage(\n MESSAGE_TYPES.ERROR,\n t(\"error.payment.incomplete_cvc\")\n );\n break;\n case \"incomplete_zip\":\n setMessage(\n MESSAGE_TYPES.ERROR,\n t(\"error.payment.incomplete_zip\")\n );\n break;\n case \"invalid_expiry_year\":\n setMessage(\n MESSAGE_TYPES.ERROR,\n t(\"error.payment.invalid_expiry_year\")\n );\n break;\n case \"invalid_expiry_year_past\":\n setMessage(\n MESSAGE_TYPES.ERROR,\n t(\"error.payment.invalid_expiry_year_past\")\n );\n break;\n default:\n setMessage(\n MESSAGE_TYPES.ERROR,\n t(\"error.save.creditcard\")\n );\n ExternalErrorLogger.log({\n text: \"Error create stripe payment method on CreditCardForm\",\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n errorMessage: JSON.stringify(paymentResult.error),\n },\n });\n }\n setStripeSubmitClicked(false);\n } else {\n // See our confirmCardSetup documentation for more:\n // https://stripe.com/docs/stripe-js/reference#stripe-confirm-card-setup\n props.stripe\n .confirmCardSetup(\n result.data.readStripeSetupIntent.client_secret,\n {\n payment_method: {\n card: cardElement,\n },\n }\n )\n .then((paymentConfirmResult) => {\n if (paymentConfirmResult.error) {\n setMessage(\n MESSAGE_TYPES.ERROR,\n t(\"error.save.creditcard\")\n );\n setStripeSubmitClicked(false);\n ExternalErrorLogger.log({\n text: \"Error save creditcard on CreditCardForm\",\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n errorMessage: JSON.stringify(\n paymentConfirmResult.error\n ),\n },\n });\n } else {\n setPaymentMethodId(paymentResult.paymentMethod.id);\n }\n });\n }\n });\n } else {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.fetching.setupintent\"));\n setStripeSubmitClicked(false);\n ExternalErrorLogger.log({\n text: \"Error fetching setupintent on CreditCardForm\",\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n errorMessage: JSON.stringify(result.error),\n },\n });\n }\n }\n }\n }\n };\n\n /**\n * return\n */\n return (\n <>\n {user.getData().creditCard.id ? (\n <>\n
\n {t(\"form.label.cardHolder\")}\n

{user.getData().creditCard.name}

\n
\n
\n {t(\"form.label.cardDetails\")}\n

**** **** **** {user.getData().creditCard.last4}

\n
\n \n ) : (\n <>\n formValueErrors.cardHolder.hasError, false)}\n helperText={GetSafe(() => formValueErrors.cardHolder.message, \"\")}\n onChange={handleCardHolderChange}\n margin=\"normal\"\n variant=\"outlined\"\n />\n
\n \n \n {t(\"form.label.cardDetails\")}\n \n \n \n
\n \n )}\n\n \n {t(\"general.label.premium.buy\")}\n \n \n );\n};\n\nexport default injectStripe(CreditCardForm);\n","import React from 'react'\nimport { StripeProvider, Elements } from 'react-stripe-elements'\nimport withAccessControl from '../HOC/AccessControl'\nimport CreditCardForm from './CreditCardForm'\nimport { ACL_COMPONENTS } from '../../config'\n\n/**\n * CreditCard\n *\n * @param props\n * @returns {*}\n * @constructor\n */\nconst CreditCard = props => {\n /**\n * return\n */\n return (\n \n \n \n \n \n )\n}\n\nexport default withAccessControl(CreditCard, ACL_COMPONENTS.CREDIT_CARD)\n","import React, { useContext, useEffect, useState } from \"react\";\nimport { injectStripe } from \"react-stripe-elements\";\nimport { useQuery } from \"urql\";\nimport GlobalContext from \"../../lib/GlobalContext\";\nimport { useTranslation } from \"react-i18next\";\nimport { makeStyles } from \"@material-ui/core\";\nimport Button from \"@material-ui/core/Button/Button\";\n\nconst useStyles = makeStyles((theme) => ({\n textField: {\n width: \"100%\",\n },\n buttonNext: {\n width: \"100%\",\n color: \"#fff\",\n marginRight: \"auto\",\n marginBottom: 20,\n fontWeight: \"bold\",\n },\n cardHolder: {\n width: \"100%\",\n margin: \"20px 0\",\n background: \"#fff\",\n borderRadius: \"4px\",\n border: \"1px solid #D3D3D3\",\n },\n cardElement: {\n display: \"inline-block\",\n width: \"auto\",\n marginLeft: 0,\n padding: \"0\",\n color: \"#a6a6a6\",\n fontSize: 12,\n textAlign: \"left\",\n },\n cardItem: {\n paddingRight: 5,\n paddingLeft: 5,\n },\n stripeElement: {\n display: \"block\",\n margin: 0,\n maxWidth: \"100%\",\n padding: \"10px 0\",\n boxShadow: 0,\n border: 0,\n outline: 0,\n borderRadius: 4,\n background: \"#fff\",\n },\n InputElement: {\n [theme.breakpoints.down(\"sm\")]: {\n fontSize: 11,\n },\n },\n infoText: {\n paddingBottom: 10,\n },\n}));\n\nconst queryStripeSetupIntent = `\n {\n readStripeSetupIntent {\n client_secret\n }\n }\n`;\n\n/**\n * InvoiceForm\n *\n * @param props\n * @returns {*}\n * @constructor\n */\nconst InvoiceForm = (props) => {\n const classes = useStyles();\n const { t } = useTranslation();\n const { setPaymentMethodId, user } =\n useContext(GlobalContext);\n\n const [stripeSubmitClicked, setStripeSubmitClicked] = useState(false);\n\n const [result, executeQueryStripeSetupIntent] = useQuery({\n query: queryStripeSetupIntent,\n pause: true,\n });\n\n /**\n * useEffect\n */\n useEffect(() => {\n executeQueryStripeSetupIntent();\n }, [executeQueryStripeSetupIntent, user]);\n\n /**\n * handleSubmit\n */\n const handleSubmit = () => {\n setStripeSubmitClicked(true);\n setPaymentMethodId(\"invoice\");\n };\n\n /**\n * return\n */\n return (\n <>\n \"),\n }}\n />\n \n {t(\"general.label.premium.buy\")}\n \n \n );\n};\n\nexport default injectStripe(InvoiceForm);\n","import React from 'react'\nimport { StripeProvider, Elements } from 'react-stripe-elements'\nimport withAccessControl from '../HOC/AccessControl'\nimport InvoiceForm from './InvoiceForm'\nimport { ACL_COMPONENTS } from '../../config'\n\n/**\n * Invoice\n *\n * @param props\n * @returns {*}\n * @constructor\n */\nconst Invoice = props => {\n /**\n * return\n */\n return (\n \n \n \n \n \n )\n}\n\nexport default withAccessControl(Invoice, ACL_COMPONENTS.CREDIT_CARD)\n","import React, { useState, useEffect } from 'react'\nimport { Grid, Collapse, FormControlLabel, Checkbox } from '@material-ui/core'\nimport CreditCard from '../Creditcard/CreditCard'\nimport Invoice from '../Invoice/Invoice'\nimport LoadingOverlay from '../LoadingOverlay'\nimport { makeStyles } from '@material-ui/core/styles'\nimport { useTranslation } from 'react-i18next'\n\n/**\n * useStyles\n */\nconst useStyles = makeStyles(theme => ({\n paymentCardContainer: {\n width: '100%',\n maxWidth: 330,\n margin: '0 auto'\n },\n container: {\n display: 'block',\n width: '100%'\n }\n}))\n\nconst YEARLY_PLAN = 'yearly'\n\n/**\n * Payment\n *\n * @param {user, result, fetching} props\n * @returns JSX\n */\nconst Payment = ({ user, fetching, plan }) => {\n const classes = useStyles()\n const { t } = useTranslation()\n const [invoiceChecked, setInvoiceChecked] = useState(false)\n const [creditCardChecked, setCreditCardChecked] = useState(false)\n\n /**\n * useEffect\n */\n useEffect(() => {\n if (plan !== YEARLY_PLAN) {\n setCreditCardChecked(true)\n }\n }, [plan])\n\n /**\n * handleInvoiceChange\n */\n const handleInvoiceChange = () => {\n setInvoiceChecked(prev => {\n if (!prev) {\n setCreditCardChecked(false)\n }\n return !prev\n })\n }\n\n /**\n * handleCreditCardChange\n */\n const handleCreditCardChange = () => {\n setCreditCardChecked(prev => {\n if (!prev) {\n setInvoiceChecked(false)\n }\n return !prev\n })\n }\n\n /**\n * return\n */\n return (\n <>\n \n \n }\n label={t('general.label.creditCard')}\n />\n
\n \n \n {(fetching) && }\n \n
\n \n {plan === YEARLY_PLAN && (\n \n \n }\n label={t('general.label.invoice')}\n />\n
\n \n \n {fetching && }\n \n
\n \n )}\n \n )\n}\n\nexport default Payment\n","import React, { useContext, useEffect } from \"react\";\nimport clsx from \"clsx\";\nimport Grid from \"@material-ui/core/Grid\";\nimport { useTranslation } from \"react-i18next\";\nimport FreeToPremiumStepper from \"./FreeToPremiumStepper\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport Typography from \"@material-ui/core/Typography\";\nimport Lock from \"@material-ui/icons/Lock\";\nimport GlobalContext from \"../../lib/GlobalContext\";\nimport { useMutation } from \"urql\";\nimport withAccessControl from \"../HOC/AccessControl\";\nimport { MESSAGE_TYPES } from \"../PopupMessages\";\nimport { navigate } from \"hookrouter\";\nimport { ACL_COMPONENTS } from \"../../config\";\nimport ExternalErrorLogger from \"@ennit/react-external-errorlogger\";\nimport Payment from \"../Payment/Payment\";\n\nconst useStyles = makeStyles((theme) => ({\n paper: {\n padding: theme.spacing(4, 4),\n marginBottom: theme.spacing(3),\n // backgroundColor: '#eee'\n },\n paymentCardImage: {\n display: \"inline-block\",\n transition: \"all .4s ease-out\",\n cursor: \"pointer\",\n \"&:hover\": {\n transform: \"scale(1.05)\",\n },\n },\n paymentCardContainer: {\n width: \"100%\",\n maxWidth: 330,\n margin: \"0 auto\",\n },\n paymentLabelTop: {\n fontSize: 14,\n fontWeight: \"bold\",\n },\n title: {\n margin: 0,\n fontSize: 24,\n lineHeight: \"30px\",\n },\n intro: {\n fontSize: 16,\n lineHeight: \"24px\",\n textAlign: \"left\",\n },\n item: {\n width: \"100%\",\n maxWidth: 330,\n margin: \"0 auto\",\n },\n itemStepper: {\n maxWidth: 600,\n },\n itemHeader: {\n maxWidth: 444,\n paddingTop: 44,\n paddingBottom: 24,\n textAlign: \"center\",\n [theme.breakpoints.down(\"sm\")]: {\n paddingTop: 20,\n paddingBottom: 20,\n textAlign: \"left\",\n },\n },\n formFieldContainer: {\n width: \"100%\",\n },\n paperContainer: {\n width: \"100%\",\n maxWidth: 590,\n paddingTop: 40,\n paddingRight: 120,\n paddingBottom: 40,\n paddingLeft: 120,\n borderRadius: 5,\n backgroundColor: \"#efeff1\",\n [theme.breakpoints.down(\"sm\")]: {\n padding: 20,\n },\n },\n buttonContainer: {\n marginTop: theme.spacing(2),\n flexBasis: \"100%\",\n },\n preciseTag: {\n alignSelf: \"flex-start\",\n marginTop: theme.spacing(2),\n marginBottom: theme.spacing(1),\n },\n iconButton: {\n padding: 0,\n },\n paperHeadLeft: {\n textAlign: \"left\",\n },\n paperHeadRight: {\n textAlign: \"right\",\n },\n paperFooter: {\n position: \"relative\",\n color: \"#aaa\",\n },\n lock: {\n display: \"block\",\n position: \"relative\",\n width: 75,\n margin: \"auto\",\n paddingLeft: 25,\n paddingRight: 25,\n backgroundColor: \"#efeff1\",\n zIndex: \"2\",\n },\n line: {\n position: \"absolute\",\n top: \"50%\",\n width: \"100%\",\n height: \"1px\",\n backgroundColor: \"#aaa\",\n transform: \"translateY(-50%)\",\n },\n secureText: {\n color: \"#666\",\n marginTop: theme.spacing(2),\n },\n textPremiumSecure: {\n display: \"block\",\n fontSize: 12,\n textAlign: \"center\",\n },\n priceTag: {\n textAlign: \"right\",\n backgroundColor: \"#E2E2E4\",\n padding: theme.spacing(1),\n borderRadius: \"4px\",\n marginBottom: theme.spacing(1),\n },\n}));\n\nconst updateCompanyMutation = `\n mutation UpdateCompany(\n $hashId: String!,\n $name: String,\n $street: String,\n $zip: String,\n $city: String,\n $lat: Float,\n $lon: Float,\n $phone: String,\n $mobile: String,\n $fax: String,\n $website: String,\n $email: String,\n $businessActivityID: ID,\n $businessSpecialties: [BusinessSpecialityInput]\n $futurePlanID: String,\n $paymentMethodID: String!\n ) {\n updateCompany(\n HashID: $hashId, \n Name: $name,\n Street: $street,\n Zip: $zip,\n City: $city,\n Latitude: $lat,\n Longitude: $lon,\n Phone: $phone,\n Mobile: $mobile,\n Fax: $fax,\n Website: $website,\n Email: $email,\n BusinessActivityID: $businessActivityID\n BusinessSpecialities: $businessSpecialties\n FuturePlanID: $futurePlanID,\n PaymentMethodID: $paymentMethodID\n ) {\n Name\n Street\n Zip\n City\n Latitude\n Longitude\n Phone\n Mobile\n Fax\n Website\n Email\n BusinessActivityID\n }\n }\n`;\n\n/**\n * FreeToPremiumDialogueStep4\n *\n * @returns {*}\n * @constructor\n */\nconst FreeToPremiumDialogueStep4 = (props) => {\n const classes = useStyles();\n const { t } = useTranslation();\n const {\n user,\n token,\n setToken,\n paymentMethodId,\n setMessage,\n unsetUser,\n unsetToken,\n } = useContext(GlobalContext);\n\n const [{ fetching }, executeUpdateCompanyMutation] = useMutation(updateCompanyMutation);\n\n useEffect(() => {\n if (paymentMethodId !== null) {\n let branchSubsRefined = [];\n\n if (props.formData.step2.branchSubs) {\n props.formData.step2.branchSubs.map((item) => {\n branchSubsRefined.push({\n ID: item,\n });\n return item;\n });\n }\n\n if (!branchSubsRefined.length) {\n branchSubsRefined = null;\n }\n\n executeUpdateCompanyMutation({\n hashId: user.getData().company.hashID,\n name: props.formData.step1.company || user.getData().company.name,\n street: props.formData.step1.street || user.getData().company.street,\n zip: props.formData.step1.zip || user.getData().company.zip,\n city: props.formData.step1.city || user.getData().company.city,\n lat: props.formData.step1.lat || user.getData().company.latitude,\n lon: props.formData.step1.lon || user.getData().company.longitude,\n phone: props.formData.step1.phone || user.getData().company.phone,\n mobile: props.formData.step1.mobile || user.getData().company.mobile,\n fax: props.formData.step1.fax || user.getData().company.fax,\n website: props.formData.step1.website || user.getData().company.website,\n email: props.formData.step1.email || user.getData().company.email,\n futurePlanID:\n props.formData.step0.plans[props.formData.step3.chosenPlan].id,\n paymentMethodID: paymentMethodId,\n businessActivityID:\n props.formData.step2.branchCategory ||\n user.getData().company.branchCategory,\n businessSpecialties: branchSubsRefined,\n }).then((result) => {\n if (result.error) {\n // Check if the user need to be logged out\n if (result.error.message.indexOf(\"User forced logout\") !== -1) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.user.forced.logout\"));\n unsetUser();\n unsetToken();\n navigate(\"/\");\n } else {\n ExternalErrorLogger.log({\n text: \"Error save myself on FreeToPremiumDialogueStep4\",\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n errorMessage: result.error.message,\n },\n });\n if (\n result.error.message.indexOf(\n \"The selected plan has already been subscribed\"\n ) !== -1\n ) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.subsription.exists\"));\n } else {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.general\"));\n }\n props.setStep(3);\n }\n } else {\n props.setStep(5)\n }\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n paymentMethodId,\n executeUpdateCompanyMutation,\n props,\n setToken,\n token,\n user,\n setMessage,\n unsetUser,\n unsetToken,\n t,\n ]);\n\n const showPriceWithTax = () => {\n let amount = parseInt(\n props.formData.step0.plans[props.formData.step3.chosenPlan].amount\n );\n\n // TODO: tax value has to come from api!\n amount += amount * 0.081\n\n return (amount.toFixed(2) / 100).toFixed(2);\n };\n\n /**\n * return\n */\n return (\n <>\n \n

{t(\"general.label.premium.upgrade\")}

\n

{t(\"onboarding.intro\")}

\n
\n \n \n \n \n \n \n \n {t(\"general.label.premium.choosePayment\")}\n \n \n \n
\n {props.formData.step0.plans[\n props.formData.step3.chosenPlan\n ].currency.toUpperCase()}{\" \"}\n {showPriceWithTax()}{\" \"}\n
\n
\n
\n \n \n
\n \n
\n \n \n {t(\"general.label.premium.secure\")}\n \n \n \n \n );\n};\n\nexport default withAccessControl(\n FreeToPremiumDialogueStep4,\n ACL_COMPONENTS.FREE_TO_PREMIUM_DIALOGUE_STEP_4\n);\n","import React, { useContext, useEffect } from \"react\";\nimport clsx from \"clsx\";\nimport Button from \"@material-ui/core/Button\";\nimport Grid from \"@material-ui/core/Grid\";\nimport { useTranslation } from \"react-i18next\";\nimport FreeToPremiumStepper from \"./FreeToPremiumStepper\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport withAccessControl from \"../HOC/AccessControl\";\nimport GlobalContext from \"../../lib/GlobalContext\";\nimport { useQuery } from \"urql\";\nimport { MESSAGE_TYPES } from \"../PopupMessages\";\nimport { navigate } from \"hookrouter\";\nimport { ACL_COMPONENTS, STRIPE_PLAN_IDS } from \"../../config\";\nimport ExternalErrorLogger from \"@ennit/react-external-errorlogger\";\nimport FormatHelper from \"../../lib/FormatHelper\";\nimport { CircularProgress } from \"@material-ui/core\";\nimport { green } from \"@material-ui/core/colors\";\n\nconst useStyles = makeStyles((theme) => ({\n title: {\n margin: 0,\n fontSize: 24,\n lineHeight: \"30px\",\n },\n intro: {\n fontSize: 16,\n lineHeight: \"24px\",\n textAlign: \"left\",\n },\n item: {\n width: \"100%\",\n maxWidth: 330,\n margin: \"0 auto\",\n },\n itemHeader: {\n maxWidth: 444,\n paddingTop: 44,\n paddingBottom: 24,\n textAlign: \"center\",\n [theme.breakpoints.down(\"sm\")]: {\n paddingTop: 20,\n paddingBottom: 20,\n textAlign: \"left\",\n },\n },\n itemStepper: {\n maxWidth: 600,\n },\n buttonNext: {\n width: 330,\n color: \"#fff\",\n marginRight: \"auto\",\n fontWeight: \"bold\",\n [theme.breakpoints.down(\"sm\")]: {\n width: \"100%\",\n },\n },\n buttonContainer: {\n marginTop: theme.spacing(4),\n },\n main: {\n paddingTop: theme.spacing(6),\n paddingBottom: theme.spacing(6),\n fontSize: 24,\n fontWeight: \"bold\",\n textAlign: \"center\",\n },\n buttonProgress: {\n color: green[500],\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n marginTop: -12,\n marginLeft: -12,\n },\n}));\n\nconst queryMyself = `\n{\n readMyself {\n ID\n HashID\n Locale\n Email\n Firstname\n Surname\n Salutation\n StripePublicKey\n CreditCard {\n id\n name\n last4\n expired\n }\n Locations {\n edges {\n node {\n HashID\n Title\n Street\n Zip\n City\n Longitude\n Latitude\n Radius\n Version\n Sort\n Removed\n ConstructionSumList {\n edges {\n node {\n Code\n }\n }\n }\n }\n }\n }\n Company {\n ID\n AdminUserID\n HashID\n FeatureSet\n ZipSearchAreas\n ZipSearchStatistic\n ApplicationFollowUpTimeInDays\n StripeIsTrialing\n StripeTrialingDays\n StripePlanID\n StripeValidThrough\n StripeProductID\n StripeCancelAt\n Name\n URLSegment\n ContactPerson\n Street\n Zip\n City\n Canton\n Distance\n Latitude\n Longitude\n Phone\n Mobile\n Fax\n Website\n Email\n NumberOfEmployees\n LegalForm\n FoundingYear\n MasterBusiness\n TrainingCompany\n BusinessActivityID\n BusinessSpecialities{\n edges {\n node {\n ID\n Title\n NogaCode\n SCCodeCompetence\n BoostScore\n }\n }\n }\n OtherBusinessActivities {\n edges {\n node {\n ID\n }\n }\n }\n OtherBusinessSpecialities {\n edges {\n node {\n ID\n }\n }\n }\n User{\n edges {\n node {\n HashID\n Email\n Firstname\n Surname\n Removed\n SearchAreas {\n HashID\n Title\n ZipList\n }\n }\n }\n }\n Memberships {\n edges {\n node {\n ID\n Title\n LogoUrl\n }\n }\n }\n AllMemberships {\n edges {\n node {\n ID\n Title\n LogoUrl\n IsBadge\n }\n }\n }\n MicrositeCertified\n MicrositeCertifiedUntil\n AdditionalMemberships\n MicrositeColorScheme\n MicrositeDescription\n MicrositeEmailApplicationText\n MicrositeImages {\n edges {\n node {\n Src\n Title\n Alt\n }\n }\n }\n MicrositeLogo {\n Src\n Title\n Alt\n }\n MicrositeReferences {\n edges {\n node {\n Sort\n Title\n Content\n Location\n Year\n Month\n ButtonLink\n ButtonTitle\n MicrositeReferencesImages {\n edges { \n node {\n Src\n Title\n Alt\n }\n }\n }\n }\n }\n }\n ApiAccess {\n edges {\n node {\n RequestUrl\n }\n } \n } \n }\n DossierTemplates {\n edges {\n node {\n HashID\n TemplateName\n }\n }\n }\n Permissions {\n Name\n RequireAdminStatus\n }\n FulltextSearchRequests {\n ID\n Title\n }\n SearchAreas {\n HashID\n Title\n ZipList\n }\n }\n readProduct {\n plans {\n id\n trial_possible\n }\n }\n}\n`;\n\n/**\n * FreeToPremiumDialogueStep5\n *\n * @returns {*}\n * @constructor\n */\nconst FreeToPremiumDialogueStep5 = (props) => {\n const classes = useStyles();\n const { t } = useTranslation();\n const { setProjectData, token, user, setMessage, unsetUser, unsetToken } =\n useContext(GlobalContext);\n\n const [resultReadMyselfQuery] = useQuery({\n query: queryMyself,\n requestPolicy: \"network-only\",\n });\n\n const handleFormClose = () => {\n if (props.closeDialogue) {\n props.closeDialogue();\n navigate(\"/\");\n }\n };\n\n const parsePermissions = (permissionsFromAPI) => {\n const permissionsArray = [];\n if (Array.isArray(permissionsFromAPI)) {\n for (let i = 0; i < permissionsFromAPI.length; i++) {\n permissionsArray.push(permissionsFromAPI[i].Name);\n }\n }\n return permissionsArray;\n };\n\n useEffect(() => {\n if (!resultReadMyselfQuery.fetching && token.isSet()) {\n if (resultReadMyselfQuery.error) {\n // Check if the user need to be logged out\n if (\n resultReadMyselfQuery.error.message.indexOf(\"User forced logout\") !==\n -1\n ) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.user.forced.logout\"));\n unsetUser();\n unsetToken();\n navigate(\"/\");\n } else {\n // Something went very wrong\n ExternalErrorLogger.log({\n text: \"Error fetching myself on FreeToPremiumDialogueStep3\",\n data: {\n token: JSON.stringify(token.getData()),\n user: JSON.stringify(user.getData()),\n errorMessage: resultReadMyselfQuery.error.message,\n },\n });\n\n if (\n resultReadMyselfQuery.error.message.indexOf(\n \"The selected plan has already been subscribed\"\n ) !== -1\n ) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.subsription.exists\"));\n } else {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.general\"));\n }\n }\n } else {\n // Query not fetching right now\n if (\n typeof resultReadMyselfQuery.data !== \"undefined\" &&\n typeof resultReadMyselfQuery.data.readMyself !== \"undefined\"\n ) {\n const branchSubsData = [];\n resultReadMyselfQuery.data.readMyself[0].Company.BusinessSpecialities.edges.map(\n (item) => {\n branchSubsData.push(parseInt(item.node.ID));\n return branchSubsData;\n }\n );\n\n const locationData = [];\n resultReadMyselfQuery.data.readMyself[0].Locations.edges.map(\n (item) => {\n const constructionSums = [];\n\n if (typeof item.node.ConstructionSumList !== 'undefined') {\n item.node.ConstructionSumList.edges.map((constructionSum) => {\n constructionSums.push(constructionSum.node.Code);\n return constructionSums;\n });\n }\n\n item.node.ConstructionSums = constructionSums;\n\n locationData.push(item.node);\n return locationData;\n }\n );\n\n locationData.sort((a, b) => {\n return a.Sort - b.Sort;\n });\n\n const companyUsersData = [];\n resultReadMyselfQuery.data.readMyself[0].Company.User.edges.map(\n (item) => {\n if (\n item.node.HashID !==\n resultReadMyselfQuery.data.readMyself[0].HashID\n ) {\n companyUsersData.push(item.node);\n }\n return companyUsersData;\n }\n );\n\n const memberships = [];\n resultReadMyselfQuery.data.readMyself[0].Company.Memberships.edges.map(\n (item) => {\n memberships.push(item.node);\n return memberships;\n }\n );\n\n const allMemberships = [];\n resultReadMyselfQuery.data.readMyself[0].Company.AllMemberships.edges.map(\n (item) => {\n allMemberships.push(item.node);\n return allMemberships;\n }\n );\n\n const dossierTemplatesData = [];\n resultReadMyselfQuery.data.readMyself[0].DossierTemplates.edges.map(\n (item) => {\n dossierTemplatesData.push(item.node);\n return dossierTemplatesData;\n }\n );\n\n companyUsersData.sort((a, b) => {\n if (a.Firstname.toLowerCase() < b.Firstname.toLowerCase()) {\n return -1;\n }\n if (a.Firstname.toLowerCase() > b.Firstname.toLowerCase()) {\n return 1;\n }\n return 0;\n });\n\n let trialPossible = false;\n\n resultReadMyselfQuery.data.readProduct.map((productItem) => {\n productItem.plans.map((item) => {\n if (item.id.includes(STRIPE_PLAN_IDS.SMART.YEARLY)) {\n trialPossible = item.trial_possible;\n }\n return item;\n });\n return productItem;\n });\n\n // Map the user-data\n user.setData({\n id: resultReadMyselfQuery.data.readMyself[0].ID,\n hashID: resultReadMyselfQuery.data.readMyself[0].HashID,\n locale: resultReadMyselfQuery.data.readMyself[0].Locale || \"\",\n email: resultReadMyselfQuery.data.readMyself[0].Email,\n firstName: resultReadMyselfQuery.data.readMyself[0].Firstname,\n lastName: resultReadMyselfQuery.data.readMyself[0].Surname,\n salutation:\n resultReadMyselfQuery.data.readMyself[0].Salutation || \"\",\n mode:\n resultReadMyselfQuery.data.readMyself[0].Company.FeatureSet ===\n null\n ? null\n : resultReadMyselfQuery.data.readMyself[0].Company.FeatureSet.toLowerCase(),\n stripePublicKey:\n resultReadMyselfQuery.data.readMyself[0].StripePublicKey || \"\",\n creditCard: resultReadMyselfQuery.data.readMyself[0].CreditCard,\n locations: locationData || [],\n company: {\n id: resultReadMyselfQuery.data.readMyself[0].Company.ID,\n hashID: resultReadMyselfQuery.data.readMyself[0].Company.HashID,\n name:\n resultReadMyselfQuery.data.readMyself[0].Company.Name ||\n \"TODO COMPANY-NAME\", // TODO: Remove fallback company name for production (requires consistent data)\n street:\n resultReadMyselfQuery.data.readMyself[0].Company.Street || \"\",\n zip: resultReadMyselfQuery.data.readMyself[0].Company.Zip || \"\",\n city: resultReadMyselfQuery.data.readMyself[0].Company.City || \"\",\n canton:\n resultReadMyselfQuery.data.readMyself[0].Company.Canton || \"\",\n distance:\n resultReadMyselfQuery.data.readMyself[0].Company.Distance || 50,\n latitude:\n resultReadMyselfQuery.data.readMyself[0].Company.Latitude ||\n null,\n longitude:\n resultReadMyselfQuery.data.readMyself[0].Company.Longitude ||\n null,\n phone:\n resultReadMyselfQuery.data.readMyself[0].Company.Phone || \"\",\n mobile:\n resultReadMyselfQuery.data.readMyself[0].Company.Mobile || \"\",\n fax: resultReadMyselfQuery.data.readMyself[0].Company.Fax || \"\",\n email:\n resultReadMyselfQuery.data.readMyself[0].Company.Email || \"\",\n website:\n resultReadMyselfQuery.data.readMyself[0].Company.Website || \"\",\n employeeCount:\n resultReadMyselfQuery.data.readMyself[0].Company\n .NumberOfEmployees || \"\",\n legalForm:\n resultReadMyselfQuery.data.readMyself[0].Company.LegalForm ||\n \"\",\n foundingYear:\n resultReadMyselfQuery.data.readMyself[0].Company.FoundingYear ||\n \"\",\n masterOperation:\n FormatHelper.boolToString(\n resultReadMyselfQuery.data.readMyself[0].Company\n .MasterBusiness\n ) || \"\",\n trainingCompany:\n FormatHelper.boolToString(\n resultReadMyselfQuery.data.readMyself[0].Company\n .TrainingCompany\n ) || \"\",\n branchCategory:\n resultReadMyselfQuery.data.readMyself[0].Company\n .BusinessActivityID || \"\",\n branchSubs: branchSubsData || [],\n users: companyUsersData || [],\n stripeIsTrialing:\n resultReadMyselfQuery.data.readMyself[0].Company\n .StripeIsTrialing,\n stripeTrialingDays:\n resultReadMyselfQuery.data.readMyself[0].Company\n .StripeTrialingDays,\n stripePlanId:\n resultReadMyselfQuery.data.readMyself[0].Company.StripePlanID,\n stripeValidThrough:\n resultReadMyselfQuery.data.readMyself[0].Company\n .StripeValidThrough,\n stripeProductId:\n resultReadMyselfQuery.data.readMyself[0].Company\n .StripeProductID,\n stripeCancelAt:\n resultReadMyselfQuery.data.readMyself[0].Company.StripeCancelAt,\n stripeFuturePlans:\n resultReadMyselfQuery.data.readMyself[0].Company\n .StripeFuturePlans,\n trialPossible: trialPossible,\n memberships: memberships,\n allMemberships: allMemberships,\n zipSearchAreas:\n resultReadMyselfQuery.data.readMyself[0].Company.ZipSearchAreas,\n zipSearchStatistic:\n resultReadMyselfQuery.data.readMyself[0].Company.ZipSearchStatistic,\n applicationFollowUpTimeInDays:\n resultReadMyselfQuery.data.readMyself[0].Company.ApplicationFollowUpTimeInDays\n },\n dossierTemplates: dossierTemplatesData,\n permissions: parsePermissions(\n resultReadMyselfQuery.data.readMyself[0].Permissions\n ),\n fulltextSearchRequests:\n resultReadMyselfQuery.data.readMyself[0].FulltextSearchRequests,\n searchAreas: resultReadMyselfQuery.data.readMyself[0].SearchAreas,\n });\n\n setProjectData([]);\n }\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [resultReadMyselfQuery, token]);\n\n return (\n <>\n \n

{t(\"general.label.premium.upgrade\")}

\n

{t(\"onboarding.intro\")}

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

{t(\"general.label.premium.done\")}

\n
\n \n {\n handleFormClose();\n }}\n >\n {t(\"general.close\")}\n {resultReadMyselfQuery.fetching && (\n \n )}\n \n \n \n );\n};\n\nexport default withAccessControl(\n FreeToPremiumDialogueStep5,\n ACL_COMPONENTS.FREE_TO_PREMIUM_DIALOGUE_STEP_5\n);\n","import React, { useContext, useEffect, useState } from 'react'\nimport GlobalContext from '../../lib/GlobalContext'\nimport { useTranslation } from 'react-i18next'\nimport { DialogTitle, makeStyles } from '@material-ui/core'\nimport Dialog from '@material-ui/core/Dialog'\nimport DialogContent from '@material-ui/core/DialogContent'\nimport Grid from '@material-ui/core/Grid'\nimport FreeToPremiumDialogueStep0 from './FreeToPremiumDialogueStep0'\nimport FreeToPremiumDialogueStep1 from './FreeToPremiumDialogueStep1'\nimport FreeToPremiumDialogueStep2 from './FreeToPremiumDialogueStep2'\nimport FreeToPremiumDialogueStep3 from './FreeToPremiumDialogueStep3'\nimport FreeToPremiumDialogueStep4 from './FreeToPremiumDialogueStep4'\nimport FreeToPremiumDialogueStep5 from './FreeToPremiumDialogueStep5'\nimport withAccessControl from '../HOC/AccessControl'\nimport CloseIcon from '@material-ui/icons/Close'\nimport IconButton from '@material-ui/core/IconButton'\nimport { ACL_COMPONENTS } from '../../config'\n\nconst initialFormData = {\n step0: {\n plans: {\n monthly: {},\n yearly: {}\n }\n },\n step1: {\n company: '',\n street: '',\n zip: '',\n city: '',\n lat: '',\n lon: '',\n phone: '',\n mobile: '',\n fax: '',\n website: '',\n email: ''\n },\n step2: {\n branchCategory: 0,\n branchSubs: []\n },\n step3: {\n chosenPlan: 'yearly',\n terms: false\n },\n step4: {\n cardholder: '',\n cardNumber: '',\n cardExpiry: '',\n cardCVC: ''\n }\n}\n\n/**\n * useStyles\n */\nconst useStyles = makeStyles(theme => ({\n root: {\n flexGrow: 1\n },\n dialog: {\n width: '100%',\n paddingBottom: '56px',\n '&::before': theme.watermarkLogo\n },\n dialogTitle: {\n display: 'flex',\n justifyContent: 'flex-end',\n alignItems: 'flex-end',\n paddingBottom: 0\n },\n container: {\n [theme.breakpoints.down('sm')]: {\n flexDirection: 'row'\n },\n [theme.breakpoints.up('sm')]: {\n flexDirection: 'column'\n }\n }\n}))\n\n/**\n * UpgradeToPremium\n *\n * @returns {*}\n * @constructor\n */\nconst UpgradeToPremium = props => {\n const classes = useStyles()\n const { t } = useTranslation()\n const { user, setUpgradeToPremiumOpen, setPaymentMethodId } = useContext(\n GlobalContext\n )\n const [step, setStep] = useState(0) // Initial step\n const [openDialog, setOpenDialog] = useState(false)\n const [formData, setFormData] = useState(initialFormData)\n const notifyBeforeClose = props.notifyBeforeClose || false\n\n useEffect(() => {\n if (user.getData().mode === null) {\n setOpenDialog(true)\n } else {\n setOpenDialog(props.open)\n }\n }, [props.open, user])\n\n useEffect(() => {\n if (user.getData().mode === 'smart' || user.getData().mode === 'pro') {\n if (\n user.getData().company.stripePlanId === null ||\n user.getData().company.stripePlanId === undefined\n ) {\n setStep(1)\n }\n }\n }, [user])\n\n /**\n * closeDialogue\n */\n const closeDialogue = () => {\n if (user.getData().mode === null) {\n return\n }\n if (\n user.getData().company.stripePlanId === null &&\n user.getData().company.stripeProductId === null\n ) {\n return\n }\n if (notifyBeforeClose) {\n notifyBeforeClose()\n }\n setFormData(initialFormData)\n setPaymentMethodId(null)\n setUpgradeToPremiumOpen(false)\n setOpenDialog(false)\n }\n\n /**\n * showSmartTrialNotification\n *\n * @param trialPeriodDays\n * @param trialPossible\n * @returns {boolean}\n */\n const showSmartTrialNotification = (trialPeriodDays, trialPossible) => {\n return !!(trialPossible && trialPeriodDays > 0)\n }\n\n /**\n * getDialogByStep\n *\n * @returns {*}\n */\n const getDialogByStep = () => {\n switch (step) {\n case 1:\n return (\n \n )\n case 2:\n return (\n \n )\n case 3:\n return (\n \n )\n case 4:\n return (\n \n )\n case 5:\n return (\n \n )\n default:\n return (\n \n )\n }\n }\n\n /**\n * showDialogCloseButton\n *\n * @returns {boolean}\n */\n const showDialogCloseButton = () => {\n let closeButtonVisible = true\n if (user.getData().mode !== null) {\n closeButtonVisible = true\n }\n if (user.getData().mode === null) {\n closeButtonVisible = false\n }\n if (\n user.getData().company.stripePlanId === null &&\n user.getData().company.stripeProductId === null\n ) {\n closeButtonVisible = false\n }\n return closeButtonVisible\n }\n\n /**\n * return\n */\n return (\n \n \n {showDialogCloseButton() && (\n {\n closeDialogue()\n }}\n >\n \n \n )}\n \n \n \n {user.isSet() && getDialogByStep()}\n {!user.isSet() && (\n \n
{t('error.fetching.user')}
\n
\n )}\n \n
\n \n )\n}\n\nexport default withAccessControl(\n UpgradeToPremium,\n ACL_COMPONENTS.UPGRADE_TO_PREMIUM\n)\n","import React, { useState, useContext, useEffect } from \"react\";\nimport Menu from \"@material-ui/core/Menu\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport NewReleases from \"@material-ui/icons/NewReleases\";\nimport ThumbUp from \"@material-ui/icons/ThumbUp\";\nimport ThumbDown from \"@material-ui/icons/ThumbDown\";\nimport CheckCircle from \"@material-ui/icons/CheckCircle\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport GlobalContext from \"../../lib/GlobalContext\";\nimport Grid from \"@material-ui/core/Grid\";\nimport { useTranslation } from \"react-i18next\";\nimport {\n CustomSCStateConditions,\n CustomSCStateConditionText,\n} from \"./CustomSCStateConditions\";\nimport withAccessControl from \"../HOC/AccessControl\";\nimport { useMutation, useQuery } from \"urql\";\nimport { MESSAGE_TYPES } from \"../PopupMessages\";\nimport LinearProgress from \"@material-ui/core/LinearProgress\";\nimport { navigate } from \"hookrouter\";\nimport { ACL_COMPONENTS } from \"../../config\";\n// import ExternalErrorLogger from '@ennit/react-external-errorlogger'\n\nconst useStyles = makeStyles((theme) => ({\n icon: {\n padding: 8,\n },\n}));\n\nconst updateFavoriteMutation = `\n mutation UpdateFavorite (\n $hashID: String,\n $state: String\n ) {\n updateFavorite (HashID: $hashID, State: $state) {\n HashID\n }\n }\n`;\n\nconst queryFavorites = `\n query ReadFavorites (\n $userHashID: ID,\n $filterFor: [String]\n ) {\n readFavorites(ID: $userHashID, ConstructionTypeContains: $filterFor) {\n HashID\n ProjectHashID\n Removed\n State\n Canton\n Calculated_distance\n Content\n Final_title\n Import_date\n Date\n Applied\n Construction_site {\n Address {\n Street\n Number\n Zip\n City\n Geo {\n lat\n lon\n }\n }\n }\n Building_owner {\n Name\n Address {\n Street\n Number\n Zip\n City\n Geo {\n lat\n lon\n }\n }\n }\n Project_management {\n Name\n Phone\n Email\n Website\n Email_other\n Address {\n Street\n Number\n Zip\n City\n Geo {\n lat\n lon\n }\n }\n }\n StateHistory {\n edges {\n node {\n Created\n State\n }\n }\n }\n Notes {\n edges {\n node {\n HashID\n Text\n Created\n Removed\n }\n }\n }\n }\n }\n`;\n\n/**\n * CustomSCStatus\n *\n * @returns {*}\n * @constructor\n */\nconst CustomSCStatus = (props) => {\n const classes = useStyles();\n const { t } = useTranslation();\n const {\n setMessage,\n user,\n setFavoriteData,\n unsetUser,\n unsetToken,\n } = useContext(GlobalContext);\n const [anchorEl, setAnchorEl] = useState(null);\n const [formerResult, setFormerResult] = useState([]);\n\n const [state, setState] = useState(CustomSCStateConditions.ATTENTION);\n\n const [{ fetchingUpdateFavorite }] = useMutation(updateFavoriteMutation);\n\n // GraphQL query for favorites, gets triggered by calling \"executeFavoritesQuery()\"\n const [result] = useQuery({\n query: queryFavorites,\n variables: {\n userHashID: user.getData().hashID,\n filterFor: props.filterFor,\n },\n requestPolicy: \"network-only\",\n pause: true,\n });\n\n // let state = CustomSCStateConditions.ATTENTION\n if (props.favorite.State) {\n // state = props.favorite.State\n setState(props.favorite.State);\n }\n\n // GraphQL trigger and result handling\n useEffect(() => {\n if (!result.fetching) {\n if (result.error) {\n // Check if the user need to be logged out\n if (result.error.message.indexOf(\"User forced logout\") !== -1) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.user.forced.logout\"));\n unsetUser();\n unsetToken();\n navigate(\"/\");\n } else {\n // The query did not return any results!\n if (formerResult.length !== 0) {\n setFormerResult([]);\n }\n }\n } else {\n // Query not fetching right now\n if (\n typeof result.data !== \"undefined\" &&\n typeof result.data.readFavorites !== \"undefined\"\n ) {\n // Add the favorites to the global context\n setFavoriteData(result.data.readFavorites);\n }\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [result])\n\n /**\n * save changes to state and context and close menu\n *\n * @param event\n * @param newStateCondition\n */\n const handleStatusChange = (event, newStateCondition) => {\n event.stopPropagation();\n if (state !== newStateCondition) {\n setState(newStateCondition);\n }\n handleClose();\n };\n\n /**\n * open context menu\n *\n * @param event\n */\n const handleClick = (event) => {\n event.stopPropagation();\n setAnchorEl(event.currentTarget);\n };\n\n /**\n * close context menu\n */\n const handleClose = (event) => {\n if (event !== undefined) {\n event.stopPropagation();\n }\n setAnchorEl(null);\n };\n\n /**\n * attention icon\n */\n const statusIconAttention = () => {\n return (\n \n );\n };\n\n /**\n * checked icon\n */\n const statusIconChecked = () => {\n return (\n \n );\n };\n\n /**\n * thumb-up icon\n */\n const statusIconThumbUp = () => {\n return (\n \n );\n };\n\n /**\n * thumb-down icon\n */\n const statusIconThumbDown = () => {\n return (\n \n );\n };\n\n /**\n * get the active icon based on state\n */\n const getActiveStatusIcon = () => {\n switch (state) {\n case CustomSCStateConditions.CHECKED:\n return statusIconChecked();\n case CustomSCStateConditions.THUMB_UP:\n return statusIconThumbUp();\n case CustomSCStateConditions.THUMB_DOWN:\n return statusIconThumbDown();\n default:\n return statusIconAttention();\n }\n };\n\n /**\n * return\n */\n return (\n <>\n {props.removed ? (\n \n {getActiveStatusIcon()}\n \n ) : (\n \n {getActiveStatusIcon()}\n \n )}\n \n {\n handleStatusChange(event, CustomSCStateConditions.ATTENTION);\n }}\n >\n \n {statusIconAttention()}\n \n {CustomSCStateConditionText(t, CustomSCStateConditions.ATTENTION)}\n \n \n \n {\n handleStatusChange(event, CustomSCStateConditions.CHECKED);\n }}\n >\n \n {statusIconChecked()}\n \n {CustomSCStateConditionText(t, CustomSCStateConditions.CHECKED)}\n \n \n \n {\n handleStatusChange(event, CustomSCStateConditions.THUMB_UP);\n }}\n >\n \n {statusIconThumbUp()}\n \n {CustomSCStateConditionText(t, CustomSCStateConditions.THUMB_UP)}\n \n \n \n {\n handleStatusChange(event, CustomSCStateConditions.THUMB_DOWN);\n }}\n >\n \n {statusIconThumbDown()}\n \n {CustomSCStateConditionText(\n t,\n CustomSCStateConditions.THUMB_DOWN\n )}\n \n \n \n \n {fetchingUpdateFavorite && }\n \n );\n};\n\nexport default withAccessControl(\n CustomSCStatus,\n ACL_COMPONENTS.FAVORITE_STATUS\n);\n","import React, { useState, useContext } from 'react'\nimport clsx from 'clsx'\nimport Menu from '@material-ui/core/Menu'\nimport MenuItem from '@material-ui/core/MenuItem'\nimport { makeStyles } from '@material-ui/core/styles'\nimport TableCell from '@material-ui/core/TableCell'\nimport TableRow from '@material-ui/core/TableRow'\nimport ExpandLess from '@material-ui/icons/ExpandLess'\nimport ExpandMore from '@material-ui/icons/ExpandMore'\nimport MoreHoriz from '@material-ui/icons/MoreHoriz'\nimport IconButton from '@material-ui/core/IconButton'\nimport CustomSCStatus from './CustomSCStatus'\nimport CustomSCDetailAddition from './CustomSCDetailAddition'\nimport { useTranslation } from 'react-i18next'\nimport GlobalContext from '../../lib/GlobalContext'\nimport GoogleMapComponent from '../../lib/GoogleMapComponent'\nimport withAccessControl from '../HOC/AccessControl'\nimport GetSafe from '../../lib/GetSafe'\nimport FormatHelper from '../../lib/FormatHelper'\nimport PHE from 'print-html-element'\nimport { renderToString } from 'react-dom/server'\nimport { Button, Table, TableBody, TableHead } from '@material-ui/core'\nimport { A } from 'hookrouter'\nimport { ACL_COMPONENTS, DEFAULT_LOGO_PATH } from '../../config'\nimport Tooltip from '@material-ui/core/Tooltip'\nimport Info from '@material-ui/icons/Info'\nimport Grid from '@material-ui/core/Grid'\nimport UserTypes from '../Onboarding/UserTypes'\n// import FavoriteEmailApplyDialog from './FavoriteEmailApplyDialog'\n// import FavoriteApplicationPrintDialog from './FavoriteApplicationPrintDialog'\n\nconst useStyles = makeStyles(theme => ({\n removed: {\n opacity: 0.5\n },\n undo: {\n color: theme.palette.primary.main,\n textDecoration: 'underline'\n },\n link: {\n cursor: 'pointer'\n },\n icon: {\n padding: 8\n },\n tableCellColumnsbody: {\n width: 'calc(100% * 1 / 5)',\n minWidth: 100,\n padding: 14,\n '&:nth-child(1)': {\n minWidth: 215\n },\n '&:nth-child(2)': {\n minWidth: 520\n },\n '&:nth-child(3)': {\n minWidth: 130\n },\n '@media (max-width:640px)': {\n '&:first-of-type': {\n minWidth: 'auto'\n },\n '&:nth-child(2)': {\n minWidth: 320\n }\n }\n },\n toggleTitle: {\n color: '#999',\n fontWeight: 'bold'\n },\n toggleTableCell: {\n paddingTop: 0,\n verticalAlign: 'top'\n },\n toggleTableCellMap: {\n paddingLeft: 230,\n '@media (max-width:640px)': {\n paddingLeft: 20\n }\n },\n tableInnerRow: {\n borderTop: '2px solid #fff'\n },\n pointer: {\n cursor: 'pointer'\n },\n tooltipItem: {\n width: '100%',\n maxWidth: 350,\n borderRadius: 5,\n background: '#006A7A',\n fontSize: 16,\n textAlign: 'center',\n '& div': {\n margin: 0,\n color: '#fff'\n }\n },\n tooltipInfo: {\n maxWidth: '100%',\n background: theme.palette.background.default,\n '& div': {\n maxWidth: '100%',\n color: theme.palette.text.primary,\n fontSize: 12,\n lineHeight: '20px'\n },\n '@media (min-width:768px)': {\n maxWidth: 450\n }\n },\n tooltipTitle: {\n display: 'flex',\n alignItems: 'center'\n },\n headerWrapper: {\n width: '100%',\n maxWidth: 1320,\n paddingRight: 20,\n paddingLeft: 20,\n backgroundColor: '#4ab3cf',\n '-webkit-print-color-adjust': 'exact'\n },\n logo: {\n paddingLeft: 0\n },\n button: {\n color: '#ffffff',\n width: '60%',\n marginTop: '20px',\n marginBottom: '40px'\n }\n}))\n\n/**\n * CustomSCTableRow\n *\n * @returns {*}\n * @constructor\n */\nconst CustomSCTableRow = props => {\n const classes = useStyles()\n const { t } = useTranslation()\n const { user, upgradeToPremiumOpen, setUpgradeToPremiumOpen } = useContext(\n GlobalContext\n )\n const [open, setOpen] = useState(false)\n const [anchorEl, setAnchorEl] = useState(null)\n // const [emailApplyDialog, setEmailApplyDialog] = useState(false)\n // const [applicationPrintDialog, setApplicationPrintDialog] = useState(false)\n\n /**\n * open context menu\n *\n * @param event\n */\n const handleContextMenuOpen = event => {\n event.stopPropagation()\n setAnchorEl(event.currentTarget)\n }\n\n /**\n * close context menu\n */\n const handleContextMenuClose = event => {\n event.stopPropagation()\n setAnchorEl(null)\n }\n\n /**\n * getDestinationCoordinates\n *\n * @returns {{lon: *, lat: *}}\n */\n const getDestinationCoordinates = () => {\n return {\n lat: GetSafe(\n () => parseFloat(props.data.Construction_site.Address.Geo.lat),\n 0\n ),\n lon: GetSafe(\n () => parseFloat(props.data.Construction_site.Address.Geo.lon),\n 0\n )\n }\n }\n\n /**\n * isProcessable\n *\n * @param {*} value\n */\n const isProcessable = value => {\n return !(value === null || value === undefined)\n }\n\n /**\n * showApplyButton\n *\n * @returns {boolean|string}\n */\n const showApplyButton = () => {\n return props.data.Project_management.Email\n }\n\n /**\n * handleApplyButton\n */\n const handleApplyButton = () => {\n if (user.getData().mode !== UserTypes.PRO) {\n setUpgradeToPremiumOpen(!upgradeToPremiumOpen)\n } else {\n if (\n user.getData().company.urlSegment === '' ||\n user.getData().company.urlSegment === null\n ) {\n props.setVerifyDialogOpen(false)\n } else {\n // setEmailApplyDialog(true)\n }\n }\n }\n\n /**\n * handleApplicationPrintButton\n */\n const handleApplicationPrintButton = () => {\n if (user.getData().mode !== UserTypes.PRO) {\n setUpgradeToPremiumOpen(!upgradeToPremiumOpen)\n } else {\n if (\n user.getData().company.urlSegment === '' ||\n user.getData().company.urlSegment === null\n ) {\n props.setVerifyDialogOpen(false)\n } else {\n // setApplicationPrintDialog(true)\n }\n }\n }\n\n /**\n * getApplyButtonText\n *\n * @returns string\n */\n const getApplyButtonText = () => {\n if (props.data.Applied) {\n return t('general.label.already.advertised')\n }\n\n if (user.getData().mode !== UserTypes.PRO) {\n return t('general.label.applyOnlyForPro')\n }\n\n return t('general.label.apply')\n }\n\n /**\n * getApplicationPrintButtonText\n *\n * @returns string\n */\n const getApplicationPrintButtonText = () => {\n if (user.getData().mode !== UserTypes.PRO) {\n return t('general.label.applyPrintOnlyForPro')\n }\n\n return t('company.label.print.application')\n }\n\n /**\n * render the detail view of a building application\n */\n const buildingApplicationDetails = () => {\n return (\n \n \n

\n {t('favorites.label.fastest.route')}\n

\n \n \n \n \n

{t('projects.label.owner')}

\n

\n {GetSafe(() => props.data.Building_owner.Name, '')}\n
\n {GetSafe(() => props.data.Building_owner.Address.Street, '')}{' '}\n {GetSafe(() => props.data.Building_owner.Address.Number, '')}\n
\n {GetSafe(() => props.data.Building_owner.Address.Zip, '')}{' '}\n {GetSafe(() => props.data.Building_owner.Address.City, '')}\n

\n \n \n \n {t('projects.label.original.project')}\n \n \n
\n \n

{t('projects.label.architect')}

\n

\n {GetSafe(() => props.data.Project_management.Name, '')}\n
\n {GetSafe(\n () => props.data.Project_management.Address.Street,\n ''\n )}{' '}\n {GetSafe(() => props.data.Project_management.Address.Number, '')}\n
\n {GetSafe(() => props.data.Project_management.Address.Zip, '')}{' '}\n {GetSafe(() => props.data.Project_management.Address.City, '')}\n
\n {isProcessable(\n GetSafe(() => props.data.Project_management.Phone, '')\n ) && (\n props.data.Project_management.Phone, '')\n }\n >\n {GetSafe(() => props.data.Project_management.Phone, '')}\n \n )}\n
\n {isProcessable(\n GetSafe(() => props.data.Project_management.Email, '')\n ) && (\n props.data.Project_management.Email, '')\n }\n >\n {GetSafe(() => props.data.Project_management.Email, '')}\n \n )}\n

\n {showApplyButton() && (\n \n {getApplyButtonText()}\n \n )}\n \n {getApplicationPrintButtonText()}\n \n {/* */}\n {/* */}\n {/* TODO: remove after presentation! */}\n
\n Deeplink View\n
\n \n )\n }\n\n /**\n * renderPrintAndShare\n **/\n const renderPrintAndShare = () => {\n return (\n \n \n \n \n \n \n \n logo\n \n \n \n \n \n \n \n \n {GetSafe(() => props.data.Final_title, '')}\n \n {GetSafe(() => props.data.Construction_site.Address.City, '')}{' '}\n {GetSafe(() => props.data.Construction_site.Address.Street, '')}{' '}\n {GetSafe(() => props.data.Construction_site.Address.Number, '')}\n \n \n {GetSafe(\n () =>\n FormatHelper.formatDistance(props.data.Calculated_distance) +\n ' km',\n ''\n )}\n \n \n {GetSafe(() => FormatHelper.formatDate(props.data.Date), '')}\n \n \n \n \n

{t('projects.label.owner')}

\n

\n {GetSafe(() => props.data.Building_owner.Name, '')}\n
\n {GetSafe(\n () => props.data.Building_owner.Address.Street,\n ''\n )}{' '}\n {GetSafe(() => props.data.Building_owner.Address.Number, '')}\n
\n {GetSafe(() => props.data.Building_owner.Address.Zip, '')}{' '}\n {GetSafe(() => props.data.Building_owner.Address.City, '')}\n

\n
\n \n

\n {t('projects.label.architect')}\n

\n

\n {GetSafe(() => props.data.Project_management.Name, '')}\n
\n {GetSafe(\n () => props.data.Project_management.Address.Street,\n ''\n )}{' '}\n {GetSafe(\n () => props.data.Project_management.Address.Number,\n ''\n )}\n
\n {GetSafe(\n () => props.data.Project_management.Address.Zip,\n ''\n )}{' '}\n {GetSafe(() => props.data.Project_management.Address.City, '')}\n
\n {GetSafe(() => props.data.Project_management.Phone, '')}\n
\n {GetSafe(() => props.data.Project_management.Email, '')}\n

\n
\n
\n \n {props.data.Content}\n \n
\n
\n )\n }\n\n /**\n * handlePrint\n */\n const handlePrint = event => {\n event.stopPropagation()\n PHE.printHtml(renderToString(renderPrintAndShare()))\n }\n\n /**\n * handleOpenDetailsClick\n */\n const handleOpenDetailsClick = () => {\n setOpen(!open)\n }\n\n /**\n * return\n */\n return (\n <>\n \n \n {\n setOpen(!open)}\n className={`${classes.icon}`}\n >\n {open ? (\n \n ) : (\n \n )}\n \n }\n \n {\n \n \n \n }\n \n \n {t('general.label.print')}\n \n \n \n {\n <>\n \n {props.data.Final_title}\n \n \n {GetSafe(() => props.data.Construction_site.Address.City, '')}{' '}\n {GetSafe(() => props.data.Construction_site.Address.Street, '')}{' '}\n {GetSafe(() => props.data.Construction_site.Address.Number, '')}\n \n \n {GetSafe(\n () =>\n FormatHelper.formatDistance(props.data.Calculated_distance) +\n ' km',\n ''\n )}\n \n \n {GetSafe(() => FormatHelper.formatDate(props.data.Date), '')}\n \n \n }\n \n {open ? buildingApplicationDetails() : null}\n \n )\n}\n\n// TODO: Access control\nexport default withAccessControl(\n CustomSCTableRow,\n ACL_COMPONENTS.FAVORITES_TABLE_ROW\n)\n","import React, { useContext, useEffect, useRef, useState } from \"react\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport { useQuery } from \"urql\";\nimport Table from \"@material-ui/core/Table\";\nimport TableBody from \"@material-ui/core/TableBody\";\nimport TableCell from \"@material-ui/core/TableCell\";\nimport TableHead from \"@material-ui/core/TableHead\";\nimport TableFooter from \"@material-ui/core/TableFooter\";\nimport TablePagination from \"@material-ui/core/TablePagination\";\nimport TableRow from \"@material-ui/core/TableRow\";\nimport Paper from \"@material-ui/core/Paper\";\nimport LinearProgress from \"@material-ui/core/LinearProgress\";\nimport TablePaginationActions from \"../components/Table/TablePaginationActions\";\nimport GlobalContext from \"../lib/GlobalContext\";\nimport { useTranslation } from \"react-i18next\";\nimport withAccessControl from \"../components/HOC/AccessControl\";\nimport { MESSAGE_TYPES } from \"../components/PopupMessages\";\nimport { navigate } from \"hookrouter\";\nimport { ACL_COMPONENTS } from \"../config\";\nimport { Chip, Grid } from \"@material-ui/core\";\nimport DoneIcon from \"@material-ui/icons/Done\";\nimport clsx from \"clsx\";\nimport CompanyDirectoryNameDialog from \"../components/Company/CompanyDirectoryNameDialog\";\nimport CustomSCTableRow from \"../components/CustomSC/CustomSCTableRow\";\n\n/**\n * useStyles\n */\nconst useStyles = makeStyles((theme) => ({\n root: {\n flexGrow: 1,\n width: \"100%\",\n maxWidth: 1280,\n },\n table: {\n minWidth: \"100%\",\n },\n tableWrapper: {\n overflowX: \"auto\",\n [theme.breakpoints.up(\"lg\")]: {\n overflowX: \"hidden\",\n },\n },\n tableColumnsHead: {\n height: 96,\n },\n tableCellColumnsHeader: {\n padding: \"40px 14px 16px 14px\",\n fontSize: theme.typography.fontSize,\n color: \"#999999\",\n fontWeight: \"bold\",\n \"&:first-of-type\": {\n paddingLeft: 24,\n },\n \"@media (max-width:640px)\": {\n \"&:first-of-type\": {\n paddingLeft: 14,\n },\n },\n },\n tableCellColumnsBody: {\n padding: \"20px 14px\",\n },\n tableCell: {\n height: 64,\n },\n tableRows: {\n paddingLeft: 36,\n },\n locationHead: {\n fontWeight: \"bold\",\n },\n icon: {\n padding: 8,\n },\n listContent: {\n paddingLeft: 36,\n },\n paginationInput: {\n height: 28,\n width: 25,\n },\n paginationSelectIcon: {\n color: theme.palette.primary.main,\n },\n searchFilterGroup: {\n justifyContent: \"flex-end\",\n [theme.breakpoints.down(\"xs\")]: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"flex-start\",\n width: \"auto\",\n maxWidth: 200,\n },\n },\n searchFilterItem: {\n [theme.breakpoints.down(\"xs\")]: {\n display: \"flex\",\n flexDirection: \"column\",\n flexWrap: \"wrap\",\n },\n \"@media (max-width:810px)\": {\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(1),\n },\n },\n searchFilterButtonGroup: {\n display: \"inline-block\",\n marginRight: theme.spacing(1),\n marginLeft: theme.spacing(3),\n [theme.breakpoints.down(\"xs\")]: {\n marginLeft: theme.spacing(1),\n },\n },\n searchFilterButton: {\n marginRight: 4,\n marginLeft: 4,\n fontSize: 14,\n fontWeight: \"normal\",\n [theme.breakpoints.down(\"xs\")]: {\n marginTop: 4,\n marginBottom: 4,\n },\n \"&.MuiChip-colorPrimary\": {\n color: \"#fff\",\n },\n \"&.active\": {\n background: theme.palette.primary.main,\n color: \"#fff\",\n },\n },\n noBottomBorder: {\n borderBottom: 0,\n paddingBottom: 0,\n },\n export: {\n cursor: \"pointer\",\n },\n exportHolder: {\n display: \"flex\",\n alignItems: \"center\",\n paddingLeft: theme.spacing(1),\n },\n exportLink: {\n fontWeight: \"bold\",\n marginLeft: 10,\n fontSize: 14,\n textTransform: \"uppercase\",\n },\n}));\n\nconst queryProjects = `\n query ReadElasticProjects (\n $locationID: ID,\n $radius: Int,\n $lat: Float,\n $long: Float,\n $limit: Int,\n $offset: Int,\n $filterFor: [String]\n ) {\n readElasticProjects (\n sortBy: [{field: Date, direction: DESC}],\n Filter: {LocationID: $locationID, Radius: $radius, Lat: $lat, Long: $long},\n limit: $limit,\n offset: $offset,\n ConstructionTypeContains: $filterFor\n ){\n HashID\n Final_title\n Date\n Canton\n Content\n Calculated_distance\n Distance_calculated_from\n Read\n Construction_site {\n Address {\n Street\n Number\n Zip\n City\n Geo {\n lat\n lon\n }\n }\n }\n Building_owner {\n Name\n Address {\n Street\n Number\n Zip\n City\n Geo {\n lat\n lon\n }\n }\n }\n Project_management {\n Name\n Phone\n Email\n Website\n Email_other\n Address {\n Street\n Number\n Zip\n City\n Geo {\n lat\n lon\n }\n }\n }\n }\n }\n`;\n\n\n/**\n * CustomSC\n *\n * @returns {*}\n * @constructor\n */\nconst CustomSC = () => {\n const classes = useStyles();\n const {\n // favoriteData,\n // setFavoriteData,\n token,\n setToken,\n user,\n setMessage,\n unsetUser,\n unsetToken,\n } = useContext(GlobalContext);\n const { t } = useTranslation();\n const [data, setData] = useState([]);\n const [page, setPage] = useState(0);\n const [rowsPerPage, setRowsPerPage] = useState(10);\n const [querySearchFilter, setQuerySearchFilter] = useState([]);\n const [queryVariables, setQueryVariables] = useState({\n userHashID: user.getData().hashID,\n filterFor: [],\n });\n const [verifyDialogOpen, setVerifyDialogOpen] = useState(true);\n const [showNoResultMessage, setShowNoResultMessage] = useState(false);\n const columns = [\n { id: \"actions\", label: t(\"general.label.actions\"), minWidth: 200 },\n { id: \"projects\", label: t(\"general.label.projects\"), minWidth: 100 },\n {\n id: \"city\",\n label: t(\"general.label.address\"),\n minWidth: 120,\n align: \"left\",\n },\n {\n id: \"route\",\n label: t(\"general.label.distance\"),\n minWidth: 120,\n align: \"left\",\n },\n {\n id: \"date\",\n label: t(\"general.label.date\"),\n minWidth: 120,\n align: \"left\",\n },\n ];\n\n // GraphQL query for building applications, gets triggered by calling \"executeBuildingApplicationsQuery()\"\n const [result, executeBuildingApplicationsQuery] = useQuery({\n query: queryProjects,\n variables: queryVariables,\n requestPolicy: \"network-only\",\n pause: true,\n });\n\n const prevQuerySearchFilter = useRef(querySearchFilter);\n\n /* eslint-disable */\n useEffect(() => {\n if (prevQuerySearchFilter.current !== querySearchFilter) {\n setQueryVariables({ ...queryVariables, filterFor: querySearchFilter });\n prevQuerySearchFilter.current = querySearchFilter;\n }\n }, [querySearchFilter]);\n\n /**\n * useEffect\n */\n useEffect(() => {\n executeBuildingApplicationsQuery();\n }, [queryVariables, user, token, setToken]);\n /* eslint-enable */\n\n // GraphQL trigger and result handling\n useEffect(() => {\n if (!result.fetching) {\n if (result.error) {\n // Check if the user need to be logged out\n if (result.error.message.indexOf(\"User forced logout\") !== -1) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.user.forced.logout\"));\n unsetUser();\n unsetToken();\n navigate(\"/\");\n } else if (\n result.error.message.indexOf(\"Your query did not return any results\")\n ) {\n if (!showNoResultMessage) {\n setShowNoResultMessage(true);\n }\n setData([]);\n }\n } else {\n if (\n typeof result.data !== \"undefined\" &&\n typeof result.data.readElasticProjects !== \"undefined\"\n ) {\n // Add the favorites to the global context\n setData(result.data.readElasticProjects);\n setShowNoResultMessage(false);\n }\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [result, queryVariables, user, token, setToken])\n\n /**\n * handleChangePage\n *\n * @param event MouseEvent\n * @param newPage number\n */\n const handleChangePage = (event, newPage) => {\n setPage(newPage);\n };\n\n /**\n * handleChangeRowsPerPage\n *\n * @param event\n */\n const handleChangeRowsPerPage = (event) => {\n setRowsPerPage(parseInt(event.target.value, 10));\n setPage(0);\n };\n\n /**\n * toggleQuerySearchFilterValue\n *\n * @param string filterValue\n */\n const toggleQuerySearchFilterValue = (filterValue) => {\n let newQuerySearchFilter = [];\n const currentQuerySearchFilter = [];\n\n for (let index = 0; index < querySearchFilter.length; index++) {\n currentQuerySearchFilter.push(querySearchFilter[index]);\n }\n\n if (currentQuerySearchFilter.includes(filterValue)) {\n newQuerySearchFilter = currentQuerySearchFilter.filter(\n (element) => element !== filterValue\n );\n } else {\n currentQuerySearchFilter.push(filterValue);\n newQuerySearchFilter = currentQuerySearchFilter;\n }\n\n setQuerySearchFilter(newQuerySearchFilter);\n };\n\n /**\n * return\n */\n return (\n <>\n {}}\n verifyDialogOpen={verifyDialogOpen}\n />\n \n
\n \n \n \n \n \n \n \n Filter:\n \n \n ) : null\n }\n className={classes.searchFilterButton}\n onClick={(event) => {\n toggleQuerySearchFilterValue(\"new\");\n }}\n />\n \n ) : null\n }\n className={classes.searchFilterButton}\n onClick={(event) => {\n toggleQuerySearchFilterValue(\"modification\");\n }}\n />\n \n ) : null\n }\n className={classes.searchFilterButton}\n onClick={(event) => {\n toggleQuerySearchFilterValue(\"demolition\");\n }}\n />\n \n \n \n \n \n {columns.map((column) => (\n \n {column.label}\n \n ))}\n \n \n \n {!result.fetching && showNoResultMessage && (\n \n \n {t(\"general.label.no.data\")}\n \n \n )}\n {result.fetching && (\n \n \n \n \n \n \n \n )}\n {!result.fetching &&\n data\n .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage)\n .map((row) => (\n \n ))}\n \n \n \n <>,\n }}\n labelDisplayedRows={({ from, to, count }) => {\n return `${from} - ${to === -1 ? count : to}`;\n }}\n labelRowsPerPage={\n <>\n {rowsPerPage} {t(\"general.label.rows\")}\n \n }\n classes={{\n input: classes.paginationInput,\n selectIcon: classes.paginationSelectIcon,\n }}\n onChangePage={handleChangePage}\n onChangeRowsPerPage={handleChangeRowsPerPage}\n ActionsComponent={TablePaginationActions}\n />\n \n \n
\n
\n
\n \n );\n};\n\n// TODO: access control\nexport default withAccessControl(CustomSC, ACL_COMPONENTS.FAVORITES);\n","import { useQuery } from \"urql\";\nimport React, { useContext, useEffect, useState } from \"react\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport GlobalContext from \"../lib/GlobalContext\";\nimport Table from \"@material-ui/core/Table\";\nimport TableBody from \"@material-ui/core/TableBody\";\nimport TableCell from \"@material-ui/core/TableCell\";\nimport TableHead from \"@material-ui/core/TableHead\";\nimport TableRow from \"@material-ui/core/TableRow\";\nimport Paper from \"@material-ui/core/Paper\";\nimport Button from \"@material-ui/core/Button\";\nimport { useTranslation } from \"react-i18next\";\nimport LinearProgress from \"@material-ui/core/LinearProgress\";\nimport { navigate } from \"hookrouter\";\nimport { MESSAGE_TYPES } from \"../components/PopupMessages\";\nimport { apiTld, companyDirectoryPath } from \"../config\";\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n flexGrow: 1,\n width: \"100%\",\n maxWidth: 1280,\n },\n table: {\n minWidth: \"100%\",\n },\n tableWrapper: {\n overflowX: \"auto\",\n },\n tableHead: {\n width: \"100%\",\n height: 64,\n background: \"#F7F9FA\",\n // cursor: 'pointer'\n },\n tableCellHeader: {\n position: \"relative\",\n height: 64,\n fontWeight: \"bold\",\n paddingLeft: 24,\n },\n tableColumnsHead: {\n height: 96,\n },\n tableCellColumnsHeader: {\n fontSize: theme.typography.fontSize,\n color: \"#999999\",\n fontWeight: \"bold\",\n paddingLeft: 24,\n },\n tableCell: {\n height: 64,\n },\n}));\n\nconst queryCompanyLocations = `\nquery ReadCompanyLocations (\n $companyHashId: String\n) {\n readCompanyLocations(CompanyHashID: $companyHashId, Locale: \"all\") { \n HashID\n TemplateName\n Name\n Email\n ContactPerson\n Locale\n }\n}`;\n\nconst DossierManagement = () => {\n const classes = useStyles();\n const { t } = useTranslation();\n const { token, setToken, user, setMessage, unsetUser, unsetToken } =\n useContext(GlobalContext);\n const [companyLocations, setCompanyLocations] = useState(null);\n const [showNoResultMessage, setShowNoResultMessage] = useState(false);\n const columns = [\n {\n id: \"company_location\",\n label: t(\"general.label.company.location\"),\n minWidth: 100,\n },\n {\n id: \"template_name\",\n label: t(\"general.label.template.name\"),\n minWidth: 100,\n },\n {\n id: \"contact_person\",\n label: t(\"general.label.contact.person\"),\n minWidth: 100,\n },\n {\n id: \"contact_email\",\n label: t(\"form.label.email\"),\n minWidth: 100,\n },\n {\n id: \"location_hashId\",\n label: t(\"general.label.hashId\"),\n minWidth: 100,\n },\n {\n id: \"location_language\",\n label: t(\"general.label.language\"),\n minWidth: 100,\n },\n ];\n\n const [companyLocationsResult, executeCompanyLocationsQuery] = useQuery({\n query: queryCompanyLocations,\n variables: {\n companyHashId: user.getData().company.hashID,\n },\n requestPolicy: \"network-only\",\n pause: true,\n });\n\n /**\n * fetch data useEffect\n */\n useEffect(() => {\n executeCompanyLocationsQuery();\n }, [executeCompanyLocationsQuery, setToken, token.api]);\n\n // GraphQL trigger and companyLocationsResult handling\n useEffect(() => {\n if (!companyLocationsResult.fetching) {\n if (companyLocationsResult.error) {\n // Check if the user need to be logged out\n if (\n companyLocationsResult.error.message.indexOf(\"User forced logout\") !==\n -1 ||\n companyLocationsResult.error.message.indexOf(\n \"The resource owner or authorization server denied the request\"\n ) !== -1\n ) {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.user.forced.logout\"));\n unsetUser();\n unsetToken();\n navigate(\"/\");\n } else {\n // // The query did not return any results!\n if (!showNoResultMessage) {\n setShowNoResultMessage(true);\n }\n }\n } else {\n // Query not fetching right now\n if (\n typeof companyLocationsResult.data !== \"undefined\" &&\n typeof companyLocationsResult.data.readCompanyLocations !== \"undefined\"\n ) {\n if (companyLocations === null) {\n setCompanyLocations(companyLocationsResult.data);\n }\n }\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [companyLocationsResult])\n\n /**\n * handleCompanyLocationDetailClick\n *\n * @param {string} id\n */\n // const handleCompanyLocationDetailClick = id => {\n // navigate('/dossier/' + id + '/profile')\n // }\n\n /**\n * handlePreviewButtonClick\n *\n * @param {string} companyLocationHashId\n */\n const handlePreviewButtonClick = (companyLocationHashId) => {\n if (user.getData().company.urlSegment) {\n window.open(\n apiTld +\n companyDirectoryPath +\n user.getData().company.urlSegment +\n \"/template/\" +\n companyLocationHashId,\n \"_blank\"\n );\n } else {\n setMessage(MESSAGE_TYPES.ERROR, t(\"error.no.microsite\"));\n }\n };\n\n /**\n * return\n */\n return (\n \n
\n \n \n \n {columns.map((column) => (\n \n {column.label}\n \n ))}\n \n \n \n {!companyLocationsResult.fetching && showNoResultMessage && (\n \n \n {t(\"general.label.no.dossiers\")}\n \n \n )}\n {!companyLocationsResult.fetching &&\n companyLocations !== null &&\n companyLocations.readCompanyLocations.map((companyLocation) => {\n return (\n \n // handleCompanyLocationDetailClick(companyLocation.HashID)\n // }\n key={companyLocation.HashID}\n >\n \n {companyLocation.Name}\n \n \n {companyLocation.TemplateName}\n \n \n {companyLocation.ContactPerson}\n \n \n {companyLocation.Email}\n \n \n {companyLocation.HashID}\n \n \n {companyLocation.Locale !== undefined\n ? companyLocation.Locale.split(\"_\")[0]\n : \"\"}\n \n \n \n handlePreviewButtonClick(companyLocation.HashID)\n }\n >\n {t(\"general.label.preview\")}\n \n \n \n );\n })}\n {companyLocationsResult.fetching && (\n \n \n \n \n \n \n \n )}\n \n
\n
\n
\n );\n};\n\nexport default DossierManagement;\n","import React, { useState, useContext, useEffect } from \"react\";\nimport GlobalContext from \"../../lib/GlobalContext\";\nimport { green } from \"@material-ui/core/colors\";\nimport { makeStyles } from \"@material-ui/core\";\nimport Grid from \"@material-ui/core/Grid\";\nimport CompanyBasicSettingsForm from \"../Company/CompanyBasicSettingsForm\";\nimport { useQuery } from \"urql\";\n\nconst useStyles = makeStyles((theme) => ({\n gridContainer: {\n width: \"100%\",\n maxWidth: 1280,\n padding: \"16px 24px\",\n [theme.breakpoints.down(\"sm\")]: {\n alignItems: \"flex-start\",\n },\n },\n gridItem: {\n width: \"50%\",\n padding: \"8px 0\",\n [theme.breakpoints.down(\"sm\")]: {\n width: \"100%\",\n },\n },\n textFieldSmall: {\n width: \"50%\",\n \"&:first-of-type\": {\n width: \"calc(50% - 24px)\",\n marginRight: 24,\n },\n [theme.breakpoints.down(\"sm\")]: {\n width: \"100%\",\n \"&:first-of-type\": {\n width: \"100%\",\n },\n },\n },\n button: {\n color: \"#ffffff\",\n width: \"100%\",\n marginTop: \"20px\",\n marginBottom: \"40px\",\n },\n branchSubCategories: {\n width: \"50%\",\n marginLeft: \"20px\",\n [theme.breakpoints.down(\"sm\")]: {\n width: \"100%\",\n },\n },\n radioButtonHelperText: {\n color: \"#ff1645\",\n },\n buttonProgress: {\n color: green[500],\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n marginTop: -12,\n marginLeft: -12,\n },\n formLabel: {\n color: theme.palette.text.primary,\n },\n input: {\n marginLeft: 60,\n },\n itemPhone: {\n height: 80,\n overflow: \"hidden\",\n \"&.state-phoneField-open\": {\n height: \"auto\",\n overflow: \"visible\",\n zIndex: 3,\n },\n },\n itemFax: {\n height: 80,\n overflow: \"hidden\",\n \"&.state-faxField-open\": {\n height: \"auto\",\n overflow: \"visible\",\n zIndex: 3,\n },\n },\n}));\n\nconst queryCompanyLocations = `\nquery ReadCompanyLocations (\n $companyHashId: String,\n $hashId: String\n) {\n readCompanyLocations(CompanyHashID: $companyHashId, HashID: $hashId) { \n HashID\n Name\n ContactPerson\n Street\n Zip\n City\n Phone\n Fax\n Website\n Email\n }\n}`;\n\nconst initialFormValuesState = {\n id: \"\",\n name: \"\",\n contactPerson: \"\",\n street: \"\",\n zip: \"\",\n city: \"\",\n phone: \"\",\n fax: \"\",\n website: \"\",\n email: \"\",\n};\n\nconst initialFormValueErrorsState = {\n id: { hasError: false, message: \"\" },\n name: { hasError: false, message: \"\" },\n contactPerson: { hasError: false, message: \"\" },\n street: { hasError: false, message: \"\" },\n zip: { hasError: false, message: \"\" },\n city: { hasError: false, message: \"\" },\n phone: { hasError: false, message: \"\" },\n fax: { hasError: false, message: \"\" },\n website: { hasError: false, message: \"\" },\n email: { hasError: false, message: \"\" },\n};\n\nconst DossierBasicSettings = ({ id }) => {\n const classes = useStyles();\n const { googleMapsIsLoaded, user } =\n useContext(GlobalContext);\n const [formValues, setFormValues] = useState(initialFormValuesState);\n const [newFormDataSet, setNewFormDataSet] = useState(false);\n const [streetFormValue, setStreetFormValue] = useState(\"\");\n const [zipFormValue, setZipFormValue] = useState(\"\");\n const [cityFormValue, setCityFormValue] = useState(\"\");\n\n const [companyLocationsResult, executeCompanyLocationsQuery] = useQuery({\n query: queryCompanyLocations,\n variables: {\n companyHashId: user.getData().company.hashID,\n hashId: id,\n },\n requestPolicy: \"network-only\",\n pause: true,\n });\n\n /**\n * fetch data useEffect\n */\n useEffect(() => {\n executeCompanyLocationsQuery();\n }, [executeCompanyLocationsQuery]);\n\n // GraphQL trigger and companyLocationsResult handling\n useEffect(() => {\n if (!companyLocationsResult.fetching) {\n if (!companyLocationsResult.error) {\n // Query not fetching right now\n if (\n typeof companyLocationsResult.data !== \"undefined\" &&\n typeof companyLocationsResult.data.readCompanyLocations !== \"undefined\"\n ) {\n const companyLocationData =\n companyLocationsResult.data.readCompanyLocations[0];\n\n const newFormData = {\n id: companyLocationData.HashID,\n name: companyLocationData.Name,\n contactPerson: companyLocationData.ContactPerson,\n street: companyLocationData.Street,\n zip: companyLocationData.Zip,\n city: companyLocationData.City,\n phone: companyLocationData.Phone ?? \"\",\n fax: companyLocationData.Fax ?? \"\",\n website: companyLocationData.Website,\n email: companyLocationData.Email,\n };\n if (!newFormDataSet) {\n setFormValues(newFormData);\n setNewFormDataSet(true);\n }\n }\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [companyLocationsResult])\n\n return (\n googleMapsIsLoaded && (\n \n \n \n )\n );\n};\n\nexport default DossierBasicSettings;\n","import React, { useState, useContext, useEffect } from \"react\";\nimport GlobalContext from \"../../lib/GlobalContext\";\nimport { green } from \"@material-ui/core/colors\";\nimport { makeStyles } from \"@material-ui/core\";\nimport Grid from \"@material-ui/core/Grid\";\nimport CompanyInfoForm from \"../Company/CompanyInfoForm\";\nimport {\n initialFormValueErrorsState,\n initialFormValuesState,\n createFileFromUrl,\n readFile,\n} from \"../Company/CompanyInfoShared\";\nimport { useQuery } from \"urql\";\n\nconst useStyles = makeStyles((theme) => ({\n gridContainer: {\n width: \"100%\",\n maxWidth: 1280,\n padding: \"16px 24px\",\n [theme.breakpoints.down(\"sm\")]: {\n alignItems: \"flex-start\",\n },\n },\n gridItem: {\n width: \"50%\",\n padding: \"8px 0\",\n [theme.breakpoints.down(\"sm\")]: {\n width: \"100%\",\n },\n },\n textFieldSmall: {\n width: \"50%\",\n \"&:first-of-type\": {\n width: \"calc(50% - 24px)\",\n marginRight: 24,\n },\n [theme.breakpoints.down(\"sm\")]: {\n width: \"100%\",\n \"&:first-of-type\": {\n width: \"100%\",\n },\n },\n },\n button: {\n color: \"#ffffff\",\n width: \"100%\",\n marginTop: \"20px\",\n marginBottom: \"40px\",\n },\n branchSubCategories: {\n width: \"50%\",\n marginLeft: \"20px\",\n [theme.breakpoints.down(\"sm\")]: {\n width: \"100%\",\n },\n },\n radioButtonHelperText: {\n color: \"#ff1645\",\n },\n buttonProgress: {\n color: green[500],\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n marginTop: -12,\n marginLeft: -12,\n },\n formLabel: {\n color: theme.palette.text.primary,\n },\n input: {\n marginLeft: 60,\n },\n itemPhone: {\n height: 80,\n overflow: \"hidden\",\n \"&.state-phoneField-open\": {\n height: \"auto\",\n overflow: \"visible\",\n zIndex: 3,\n },\n },\n itemFax: {\n height: 80,\n overflow: \"hidden\",\n \"&.state-faxField-open\": {\n height: \"auto\",\n overflow: \"visible\",\n zIndex: 3,\n },\n },\n}));\n\nconst queryCompanyLocations = `\nquery ReadCompanyLocations (\n $companyHashId: String,\n $hashId: String\n) {\n readCompanyLocations(CompanyHashID: $companyHashId, HashID: $hashId) { \n HashID\n Name\n ContactPerson\n Street\n Zip\n City\n Phone\n Fax\n Website\n Email\n }\n}`;\n\nconst DossierInfo = ({ id }) => {\n const classes = useStyles();\n const { googleMapsIsLoaded, user } =\n useContext(GlobalContext);\n const [formValues, setFormValues] = useState(initialFormValuesState);\n const [newFormDataSet, setNewFormDataSet] = useState(false);\n const [currentFileObjects, setCurrentFileObjects] = useState([]);\n\n const [companyLocationsResult, executeCompanyLocationsQuery] = useQuery({\n query: queryCompanyLocations,\n variables: {\n companyHashId: user.getData().company.hashID,\n hashId: id,\n },\n requestPolicy: \"network-only\",\n pause: true,\n });\n\n /**\n * fetch data useEffect\n */\n useEffect(() => {\n executeCompanyLocationsQuery();\n }, [executeCompanyLocationsQuery]);\n\n // GraphQL trigger and companyLocationsResult handling\n useEffect(() => {\n if (!companyLocationsResult.fetching) {\n if (!companyLocationsResult.error) {\n // Query not fetching right now\n if (\n typeof companyLocationsResult.data !== \"undefined\" &&\n typeof companyLocationsResult.data.readCompanyLocations !== \"undefined\"\n ) {\n if (!newFormDataSet) {\n // setFormValues(newFormData)\n setNewFormDataSet(true);\n }\n }\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [companyLocationsResult])\n\n return (\n googleMapsIsLoaded && (\n \n \n \n )\n );\n};\n\nexport default DossierInfo;\n","import React, { useEffect, useState } from 'react'\nimport { navigate } from 'hookrouter'\nimport { useTranslation } from 'react-i18next'\nimport { makeStyles } from '@material-ui/core'\nimport Paper from '@material-ui/core/Paper'\nimport Tab from '@material-ui/core/Tab'\nimport Tabs from '@material-ui/core/Tabs'\nimport Divider from '@material-ui/core/Divider'\nimport DossierBasicSettings from '../components/Dossier/DossierBasicSettings'\nimport DossierInfo from '../components/Dossier/DossierInfo'\n\nconst useStyles = makeStyles(() => ({\n root: {\n flexGrow: 1,\n width: '100%'\n },\n tabs: {\n fontSize: 14,\n height: '100%',\n width: '100%'\n },\n tab: {\n height: 64,\n fontWeight: 'bold',\n textAlign: 'center',\n color: '#525252'\n },\n back: {\n fontSize: 24,\n fontWeight: 'bold',\n textAlign: 'center',\n color: '#525252',\n minWidth: 50,\n width: 50\n }\n}))\n\nconst Dossier = ({ id, subPage }) => {\n const classes = useStyles()\n const { t } = useTranslation()\n const [dossierTabValue, setDossierTabValue] = useState(0)\n /**\n * useEffect\n */\n useEffect(() => {\n switch (subPage) {\n case 'references':\n setDossierTabValue(3)\n console.log('REFERENCES')\n break\n case 'activities':\n setDossierTabValue(2)\n console.log('ACTIVITIES')\n break\n case 'info':\n setDossierTabValue(1)\n console.log('INFO')\n break\n case 'profile':\n setDossierTabValue(0)\n console.log('PROFILE')\n break\n default:\n navigate('/dossier/' + id + '/profile')\n setDossierTabValue(0)\n break\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n /**\n * handleTabChange\n *\n * @param event\n * @param newValue\n */\n const handleTabChange = (event, newValue) => {\n setDossierTabValue(newValue)\n switch (newValue) {\n case 99:\n navigate('/dossier-management')\n break\n case 3:\n navigate('/dossier/' + id + '/references')\n break\n case 2:\n navigate('/dossier/' + id + '/activities')\n break\n case 1:\n navigate('/dossier/' + id + '/info')\n break\n case 0:\n default:\n navigate('/dossier/' + id + '/profile')\n break\n }\n }\n\n /**\n * getContentRelatedToActiveTab\n */\n const getContentRelatedToActiveTab = () => {\n switch (dossierTabValue) {\n case 3:\n // return \n return 'REFERENCES'\n case 2:\n return 'ACTIVITIES'\n case 1:\n return \n case 0:\n default:\n return \n }\n }\n\n /**\n * return\n */\n return (\n \n \n \n \n \n \n \n \n \n {getContentRelatedToActiveTab()}\n \n )\n}\n\nexport default Dossier\n","import React, { useContext, useMemo } from \"react\";\nimport { LinearProgress } from \"@material-ui/core\";\nimport { useTranslation } from \"react-i18next\";\nimport GlobalContext from \"../../lib/GlobalContext\";\nimport {\n Chart as ChartJS,\n CategoryScale,\n LinearScale,\n BarElement,\n Title,\n Tooltip,\n Legend,\n} from \"chart.js\";\nimport { Bar } from \"react-chartjs-2\";\nimport zoomPlugin from \"chartjs-plugin-zoom\";\nimport { CHARTJS_STATISTIC_OPTIONS } from \"../../config\";\nimport { useQuery } from \"urql\";\nimport getSafe from \"../../lib/GetSafe\";\n\nChartJS.register(CategoryScale);\nChartJS.register(LinearScale);\nChartJS.register(BarElement);\nChartJS.register(Title);\nChartJS.register(Tooltip);\nChartJS.register(Legend);\nChartJS.register(zoomPlugin);\n\nlet BarOptions = CHARTJS_STATISTIC_OPTIONS;\n\nconst queryReadStatisticSearchArea = `\n query ReadStatisticSearchArea ($companyHashID: String!, $buildingApplicationType: String!)\n {\n readStatisticSearchArea (\n CompanyHashID: $companyHashID,\n BuildingApplicationType: $buildingApplicationType\n ) {\n labels\n datasets {\n label\n data\n backgroundColor\n }\n }\n }\n`;\n\n/**\n * Applications\n *\n * @returns {*}\n * @constructor\n */\nconst Applications = () => {\n const { t /* , i18n */ } = useTranslation();\n\n const { user } = useContext(GlobalContext);\n\n // GraphQL query for statistic data\n const [queryReadStatisticSearchAreaResult] = useQuery({\n query: queryReadStatisticSearchArea,\n variables: {\n companyHashID: user.getData().company.hashID,\n buildingApplicationType: \"Baugesuch\",\n },\n requestPolicy: \"cache-and-network\",\n });\n\n BarOptions = useMemo(() => {\n return JSON.parse(\n JSON.stringify(CHARTJS_STATISTIC_OPTIONS).replace(\n \"[[:TITLE_TEXT_PLACEHOLDER:]]\",\n t(\"statistics.selector.applications\")\n )\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n if (\n queryReadStatisticSearchAreaResult.fetching ||\n !getSafe(\n () => queryReadStatisticSearchAreaResult.data.readStatisticSearchArea,\n false\n )\n ) {\n return ;\n }\n\n if (\n queryReadStatisticSearchAreaResult.data.readStatisticSearchArea.datasets\n .length === 0\n ) {\n return (\n
\n {t(\"statistics.selector.applications\")}: Keine Daten\n
\n );\n }\n\n return user.getData().company.adminUserID === user.getData().id ? (\n \n ) : null;\n};\n\nexport default Applications;\n","import React, { useContext, useMemo } from \"react\";\nimport { LinearProgress } from \"@material-ui/core\";\nimport { useTranslation } from \"react-i18next\";\nimport GlobalContext from \"../../lib/GlobalContext\";\nimport {\n Chart as ChartJS,\n CategoryScale,\n LinearScale,\n BarElement,\n Title,\n Tooltip,\n Legend,\n} from \"chart.js\";\nimport { Bar } from \"react-chartjs-2\";\nimport zoomPlugin from \"chartjs-plugin-zoom\";\nimport { CHARTJS_STATISTIC_OPTIONS } from \"../../config\";\nimport { useQuery } from \"urql\";\nimport getSafe from \"../../lib/GetSafe\";\n\nChartJS.register(CategoryScale);\nChartJS.register(LinearScale);\nChartJS.register(BarElement);\nChartJS.register(Title);\nChartJS.register(Tooltip);\nChartJS.register(Legend);\nChartJS.register(zoomPlugin);\n\nlet BarOptions = CHARTJS_STATISTIC_OPTIONS;\n\nconst queryReadStatisticSearchArea = `\n query ReadStatisticSearchArea ($companyHashID: String!, $buildingApplicationType: String!)\n {\n readStatisticSearchArea (\n CompanyHashID: $companyHashID,\n BuildingApplicationType: $buildingApplicationType\n ) {\n labels\n datasets {\n label\n data\n backgroundColor\n }\n }\n }\n`;\n/**\n * Submissions\n *\n * @returns {*}\n * @constructor\n */\nconst Submissions = () => {\n const { t /* , i18n */ } = useTranslation();\n const { user } = useContext(GlobalContext);\n\n // GraphQL query for statistic data\n const [queryReadStatisticSearchAreaResult] = useQuery({\n query: queryReadStatisticSearchArea,\n variables: {\n companyHashID: user.getData().company.hashID,\n buildingApplicationType: \"Submission\",\n },\n requestPolicy: \"cache-and-network\",\n });\n\n BarOptions = useMemo(() => {\n return JSON.parse(\n JSON.stringify(CHARTJS_STATISTIC_OPTIONS).replace(\n \"[[:TITLE_TEXT_PLACEHOLDER:]]\",\n t(\"statistics.selector.submissions\")\n )\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n if (\n queryReadStatisticSearchAreaResult.fetching ||\n !getSafe(\n () => queryReadStatisticSearchAreaResult.data.readStatisticSearchArea,\n false\n )\n ) {\n return ;\n }\n\n if (\n queryReadStatisticSearchAreaResult.data.readStatisticSearchArea.datasets\n .length === 0\n ) {\n return (\n
\n {t(\"statistics.selector.submissions\")}: Keine Daten\n
\n );\n }\n\n return user.getData().company.adminUserID === user.getData().id ? (\n \n ) : null;\n};\n\nexport default Submissions;\n","import React, { useContext, useMemo } from \"react\";\nimport { LinearProgress } from \"@material-ui/core\";\nimport { useTranslation } from \"react-i18next\";\nimport GlobalContext from \"../../lib/GlobalContext\";\nimport {\n Chart as ChartJS,\n CategoryScale,\n LinearScale,\n BarElement,\n Title,\n Tooltip,\n Legend,\n} from \"chart.js\";\nimport { Bar } from \"react-chartjs-2\";\nimport zoomPlugin from \"chartjs-plugin-zoom\";\nimport { CHARTJS_STATISTIC_OPTIONS } from \"../../config\";\nimport getSafe from \"../../lib/GetSafe\";\nimport { useQuery } from \"urql\";\n\nChartJS.register(CategoryScale);\nChartJS.register(LinearScale);\nChartJS.register(BarElement);\nChartJS.register(Title);\nChartJS.register(Tooltip);\nChartJS.register(Legend);\nChartJS.register(zoomPlugin);\n\nlet BarOptions = CHARTJS_STATISTIC_OPTIONS;\n\nconst queryReadStatisticApplications = `\n query ReadStatisticApplications ($companyHashID: String!, $submissionType: String!)\n {\n readStatisticApplications (\n CompanyHashID: $companyHashID,\n SubmissionType: $submissionType\n ) {\n labels\n datasets {\n label\n data\n backgroundColor\n }\n }\n }\n`;\n\n/**\n * DownloadApplications\n *\n * @returns {*}\n * @constructor\n */\nconst DownloadApplications = () => {\n const { t /* , i18n */ } = useTranslation();\n const { user } = useContext(GlobalContext);\n\n // GraphQL query for statistic data\n const [queryReadStatisticApplicationsResult] = useQuery({\n query: queryReadStatisticApplications,\n variables: {\n companyHashID: user.getData().company.hashID,\n submissionType: \"print\",\n },\n requestPolicy: \"cache-and-network\",\n });\n\n BarOptions = useMemo(() => {\n return JSON.parse(\n JSON.stringify(CHARTJS_STATISTIC_OPTIONS).replace(\n \"[[:TITLE_TEXT_PLACEHOLDER:]]\",\n t(\"statistics.selector.apply.download\")\n )\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n if (\n queryReadStatisticApplicationsResult.fetching ||\n !getSafe(\n () => queryReadStatisticApplicationsResult.data.readStatisticApplications,\n false\n )\n ) {\n return ;\n }\n\n if (\n queryReadStatisticApplicationsResult.data.readStatisticApplications.datasets\n .length === 0\n ) {\n return (\n
\n {t(\"statistics.selector.apply.download\")}: Keine Daten\n
\n );\n }\n\n return user.getData().company.adminUserID === user.getData().id ? (\n \n ) : null;\n};\n\nexport default DownloadApplications;\n","import React, { useContext, useMemo } from \"react\";\nimport { LinearProgress } from \"@material-ui/core\";\nimport { useTranslation } from \"react-i18next\";\nimport GlobalContext from \"../../lib/GlobalContext\";\nimport {\n Chart as ChartJS,\n CategoryScale,\n LinearScale,\n BarElement,\n Title,\n Tooltip,\n Legend,\n} from \"chart.js\";\nimport { Bar } from \"react-chartjs-2\";\nimport zoomPlugin from \"chartjs-plugin-zoom\";\nimport { CHARTJS_STATISTIC_OPTIONS } from \"../../config\";\nimport { useQuery } from \"urql\";\nimport getSafe from \"../../lib/GetSafe\";\n\nChartJS.register(CategoryScale);\nChartJS.register(LinearScale);\nChartJS.register(BarElement);\nChartJS.register(Title);\nChartJS.register(Tooltip);\nChartJS.register(Legend);\nChartJS.register(zoomPlugin);\n\nlet BarOptions = CHARTJS_STATISTIC_OPTIONS;\n\nconst queryReadStatisticApplications = `\n query ReadStatisticApplications ($companyHashID: String!, $submissionType: String!)\n {\n readStatisticApplications (\n CompanyHashID: $companyHashID,\n SubmissionType: $submissionType\n ) {\n labels\n datasets {\n label\n data\n backgroundColor\n }\n }\n }\n`;\n\n/**\n * SendApplications\n *\n * @returns {*}\n * @constructor\n */\nconst SendApplications = () => {\n const { t /* , i18n */ } = useTranslation();\n const { user } = useContext(GlobalContext);\n\n // GraphQL query for statistic data\n const [queryReadStatisticApplicationsResult] = useQuery({\n query: queryReadStatisticApplications,\n variables: {\n companyHashID: user.getData().company.hashID,\n submissionType: \"email\",\n },\n requestPolicy: \"cache-and-network\",\n });\n\n BarOptions = useMemo(() => {\n return JSON.parse(\n JSON.stringify(CHARTJS_STATISTIC_OPTIONS).replace(\n \"[[:TITLE_TEXT_PLACEHOLDER:]]\",\n t(\"statistics.selector.apply.email\")\n )\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n if (\n queryReadStatisticApplicationsResult.fetching ||\n !getSafe(\n () => queryReadStatisticApplicationsResult.data.readStatisticApplications,\n false\n )\n ) {\n return ;\n }\n\n if (\n queryReadStatisticApplicationsResult.data.readStatisticApplications.datasets\n .length === 0\n ) {\n return (\n
\n {t(\"statistics.selector.apply.email\")}: Keine Daten\n
\n );\n }\n\n return user.getData().company.adminUserID === user.getData().id ? (\n \n ) : null;\n};\n\nexport default SendApplications;\n","import React, { useContext, useState } from \"react\";\nimport Grid from \"@material-ui/core/Grid\";\nimport {\n AppBar,\n makeStyles,\n Paper,\n Tab,\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableRow,\n Tabs,\n} from \"@material-ui/core\";\nimport { useTranslation } from \"react-i18next\";\nimport GlobalContext from \"../../lib/GlobalContext\";\nimport clsx from \"clsx\";\nimport Applications from \"./Applications\";\nimport Submissions from \"./Submissions\";\nimport DownloadApplications from \"./DownloadedApplications\";\nimport SendApplications from \"./SendApplications\";\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n flexGrow: 1,\n width: \"100%\",\n maxWidth: 1280,\n },\n tabs: {\n color: \"#525252\",\n fontSize: 14,\n height: \"100%\",\n width: \"100%\",\n },\n tab: {\n height: 64,\n width: \"100%\",\n maxWidth: 188,\n fontWeight: \"bold\",\n textAlign: \"center\",\n },\n tableTabsHeader: {\n background: \"#F7F9FA\",\n boxShadow: \"none\",\n },\n gridContainer: {\n width: \"100%\",\n maxWidth: 1280,\n margin: 0,\n padding: \"16px 24px\",\n },\n gridItem: {\n padding: \"8px 0\",\n width: \"100%\",\n },\n gridItemStat: {\n padding: \"8px 0\",\n width: \"100%\",\n cursor: \"grab\",\n },\n table: {\n minWidth: \"100%\",\n },\n tableWrapper: {\n overflowX: \"auto\",\n [theme.breakpoints.up(\"lg\")]: {\n overflowX: \"hidden\",\n },\n },\n tableColumnsHead: {\n height: 96,\n },\n tableCell: {\n height: 64,\n },\n tableCellHeader: {\n position: \"relative\",\n height: 64,\n fontWeight: \"bold\",\n zIndex: 1,\n },\n statisticActiveButton: {\n marginRight: 4,\n marginLeft: 4,\n fontSize: 14,\n fontWeight: \"normal\",\n [theme.breakpoints.down(\"xs\")]: {\n marginTop: 4,\n marginBottom: 4,\n },\n \"&.MuiChip-colorPrimary\": {\n color: \"#fff\",\n },\n \"&.active\": {\n background: theme.palette.primary.main,\n color: \"#fff\",\n },\n },\n noBottomBorder: {\n borderBottom: 0,\n paddingBottom: 0,\n },\n}));\n\n/**\n * Statistics\n *\n * @returns {*}\n * @constructor\n */\nconst Statistics = () => {\n const classes = useStyles();\n const { t /* , i18n */ } = useTranslation();\n const { user } = useContext(GlobalContext);\n\n const [activeStatisticGroup, setActiveStatisticGroup] = useState(1);\n\n return user.hasZipSearchStatistic() && user.getData().company.adminUserID === user.getData().id ? (\n \n
\n \n \n \n \n \n \n setActiveStatisticGroup(tabValue)\n }\n className={classes.tabs}\n indicatorColor=\"primary\"\n variant=\"scrollable\"\n scrollButtons=\"auto\"\n >\n \n \n \n \n \n \n \n \n \n \n \n \n \n {activeStatisticGroup === 1 && (\n \n )}\n {activeStatisticGroup === 1 && (\n \n )}\n {activeStatisticGroup === 2 && (\n \n )}\n {activeStatisticGroup === 3 && (\n \n )}\n \n \n \n \n \n
\n
\n
\n ) : null;\n};\n\nexport default Statistics;\n","import React, { useState, useEffect, useCallback } from \"react\";\nimport { createMuiTheme } from \"@material-ui/core\";\nimport red from \"@material-ui/core/colors/red\";\nimport { ThemeProvider } from \"@material-ui/styles\";\nimport CssBaseline from \"@material-ui/core/CssBaseline\";\nimport GlobalContext from \"./lib/GlobalContext\";\nimport {\n useRoutes,\n useRedirect,\n navigate,\n getWorkingPath,\n useQueryParams,\n setQueryParams,\n} from \"hookrouter\";\nimport Project from \"./pages/Project\";\nimport Projects from \"./pages/Projects\";\nimport ProjectsSearch from \"./pages/ProjectsSearch\";\nimport ProjectsFree from \"./pages/ProjectsFree\";\nimport Favorites from \"./pages/Favorites\";\nimport NotFoundPage from \"./pages/NotFoundPage\";\nimport Onboarding from \"./pages/Onboarding\";\nimport OnboardingMarketing from \"./pages/OnboardingMarketing\";\nimport OnboardingPasswordReset from \"./pages/OnboardingPasswordReset\";\nimport Login from \"./pages/Login\";\nimport Logout from \"./pages/Logout\";\nimport Layout from \"./components/Layout\";\nimport Account from \"./pages/Account\";\nimport MicrositeDetailsWizard from \"./pages/MicrositeDetailsWizard\";\nimport Token from \"./lib/Token\";\nimport Company from \"./pages/Company\";\nimport { useTranslation, withTranslation } from \"react-i18next\";\nimport locationDataMock from \"./__mocks__/mock__locations\";\nimport User from \"./lib/User\";\nimport \"./i18n\";\nimport ErrorBoundary from \"./lib/ErrorBoundary\";\nimport UpgradeToPremium from \"./components/UpgradeToPremium/UpgradeToPremium\";\nimport { useLoadScript } from \"@react-google-maps/api\";\nimport { GOOGLE_API_KEY, cookieDomain } from \"./config\";\nimport Cookies from \"universal-cookie\";\nimport { green } from \"@material-ui/core/colors\";\nimport CustomSC from \"./pages/CustomSC\";\nimport DossierManagement from \"./pages/DossierManagement\";\nimport Dossier from \"./pages/Dossier\";\nimport Statistics from \"./components/Statistics/Statistics\";\n\n// Event listener to keep the user and token data equal between browser tabs\nwindow.addEventListener(\"storage\", (e) => {\n if (e.newValue !== null) {\n switch (e.key) {\n case \"user\":\n if (JSON.stringify(User.getData()) !== e.newValue) {\n User.setData(JSON.parse(e.newValue));\n }\n break;\n case \"token\":\n if (JSON.stringify(Token.getData()) !== e.newValue) {\n Token.setData(JSON.parse(e.newValue));\n }\n break;\n default:\n break;\n }\n }\n});\n\nconst rootStandard = {\n root: {\n fontSize: 14,\n lineHeight: \"24px\",\n letterSpacing: \"0px\",\n\n \"@media (min-width:960px)\": {\n fontSize: 14,\n lineHeight: \"24px\",\n letterSpacing: \"0px\",\n },\n },\n};\n// Style definitions\nexport const theme = createMuiTheme({\n overrides: {\n MuiDialog: {\n paperWidthXs: {\n width: \"100%\",\n maxWidth: 475,\n },\n paperWidthMd: {\n width: \"100%\",\n maxWidth: 850,\n },\n },\n MuiTab: rootStandard,\n MuiTableCell: rootStandard,\n MuiTypography: {\n caption: {\n \"@media (min-width:960px)\": {\n fontSize: 14,\n },\n },\n },\n MuiIconButton: {\n root: {\n \"&:hover\": {\n backgroundColor: \"rgba(0,179,207,0.3)\",\n },\n },\n },\n MuiInputBase: {\n input: {\n background: \"#fff\",\n },\n },\n MuiTooltip: {\n tooltip: {\n padding: \"10px 35px\",\n backgroundColor: \"transparent\",\n color: \"#525252\",\n fontSize: 14,\n \"@media (max-width:960px)\": {\n padding: \"5px 20px\",\n },\n },\n tooltipPlacementBottom: {\n margin: \"0 !important\",\n },\n arrow: {\n color: \"#3EE1FA\",\n fontSize: 12,\n },\n popper: {\n borderRadius: 5,\n background: \"#3EE1FA\",\n },\n },\n MuiRadio: {\n root: {\n checked: {\n color: \"#00b3cf\",\n },\n },\n },\n PrivateTabIndicator: {\n root: {\n height: 3,\n },\n },\n MuiDropzoneSnackbar: {\n errorAlert: {\n backgroundColor: \"#c4001d\",\n },\n successAlert: {\n backgroundColor: green[600],\n },\n infoAlert: {\n backgroundColor: \"#006A7A\",\n },\n },\n MuiDropzonePreviewList: {\n root: {\n width: \"100%\",\n },\n image: {\n width: \"auto\",\n height: \"auto\",\n },\n },\n },\n palette: {\n primary: {\n main: \"#00b3cf\",\n },\n secondary: {\n main: \"#89FFFF\",\n },\n info: {\n main: \"#3EE1FA\",\n },\n text: {\n primary: \"#525252\",\n secondary: \"#A6A6A6\",\n },\n error: {\n main: red.A400,\n },\n background: {\n default: \"#f2f3f4\",\n footer: \"#D3D3D3\",\n userIcon: \"#2e7585\",\n },\n },\n hover: {\n \"&:hover\": {\n backgroundColor: \"#00B3CF\",\n },\n },\n typography: {\n fontFamily: \"'Open Sans', sans-serif\",\n fontSize: 14,\n },\n watermarkLogo: {\n content: '\"\"',\n display: \"block\",\n position: \"absolute\",\n top: \"0\",\n left: \"0\",\n width: \"150px\",\n height: \"180px\",\n backgroundImage: `url(${\"/assets/watermark-dialog.png\"})`,\n backgroundRepeat: \"no-repeat\",\n backgroundSize: \"contain\",\n \"@media (min-width:640px)\": {\n width: \"220px\",\n height: \"250px\",\n },\n },\n});\n\n// Route definitions\nconst routes = {\n \"/projects\": () => (user, token) =>\n user.isSet() && token.isSet() ? : ,\n \"/projects-search\": () => (user, token) =>\n user.isSet() && token.isSet() ? : ,\n \"/projects-free\": () => (user, token) =>\n user.isSet() && token.isSet() ? : ,\n \"/favorites\": () => (user, token) =>\n user.isSet() && token.isSet() ? : ,\n \"/custom_sc\": () => (user, token) =>\n user.isSet() && token.isSet() ? : ,\n \"/dossier-management\": () => (user, token) =>\n user.isSet() && token.isSet() ? : ,\n \"/account*\": () => (user, token) =>\n user.isSet() && token.isSet() ? : ,\n \"/company*\": () => (user, token) =>\n user.isSet() && token.isSet() ? : ,\n \"/wizard*\": () => (user, token) =>\n user.isSet() && token.isSet() ? : ,\n \"/onboarding/:id/:refreshToken\":\n ({ id, refreshToken }) =>\n () =>\n ,\n \"/onboarding-password-reset/:id/:refreshToken\":\n ({ id, refreshToken }) =>\n () =>\n ,\n \"/onboarding-marketing/:id\":\n ({ id }) =>\n () =>\n ,\n \"/project/:id\":\n ({ id }) =>\n () =>\n ,\n \"/dossier/:id/:subPage\":\n ({ id, subPage }) =>\n () =>\n ,\n \"/login\": () => (user) => user.isSet() ? : navigate(\"/\"),\n \"/logout\": () => () => ,\n \"/statistics*\": () => (user, token) =>\n user.isSet() && token.isSet() ? : ,\n \"/*\": () => () => ,\n};\n\nconst googleLibraries = [\"places\"];\n\n/**\n * App\n *\n * @returns {*}\n * @constructor\n */\nconst App = () => {\n useRedirect(\"/\", \"/projects\");\n const { i18n } = useTranslation();\n const [removeProjectSearchParameter, setRemoveProjectSearchParameter] =\n useState(false);\n const [wizardStep, setWizardStep] = useState(0);\n const [projectData, setProjectData] = useState([]);\n const [favoriteData, setFavoriteData] = useState([]);\n const [locationData, setLocationData] = useState(locationDataMock);\n const [componentUser, setComponentUser] = useState(User);\n const [userHash, setUserHash] = useState(User.getHash());\n const [tokenHash, setTokenHash] = useState(Token.getHash());\n const [openWelcomeDialog, setOpenWelcomeDialog] = useState(true);\n const [componentToken, setComponentToken] = useState(Token);\n const [upgradeToPremiumOpen, setUpgradeToPremiumOpen] = useState(false);\n const [upgradeToPremiumClose, setUpgradeToPremiumClose] = useState(false);\n const [messageState, setMessageState] = useState(null);\n const [selectedLocationTabValue, setSelectedLocationTabValue] =\n useState(false);\n const [canton, setCanton] = useState(\"ZH\");\n const [googleMapsIsLoaded, setGoogleMapsIsLoaded] = useState(false);\n const [googleMapsLoadError, setGoogleMapsLoadError] = useState(false);\n const [cmsLinks, setCmsLinks] = useState(null);\n const [paymentMethodId, setPaymentMethodId] = useState(null);\n const [visibleProjects, setVisibleProjects] = useState([]);\n const [projectSearchParameter, setProjectSearchParameter] = useState(\"\");\n const [markAsReadByLocation, setMarkAsReadByLocation] = useState({\n hashID: \"\",\n });\n const [companyTabValue, setCompanyTabValue] = useState(0);\n const [accountTabValue, setAccountTabValue] = useState(0);\n const [debugToolsEnabled, setDebugToolsEnabled] = useState(false);\n const [\n selectedBuildingApplicationTypeTabValue,\n setSelectedBuildingApplicationTypeTabValue,\n ] = useState(false);\n\n const [queryParams] = useQueryParams();\n\n /**\n * setToken\n * Implementation of https://reactjs.org/docs/hooks-faq.html#is-it-safe-to-omit-functions-from-the-list-of-dependencies\n *\n * @param token\n */\n const setToken = useCallback(\n (token) => {\n Token.setData(token.getData());\n setComponentToken(Token);\n const hash = token.getHash();\n if (tokenHash !== hash) {\n setTokenHash(hash);\n }\n },\n [tokenHash]\n );\n\n /**\n * setUser\n * Implementation of https://reactjs.org/docs/hooks-faq.html#is-it-safe-to-omit-functions-from-the-list-of-dependencies\n *\n * @param user\n */\n const setUser = useCallback(\n (user) => {\n User.setData(user.getData());\n setComponentUser({ ...User });\n const hash = user.getHash();\n if (userHash !== hash) {\n setUserHash(hash);\n }\n },\n [userHash]\n );\n\n /**\n * load script for google maps\n */\n const { isLoaded, loadError } = useLoadScript({\n googleMapsApiKey: GOOGLE_API_KEY,\n libraries: googleLibraries,\n });\n\n /**\n * useEffect\n */\n useEffect(() => {\n i18n.changeLanguage(componentUser.getData().locale);\n\n setGoogleMapsIsLoaded(isLoaded);\n setGoogleMapsLoadError(loadError);\n\n // Load user from localStore\n if (!componentUser.isSet() && User.getLocalStorage()) {\n componentUser.setData(User.getLocalStorage());\n setUser(componentUser);\n }\n // Load token from localStore\n if (!componentToken.isSet() && componentToken.loadFromLocalStorage()) {\n setToken(componentToken);\n }\n }, [\n i18n,\n componentUser,\n componentToken,\n setToken,\n setUser,\n isLoaded,\n loadError,\n ]);\n\n /**\n * handle showUpgrade query param useEffect\n */\n useEffect(() => {\n if (\n queryParams.showUpgrade !== undefined &&\n queryParams.showUpgrade === \"true\"\n ) {\n if (upgradeToPremiumOpen !== true) {\n setUpgradeToPremiumOpen(true);\n setQueryParams({ showUpgrade: \"false\" });\n }\n }\n }, [queryParams, upgradeToPremiumOpen]);\n\n /**\n * removeAppRedirectCookie\n */\n const removeAppRedirectCookie = () => {\n const cookies = new Cookies();\n if (typeof cookies.get(\"appRedirect\") !== \"undefined\") {\n cookies.remove(\"appRedirect\", {\n path: \"/\",\n domain: cookieDomain,\n });\n }\n };\n\n /**\n * unsetUser\n */\n const unsetUser = () => {\n componentUser.unsetData();\n setComponentUser({ ...componentUser });\n removeAppRedirectCookie();\n };\n\n /**\n * setTokenWithoutRehash\n * Token change not triggering re-renders\n */\n const setTokenWithoutRehash = (token) => {\n Token.setData(token.getData());\n setComponentToken(Token);\n };\n\n /**\n * unsetToken\n * Token changes should not trigger re-renders!\n */\n const unsetToken = () => {\n componentToken.unsetData();\n setComponentToken(componentToken);\n removeAppRedirectCookie();\n };\n\n /**\n * notifyBeforePremiumDialogueClose\n * Get calls before the upgradeToPremium dialogue gets closed\n */\n const notifyBeforePremiumDialogueClose = () => {\n setUpgradeToPremiumClose(true);\n };\n\n /**\n * setMessage\n *\n * @param code\n * @param message\n */\n const setMessage = (code, message) => {\n setMessageState({ code, message });\n };\n\n /**\n * clearMessage\n */\n const clearMessage = () => {\n setMessageState(null);\n };\n\n /**\n * canUserUpgrade\n *\n * @returns {boolean|boolean}\n */\n const canUserUpgrade = () => {\n return (\n (upgradeToPremiumOpen && !getWorkingPath().includes(\"onboarding\")) ||\n (componentUser.isAbleToUpgrade() &&\n !getWorkingPath().includes(\"onboarding\"))\n );\n };\n\n /**\n * return\n */\n return (\n \n \n \n \n \n {useRoutes(routes)(componentUser, componentToken)}\n {canUserUpgrade() && (\n \n )}\n \n \n \n \n );\n};\n\nexport default withTranslation(\"translations\")(App);\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n)\n\nexport function register (config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href)\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config)\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n )\n })\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config)\n }\n })\n }\n}\n\nfunction registerValidSW (swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing\n if (installingWorker == null) {\n return\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n )\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration)\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.')\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration)\n }\n }\n }\n }\n }\n })\n .catch(error => {\n console.error('Error during service worker registration:', error)\n })\n}\n\nfunction checkValidServiceWorker (swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type')\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload()\n })\n })\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config)\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n )\n })\n}\n\nexport function unregister () {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister()\n })\n }\n}\n","import { cacheExchange } from \"@urql/exchange-graphcache\";\n\nconst exchange = cacheExchange({\n keys: {\n ApplicationInput: () => null,\n BusinessActivityInput: () => null,\n BusinessActivity: () => null,\n BusinessSpecialityInput: () => null,\n BusinessSpeciality: () => null,\n Canton: () => null,\n CompanyLocation: () => null,\n Company: () => null,\n ConstructionComponent: () => null,\n ConstructionSum: () => null,\n CreditCard: () => null,\n DossierTemplate: () => null,\n ElasticLatestProject: () => null,\n ElasticNewBuildingApplicationLocation: (data) => data.HashID,\n ElasticNewBuildingApplication: () => null,\n ElasticNewBuildingApplicationSearchArea: (data) => data.HashID,\n ElasticProjectAddress: () => null,\n ElasticProjectBuildingOwner: () => null,\n ElasticProjectConstructionSite: () => null,\n ElasticProjectGeo: () => null,\n ElasticProjectProjectManagement: () => null,\n ElasticProject: (data) => data.HashID+data.UserID+data.LocationID,\n EnterpriseElasticProject: () => null,\n EnterpriseElasticResult: () => null,\n ExternalApplicationInput: () => null,\n FavoriteHistoryItem: () => null,\n FavoriteInput: () => null,\n FavoriteNoteInput: () => null,\n FavoriteNote: () => null,\n FavoriteState: () => null,\n Favorite: (data) => data.HashID,\n Feature: () => null,\n FulltextSearchRequest: () => null,\n Invoice: () => null,\n LinkList: () => null,\n Link: () => null,\n LocationInput: () => null,\n Location: () => null,\n MembershipInput: () => null,\n Membership: () => null,\n MicrositeColorScheme: () => null,\n MicrositeImageInput: () => null,\n MicrositeImage: () => null,\n MicrositeInput: () => null,\n MicrositeLogoInput: () => null,\n MicrositeLogo: () => null,\n MicrositeReferencesImageInput: () => null,\n MicrositeReferencesImage: () => null,\n MicrositeReferencesInput: () => null,\n MicrositeReferences: () => null,\n Novalytica: () => null,\n Plan: () => null,\n ProductMetadata: () => null,\n Product: () => null,\n Result: () => null,\n SearchArea: () => null,\n SmartconextConf: () => null,\n StatisticApplication: () => null,\n StatisticDataset: () => null,\n StripeCustomerPortalLink: () => null,\n StripeSetupIntent: () => null,\n UserInput: () => null,\n User: () => null,\n ZefixCompanyAddressInformation: () => null,\n ZefixCompanyAddress: () => null,\n ZefixCompanyDetails: () => null,\n ZefixCompanyLegalFormName: () => null,\n ZefixCompanyLegalForm: () => null,\n ZefixCompanySuggest: () => null,\n },\n});\n\nexport default exchange;\n","import { authExchange } from \"@urql/exchange-auth\";\nimport Token from \"../Token\";\n\nconst exchange = authExchange(async (utils) => {\n // Initially load the token-data from storage\n Token.loadFromLocalStorage();\n\n return {\n // Add the access-token to all requests\n addAuthToOperation(operation) {\n if (!Token.isSet()) {\n return operation;\n }\n\n return utils.appendHeaders(operation, {\n Authorization: `${Token.getData().token_type} ${\n Token.getData().access_token\n }`,\n });\n },\n // Check if a access-error happend, this will trigger a refresh-token call\n didAuthError(error, _operation) {\n return error.graphQLErrors.some(\n (e) =>\n e.message.includes(\n \"The resource owner or authorization server denied the request\"\n ) ||\n e.message.includes(\"Authorization failed\") ||\n e.message.includes(\"Error Token validity\")\n );\n },\n // Refresh the token\n async refreshAuth() {\n Token.loadFromLocalStorage();\n\n if (Token.getData().refresh_token.length) {\n const refreshResult = await Token.api.refresh(\n Token.getData().refresh_token\n );\n\n if (refreshResult) {\n Token.setData(refreshResult);\n } else {\n Token.unsetData();\n }\n }\n },\n // Predict if a token-refresh is required\n willAuthError: (operation) => {\n // In case the refrersh-token lifetime is expired, force a refresh by returning \"true\"\n const currTime = Math.round(new Date().getTime() / 1000);\n const tokenEndOfLife = Token.getData().expired_timestamp;\n return currTime > tokenEndOfLife;\n },\n };\n});\n\nexport default exchange;\n","import { createClient, fetchExchange, mapExchange } from 'urql'\nimport cacheExchange from './Exchanges/CacheExchange';\nimport authExchange from './Exchanges/AuthExchange';\nimport { MASQ_COOKIE_NAME, SILVERSTRIPE_GRAPHQL_API } from '../config'\nimport Cookies from 'universal-cookie';\n\nconst urqlFetchOptions = () => {\n const cookies = new Cookies();\n \n if (typeof cookies.get(MASQ_COOKIE_NAME) !== \"undefined\") {\n return {\n headers: {\n 'x-cms-user-id': cookies.get(MASQ_COOKIE_NAME)\n }\n }\n }\n\n return {}\n}\n\n/**\n * URQL Client for silverstripe\n *\n * @returns {*}\n */\nconst GraphQLClientSilverstripe = createClient({\n url: SILVERSTRIPE_GRAPHQL_API.url,\n requestPolicy: 'cache-and-network',\n fetchOptions: urqlFetchOptions(),\n exchanges: [\n cacheExchange,\n authExchange,\n mapExchange({\n onError(error) {\n console.error(error);\n },\n }),\n fetchExchange\n ],\n})\n\nexport default GraphQLClientSilverstripe\n","/**\n * Configuration file for the react-external-errorlogger\n *\n * https://bitbucket.org/eformation/react-external-errorlogger/\n */\nimport ExternalErrorLogger from '@ennit/react-external-errorlogger'\n\nExternalErrorLogger.configure(\n window.location.origin + '/rc', // nginx proxy setting\n '#prj-smartconext-errors',\n 'Smartconext.Error.Bot',\n 'https://www.smartconext-bau.ch/assets/Images/Favicons/smartconext-favicon-32x32.png'\n)\n","import React, { Suspense } from 'react'\nimport ReactDOM from 'react-dom'\nimport App from './App'\nimport * as serviceWorker from './serviceWorker'\nimport { Provider as URQLProvider } from 'urql'\nimport URQLClientSilverstripe from './lib/URQLClientSilverstripe'\nimport './eelConfig'\n\nReactDOM.render(\n \n \n \n \n ,\n document.getElementById('root')\n)\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister()\n"],"sourceRoot":""}