{"version":3,"sources":["components/UI/Backdrop/Backdrop.module.scss","components/UI/RadioButton/RadioButtonOption/RadioButtonOption.module.scss","components/Header/Search/Search.module.scss","components/UI/SingleCheckbox/SingleCheckbox.module.scss","components/OfferRequests/OfferRequestsTable/OfferRequestsTable.module.scss","containers/ServiceProviders/ServiceProvider/ServiceProvider.module.scss","components/ServiceProviders/ServiceProvidersTable/ServiceProvidersTable.module.scss","components/Content/ContentTable/ContentsTable.module.scss","components/OfferRequestAccess/OfferRequestAccessTable/OfferRequestAccessTable.module.scss","components/LogItems/LogItemsTable/LogItemsTable.module.scss","components/UI/RadioButton/RadioButton.module.scss","components/UI/Star/Star.module.scss","components/UI/Container/Container.module.scss","components/UI/InputGroup/InputGroup.module.scss","components/Auth/PasswordResetDialog/PasswordResetDialog.module.scss","containers/Feedbacks/Feedbacks.module.scss","components/UI/Modal/ModalBody/ModalBody.module.scss","components/UI/Modal/ModalFooter/ModalFooter.module.scss","components/Searches/SearchContainer/SearchContainer.module.scss","components/UI/InfoBox/InfoBox.module.scss","containers/OfferRequests/OfferRequests.module.scss","containers/Settings/Settings.module.scss","components/UI/Input/Input.module.scss","components/Header/Menu/Menu.module.scss","components/UI/SearchSelect/SearchSelect.module.scss","components/Layout/Layout.module.scss","classes/Routes.ts","context/HeaderContext.ts","translations/translation-keys.ts","components/UI/Backdrop/Backdrop.tsx","firebase.ts","axios.ts","services/searchService.ts","context/InputContext.ts","components/UI/AutoTextArea/AutoTextArea.tsx","enums/index.ts","classes/AuthUser.ts","store/actions/actionTypes.ts","store/actions/authActions.ts","store/actions/locationsActions.ts","store/actions/offerRequestActions.ts","store/actions/organizationActions.ts","store/actions/serviceActions.ts","store/actions/feedbackActions.ts","store/actions/serviceProviderActions.ts","store/actions/usersActions.ts","store/actions/contentActions.ts","store/actions/logItemActions.ts","store/actions/geoLocationActions.ts","components/UI/Alert/Alert.tsx","components/UI/Spinner/Spinner.tsx","components/UI/OrganizationImageDropzone/OrganizationImageDropzone.tsx","components/UI/Button/Button.tsx","components/UI/RadioButton/RadioButtonOption/RadioButtonOption.tsx","components/UI/RadioButton/RadioButton.tsx","components/UI/SearchSelect/SearchSelect.tsx","components/UI/Star/StarOption/StarOption.tsx","components/UI/Star/Star.tsx","components/UI/Input/Input.tsx","shared/utility.ts","components/Header/Search/Search.tsx","components/Header/Menu/Menu.tsx","components/Header/Header.tsx","components/Layout/Layout.tsx","components/SplashScreen/SplashScreen.tsx","components/UI/Modal/ModalContext.ts","components/UI/Modal/Modal.tsx","containers/Admin/Admin.tsx","components/UI/Container/Container.tsx","containers/SubscriptionExpired/SubscriptionExpired.tsx","components/UI/InputGroup/InputGroup.tsx","components/Auth/PasswordResetDialog/PasswordResetDialog.tsx","translations/translation-fi.ts","translations/translation-en.ts","i18n.ts","containers/Auth/Auth.tsx","shared/option-utils.ts","containers/Feedbacks/Feedback/Feedback.tsx","components/UI/Table/Table.tsx","containers/Feedbacks/Feedbacks.tsx","components/UI/Modal/ModalBody/ModalBody.tsx","components/UI/Modal/ModalFooter/ModalFooter.tsx","components/UI/ConfirmDialog/ConfirmDialog.tsx","hooks/useOrganizationOptions.ts","containers/Locations/Location/Location.tsx","components/UI/Select/Select.tsx","components/Searches/OperatorSearch/OperatorSearch.tsx","components/Searches/SearchContainer/SearchContainer.tsx","components/Location/LocationSearch/LocationsSearch.tsx","containers/Locations/Locations.tsx","data/select-data.ts","containers/OfferRequests/OfferRequest/CustomerOfferRequest.tsx","hooks/useAuthUser.ts","hooks/useServiceOptions.ts","containers/OfferRequests/OfferRequest/OfferRequest.tsx","components/UI/SingleCheckbox/SingleCheckbox.tsx","components/ConfirmBillingModal/ConfirmBillingModal.tsx","components/UI/InfoBox/InfoBox.tsx","components/OfferRequests/OfferRequestsInfo/OfferRequestsInfo.tsx","components/Searches/ServiceSearch/ServiceSearch.tsx","components/OfferRequests/OfferRequestsSearch/OfferRequestsSearch.tsx","components/OfferRequests/OfferRequestsTable/OfferRequestsTableHeader/OfferRequestsTableHeader.tsx","components/OfferRequests/OfferRequestsTable/OfferRequestsTable.tsx","containers/OfferRequests/OfferRequests.tsx","shared/countries.ts","containers/Users/Users.tsx","containers/Operators/Operator/Operator.tsx","containers/Operators/Operators.tsx","services/organizationService.ts","containers/Organization/Organization.tsx","hooks/useLocationOptions.ts","containers/ServiceProviders/ServiceProvider/ServiceProvider.tsx","components/ServiceProviderForms/ServiceProviderForms.tsx","components/Searches/LocationSearch/LocationSearch.tsx","components/Searches/SubscriptionSearch/SubscriptionSearch.tsx","components/Searches/PaymentMethodSearch/PaymentMethodSearch.tsx","components/ServiceProviders/ServiceProvidersSearch/ServiceProvidersSearch.tsx","components/ServiceProviders/ServiceProvidersTable/ServiceProvidersTable.tsx","containers/ServiceProviders/ServiceProviders.tsx","containers/Services/Service/Service.tsx","components/Services/ServicesSearch/ServicesSearch.tsx","shared/offerrequest-utils.ts","containers/Services/Services.tsx","containers/Settings/Settings.tsx","containers/Users/User/User.tsx","GuardedRoute.tsx","containers/Contents/Content/Content.tsx","components/Content/ContentTable/ContentsTable.tsx","containers/Contents/Contents.tsx","hooks/useServiceProviderOptions.ts","components/OfferRequestAccess/OfferRequestAccessSearch/OfferRequestAccessSearch.tsx","components/OfferRequestAccess/OfferRequestAccessTable/OfferRequestAccessTable.tsx","containers/OfferRequestAccess/OfferRequestAccess.tsx","components/LogItems/LogItemsSearch/LogItemsSearch.tsx","components/LogItems/LogItemsTable/LogItemsTable.tsx","containers/LogItem/LogItems.tsx","components/TermsOfUseModal/TermsOfUseModal.tsx","App.tsx","store/reducers/authReducer.ts","store/reducers/usersReducer.ts","store/reducers/offerRequestReducer.ts","store/reducers/serviceProviderReducer.ts","store/reducers/serviceReducer.ts","store/reducers/organizationReducer.ts","store/reducers/locationsReducer.ts","store/reducers/feedbackReducer.ts","store/reducers/contentReducer.ts","store/reducers/geoLocationReducer.ts","store/reducers/logItemReducer.ts","index.tsx","components/UI/Modal/Modal.module.scss","components/UI/Button/Button.module.scss","containers/Auth/Auth.module.scss","components/UI/Spinner/Spinner.module.scss","components/Header/Header.module.scss","components/UI/Alert/Alert.module.scss","containers/Organization/Organization.module.scss","components/UI/OrganizationImageDropzone/OrganizationImageDropzone.module.scss","components/UI/Star/StarOption/StarOption.module.scss","components/SplashScreen/SplashScreen.module.scss","components/UI/Table/Table.module.scss","containers/OfferRequests/OfferRequest/CustomerOfferRequest.module.scss","components/ConfirmBillingModal/ConfirmBillingModal.module.scss","components/OfferRequests/OfferRequestsInfo/OfferRequestsInfo.module.scss"],"names":["module","exports","ERoute","ERouteStaticParams","Routes","withParams","route","params","routeWithParams","key","replace","isNew","id","new","isNotNew","_Routes","ADMIN","SUBSCRIPTION_EXPIRED","ORGANIZATIONS","ORGANIZATION_USER","organizationId","OFFER_REQUESTS","OFFER_REQUEST_OFFER","offerRequestId","OFFER_REQUEST","SERVICE_PROVIDER","SERVICE_PROVIDERS","SERVICE_PROVIDER_PROVIDER","serviceProviderId","SERVICE_PROVIDER_FORM","SERVICES","SERVICES_SERVICE","serviceId","SERVICE","CONTENTS","CONTENTS_CONTENT","contentId","CONTENT","FEEDBACKS","FEEDBACK","LOGIN","OPERATORS","OPERATOR","SETTINGS","USERS","USER","ORGANIZATIONS_ME","CUSTOMER_OFFER_REQUEST","LOCATIONS","LOCATION","OFFER_REQUEST_ACCESS","LOG_ITEMS","HeaderContext","React","createContext","menuItems","dropdownMenuItems","ETranslation","Backdrop","_ref","isOpen","onClick","containerClasses","classes","push","Active","_jsx","className","join","firebase","apiKey","authDomain","databaseURL","projectId","storageBucket","messagingSenderId","appId","apiPath","withCredentials","window","location","hostname","instance","axios","create","baseURL","interceptors","request","use","async","_firebase$auth$curren","firebaseToken","auth","currentUser","getIdToken","config","headers","moment","tz","guess","response","status","data","href","Promise","reject","search","searchTerm","signal","get","then","res","catch","error","Error","EInputUpdateAction","InputContext","onAutoUpdate","inputName","value","action","initDone","AutoTextArea","onChange","placeholder","onBlur","disabled","textAreaRef","useRef","text","setText","useState","textAreaHeight","setTextAreaHeight","parentHeight","setParentHeight","useEffect","current","scrollHeight","style","minHeight","children","ref","rows","height","event","target","EOrganizationLevel","EOfferStatus","OFFER","OFFERED","COMPLETE","EOfferRequestType","EInvoicingType","EBuildingType","ESubscriptionLevel","ESearchStorageKey","ETags","EPaymentMethod","EEvents","ELanguage","AuthUser","constructor","authUser","firebaseUserId","organization","name","email","isTermsOfUseAccepted","preferredLanguage","this","routes","isPrimary","isOperator","isBasic","isFree","apply","level","PRIMARY","isServiceProvider","subscriptionLevel","BASIC","FREE","isMicro","paymentMethod","MICRO","redirect","allowSearch","hasOfferRequestAccess","_this$organization$of","offerRequestAccess","includes","parseInt","addOfferRequestAccess","isBillingConfirmed","ActionTypes","authFail","type","AUTH_FAIL","password","dispatch","AUTH_START","signInWithEmailAndPassword","user","tokenResult","getIdTokenResult","post","ReactGA","category","token","AUTH_SUCCESS","authSuccess","message","logout","AUTH_LOGOUT_START","signOut","AUTH_LOGOUT_SUCCESS","AUTH_LOGOUT_FAIL","logoutFail","getCurrentUser","AUTH_GET_START","AUTH_GET_SUCCESS","AUTH_GET_FAIL","getCustomToken","AUTH_GET_CUSTOM_TOKEN_START","resp","customToken","AUTH_GET_CUSTOM_TOKEN_SUCCESS","AUTH_GET_CUSTOM_TOKEN_FAIL","getLocation","LOCATION_GET_START","LOCATION_GET_SUCCESS","LOCATION_GET_FAIL","deleteLocation","LOCATION_DELETE_START","delete","LOCATION_DELETE_SUCCESS","LOCATION_DELETE_FAIL","listLocations","includeServices","operatorId","LOCATION_LIST_START","length","locations","LOCATION_LIST_SUCCESS","LOCATION_LIST_FAIL","saveLocation","service","LOCATION_SAVE_START","LOCATION_SAVE_SUCCESS","LOCATION_SAVE_FAIL","updateLocation","LOCATION_UPDATE_START","put","LOCATION_UPDATE_SUCCESS","LOCATION_UPDATE_FAIL","getOfferRequest","OFFER_REQUEST_GET_START","offerrequest","OFFER_REQUEST_GET_SUCCESS","offerRequest","OFFER_REQUEST_GET_FAIL","deleteOfferRequest","OFFER_REQUEST_DELETE_START","OFFER_REQUEST_DELETE_SUCCESS","OFFER_REQUEST_DELETE_FAIL","listOfferRequests","options","OFFER_REQUEST_LIST_START","offerrequests","OFFER_REQUEST_LIST_SUCCESS","resolve","OFFER_REQUEST_LIST_FAIL","saveOfferRequest","OFFER_REQUEST_SAVE_START","OFFER_REQUEST_SAVE_SUCCESS","saveOfferRequestSuccess","OFFER_REQUEST_SAVE_FAIL","updateOfferRequest","OFFER_REQUEST_UPDATE_START","OFFER_REQUEST_UPDATE_SUCCESS","updateOfferRequestSuccess","OFFER_REQUEST_UPDATE_FAIL","getCustomerOfferRequest","pinCode","OFFER_REQUEST_CUSTOMER_GET_START","OFFER_REQUEST_CUSTOMER_GET_SUCCESS","OFFER_REQUEST_CUSTOMER_GET_FAIL","updateCustomerOfferRequest","OFFER_REQUEST_CUSTOMER_UPDATE_START","OFFER_REQUEST_CUSTOMER_UPDATE_SUCCESS","updateCustomerOfferRequestSuccess","OFFER_REQUEST_CUSTOMER_UPDATE_FAIL","archiveCustomerOfferRequest","OFFER_REQUEST_CUSTOMER_ARCHIVE_START","OFFER_REQUEST_CUSTOMER_ARCHIVE_SUCCESS","OFFER_REQUEST_CUSTOMER_ARCHIVE_FAIL","addAccessOfferRequest","OFFER_REQUEST_ADD_ACCESS_START","OFFER_REQUEST_ADD_ACCESS_SUCCESS","OFFER_REQUEST_ADD_ACCESS_FAIL","listOfferRequestAccess","OFFER_REQUEST_ACCESS_LIST_START","OFFER_REQUEST_ACCESS_LIST_SUCCESS","_ref2","OFFER_REQUEST_ACCESS_LIST_FAIL","clearOrganization","ORGANIZATION_CLEAR","getMyOrganization","ORGANIZATION_GET_MY_START","ORGANIZATION_GET_MY_SUCCESS","ORGANIZATION_GET_MY_FAIL","updateMyOrganization","ORGANIZATION_UPDATE_MY_START","updatedOrganization","ORGANIZATION_UPDATE_MY_SUCCESS","updateMyOrganizationSuccess","AUTH_SET_ORGANIZATION","actions","ORGANIZATION_UPDATE_MY_FAIL","updateOrganizationImage","ORGANIZATION_UPDATE_IMAGE_START","image","ORGANIZATION_UPDATE_IMAGE_SUCCESS","ORGANIZATION_UPDATE_IMAGE_FAIL","deleteOrganizationImage","ORGANIZATION_DELETE_IMAGE_START","ORGANIZATION_DELETE_IMAGE_SUCCESS","ORGANIZATION_DELETE_IMAGE_FAIL","getOrganization","ORGANIZATION_GET_START","ORGANIZATION_GET_SUCCESS","ORGANIZATION_GET_FAIL","listOrganizations","ORGANIZATION_LIST_START","organizations","ORGANIZATION_LIST_SUCCESS","ORGANIZATION_LIST_FAIL","saveOrganization","operator","ORGANIZATION_SAVE_START","ORGANIZATION_SAVE_SUCCESS","ORGANIZATION_SAVE_FAIL","updateOrganization","orgnaization","ORGANIZATION_UPDATE_START","ORGANIZATION_UPDATE_SUCCESS","ORGANIZATION_UPDATE_FAIL","confirmBilling","ORGANIZATION_CONFIRM_BILLING_START","ORGANIZATION_CONFIRM_BILLING_SUCCESS","ORGANIZATION_CONFIRM_BILLING_FAIL","getService","SERVICE_GET_START","SERVICE_GET_SUCCESS","SERVICE_GET_FAIL","deleteService","SERVICE_DELETE_START","SERVICE_DELETE_SUCCESS","SERVICE_DELETE_FAIL","listServices","SERVICE_LIST_START","services","SERVICE_LIST_SUCCESS","SERVICE_LIST_FAIL","saveService","SERVICE_SAVE_START","SERVICE_SAVE_SUCCESS","saveServiceSuccess","SERVICE_SAVE_FAIL","updateService","SERVICE_UPDATE_START","SERVICE_UPDATE_SUCCESS","updateServiceSuccess","SERVICE_UPDATE_FAIL","listFeedbacks","FEEDBACK_LIST_START","feedbacks","FEEDBACK_LIST_SUCCESS","FEEDBACK_LIST_FAIL","saveFeedback","feedback","pin","FEEDBACK_SAVE_START","FEEDBACK_SAVE_SUCCESS","FEEDBACK_SAVE_FAIL","getFeedbackFormData","FEEDBACK_GET_FORM_DATA_START","serviceProviders","FEEDBACK_GET_FORM_DATA_SUCCESS","FEEDBACK_GET_FORM_DATA_FAIL","getServiceProvider","SERVICE_PROVIDER_GET_START","serviceprovider","SERVICE_PROVIDER_GET_SUCCESS","SERVICE_PROVIDER_GET_FAIL","deleteServiceProvider","SERVICE_PROVIDER_DELETE_START","SERVICE_PROVIDER_DELETE_SUCCESS","SERVICE_PROVIDER_DELETE_FAIL","listServiceProviders","SERVICE_PROVIDER_LIST_START","serviceproviders","SERVICE_PROVIDER_LIST_SUCCESS","SERVICE_PROVIDER_LIST_FAIL","saveServiceProvider","formId","SERVICE_PROVIDER_SAVE_START","SERVICE_PROVIDER_SAVE_SUCCESS","SERVICE_PROVIDER_SAVE_FAIL","updateServiceProvider","SERVICE_PROVIDER_UPDATE_START","SERVICE_PROVIDER_UPDATE_SUCCESS","updateServiceProviderSuccess","SERVICE_PROVIDER_UPDATE_FAIL","getServiceProviderForm","SERVICE_PROVIDER_FORM_GET_START","serviceProviderForm","SERVICE_PROVIDER_FORM_GET_SUCCESS","SERIVCE_PROVIDER_FORM_GET_FAIL","listServiceProviderForms","SERVICE_PROVIDER_FORM_LIST_START","param","serviceProviderForms","SERVICE_PROVIDER_FORM_LIST_SUCCESS","SERVICE_PROVIDER_FORM_LIST_FAIL","deleteServiceProviderForm","SERVICE_PROVIDER_FORM_DELETE_START","SERVICE_PROVIDER_FORM_DELETE_SUCCESS","SERVICE_PROVIDER_FORM_DELETE_FAIL","getUser","USER_GET_START","USER_GET_SUCCESS","USER_GET_FAIL","listUsers","USER_LIST_START","users","USER_LIST_SUCCESS","USER_LIST_FAIL","saveUser","USER_SAVE_START","USER_SAVE_SUCCESS","saveUserSuccess","USER_SAVE_FAIL","updateUser","USER_UPDATE_START","USER_UPDATE_SUCCESS","updateUserSuccess","USER_UPDATE_FAIL","acceptTermsOfUse","USER_ACCEPT_TERMS_OF_USE_START","USER_ACCEPT_TERMS_OF_USE_SUCCESS","USER_ACCEPT_TERMS_OF_USE_FAIL","changeUserLanguage","USER_CHANGE_LANGUAGE_START","USER_CHANGE_LANGUAGE_SUCCESS","USER_CHANGE_LANGUAGE_FAIL","getContent","CONTENT_GET_START","content","CONTENT_GET_SUCCESS","CONTENT_GET_FAIL","deleteContent","CONTENT_DELETE_START","CONTENT_DELETE_SUCCESS","CONTENT_DELETE_FAIL","listContents","CONTENT_LIST_START","contents","CONTENT_LIST_SUCCESS","CONTENT_LIST_FAIL","saveContent","CONTENT_SAVE_START","CONTENT_SAVE_SUCCESS","saveContentSuccess","CONTENT_SAVE_FAIL","updateContent","CONTENT_UPDATE_START","CONTENT_UPDATE_SUCCESS","updateContentSuccess","CONTENT_UPDATE_FAIL","listLogItems","LOG_ITEM_LIST_START","logItems","LOG_ITEM_LIST_SUCCESS","LOG_ITEM_LIST_FAIL","getGeoLocation","address","zip","city","country","GEOLOCATION_GET_START","encodeURIComponent","geoLocation","GEOLOCATION_GET_SUCCESS","GEOLOCATION_GET_FAIL","EAlertColor","Alert","noHorizontalMargin","color","classNames","Container","Primary","SUCCESS","Success","WARNING","Warning","Danger","marginLeft","marginRight","ESpinnerSize","ESpinnerColor","Spinner","center","size","MEDIUM","containerClassNames","Center","SMALL","SizeSmall","SizeMedium","LARGE","SizeLarge","ColorContent","ColorPrimary","FontAwesomeIcon","icon","faSpinner","spin","OrganizationImageDropzone","dragText","t","useTranslation","useDispatch","loading","useSelector","state","imageError","imageLoading","_jsxs","_Fragment","ReactDropzone","onDrop","formData","FormData","file","files","append","has","accept","getRootProps","getInputProps","isDragActive","Dropzone","Text","EButtonSize","EButtonColor","Button","link","Link","Disabled","Small","Large","SECONDARY","Secondary","DANGER","NONE","None","RadioButtonOption","label","labelTranslation","isActive","invalid","InActive","Invalid","RadioButton","OptionContainer","map","option","i","Fragment","width","DEFAULT_SEARCH_TERM_MIN","SearchSelect","fetchOptions","searchTermMin","multiple","relative","searchValue","setSearchValue","selectValue","setSelectValue","setLoading","selectOptions","setSelectOptions","filteredOptions","setFilteredOptions","hasFocus","setFocus","searchTimeout","abortController","searchRef","canSearch","blurHandler","useCallback","document","removeEventListener","classList","contains","Option","filterSearch","filter","selectOption","toLowerCase","indexOf","focusHandler","addEventListener","focus","Selected","SingleSelected","Remove","removeSelectedHandler","stopPropagation","InputContainer","position","renderMultiple","SearchInput","abort","clearTimeout","setTimeout","AbortController","newOptions","searchHandler","OptionsContainer","renderOptions","InfoOption","selectedValues","toString","canClick","OptionSelected","newSelectValue","selectHandler","StarOption","faStar","Star","activeIndex","findIndex","o","EInfoColor","EInputType","Input","weight","info","topInfo","infoColor","placeholderTranslation","validationResult","isValid","messageParams","max","min","showLabel","updateAction","containerStyles","showValidation","pre","hideUnselected","onAdd","console","log","onRemove","onSetValidSample","onSetValid","onBlurModifyValue","readOnly","validation","useContext","initValue","setInitValue","isDisabled","setIsDisabled","autoUpdateHandler","singleChangeHandler","infoClasses","Info","InfoDanger","getLabel","required","Label","invalidMessage","inputGroupClassNames","InputGroup","HasPre","HasPost","flexGrow","undefined","TopInfo","Pre","number","date","time","tel","onFocus","e","removeAttribute","select","radio","checkbox","checked","textarea","static","margin","datepicker","Date","ReactDatePicker","selected","dateFormat","locale","fi","isClearable","placeholderText","wrapperClassName","searchSelect","star","organizationImage","ORGANIZATION_IMAGE_DROPZONE","ORGANIZATION_IMAGE_DROPZONE_DROP","Post","memo","prevProps","nextProps","updateObject","oldObject","updatedProperties","isValidEmail","test","isOptionArray","Array","isArray","every","item","isOption","getInputData","inputs","initForm","setInputs","disableFields","newInputs","input","v","updateInputValid","newState","validateInput","dependencies","dependencyName","updateInputHandler","prevState","INVALID_DEFAULT","isValidValue","requiredIfValue","requiredCompareValue","validateRequiredIf","VALIDATION_EMAIL","minLength","minLengthMessage","VALIDATION_MIN_LENGTH","maxLength","maxLengthMessage","VALIDATION_MAX_LENGTH","minAmount","minAmountMessage","VALIDATION_MIN_AMOUNT","maxAmount","maxAmountMessage","VALIDATION_MAX_AMOUNT","requiredIf","requiredIfNot","validateInputs","keys","Object","dateToString","newDate","valueOf","dateFns","formatDateString","createCSV","csvString","fileName","a","createElement","URL","webkitURL","base64toBlobContent","base64toBlob","downloadUrl","createObjectURL","download","body","appendChild","click","removeChild","base64Data","contentType","sliceSize","byteCharacters","atob","bytesLength","slicesCount","Math","ceil","byteArrays","sliceIndex","begin","end","bytes","offset","charCodeAt","Uint8Array","Blob","linkHandler","history","ctrlKey","open","ESearch","EKind","withRouter","searchOpen","setSearchOpen","COMMON_SEARCH","searchOption","kind","OfferRequest","Organization","Open","faSearch","createInput","searchService","EMenuType","toggleMenu","Menu","DESKTOP","DesktopMenu","MOBILE","MobileMenu","renderMenuItem","menuItem","userDropdown","to","NavLink","MenuItem","activeClassName","MenuItemActive","subMenuItems","hasAtleastOneAccess","some","pathname","startsWith","isActiveChild","UserDropdown","menuItemClickHandler","Search","faChevronDown","MenuIcon","MenuItemContainer","UserDropdownContainer","Dropdown","MobileHeader","Toggle","faTimes","Header","setIsOpen","ORDER_SERVICE","OFFERREQUESTS","SERVICEPROVIDERS","MANAGEMENT","ORGANIZATION_ME","LOGOUT","Provider","Wrapper","ToggleMenu","faBars","Icon","Logo","clickHandler","require","Layout","onLogout","root","SplashScreen","hide","setHide","Hide","innerClassNames","Inner","EModalSize","defaultModal","title","onModalClose","ModalContext","setModal","modal","closeModal","Modal","ContainerOpen","FULL","ContainerFull","ContainerMedium","ContainerSmall","contentClassNames","Content","noScroll","NoScroll","Title","CloseModal","Admin","SubscriptionExpired","SERVICEPROVIDER_EXPIRED_SUBSCRIBE","SUBSCRIPTION_EXPIRED_INFO","expiredInfoLinkHandler","SUBSCRIPTION_EXPIRED_INFO_LINK","PasswordResetDialog","onCancel","setEmail","PASSWORD_RESET_TEXT","COMMON_EMAIL","sendPasswordResetEmail","COMMON_SEND","COMMON_CANCEL","commonTranslations","COMMON_SAVE","COMMON_RETURN","COMMON_ADD","COMMON_REMOVE","COMMON_COPY","COMMON_STREET_ADDRESS","COMMON_ZIP","COMMON_CITY","COMMON_NO_CHOICE","COMMON_CREATED","COMMON_YES","COMMON_NO","COMMON_COUNTRY","COMMON_PHONE","COMMON_SERVICE","COMMON_ARCHIVED","COMMON_WWW","COMMON_FACEBOOK","COMMON_TWITTER","COMMON_INSTAGRAM","COMMON_LINKEDIN","COMMON_LATITUDE","COMMON_LONGITUDE","COMMON_TOKEN","COMMON_ADD_ALL","COMMON_CLOSE","COMMON_OPERATOR_NAME","COMMON_SERVICE_PROVIDER_NAME","COMMON_FETCH","COMMON_BUY","COMMON_COPY_CONTACT_INFORMATION","COMMON_COPIED","COMMON_CONTINUE","COMMON_CONFIRM","COMMON_LOAD_ALL","geoLocationTranslation","GEO_LOCATION_ERROR","authTranslations","TITLE_HANKIX","USERNAME","PASSWORD","PASSWORD_MIN_LENGTH_MESSAGE","FORGOT_PASSWORD","RESET_PASSWORD","headerTranslations","offerRequestsTranslations","TITLE_OFFERREQUESTS","OFFERREQUESTS_ADD_NEW","NO_OFFERREQUESTS","offerRequestTranslations","TITLE_OFFERREQUEST","TITLE_SORT","TITLE_OFFERREQUEST_NEW","OFFERREQUEST_FIRSTNAME","OFFERREQUEST_LASTNAME","OFFERREQUEST_EMAIL","OFFERREQUEST_CREATED","OFFERREQUEST_ADDRESS","OFFERREQUEST_PHONE","OFFERREQUEST_CITY","OFFERREQUEST_STATUS","OFFERREQUEST_TYPE","OFFERREQUEST_OPERATOR","OFFER_REQUEST_CONSTRUCTION_AREA","OFFER_REQUEST_CONSTRUCTION_BUILDING_TYPE","OFFER_REQUEST_CONSTRUCTION_BUILDING_TYPE_OTHER","OFFER_REQUEST_CONSTRUCTION_CONSTRUCTION_YEAR","OFFER_REQUEST_WELLNESS_LENGTH","OFFER_REQUEST_WELLNESS_REGULAR","OFFERREQUEST_INFO","OFFER_REQUEST_DELETED","OFFER_REQUEST_ARCHIVED","OFFER_REQUEST_PROVINCE","OFFER_REQUEST_LANGUAGE","OFFER_REQUEST_ADD_ACCESS_ERROR","OFFER_REQUEST_ACCESS_OFFER_REQUEST_CREATED","OFFER_REQUEST_ACCESS_USERNAME","OFFER_REQUEST_ACCESS_OFFER_REQUEST","OFFER_REQUEST_ACCESS_CREATED","OFFER_REQUEST_ACCESS_CREATED_START","OFFER_REQUEST_ACCESS_CREATED_END","OFFER_REQUEST_ACCESS_NO_OFFER_REQUESTS","logItemTranslations","LOG_ITEM_EVENT","LOG_ITEM_USER_AGENT","LOG_ITEM_EVENT_CREATED_START","LOG_ITEM_EVENT_CREATED_END","LOG_ITEM_EVENTS_SELECT","LOG_ITEM_EVENTS_OFFER_REQUEST_VIEW","LOG_ITEM_EVENTS_OFFER_REQUEST_VIEW_PIN","LOG_ITEM_EVENTS_OFFER_REQUEST_SAVE","LOG_ITEM_EVENTS_OFFER_REQUEST_SAVE_LOCAL","LOG_ITEM_EVENTS_OFFER_REQUEST_DELETE","LOG_ITEM_EVENTS_OFFER_REQUEST_UPDATE","LOG_ITEM_EVENTS_OFFER_REQUEST_UPDATE_PIN","LOG_ITEM_EVENTS_OFFER_REQUEST_ARCHIVE_PIN","LOG_ITEM_EVENTS_OFFER_REQUEST_LIST","LOG_ITEM_EVENTS_OFFER_REQUEST_ADD_ACCESS","LOG_ITEM_EVENTS_USER_ACCEPT_TERMS_OF_USE","LOG_ITEM_EVENTS_ORGANIZATION_CONFIRM_BILLING","LOG_ITEM_EVENTS_AUTH_LOGIN","LOG_ITEM_EVENTS_AUTH_LOGOUT","LOG_ITEM_NO_LOG_ITEMS","offerRequestTypeTranslations","OFFER_REQUEST_TYPE_SIMPLE","OFFER_REQUEST_TYPE_CONSTRUCTION","OFFER_REQUEST_TYPE_WELLNESS","buildingTypeTranslations","BUIDLING_TYPE_SELECT","BUILDING_TYPE_TOWN_HOUSE","BUILDING_TYPE_SEMI_DETACHED_HOUSE","BUILDING_TYPE_ROW_HOUSE","BUILDING_TYPE_DETACHED_HOUSE","BUILDING_TYPE_APARTMENT_HOUSE","BUILDING_TYPE_OTHER","languageSelectTranslations","OFFERREQUEST_LANGUAGE_FI","OFFERREQUEST_LANGUAGE_EN","OFFERREQUEST_LANGUAGE_SE","reactSelectTranslations","REACT_SELECT_PLACEHOLDER","REACT_SELECT_ADD_NEW","operatorsTranslations","TITLE_OPERATORS","OPERATORS_ADD_NEW","NO_OPERATORS","offerRequestStatusTranslations","OFFERREQUEST_STATUS_OFFER","OFFERREQUEST_STATUS_OFFERED","OFFERREQUEST_STATUS_COMPLETE","OFFERREQUEST_SEND_DATE","serviceProvidersTranslations","TITLE_SERVICEPROVIDERS","SERVICEPROVIDERS_ADD_NEW","NO_SERVICEPROVIDERS","SERVICEPROVIDER_FORMS","NO_SERVICEPROVIDER_FORMS","serviceProviderTranslations","TITLE_SERVICEPROVIDER","TITLE_SERVICEPROVIDER_NEW","SERVICEPROVIDER_FIRSTNAME","SERVICEPROVIDER_LASTNAME","SERVICEPROVIDER_EMAIL","SERVICEPROVIDER_CREATED","SERVICEPROVIDER_ADDRESS","SERVICEPROVIDER_PHONE","SERVICEPROVIDER_CITY","SERVICEPROVIDER_STATUS","SERVICEPROVIDER_TYPE","SERVICEPROVIDER_OPERATOR","SERVICEPROVIDER_COMPANY","SERVICEPROVIDER_INVOICING_TYPE","SERVICEPROVIDER_EINVOICE_ADDRESS","SERVICEPROVIDER_EINVOICEOPERATOR_ADDRESS","SERVICEPROVIDER_INVOICEINFO","SERVICEPROVIDER_INVOICE_CONFIRM","SERVICEPROVIDER_INVOICE_MODAL_DESCRIPTION","SERVICEPROVIDER_INVOICE_CONFIRM_LABEL","SERVICEPROVIDER_INVOICE_CHANGE_BILLING_INFORMATION","SERVICEPROVIDER_SUBSCRIPTION_LEVEL","INVOICING_TYPE_EINVOICE","INVOICING_TYPE_OTHER","SERVICEPROVIDER_USER_PHONE","SERVICEPROVIDER_ORGANIZATION_PHONE","SUBSCRIPTION_LEVEL_FREE","SUBSCRIPTION_LEVEL_BASIC","SERVICEPROVIDER_EXPORT_ALL","SERVICEPROVIDER_EXPORT","SERVICEPROVIDER_PAYMENT_METHOD","PAYMENT_METHOD_MONTH","PAYMENT_METHOD_MICRO","servicesTranslations","TITLE_SERVICES","SERVICES_ADD_NEW","NO_SERVICES","serviceTranslations","TITLE_SERVICE","TITLE_SERVICE_NEW","SERVICE_NAME","SERVICE_URL","operatorTranslations","TITLE_OPERATOR","TITLE_OPERATOR_NEW","OPERATOR_NAME","OPERATOR_LEVEL","OPERATOR_BUSINESS_ID","OPERATOR_PIPEDRIVE_ORGANIZATION_ID","usersTranslations","TITLE_USERS","USERS_ADD_NEW","NO_USERS","USER_NAME","USER_PASSWORD","userTranslations","TITLE_USER","TITLE_USER_NEW","USER_FIRST_NAME","USER_LAST_NAME","USER_EMAIL","USER_PHONE_NUMBER","USER_TITLE","USER_ALLOW_LOGIN","USER_PROFILE_IMAGE","USER_ADDRESS","USER_SEND_NEW_OFFER_REQUEST_SUMMARY","validationTranslations","errorTranslations","TOKEN_ERROR","REFRESH_TOKEN_ERROR","FILE_UPLOAD_ERROR","IDENTIFIER_ERROR","DATABASE_ERROR","DATA_EMPTY_ERROR","ORGANIZATION_ERROR","NO_ACCESS_ERROR","NOT_FOUND_ERROR","PIPEDRIVE_NOT_CONNECTED_ERROR","NO_CONTRACT_LENGTH_ERROR","SEARCH_QUERY_STRING_ERROR","FEEDBACK_ALREADY_EXISTS","organizationTranslations","ORGANIZATION_ORDER_DATE","ORGANIZATION_IMAGE","customerOfferRequestTranslations","CUSTOMER_OFFER_REQUEST_SAVE_CHANGES","CUSTOMER_OFFER_REQUEST_ARCHIVE","CUSTOMER_OFFER_REQUEST_UNARCHIVE","CUSTOMER_OFFER_REQUEST_HELP_TEXT_1","CUSTOMER_OFFER_REQUEST_HELP_TEXT_2","CUSTOMER_OFFER_REQUEST_THANK_YOU_MESSAGE","CUSTOMER_OFFER_REQUEST_ARCHIVED_CONFIRM","CUSTOMER_OFFER_REQUEST_ERROR_TOP","CUSTOMER_OFFER_REQUEST_ERROR_BOTTOM","confirmTranslations","CONFIRM_DELETE_SERVICEPROVIDER","CONFIRM_DELETE_SERVICE","CONFIRM_DELETE_OPERATOR","CONFIRM_DELETE_LOCATION","CONFIRM_DELETE_SERVICEPROVIDER_FORM","CONFIRM_DELETE_OFFER_REQUEST","CONFIRM_BUY_TITLE","CONFIRM_BUY_DESCRIPTION","CONFIRM_BUY_QUESTION","locationsTranslations","NO_LOCATIONS","LOCATIONS_NEW","LOCATION_NAME","LOCATION_NAME_GENITIVE","LOCATION_NAME_INESSIVE","LOCATION_CONTENT","LOCATION_LATITUDE","LOCATION_LONGITUDE","LOCATION_ZOOM_LEVEL","feedbackTranslations","FEEDBACK_SATISFACTION","FEEDBACK_SERVICEPROVIDER","FEEDBACK_SERVICE_PROVIDER_OTHER","TITLE_FEEDBACKS","TITLE_FEEDBACK_NEW","FEEDBACKS_ADD_NEW","NO_FEEDBACK","FEEDBACK_FORM_NOT_FOUND","FEEDBACK_FORM_SOMETHING_ELSE","FEEDBACK_THANK_YOU_TITLE","FEEDBACK_THANK_YOU_MESSAGE","FEEDBACK_EXISTS_MESSAGE","FEEDBACK_MESSAGE","settingsTranslations","TITLE_SETTINGS","SEND_PASSWORD_RESET_LINK","billingTranslations","BILLING_EXPORT_ALL","BILLING_EXPORT_ORGANIZATION","selectTranslations","SELECT_SERVICE_PLACEHOLDER","SELECT_OPERATOR_PLACEHOLDER","SELECT_LOCATIONS_PLACEHOLDER","SELECT_SERVICE_PROVIDER_PLACEHOLDER","contentsTranslations","TITLE_CONTENTS","CONTENTS_ADD_NEW","NO_CONTENTS","translationsEn","TITLE_CONTENT","TITLE_CONTENT_NEW","CONTENT_NAME","CONTENT_SHORTCONTENT","CONTENT_CONTENTTEXT","CONTENT_DATE","CONTENT_SHOWDATE","CONTENT_TAGS","CONTENT_TAG_NORMAL","CONTENT_TAG_NEWS","CONTENT_TAG_FRONTPAGE","LANGUAGE_TITLE","LANGUAGE_IN_FINNISH","LANGUAGE_IN_ENGLISH","LANGUAGE_ENGLISH","LANGUAGE_FINNISH","TERMS_TITLE","TERMS_BINDING","TERMS_LIST_1","TERMS_LIST_2","TERMS_LIST_3","TERMS_READ_MORE","TERMS_TERMS","TERMS_ACCEPT","OFFERREQUEST_INFO_OFFER_YOUR_SERVICE","OFFERREQUEST_INFO_LIST_ITEM_1","OFFERREQUEST_INFO_LIST_ITEM_2","OFFERREQUEST_INFO_LIST_ITEM_3","OFFERREQUEST_INFO_QUESTIONS","OFFERREQUEST_INFO_READ_MORE","OFFERREQUEST_INFO_CONFIRM_INFO","OFFERREQUEST_INFO_EDIT_INFO","resources","FI","translation","translationsFi","EN","i18n","initReactI18next","init","lng","keySeparator","interpolation","escapeValue","EAuth","Auth","useLocation","qs","parse","signInWithCustomToken","username","createAuthInput","AUTH","submitHandler","preventDefault","language","LoginBox","onSubmit","Inputs","ButtonContainer","changeLanguage","setPasswordResetDialog","ErrorMessage","createOptions","items","createLabel","EFeedback","Feedback","setId","setPin","serviceProviderOptions","setServiceProviderOptions","q","saveOk","serviceSatisfaction","serviceProvider","serviceProviderOther","serviceToken","s","unshift","isServiceProviderNotFound","isServiceProviderOther","serviceSatification","Table","hover","containerClassName","tableClassNames","Hover","Feedbacks","_feedback$offerReques","_feedback$offerReques2","_feedback$offerReques3","_feedback$offerReques4","num","showFeedback","firstName","lastName","otherFeedback","ModalBody","ModalFooter","ConfirmDialog","onConfirm","defaultParams","withPlaceholder","withBusinessId","useOrganizationOptions","arguments","organizationOptions","setOrganizationOptions","tryFetch","setTryFetch","labelArray","businessId","organizationsLoading","ELocation","Location","match","setIsValid","saveOrUpdateOk","locationToken","nameGenetive","nameInessive","latitude","longitude","zoomLevel","LOCATION_CLEAR","goBack","Select","onInputChange","isSearchable","isLoading","isMulti","isCreatable","find","changeHandler","CreatableReactSelect","formatCreateLabel","ReactSelect","noOptionsMessage","OperatorSearch","setOperatorId","SearchContainer","LocationsSearch","onSearch","isInit","setInit","localStorage","getItem","OFFER_REQUEST_OPERATOR_ID","setItem","Locations","faPlus","marginBottom","_location$services","showLocation","nameGenitive","subscriptionLevels","buildingTypes","TOWN_HOUSE","SEMI_DETACHED_HOUSE","ROW_HOUSE","DETACHED_HOUSE","APARTMENT_HOUSE","OTHER","invoicingTypes","EINVOICE","tagTypes","NORMAL","UUTISET","FRONTPAGE","paymentMethods","MONTH","events","AUTH_LOGIN","AUTH_LOGOUT","OFFER_REQUEST_ADD_ACCESS","OFFER_REQUEST_ARCHIVE_PIN","OFFER_REQUEST_DELETE","OFFER_REQUEST_LIST","OFFER_REQUEST_SAVE","OFFER_REQUEST_SAVE_LOCAL","OFFER_REQUEST_UPDATE","OFFER_REQUEST_UPDATE_PIN","OFFER_REQUEST_VIEW","OFFER_REQUEST_VIEW_PIN","ORGANIZATION_CONFIRM_BILLING","USER_ACCEPT_TERMS_OF_USE","languages","SE","ECustomerOfferRequest","CustomerOfferRequest","_offerRequest$service","_offerRequest$service2","created","phone","area","buildingType","buildingTypeOther","constructionYear","additionalInfo","province","formattedOfferRequest","archived","OFFERREQUEST","ErrorIcon","faExclamationCircle","deleted","WELLNESS","CONSTRUCTION","HelpText","useAuthUser","filterByOperatorId","useServiceOptions","serviceOptions","setServiceOptions","optionServices","_s$operator","servicesLoading","EOfferRequest","setService","regular","OFFER_REQUEST_CLEAR","navigator","clipboard","writeText","writeContactToClipboardHandler","notNullInfo","alert","activeCampaignId","marginTop","SingleCheckbox","ConfirmBillingModal","onSuccess","setIsBillingConfirmed","useHistory","confirmBillingSuccess","confirmBillingLoading","confirmBillingError","AUTH_SET_BILLING_CONFIRMED","DetailRow","eInvoiceAddress","eInvoiceOperatorAddress","invoicingInfo","confirmHandler","InfoBox","OfferRequestsInfo","Box","whiteSpace","faPhone","faEnvelope","rel","streetAddress","ServiceSearch","setServiceId","OfferRequestsSearch","limit","setLimit","OFFER_REQUEST_SERVICE_ID","cursor","textDecoration","OfferRequestsTableHeader","sortBy","sortable","onSort","sortDirection","sort","sortHandler","fontSize","faChevronUp","EOfferRequestsTableSortBy","OfferRequestTable","containerStyle","sortedOfferRequests","setSortedOfferRequests","setSort","setSortDirection","newOffers","reverse","b","changeSortOrDirection","TableHeader","_offerRequest$operato","constructionOfferRequest","HasAccessCheck","faCheckCircle","faCheck","OfferRequests","offerRequests","addAccessError","addAccessLoading","addAccessSuccessId","setAddAccessModal","createAccessModal","AUTH_ADD_OFFER_REQUEST_ACCESS","OFFER_REQUEST_ADD_ACCESS_CLEAR","Section","showOffer","countries","Users","padding","addUser","showUser","phoneNumber","allowLogin","EOperator","Operator","countryCode","operatorToken","setConfirmDeleteDialog","deleteOperator","Operators","showOperator","exportBilling","url","exportServiceProviders","EOrganization","_organization$service","_organization$locatio","organizationImageLoading","setOrganizationImageLoading","updateImage","logoBase64Text","invoicingType","_authUser$organizatio","imageData","setImageData","queryString","getOrganizationImage","ORGANIZATION","createStaticContent","StaticContent","ImageContainer","Image","src","alt","useLocationOptions","locationOptions","setLocationOptions","optionLocations","l","locationsLoading","EUser","EServiceProvider","ServiceProvider","disableGeoLocationFetch","setDisableGeoLocationFetch","geoLocationLoading","geoLocationError","loadingForm","errorForm","userInputs","setUserInputs","serviceProviderInputs","setServiceProviderInputs","parent","linkWWW","linkFacebook","linkTwitter","linkInstagram","linkLinkedin","serviceProviderValid","setServiceProviderValid","userValid","setUserValid","isForm","CLEAR_SERVICEPROVIDER","createServiceProviderInput","createUserInput","errors","loadings","linkContainer","LinkIcon","faExternalLinkAlt","lat","addAllLocations","csv","onExportBilling","faFileExport","onExportServiceProvider","ServiceProviderForms","_serviceProvider$serv","company","createFormTable","LocationSearch","setLocationId","locationId","SubscriptionSearch","setSubscriptionLevel","PaymentMethodSearch","setPaymentMethod","ServiceProvidersSearch","SERVICE_PROVIDERS_OPERATOR_ID","SERVICE_PROVIDERS_LOCATION_ID","SERVICE_PROVIDERS_SERVICE_ID","SERVICE_PROVIDERS_SUBSCRIPTION_LEVEL","SERVICE_PROVIDERS_PAYMENT_METHOD","EServiceProvidersTableSortBy","ServiceProviderTable","statusProp","sortedServiceProviders","setSortedServiceProviders","CREATED","getChevron","NAME","BUSINESSID","ZIP","_serviceProvider$loca","_serviceProvider$pare","ServiceProviders","onServiceProviderFormClick","exportBillingAll","exportServiceProvidersAll","ServiceProvidersTable","showProviders","EService","Service","SIMPLE","SERVICE_CLEAR","addAllLocationsHandler","ServicesSearch","includeArchived","getTypeString","Services","showService","_service$locations","_service$operator","languageOptions","Settings","setLanguage","userLanguage","RadioContainer","User","setValid","isServiceProviderUser","setIsServiceProviderUser","initialInputs","sendNewOfferRequestSummary","USER_CLEAR","GuardedRoute","component","rest","Route","render","props","path","Redirect","EContent","setContentInputs","shortContent","contentText","tags","publishDate","format","showPublishDate","CONTENT_CLEAR","contentTags","tag","tagType","addAllServices","EContentsTableSortBy","ContentTable","sortedContents","setSortedContents","newContents","TITLE","_contents$operator","_contents$services","_contents$tags","c","Contents","showContent","useServiceProviderOptions","serviceProvidersLoading","EInputs","defaultCreatedStartDate","getFullYear","getMonth","OfferRequestAccessSearch","createdStart","createdEnd","storageData","OFFER_REQUEST_ACCESS_SEARCH","inputsData","JSON","stringify","EOfferRequestAccessTableSortBy","OfferRequestAccessTable","sortedOfferRequestAccess","setSortedOfferRequestAccess","newAccess","OFFERREQUESTCREATED","SERVICENAME","ORGANIZATIONNAME","access","_access$user","_access$user2","_access$user2$organiz","offerRequestUserName","offerRequestCreated","serviceName","OfferRequestAccess","LogItemsSearch","LOG_ITEMS_SEARCH","ELogItemAccessTableSortBy","LogItemTable","sortedLogItems","setSortedLogItems","newLogItem","EVENT","USERAGENT","logItem","_logItem$user","_logItem$user$organiz","_logItem$user$organiz2","_logItem$user2","_logItem$user2$organi","_logItem$user3","userAgent","LogItems","LogItemsTable","TermsOfUseModal","setIsTermsOfUseAccapted","termsOfUseAccepted","termsOfUseError","termsOfUseLoading","acceptHandler","App","showSplash","setShowSplash","onIdTokenChanged","fbUser","Switch","exact","initialState","reducer","authStart","logoutStart","logoutSuccess","getCurrentUserStart","getCurrentUserSuccess","getCurrentUserFail","getCustomTokenStart","getCustomTokenSuccess","getCustomTokenFail","addAuthUserOfferRequestAccess","setAuthUserBillingConfirmed","setAuthUserOrganization","getUserStart","getUserSuccess","getUserFail","listUsersStart","listUsersSuccess","listUsersFail","saveUserStart","saveUserFail","updateUserStart","updateUserFail","acceptTermsOfUseStart","acceptTermsOfUseSuccess","acceptTermsOfUseFail","changeUserLanguageStart","changeUserLanguageSuccess","changeUserLanguageFail","getOfferRequestStart","getOfferRequestSuccess","getOfferRequestFail","deleteOfferRequestStart","deleteOfferRequestSuccess","deleteOfferRequestFail","listOfferRequestsStart","listOfferRequestsSuccess","listOfferRequestsFail","saveOfferRequestStart","saveOfferRequestFail","updateOfferRequestStart","updateOfferRequestFail","getCustomerOfferRequestStart","getCustomerOfferRequestSuccess","getCustomerOfferRequestFail","updateCustomerOfferRequestStart","updateCustomerOfferRequestFail","archiveCustomerOfferRequestStart","archiveCustomerOfferRequestSuccess","archiveCustomerOfferRequestFail","addAccessOfferRequestStart","addAccessOfferRequestSuccess","_action$offerRequest","addAccessOfferRequestFail","addAccessOfferRequestClear","listOfferRequestAccessStart","listOfferRequestAccessSuccess","listOfferRequestAccessFail","getServiceProviderStart","getServiceProviderSuccess","getServiceProviderFail","deleteServiceProviderStart","deleteServiceProviderSuccess","deleteServiceProviderFail","listServiceProvidersStart","listServiceProvidersSuccess","listServiceProvidersFail","saveServiceProviderStart","saveServiceProviderSuccess","saveServiceProviderFail","updateServiceProviderStart","updateServiceProviderFail","getServiceProviderFormStart","getServiceProviderFormSuccess","getServiceProviderFormFail","listServiceProviderFormsStart","listServiceProviderFormsSuccess","listServiceProviderFormsFail","deleteServiceProviderFormStart","deleteServiceProviderFormSuccess","deleteServiceProviderFormFail","getServiceStart","getServiceSuccess","getServiceFail","deleteServiceStart","deleteServiceSuccess","deleteServiceFail","listServicesStart","listServicesSuccess","listServicesFail","saveServiceStart","saveServiceFail","updateServiceStart","updateServiceFail","getMyOrganizationStart","getMyOrganizationSuccess","getMyOrganizationFail","updateMyOrganizationStart","updateMyOrganizationFail","ORGANIZATION_EXPORT_START","exportOrganizationStart","ORGANIZATION_EXPORT_SUCCESS","exportOrganizationSuccess","ORGANIZATION_EXPORT_FAIL","exportOrganizationFail","updateOrganizationImageStart","updateOrganizationImageSuccess","updateOrganizationImageFail","deleteOrganizationImageStart","deleteOrganizationImageSuccess","deleteOrganizationImageFail","getOrganizationStart","getOrganizationSuccess","getOrganizationFail","listOrganizationsStart","listOrganizationsSuccess","listOrganizationsFail","saveOrganizationStart","saveOrganizationSuccess","saveOrganizationFail","updateOrganizationStart","updateOrganizationSuccess","updateOrganizationFail","confirmBillingStart","confirmBillingFail","getLocationStart","getLocationSuccess","getLocationFail","deleteLocationStart","deleteLocationSuccess","deleteLocationFail","listLocationsStart","listLocationsSuccess","listLocationsFail","saveLocationStart","saveLocationSuccess","saveLocationFail","updateLocationStart","updateLocationSuccess","updateLocationFail","FEEDBACK_GET_START","getFeedbackStart","FEEDBACK_GET_SUCCESS","getFeedbackSuccess","FEEDBACK_GET_FAIL","getFeedbackFail","FEEDBACK_DELETE_START","deleteFeedbackStart","FEEDBACK_DELETE_SUCCESS","deleteFeedbackSuccess","FEEDBACK_DELETE_FAIL","deleteFeedbackFail","listFeedbacksStart","listFeedbacksSuccess","listFeedbacksFail","saveFeedbackStart","saveFeedbackSuccess","saveFeedbackFail","FEEDBACK_UPDATE_START","updateFeedbackStart","FEEDBACK_UPDATE_SUCCESS","updateFeedbackSuccess","FEEDBACK_UPDATE_FAIL","updateFeedbackFail","getFeedbackFormDataStart","getFeedbackFormDataSuccess","getFeedbackFormDataFail","FEEDBACK_CLEAR","clearFeedback","getContentStart","getContentSuccess","getContentFail","deleteContentStart","deleteContentSuccess","deleteContentFail","listContentsStart","listContentsSuccess","listContentsFail","saveContentStart","saveContentFail","updateContentStart","updateContentFail","getGeoLocationStart","getGeoLocationSuccess","getGeoLocationFail","listLogItemsStart","listLogItemsSuccess","listLogItemsFail","LOG_ITEM_LIST_CLEAR","composeEnhancers","compose","appReducer","combineReducers","authReducer","usersReducer","offerRequestReducer","serviceProviderReducer","serviceReducer","organizationReducer","locationsReducer","feedbackReducer","contentReducer","geoLocationReducer","logItemReducer","store","createStore","rootReducer","applyMiddleware","thunk","Suspense","fallback","BrowserRouter","initialize","ReactDOM","getElementById"],"mappings":"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","file":"static/js/main.843f283a.chunk.js","sourcesContent":["// extracted by mini-css-extract-plugin\nmodule.exports = {\"Backdrop\":\"Backdrop_Backdrop__1DV8o\",\"Active\":\"Backdrop_Active__3li5V\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"InActive\":\"RadioButtonOption_InActive__3437H\",\"Invalid\":\"RadioButtonOption_Invalid__tVB_b\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Container\":\"Search_Container__2b1gl\",\"Open\":\"Search_Open__1rAR4\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Container\":\"SingleCheckbox_Container__1n4wn\",\"Input\":\"SingleCheckbox_Input__exXhN\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"TableHeader\":\"OfferRequestsTable_TableHeader__137id\",\"Icon\":\"OfferRequestsTable_Icon__1ar0l\",\"HasAccessCheck\":\"OfferRequestsTable_HasAccessCheck__3LGw-\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"LinkIcon\":\"ServiceProvider_LinkIcon__Nz-Ml\",\"linkContainer\":\"ServiceProvider_linkContainer__2K9VJ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"TableHeader\":\"ServiceProvidersTable_TableHeader__vmYCm\",\"Icon\":\"ServiceProvidersTable_Icon__2Bdq6\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"TableHeader\":\"ContentsTable_TableHeader__3VnK2\",\"Icon\":\"ContentsTable_Icon__GpXV0\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"TableHeader\":\"OfferRequestAccessTable_TableHeader__1j_nh\",\"Icon\":\"OfferRequestAccessTable_Icon__2FOlS\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"TableHeader\":\"LogItemsTable_TableHeader__Eq3Qo\",\"Icon\":\"LogItemsTable_Icon__2QXZZ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"OptionContainer\":\"RadioButton_OptionContainer__2FfHm\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"OptionContainer\":\"Star_OptionContainer__2vCO1\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Container\":\"Container_Container__3ISUA\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Container\":\"InputGroup_Container__2Ri54\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Container\":\"PasswordResetDialog_Container__3Hhjj\",\"Label\":\"PasswordResetDialog_Label__2k7RL\",\"Invalid\":\"PasswordResetDialog_Invalid__moXb7\",\"Input\":\"PasswordResetDialog_Input__2u-hV\",\"InputGroup\":\"PasswordResetDialog_InputGroup__3i-SI\",\"HasPre\":\"PasswordResetDialog_HasPre__15l5d\",\"HasPost\":\"PasswordResetDialog_HasPost__1ZZEq\",\"Pre\":\"PasswordResetDialog_Pre__2ke6J\",\"Post\":\"PasswordResetDialog_Post__6Cpkr\",\"Info\":\"PasswordResetDialog_Info__3G11q\",\"InfoDanger\":\"PasswordResetDialog_InfoDanger__CW380\",\"TopInfo\":\"PasswordResetDialog_TopInfo__2l4h6\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Star\":\"Feedbacks_Star__3nRiq\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Container\":\"ModalBody_Container__2S4w2\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Container\":\"ModalFooter_Container__1xFeO\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Container\":\"SearchContainer_Container__2jQkP\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Container\":\"InfoBox_Container__3hHfa\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Section\":\"OfferRequests_Section__1eAbw\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"RadioContainer\":\"Settings_RadioContainer__1aFlo\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Container\":\"Input_Container__3B7Bj\",\"Label\":\"Input_Label__avA62\",\"Invalid\":\"Input_Invalid__3os3h\",\"Input\":\"Input_Input__1Hlqp\",\"InputGroup\":\"Input_InputGroup__V-pOm\",\"HasPre\":\"Input_HasPre__24OU5\",\"HasPost\":\"Input_HasPost__wqjXs\",\"Pre\":\"Input_Pre__1ZUQL\",\"Post\":\"Input_Post__3zR6Q\",\"Info\":\"Input_Info__235iF\",\"InfoDanger\":\"Input_InfoDanger__1eo9e\",\"TopInfo\":\"Input_TopInfo__3YTWT\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Menu\":\"Menu_Menu__1y1ja\",\"DesktopMenu\":\"Menu_DesktopMenu__y8KQZ\",\"MobileHeader\":\"Menu_MobileHeader__39n9s\",\"MenuItemContainer\":\"Menu_MenuItemContainer__bbxnD\",\"UserDropdownContainer\":\"Menu_UserDropdownContainer__3ldIB\",\"MobileMenu\":\"Menu_MobileMenu__1etks\",\"isOpen\":\"Menu_isOpen__1vFg1\",\"Dropdown\":\"Menu_Dropdown__2cEgb\",\"Toggle\":\"Menu_Toggle__seC8M\",\"MenuIcon\":\"Menu_MenuIcon__3jda8\",\"MenuItem\":\"Menu_MenuItem__1KccT\",\"MenuItemActive\":\"Menu_MenuItemActive__mx-VH\",\"UserDropdown\":\"Menu_UserDropdown__2zOJ_\",\"Search\":\"Menu_Search__16Nkq\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"InputContainer\":\"SearchSelect_InputContainer__3qWzh\",\"Disabled\":\"SearchSelect_Disabled__1cCg9\",\"SearchInput\":\"SearchSelect_SearchInput__1NWyT\",\"Selected\":\"SearchSelect_Selected__1iovb\",\"SingleSelected\":\"SearchSelect_SingleSelected__2xKaI\",\"Remove\":\"SearchSelect_Remove__1K2a6\",\"InfoOption\":\"SearchSelect_InfoOption__3lnyq\",\"Option\":\"SearchSelect_Option__2fckK\",\"OptionSelected\":\"SearchSelect_OptionSelected__3JUJ9\",\"OptionsContainer\":\"SearchSelect_OptionsContainer__WcNc2\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"Layout_root__3zG5d\",\"LogoContainer\":\"Layout_LogoContainer__3mHaZ\",\"Container\":\"Layout_Container__3Sf8u\"};","\r\nexport enum ERoute {\r\n ADMIN = \"/admin\",\r\n SUBSCRIPTION_EXPIRED = \"/subscriptionexpired\",\r\n ORGANIZATIONS = \"/organizations\",\r\n ORGANIZATION_USER = `/operators/:organizationId/users/:id`,\r\n OFFER_REQUESTS = \"/offerrequests\",\r\n OFFER_REQUEST_OFFER = `/offerrequests/:offerRequestId/offerrequests/:id`,\r\n OFFER_REQUEST = `/offerrequests/:id`,\r\n SERVICE_PROVIDER = `/serviceproviders/:id`,\r\n SERVICE_PROVIDERS = \"/serviceproviders\",\r\n SERVICE_PROVIDER_PROVIDER = `/serviceproviders/:serviceProviderId/serviceproviders/:id`,\r\n SERVICE_PROVIDER_FORM = `/serviceproviders/forms/:id`,\r\n SERVICES = \"/services\",\r\n SERVICES_SERVICE = `/services/:serviceId/services/:id`,\r\n SERVICE = `/services/:id`,\r\n CONTENTS = \"/contents\",\r\n CONTENTS_CONTENT = `/contents/:contentId/contents/:id`,\r\n CONTENT = `/contents/:id`,\r\n FEEDBACKS = \"/feedbacks\",\r\n FEEDBACK = \"/feedback\",\r\n LOGIN = \"/login\",\r\n OPERATORS = \"/operators\",\r\n OPERATOR = `/operators/:id`,\r\n SETTINGS = \"/settings\",\r\n USERS = \"/users\",\r\n USER = `/users/:id`,\r\n ORGANIZATIONS_ME = \"/organizations/me\",\r\n CUSTOMER_OFFER_REQUEST = \"/offerrequest\",\r\n LOCATIONS = \"/locations\",\r\n LOCATION = `/locations/:id`,\r\n OFFER_REQUEST_ACCESS = \"/offerrequestaccess\",\r\n LOG_ITEMS = \"/logitems\"\r\n}\r\n\r\nexport enum ERouteStaticParams {\r\n new = 'new'\r\n}\r\n\r\ntype TParam = string | ERouteStaticParams;\r\n\r\ninterface IParams {\r\n [key: string]: TParam;\r\n}\r\n\r\nexport class Routes {\r\n public static ADMIN = ERoute.ADMIN;\r\n public static SUBSCRIPTION_EXPIRED = ERoute.SUBSCRIPTION_EXPIRED;\r\n public static ORGANIZATIONS = ERoute.ORGANIZATIONS;\r\n public static ORGANIZATION_USER = (organizationId: TParam, id: TParam) => Routes.withParams(ERoute.ORGANIZATION_USER, { organizationId, id });\r\n public static OFFER_REQUESTS = ERoute.OFFER_REQUESTS;\r\n public static OFFER_REQUEST_OFFER = (offerRequestId: TParam, id: TParam) => Routes.withParams(ERoute.OFFER_REQUEST_OFFER, { offerRequestId, id });\r\n public static OFFER_REQUEST = (id: TParam) => Routes.withParams(ERoute.OFFER_REQUEST, { id });\r\n public static SERVICE_PROVIDER = (id: TParam) => Routes.withParams(ERoute.SERVICE_PROVIDER, { id });\r\n public static SERVICE_PROVIDERS = ERoute.SERVICE_PROVIDERS;\r\n public static SERVICE_PROVIDER_PROVIDER = (serviceProviderId: TParam, id: TParam) => Routes.withParams(ERoute.SERVICE_PROVIDER_PROVIDER, { serviceProviderId, id });\r\n public static SERVICE_PROVIDER_FORM = (id: TParam) => Routes.withParams(ERoute.SERVICE_PROVIDER_FORM, { id });\r\n public static SERVICES = ERoute.SERVICES;\r\n public static SERVICES_SERVICE = (serviceId: TParam, id: TParam ) => Routes.withParams(ERoute.SERVICES_SERVICE, { serviceId, id });\r\n public static SERVICE = (id: TParam) => Routes.withParams(ERoute.SERVICE, { id });\r\n public static CONTENTS = ERoute.CONTENTS;\r\n public static CONTENTS_CONTENT = (contentId: TParam, id: TParam ) => Routes.withParams(ERoute.CONTENTS_CONTENT, { contentId, id });\r\n public static CONTENT = (id: TParam) => Routes.withParams(ERoute.CONTENT, { id });\r\n public static FEEDBACKS = ERoute.FEEDBACKS;\r\n public static FEEDBACK = ERoute.FEEDBACK;\r\n public static LOGIN = ERoute.LOGIN;\r\n public static OPERATORS = ERoute.OPERATORS;\r\n public static OPERATOR = (id: TParam) => Routes.withParams(ERoute.OPERATOR, { id });\r\n public static SETTINGS = ERoute.SETTINGS;\r\n public static USERS = ERoute.USERS;\r\n public static USER = (id: TParam) => Routes.withParams(ERoute.USER, { id });\r\n public static ORGANIZATIONS_ME = ERoute.ORGANIZATIONS_ME;\r\n public static CUSTOMER_OFFER_REQUEST = ERoute.CUSTOMER_OFFER_REQUEST;\r\n public static LOCATIONS = ERoute.LOCATIONS;\r\n public static LOCATION = (id: TParam) => Routes.withParams(ERoute.LOCATION, { id });\r\n public static OFFER_REQUEST_ACCESS = ERoute.OFFER_REQUEST_ACCESS;\r\n public static LOG_ITEMS = ERoute.LOG_ITEMS;\r\n\r\n public static withParams(route: ERoute, params: IParams): string {\r\n let routeWithParams: string = route;\r\n for(let key in params) {\r\n routeWithParams = routeWithParams.replace(`:${key}`, params[key] as string);\r\n }\r\n return routeWithParams;\r\n }\r\n\r\n public static isNew(id: TParam): boolean {\r\n return id === ERouteStaticParams.new;\r\n }\r\n\r\n public static isNotNew(id: TParam): boolean {\r\n return id !== ERouteStaticParams.new;\r\n }\r\n\r\n}","import React from \"react\";\r\nimport { IMenuItem } from \"./../components/Header/Menu/Menu\";\r\n\r\nconst HeaderContext = React.createContext<{\r\n menuItems: IMenuItem[];\r\n dropdownMenuItems: IMenuItem[];\r\n}>({\r\n menuItems: [],\r\n dropdownMenuItems: [],\r\n});\r\n\r\nexport default HeaderContext;\r\n","export enum ETranslation {\r\n // Common\r\n COMMON_SAVE = \"COMMON_SAVE\",\r\n COMMON_RETURN = \"COMMMON_RETURN\",\r\n COMMON_ADD = \"COMMON_ADD\",\r\n COMMON_REMOVE = \"COMMON_REMOVE\",\r\n COMMON_COPY = \"COMMON_COPY\",\r\n COMMON_STREET_ADDRESS = \"COMMON_STREET_ADDRESS\",\r\n COMMON_ZIP = \"COMMON_ZIP\",\r\n COMMON_CITY = \"COMMON_CITY\",\r\n COMMON_NO_CHOICE = \"COMMON_NO_CHOICE\",\r\n COMMON_CREATED = \"COMMON_CREATED\",\r\n COMMON_YES = \"COMMON_YES\",\r\n COMMON_NO = \"COMMON_NO\",\r\n COMMON_NAME = \"COMMON_NAME\",\r\n COMMON_COUNTRY = \"COMMON_COUNTRY\",\r\n COMMON_PHONE = \"COMMON_PHONE\",\r\n COMMON_EMAIL = \"COMMON_EMAIL\",\r\n COMMON_WWW = \"COMMON_WWW\",\r\n COMMON_FACEBOOK = \"COMMON_FACEBOOK\",\r\n COMMON_TWITTER = \"COMMON_TWITTER\",\r\n COMMON_INSTAGRAM = \"COMMON_INSTAGRAM\",\r\n COMMON_LINKEDIN = \"COMMON_LINKEDIN\",\r\n COMMON_SERVICE = \"COMMON_SERVICE\",\r\n COMMON_LATITUDE = \"COMMON_LATITUDE\",\r\n COMMON_LONGITUDE = \"COMMON_LONGITUDE\",\r\n COMMON_FETCH = 'COMMON_FETCH',\r\n COMMON_BUY = \"COMMON_BUY\",\r\n\r\n COMMON_ARCHIVED = \"COMMON_ARCHIVED\",\r\n COMMON_TOKEN = \"COMMON_TOKEN\",\r\n COMMON_SEND = \"COMMON_SEND\",\r\n COMMON_CANCEL = \"COMMON_CANCEL\",\r\n COMMON_ADD_ALL = \"COMMON_ADD_ALL\",\r\n COMMON_CLOSE = \"COMMMON_CLOSE\",\r\n\r\n COMMON_OPERATOR_NAME = \"COMMON_OPERATOR_NAME\",\r\n COMMON_SERVICE_PROVIDER_NAME = \"COMMON_SERVICE_PROVIDER_NAME\",\r\n\r\n COMMON_COPY_CONTACT_INFORMATION = \"COMMON_COPY_CONTACT_INFORMATION\",\r\n COMMON_COPIED = \"COMMON_COPIED\",\r\n COMMON_CONTINUE = \"COMMON_CONTINUE\",\r\n COMMON_CONFIRM = \"COMMON_CONFIRM\",\r\n COMMON_LOAD_ALL = \"COMMON_LOAD_ALL\",\r\n\r\n // GeoLocation\r\n GEO_LOCATION_ERROR = 'GEO_LOCATION_ERROR',\r\n\r\n // Auth\r\n TITLE_HANKIX = \"TITLE_HANKIX\",\r\n LOGIN = \"LOGIN\",\r\n FORGOT_PASSWORD = \"FORGOT_PASSWORD\",\r\n RESET_PASSWORD = \"RESET_PASSWORD\",\r\n\r\n // Auth Inputs\r\n USERNAME = \"USERNAME\",\r\n PASSWORD = \"PASSWORD\",\r\n PASSWORD_MIN_LENGTH_MESSAGE = \"PASSWORD_MIN_LENGTH_MESSAGE\",\r\n\r\n // Header\r\n ADMIN = \"ADMIN\",\r\n OPERATORS = \"OPERATORS\",\r\n ORGANIZATIONS = \"ORGANIZATIONS\",\r\n OFFERREQUESTS = \"OFFERREQUESTS\",\r\n SERVICEPROVIDERS = \"SERVICEPROVIDERS\",\r\n SERVICES = \"SERVICES\",\r\n FEEDBACKS = \"FEEDBACKS\",\r\n USERS = \"USERS\",\r\n LOGOUT = \"LOGOUT\",\r\n SETTINGS = \"SETTINGS\",\r\n CONTENTS = \"CONTENTS\",\r\n MANAGEMENT = \"MANAGEMENT\",\r\n OFFER_REQUEST_ACCESS = \"OFFER_REQUEST_ACCESS\",\r\n LOG_ITEMS = \"LOG_ITEMS\",\r\n ORDER_SERVICE = \"ORDER_SERVICE\",\r\n\r\n // Operators\r\n TITLE_OPERATORS = \"TITLE_OPERATORS\",\r\n OPERATORS_ADD_NEW = \"OPERATORS_ADD_NEW\",\r\n NO_OPERATORS = \"NO_OPERATORS\",\r\n\r\n // Operator\r\n TITLE_OPERATOR = \"TITLE_OPERATOR\",\r\n TITLE_OPERATOR_NEW = \"TITLE_OPERATOR_NEW\",\r\n OPERATOR_NAME = \"OPERATOR_NAME\",\r\n OPERATOR_LEVEL = \"OPERATOR_LEVEL\",\r\n OPERATOR_BUSINESS_ID = \"OPERATOR_BUSINESS_ID\",\r\n OPERATOR_PIPEDRIVE_ORGANIZATION_ID = \"OPERATOR_PIPEDRIVE_ORGANIZATION_ID\",\r\n\r\n // OFFERREQUESTS\r\n TITLE_OFFERREQUESTS = \"TITLE_OFFERREQUESTS\",\r\n OFFERREQUESTS_ADD_NEW = \"OFFERREQUESTS_ADD_NEW\",\r\n NO_OFFERREQUESTS = \"NO_OFFERREQUESTS\",\r\n\r\n // OfferRequest Edit\r\n TITLE_OFFERREQUEST = \"TITLE_OFFERREQUEST\",\r\n TITLE_SORT = \"TITLE_SORT\",\r\n TITLE_OFFERREQUEST_NEW = \"TITLE_OFFERREQUEST_NEW\",\r\n OFFERREQUEST_FIRSTNAME = \"OFFERREQUEST_FIRSTNAME\",\r\n OFFERREQUEST_LASTNAME = \"OFFERREQUEST_LASTNAME\",\r\n OFFERREQUEST_EMAIL = \"OFFERREQUEST_EMAIL\",\r\n OFFERREQUEST_CREATED = \"OFFERREQUEST_CREATED\",\r\n OFFERREQUEST_ADDRESS = \"OFFERREQUESTS_ADDRESS\",\r\n OFFERREQUEST_PHONE = \"OFFERREQUESTS_PHONE\",\r\n OFFERREQUEST_CITY = \"OFFERREQUEST_CITY\",\r\n OFFERREQUEST_STATUS = \"OFFERREQUEST_STATUS\",\r\n OFFERREQUEST_TYPE = \"OFFERREQUEST_TYPE\",\r\n OFFERREQUEST_SEND_DATE = \"OFFERREQUEST_SEND_DATE\",\r\n OFFERREQUEST_OPERATOR = \"OFFERREQUEST_OPERATOR\",\r\n OFFERREQUEST_INFO = \"OFFERREQUEST_INFO\",\r\n OFFER_REQUEST_DELETED = \"OFFER_REQUEST_DELETED\",\r\n OFFER_REQUEST_ARCHIVED = \"OFFER_REQUEST_ARCHIVED\",\r\n OFFER_REQUEST_PROVINCE = \"OFFER_REQUEST_PROVINCE\",\r\n OFFER_REQUEST_LANGUAGE = \"OFFER_REQUEST_LANGUAGE\",\r\n OFFER_REQUEST_ADD_ACCESS_ERROR = \"OFFER_REQUEST_ADD_ACCESS_ERROR\",\r\n\r\n // OfferRequest construction\r\n OFFER_REQUEST_CONSTRUCTION_AREA = \"OFFER_REQUEST_CONSTRUCTION_AREA\",\r\n OFFER_REQUEST_CONSTRUCTION_BUILDING_TYPE = \"OFFER_REQUEST_CONSTRUCTION_BUILDING_TYPE\",\r\n OFFER_REQUEST_CONSTRUCTION_BUILDING_TYPE_OTHER = \"OFFER_REQUEST_CONSTRUCTION_BUILDING_TYPE_OTHER\",\r\n OFFER_REQUEST_CONSTRUCTION_CONSTRUCTION_YEAR = \"OFFER_REQUEST_CONSTRUCTION_CONSTRUCTION_YEAR\",\r\n\r\n // OfferRequest construction\r\n OFFER_REQUEST_WELLNESS_LENGTH = \"OFFER_REQUEST_WELLNESS_LENGTH\",\r\n OFFER_REQUEST_WELLNESS_REGULAR = \"OFFER_REQUEST_WELLNESS_REGULAR\",\r\n\r\n // Offer Request types\r\n OFFER_REQUEST_TYPE_SIMPLE = \"OFFER_REQUEST_TYPE_SIMPLE\",\r\n OFFER_REQUEST_TYPE_CONSTRUCTION = \"OFFER_REQUEST_TYPE_CONSTRUCTION\",\r\n OFFER_REQUEST_TYPE_WELLNESS = \"OFFER_REQUEST_TYPE_WELLNESS\",\r\n\r\n //Offer Request Access\r\n OFFER_REQUEST_ACCESS_OFFER_REQUEST_CREATED = \"OFFER_REQUEST_ACCESS_OFFER_REQUEST_CREATED\",\r\n OFFER_REQUEST_ACCESS_USERNAME = \"OFFER_REQUEST_ACCESS_USERNAME\",\r\n OFFER_REQUEST_ACCESS_CREATED = \"OFFER_REQUEST_ACCESS_CREATED\",\r\n OFFER_REQUEST_ACCESS_CREATED_START = \"OFFER_REQUEST_ACCESS_CREATED_START\",\r\n OFFER_REQUEST_ACCESS_CREATED_END = \"OFFER_REQUEST_ACCESS_CREATED_END\",\r\n OFFER_REQUEST_ACCESS_NO_OFFER_REQUESTS = \"OFFER_REQUEST_ACCESS_NO_OFFER_REQUESTS\",\r\n\r\n // Log Items\r\n LOG_ITEM_EVENT = \"LOG_ITEM_EVENT\",\r\n LOG_ITEM_EVENT_CREATED_START = \"LOG_ITEM_EVENT_CREATED_START\",\r\n LOG_ITEM_EVENT_CREATED_END = \"LOG_ITEM_EVENT_CREATED_END\",\r\n LOG_ITEM_USER_AGENT = \"LOG_ITEM_USER_AGENT\",\r\n LOG_ITEM_NO_LOG_ITEMS = \"LOG_ITEM_NO_LOG_ITEMS\",\r\n\r\n // log Items events\r\n LOG_ITEM_EVENTS_SELECT = \"LOG_ITEM_EVENTS_SELECT\",\r\n LOG_ITEM_EVENTS_OFFER_REQUEST_VIEW = \"LOG_ITEM_EVENTS_OFFER_REQUEST_VIEW\",\r\n LOG_ITEM_EVENTS_OFFER_REQUEST_VIEW_PIN = \"LOG_ITEM_EVENTS_OFFER_REQUEST_VIEW_PIN\",\r\n LOG_ITEM_EVENTS_OFFER_REQUEST_SAVE = \"LOG_ITEM_EVENTS_OFFER_REQUEST_SAVE\",\r\n LOG_ITEM_EVENTS_OFFER_REQUEST_SAVE_LOCAL = \"LOG_ITEM_EVENTS_OFFER_REQUEST_SAVE_LOCAL\",\r\n LOG_ITEM_EVENTS_OFFER_REQUEST_DELETE = \"LOG_ITEM_EVENTS_OFFER_REQUEST_DELETE\",\r\n LOG_ITEM_EVENTS_OFFER_REQUEST_UPDATE = \"LOG_ITEM_EVENTS_OFFER_REQUEST_UPDATE\",\r\n LOG_ITEM_EVENTS_OFFER_REQUEST_UPDATE_PIN = \"LOG_ITEM_EVENTS_OFFER_REQUEST_UPDATE_PIN\",\r\n LOG_ITEM_EVENTS_OFFER_REQUEST_ARCHIVE_PIN = \"LOG_ITEM_EVENTS_OFFER_REQUEST_ARCHIVE_PIN\",\r\n LOG_ITEM_EVENTS_OFFER_REQUEST_LIST = \"LOG_ITEM_EVENTS_OFFER_REQUEST_LIST\",\r\n LOG_ITEM_EVENTS_OFFER_REQUEST_ADD_ACCESS = \"LOG_ITEM_EVENTS_OFFER_REQUEST_ADD_ACCESS\",\r\n LOG_ITEM_EVENTS_USER_ACCEPT_TERMS_OF_USE = \"LOG_ITEM_EVENTS_USER_ACCEPT_TERMS_OF_USE\",\r\n LOG_ITEM_EVENTS_ORGANIZATION_CONFIRM_BILLING = \"LOG_ITEM_EVENTS_ORGANIZATION_CONFIRM_BILLING\",\r\n LOG_ITEM_EVENTS_AUTH_LOGIN = \"LOG_ITEM_EVENTS_AUTH_LOGIN\",\r\n LOG_ITEM_EVENTS_AUTH_LOGOUT = \"LOG_ITEM_EVENTS_AUTH_LOGOUT\",\r\n\r\n // Building Types\r\n BUIDLING_TYPE_SELECT = \"BUIDLING_TYPE_SELECT\",\r\n BUILDING_TYPE_TOWN_HOUSE = \"BUILDING_TYPE_TOWN_HOUSE\",\r\n BUILDING_TYPE_SEMI_DETACHED_HOUSE = \"BUILDING_TYPE_SEMI_DETACHED_HOUSE\",\r\n BUILDING_TYPE_ROW_HOUSE = \"BUILDING_TYPE_ROW_HOUSE\",\r\n BUILDING_TYPE_DETACHED_HOUSE = \"BUILDING_TYPE_DETACHED_HOUSE\",\r\n BUILDING_TYPE_APARTMENT_HOUSE = \"BUILDING_TYPE_APARTMENT_HOUSE\",\r\n BUILDING_TYPE_OTHER = \"BUILDING_TYPE_OTHER\",\r\n\r\n // OFFERREQUEST statuses\r\n OFFERREQUEST_STATUS_OFFER = \"OFFERREQUEST_STATUS_OFFER\",\r\n OFFERREQUEST_STATUS_OFFERED = \"OFFERREQUEST_STATUS_OFFERED\",\r\n OFFERREQUEST_STATUS_COMPLETE = \"OFFERREQUEST_STATUS_COMPLETE\",\r\n\r\n // Languages\r\n OFFERREQUEST_LANGUAGE_FI = \"OFFERREQUEST_LANGUAGE_FI\",\r\n OFFERREQUEST_LANGUAGE_EN = \"OFFERREQUEST_LANGUAGE_EN\",\r\n OFFERREQUEST_LANGUAGE_SE = \"OFFERREQUEST_LANGUAGE_SE\",\r\n\r\n // ServiceProvider Edit\r\n TITLE_SERVICEPROVIDER = \"TITLE_SERVICEPROVIDER\",\r\n TITLE_SERVICEPROVIDER_NEW = \"TITLE_SERVICEPROVIDER_NEW\",\r\n SERVICEPROVIDER_FIRSTNAME = \"SERVICEPROVIDER_FIRSTNAME\",\r\n SERVICEPROVIDER_LASTNAME = \"SERVICEPROVIDER_LASTNAME\",\r\n SERVICEPROVIDER_EMAIL = \"SERVICEPROVIDER_EMAIL\",\r\n SERVICEPROVIDER_CREATED = \"SERVICEPROVIDER_CREATED\",\r\n SERVICEPROVIDER_ADDRESS = \"SERVICEPROVIDER_ADDRESS\",\r\n SERVICEPROVIDER_PHONE = \"SERVICEPROVIDER_PHONE\",\r\n SERVICEPROVIDER_CITY = \"SERVICEPROVIDER_CITY\",\r\n SERVICEPROVIDER_STATUS = \"SERVICEPROVIDER_STATUS\",\r\n SERVICEPROVIDER_TYPE = \"SERVICEPROVIDER_TYPE\",\r\n SERVICEPROVIDER_SEND_DATE = \"SERVICEPROVIDER_SEND_DATE\",\r\n SERVICEPROVIDER_OPERATOR = \"SERVICEPROVIDER_OPERATOR\",\r\n SERVICEPROVIDER_COMPANY = \"SERVICEPROVIDER_COMPANY\",\r\n SERVICEPROVIDER_INVOICING_TYPE = \"INVOICING_TYPE\",\r\n SERVICEPROVIDER_EINVOICE_ADDRESS = \"EINVOICE_ADDRESS\",\r\n SERVICEPROVIDER_EINVOICEOPERATOR_ADDRESS = \"EINVOICEOPERATOR_ADDRESS\",\r\n SERVICEPROVIDER_INVOICEINFO = \"INVOICEINFO\",\r\n SERVICEPROVIDER_INVOICE_CONFIRM = \"SERVICEPROVIDER_INVOICE_CONFIRM\",\r\n SERVICEPROVIDER_INVOICE_MODAL_DESCRIPTION = \"SERVICEPROVIDER_INVOICE_MODAL_DESCRIPTION\",\r\n SERVICEPROVIDER_INVOICE_CONFIRM_LABEL = \"SERVICEPROVIDER_INVOICE_CONFIRM_LABEL\",\r\n SERVICEPROVIDER_INVOICE_CHANGE_BILLING_INFORMATION = \"SERVICEPROVIDER_INVOICE_CHANGE_BILLING_INFORMATION\",\r\n SERVICEPROVIDER_SUBSCRIPTION_LEVEL = \"SUBSCRIPTION_LEVEL\",\r\n SERVICEPROVIDER_USER_PHONE = \"SERVICEPROVIDER_USER_PHONE\",\r\n SERVICEPROVIDER_ORGANIZATION_PHONE = \"SERVICEPROVIDER_ORGANIZATION_PHONE\",\r\n SERVICEPROVIDER_EXPORT = \"SERVICEPROVIDER_EXPORT\",\r\n SERVICEPROVIDER_EXPORT_ALL = \"SERVICEPROVIDER_EXPORT_ALL\",\r\n SERVICEPROVIDER_EXPIRED_SUBSCRIBE = \"SERVICEPROVIDER_EXPIRED_SUBSCRIBE\",\r\n SERVICEPROVIDER_PAYMENT_METHOD = \"SERVICEPROVIDER_PAYMENT_METHOD\",\r\n\r\n INVOICING_TYPE_EINVOICE = \"INVOICING_TYPE_EINVOICE\",\r\n INVOICING_TYPE_OTHER = \"INVOICING_TYPE_OTHER\",\r\n\r\n SUBSCRIPTION_LEVEL_FREE = \"SUBSCRIPTION_LEVEL_FREE\",\r\n SUBSCRIPTION_LEVEL_BASIC = \"SUBSCRIPTION_LEVEL_BASIC\",\r\n\r\n PAYMENT_METHOD_MONTH = \"PAYMENT_METHOD_MONTH\",\r\n PAYMENT_METHOD_MICRO = \"PAYMENT_METHOD_MICRO\",\r\n\r\n // Serviceproviders\r\n TITLE_SERVICEPROVIDERS = \"TITLE_SERVICEPROVIDERS\",\r\n SERVICEPROVIDERS_ADD_NEW = \"SERVICEPROVIDERS_ADD_NEW\",\r\n NO_SERVICEPROVIDERS = \"NO_SERVICEPROVIDERS\",\r\n SERVICEPROVIDER_FORMS = \"SERVICEPROVIDER_FORMS\",\r\n NO_SERVICEPROVIDER_FORMS = \"NO_SERVICEPROVIDER_FORMS\",\r\n\r\n // SERVICES\r\n TITLE_SERVICES = \"TITLE_SERVICES\",\r\n SERVICES_ADD_NEW = \"SERVICES_ADD_NEW\",\r\n NO_SERVICES = \"NO_SERVICES\",\r\n TITLE_SERVICE = \"TITLE_SERVICE\",\r\n TITLE_SERVICE_NEW = \"TITLE_SERVICE_NEW\",\r\n SERVICE_NAME = \"SERVICE_NAME\",\r\n SERVICE_URL = \"SERVICE_URL\",\r\n\r\n // OfferRequest Edit\r\n FEEDBACK_SATISFACTION = \"FEEDBACK_SATISFACTION\",\r\n FEEDBACK_SERVICEPROVIDER = \"FEEDBACK_SERVICEPROVIDER\",\r\n FEEDBACK_SERVICE_PROVIDER_OTHER = \"FEEDBACK_SERVICE_PROVIDER_OTHER\",\r\n FEEDBACK_MESSAGE = \"FEEDBACK_MESSAGE\",\r\n\r\n // Feedback form\r\n FEEDBACK_FORM_NOT_FOUND = \"FEEDBACK_FORM_NOT_FOUND\",\r\n FEEDBACK_FORM_SOMETHING_ELSE = \"FEEDBACK_FORM_SOMETHING_ELSE\",\r\n FEEDBACK_THANK_YOU_TITLE = \"FEEDBACK_THANK_YOU_TITLE\",\r\n FEEDBACK_THANK_YOU_MESSAGE = \"FEEDBACK_THANK_YOU_MESSAGE\",\r\n FEEDBACK_EXISTS_MESSAGE = \"FEEDBACK_EXISTS_MESSAGE\",\r\n\r\n // OFFERREQUESTS\r\n TITLE_FEEDBACKS = \"TITLE_FEEDBACKS\",\r\n TITLE_FEEDBACK_NEW = \"TITLE_FEEDBACK_NEW\",\r\n FEEDBACKS_ADD_NEW = \"FEEDBACKS_ADD_NEW\",\r\n NO_FEEDBACK = \"NO_FEEDBACK\",\r\n\r\n // React Select\r\n REACT_SELECT_PLACEHOLDER = \"REACT_SELECT_PLACEHOLDER\",\r\n REACT_SELECT_ADD_NEW = \"REACT_SELECT_ADD_NEW\",\r\n\r\n // Users\r\n TITLE_USERS = \"TITLE_USERS\",\r\n USERS_ADD_NEW = \"USERS_ADD_NEW\",\r\n NO_USERS = \"NO_USERS\",\r\n USER_NAME = \"USER_NAME\",\r\n\r\n // User\r\n TITLE_USER = \"TITLE_USER\",\r\n TITLE_USER_NEW = \"TITLE_USER_NEW\",\r\n USER_FIRST_NAME = \"USER_FIRST_NAME\",\r\n USER_LAST_NAME = \"USER_LAST_NAME\",\r\n USER_EMAIL = \"USER_EMAIL\",\r\n USER_PHONE_NUMBER = \"USER_PHONE_NUMBER\",\r\n USER_TITLE = \"USER_TITLE\",\r\n USER_ALLOW_LOGIN = \"USER_ALLOW_LOGIN\",\r\n USER_PROFILE_IMAGE = \"USER_PROFILE_IMAGE\",\r\n USER_PASSWORD = \"USER_PASSWORD\",\r\n USER_ADDRESS = \"USER_ADDRESS\",\r\n USER_SEND_NEW_OFFER_REQUEST_SUMMARY = \"USER_SEND_NEW_OFFER_REQUEST_SUMMARY\",\r\n\r\n // Validation\r\n VALIDATION_EMAIL = \"VALIDATION_EMAIL\",\r\n VALIDATION_MIN_LENGTH = \"VALIDATION_MIN_LENGTH\",\r\n VALIDATION_MAX_LENGTH = \"VALIDATION_MAX_LENGTH\",\r\n VALIDATION_MIN_AMOUNT = \"VALIDATION_MIN_AMOUNT\",\r\n VALIDATION_MAX_AMOUNT = \"VALIDATION_MAX_AMOUNT\",\r\n\r\n // Errors\r\n TOKEN_ERROR = \"TOKEN_ERROR\",\r\n REFRESH_TOKEN_ERROR = \"REFRESH_TOKEN_ERROR\",\r\n FILE_UPLOAD_ERROR = \"FILE_UPLOAD_ERROR\",\r\n IDENTIFIER_ERROR = \"IDENTIFIER_ERROR\",\r\n DATABASE_ERROR = \"DATABASE_ERROR\",\r\n DATA_EMPTY_ERROR = \"DATA_EMPTY_ERROR\",\r\n ORGANIZATION_ERROR = \"ORGANIZATION_ERROR\",\r\n NO_ACCESS_ERROR = \"NO_ACCESS_ERROR\",\r\n NOT_FOUND_ERROR = \"NOT_FOUND_ERROR\",\r\n PIPEDRIVE_NOT_CONNECTED_ERROR = \"PIPEDRIVE_NOT_CONNECTED_ERROR\",\r\n NO_CONTRACT_LENGTH_ERROR = \"NO_CONTRACT_LENGTH_ERROR\",\r\n SEARCH_QUERY_STRING_ERROR = \"SEARCH_QUERY_STRING_ERROR\",\r\n FEEDBACK_ALREADY_EXISTS = \"FEEDBACK_ALREADY_EXISTS\",\r\n\r\n // Organization\r\n ORGANIZATION_ME = \"ORGANIZATION_ME\",\r\n ORGANIZATION_ORDER_DATE = \"ORGANIZATION_ORDER_DATE\",\r\n ORGANIZATION_IMAGE = \"ORGANIZATION_IMAGE\",\r\n ORGANIZATION_IMAGE_DROPZONE = \"ORGANIZATION_IMAGE_DROPZONE\",\r\n ORGANIZATION_IMAGE_DROPZONE_DROP = \"ORGANIZATION_IMAGE_DROPZONE_DROP\",\r\n\r\n // Customer Offer Request\r\n CUSTOMER_OFFER_REQUEST = \"CUSTOMER_OFFER_REQUEST\",\r\n CUSTOMER_OFFER_REQUEST_SAVE_CHANGES = \"CUSTOMER_OFFER_REQUEST_SAVE_CHANGES\",\r\n CUSTOMER_OFFER_REQUEST_ARCHIVE = \"CUSTOMER_OFFER_REQUEST_ARCHIVE\",\r\n CUSTOMER_OFFER_REQUEST_UNARCHIVE = \"CUSTOMER_OFFER_REQUEST_UNARCHIVE\",\r\n CUSTOMER_OFFER_REQUEST_HELP_TEXT_1 = \"CUSTOMER_OFFER_REQUEST_HELP_TEXT_1\",\r\n CUSTOMER_OFFER_REQUEST_HELP_TEXT_2 = \"CUSTOMER_OFFER_REQUEST_HELP_TEXT_2\",\r\n CUSTOMER_OFFER_REQUEST_THANK_YOU_MESSAGE = \"CUSTOMER_OFFER_REQUEST_THANK_YOU_MESSAGE\",\r\n CUSTOMER_OFFER_REQUEST_ARCHIVED_CONFIRM = \"CUSTOMER_OFFER_REQUEST_ARCHIVED_CONFIRM\",\r\n CUSTOMER_OFFER_REQUEST_ERROR_TOP = \"CUSTOMER_OFFER_REQUEST_ERROR_TOP\",\r\n CUSTOMER_OFFER_REQUEST_ERROR_BOTTOM = \"CUSTOMER_OFFER_REQUEST_ERROR_BOTTOM\",\r\n\r\n // delete\r\n CONFIRM_DELETE_SERVICEPROVIDER = \"CONFIRM_DELETE_SERVICEPROVIDER\",\r\n CONFIRM_DELETE_SERVICE = \"CONFIRM_DELETE_SERVICE\",\r\n CONFIRM_DELETE_OPERATOR = \"CONFIRM_DELETE_OPERATOR\",\r\n CONFIRM_DELETE_LOCATION = \"CONFIRM_DELETE_LOCATION\",\r\n CONFIRM_DELETE_SERVICEPROVIDER_FORM = \"CONFIRM_DELETE_SERVICEPROVIDER_FORM\",\r\n CONFIRM_DELETE_OFFER_REQUEST = \"CONFIRM_DELETE_OFFER_REQUEST\",\r\n\r\n CONFIRM_BUY_TITLE = \"CONFIRM_BUY_TITLE\",\r\n CONFIRM_BUY_DESCRIPTION = \"CONFIRM_BUY_DESCRIPTION\",\r\n CONFIRM_BUY_QUESTION = \"CONFIRM_BUY_QUESTION\",\r\n\r\n // locations\r\n NO_LOCATIONS = \"NO_LOCATIONS\",\r\n LOCATIONS = \"LOCATIONS\",\r\n LOCATIONS_NEW = \"LOCATIONS_NEW\",\r\n LOCATION = \"LOCATION\",\r\n LOCATION_NAME = \"LOCATION_NAME\",\r\n LOCATION_NAME_GENITIVE = \"LOCATION_NAME_GENITIVE\",\r\n LOCATION_NAME_INESSIVE = \"LOCATION_NAME_INESSIVE\",\r\n LOCATION_CONTENT = \"LOCATION_CONTENT\",\r\n LOCATION_LATITUDE = \"LOCATION_LATITUDE\",\r\n LOCATION_LONGITUDE = \"LOCATION_LONGITUDE\",\r\n LOCATION_ZOOM_LEVEL = \"LOCATION_ZOOM_LEVEL\",\r\n\r\n // SEARCH\r\n COMMON_SEARCH = \"COMMON_SEARCH\",\r\n\r\n // Settings\r\n TITLE_SETTINGS = \"TITLE_SETTINGS\",\r\n SEND_PASSWORD_RESET_LINK = \"SEND_PASSWORD_RESET_LINK\",\r\n PASSWORD_RESET_TEXT = \"PASSWORD_RESET_TEXT\",\r\n\r\n //Billing\r\n BILLING_EXPORT_ALL = \"BILLING_EXPORT_ALL\",\r\n BILLING_EXPORT_ORGANIZATION = \"BILLING_EXPORT_ORGANIZATION\",\r\n\r\n SELECT_SERVICE_PLACEHOLDER = 'SELECT_SERVICE_PLACEHOLDER',\r\n SELECT_OPERATOR_PLACEHOLDER = \"SELECT_OPERATOR_PLACEHOLDER\",\r\n SELECT_LOCATIONS_PLACEHOLDER = 'SELECT_LOCATIONS_PLACEHOLDER',\r\n SELECT_SERVICE_PROVIDER_PLACEHOLDER = \"SELECT_SERVICE_PROVIDER_PLACEHOLDER\",\r\n\r\n SUBSCRIPTION_EXPIRED_INFO = \"SUBSCRIPTION_EXPIRED_INFO\",\r\n SUBSCRIPTION_EXPIRED = \"SUBSCRIPTION_EXPIRED\",\r\n SUBSCRIPTION_EXPIRED_INFO_LINK = \"SUBSCRIPTION_EXPIRED_INFO_LINK\",\r\n\r\n // CONTENT\r\n TITLE_CONTENTS = \"TITLE_CONTENTS\",\r\n CONTENTS_ADD_NEW = \"CONTENTS_ADD_NEW\",\r\n NO_CONTENTS = \"NO_CONTENTS\",\r\n TITLE_CONTENT = \"TITLE_CONTENT\",\r\n TITLE_CONTENT_NEW = \"TITLE_CONTENT_NEW\",\r\n CONTENT_NAME = \"CONTENT_NAME\",\r\n CONTENT_SHORTCONTENT = \"CONTENT_SHORTCONTENT\",\r\n CONTENT_CONTENTTEXT = \"CONTENT_CONTENTTEXT\",\r\n CONTENT_DATE = \"CONTENT_DATE\",\r\n CONTENT_SHOWDATE = \"CONTENT_SHOWDATE\",\r\n CONTENT_TAGS = \"CONTENT_TAGS\",\r\n CONTENT_TAG_NORMAL = \"CONTENT_TAG_NORMAL\",\r\n CONTENT_TAG_NEWS = \"CONTENT_TAG_NEWS\",\r\n CONTENT_TAG_FRONTPAGE = \"CONTENT_TAG_FRONTPAGE\",\r\n\r\n //Language\r\n LANGUAGE_FINNISH = \"LANGUAGE_FINNISH\",\r\n LANGUAGE_ENGLISH = \"LANGUAGE_ENGLISH\",\r\n LANGUAGE_TITLE = \"LANGUAGE_TITLE\",\r\n LANGUAGE_IN_FINNISH = \"LANGUAGE_IN_FINNISH\",\r\n LANGUAGE_IN_ENGLISH = \"LANGUAGE_IN_ENGLISH\",\r\n\r\n // Terms of use\r\n TERMS_BINDING = \"TERMS_BINDING\",\r\n TERMS_LIST_1 = \"TERMS_LIST_1\",\r\n TERMS_LIST_2 = \"TERMS_LIST_2\",\r\n TERMS_LIST_3 = \"TERMS_LIST_3\",\r\n TERMS_READ_MORE = \"TERMS_READ_MORE\",\r\n TERMS_TERMS = \"TERMS_TERMS\",\r\n TERMS_ACCEPT = \"TERMS_ACCEPT\",\r\n TERMS_TITLE = \"TERMS_TITLE\",\r\n\r\n // Offer request Info\r\n OFFERREQUEST_INFO_OFFER_YOUR_SERVICE = \"OFFERREQUEST_INFO_OFFER_YOUR_SERVICE\",\r\n OFFERREQUEST_INFO_LIST_ITEM_1 = \"OFFERREQUEST_INFO_LIST_ITEM_1\",\r\n OFFERREQUEST_INFO_LIST_ITEM_2 = \"OFFERREQUEST_INFO_LIST_ITEM_2\",\r\n OFFERREQUEST_INFO_LIST_ITEM_3 = \"OFFERREQUEST_INFO_LIST_ITEM_3\",\r\n OFFERREQUEST_INFO_QUESTIONS = \"OFFERREQUEST_INFO_QUESTIONS\",\r\n OFFERREQUEST_INFO_CONFIRM_INFO = \"OFFERREQUEST_INFO_CONFIRM_INFO\",\r\n OFFERREQUEST_INFO_EDIT_INFO = \"OFFERREQUEST_INFO_EDIT_INFO\",\r\n OFFERREQUEST_INFO_READ_MORE = \"OFFERREQUEST_INFO_READ_MORE\",\r\n OFFER_REQUEST_ACCESS_OFFER_REQUEST = \"OFFER_REQUEST_ACCESS_OFFER_REQUEST\"\r\n}\r\n","import React from \"react\";\r\n\r\nimport classes from \"./Backdrop.module.scss\";\r\n\r\ninterface IProps {\r\n isOpen: boolean;\r\n onClick: () => void;\r\n}\r\n\r\nconst Backdrop: React.FC = ({ isOpen, onClick }) => {\r\n let containerClasses = [classes.Backdrop];\r\n\r\n if (isOpen) {\r\n containerClasses.push(classes.Active);\r\n }\r\n\r\n return
;\r\n};\r\n\r\nexport default Backdrop;\r\n","// Firebase App (the core Firebase SDK) is always required and\r\n// must be listed before other Firebase SDKs\r\nimport * as firebase from \"firebase/app\";\r\n\r\n// Add the Firebase services that you want to use\r\nimport \"firebase/auth\";\r\n\r\nconst firebaseConfig = {\r\n apiKey: \"AIzaSyCDDl5SALD0nQ3luvyLG7y3wsJikzEzh8o\",\r\n authDomain: \"hankix.firebaseapp.com\",\r\n databaseURL: \"https://hankix.firebaseio.com\",\r\n projectId: \"hankix\",\r\n storageBucket: \"hankix.appspot.com\",\r\n messagingSenderId: \"871159815572\",\r\n appId: \"1:871159815572:android:1ac816e787d7e575ff4381\"\r\n};\r\n\r\n// Initialize Firebase\r\nexport default firebase.initializeApp(firebaseConfig);\r\n","import axios from \"axios\";\r\nimport moment from \"moment-timezone\";\r\nimport { Routes } from \"./classes/Routes\";\r\nimport firebase from \"./firebase\";\r\n\r\nconst hostname = window && window.location && window.location.hostname;\r\n\r\nlet apiPath = \"/\";\r\nlet withCredentials = false;\r\nif (hostname === \"localhost\") {\r\n apiPath = \"http://localhost:8080/\";\r\n withCredentials = true;\r\n}\r\n\r\nconst instance = axios.create({\r\n baseURL: apiPath,\r\n withCredentials: withCredentials,\r\n});\r\n\r\ninstance.interceptors.request.use(async (config) => {\r\n const firebaseToken = await firebase.auth().currentUser?.getIdToken();\r\n config.headers[\"X-Auth\"] = `Bearer ${firebaseToken ? firebaseToken : \"\"}`;\r\n config.headers[\"X-TimeZoneName\"] = moment.tz.guess();\r\n return config;\r\n});\r\n\r\ninstance.interceptors.response.use(\r\n (config) => config,\r\n ({ response }) => {\r\n if (!response || response.status === 500 || response.status === 405) {\r\n response.data = \"Server error! Please contact support.\";\r\n }\r\n if (response && response.status === 401) {\r\n window.location.href = Routes.LOGIN;\r\n }\r\n return Promise.reject({ response });\r\n }\r\n);\r\n\r\nexport default instance;\r\n","import axios from \"../axios\";\r\n\r\nexport const search = async (searchTerm: string, signal: AbortSignal) => {\r\n return axios\r\n .get(`/json/search?q=${searchTerm}`)\r\n .then((res) => {\r\n if (res.data) {\r\n return res.data;\r\n }\r\n })\r\n .catch((error) => {\r\n if (error instanceof Error) {\r\n throw error;\r\n } else {\r\n throw new Error(error);\r\n }\r\n });\r\n};\r\n","import React from \"react\";\r\nimport { TInputValue } from \"./../components/UI/Input/Input\";\r\n\r\n\r\nexport enum EInputUpdateAction {\r\n AUTH = \"AUTH\",\r\n DEAL = \"DEAL\",\r\n DEAL_EDIT = \"DEAL_EDIT\",\r\n DEAL_VARIATION = \"DEAL_VARIATION\",\r\n OPERATOR = \"OPERATOR\",\r\n OFFERREQUEST = \"OFFERREQUEST\",\r\n OFFERREQUESTS_TABLE = \"OFFERREQUESTS_TABLE\",\r\n SERVICEPROVIDER = \"SERVICEPROVIDER\",\r\n USER = \"USER\",\r\n FINANCE_COMPANY = \"FINANCE_COMPANY\",\r\n DEALERSHIP = \"DEALERSHIP\",\r\n REPORTS = \"REPORTS\",\r\n DEAL_CONFIRM_DIALOG = \"DEAL_CONFIRM_DIALOG\",\r\n DEALS = \"DEALS\",\r\n DEAL_EXTRA_FEE = \"DEAL_EXTRA_FEE\",\r\n DEALS_TABLE = \"DEALS_TABLE\",\r\n DEAL_SEND_DIALOG = \"DEAL_SEND_DIALOG\",\r\n OPERATOR_LIMIT = \"OPERATOR_LIMIT\",\r\n SERVICE = \"SERVICE\",\r\n ORGANIZATION = \"ORGANIZATION\",\r\n LOCATION = \"LOCATION\",\r\n CONTENT = \"CONTENT\",\r\n SETTINGS = \"SETTINGS\"\r\n}\r\n\r\nconst InputContext = React.createContext<{\r\n onAutoUpdate: (\r\n inputName: string,\r\n value: TInputValue,\r\n action: EInputUpdateAction,\r\n data?: Object\r\n ) => void;\r\n initDone: boolean;\r\n}>({\r\n onAutoUpdate: (inputName, value, action, data) => {},\r\n initDone: false,\r\n});\r\n\r\nexport default InputContext;\r\n","import React, { useEffect, useRef, useState } from \"react\";\r\n\r\ninterface IProps {\r\n onChange?: (value: string) => void;\r\n className?: string;\r\n value: string;\r\n placeholder?: string;\r\n onBlur: (value: string) => void;\r\n disabled?: boolean;\r\n}\r\n\r\nconst AutoTextArea: React.FC = ({ onChange, className, value, placeholder, onBlur, disabled }) => {\r\n const textAreaRef = useRef(null);\r\n const [text, setText] = useState(\"\");\r\n const [textAreaHeight, setTextAreaHeight] = useState(\"auto\");\r\n const [parentHeight, setParentHeight] = useState(\"auto\");\r\n\r\n useEffect(() => {\r\n setParentHeight(`${textAreaRef.current!.scrollHeight}px`);\r\n setTextAreaHeight(`${textAreaRef.current!.scrollHeight}px`);\r\n }, [text]);\r\n\r\n useEffect(() => {\r\n setText(value)\r\n }, [value]);\r\n\r\n const onChangeHandler = (event: React.ChangeEvent) => {\r\n setTextAreaHeight(\"auto\");\r\n setParentHeight(`${textAreaRef.current!.scrollHeight}px`);\r\n setText(event.target.value);\r\n\r\n if (onChange) {\r\n onChange(event.target.value);\r\n }\r\n };\r\n\r\n return (\r\n \r\n onBlur(value)}\r\n disabled={disabled}\r\n />\r\n
\r\n );\r\n};\r\n\r\nexport default AutoTextArea;\r\n","export enum EOrganizationLevel {\r\n PRIMARY = \"PRIMARY\",\r\n OPERATOR = \"OPERATOR\",\r\n SERVICE_PROVIDER = \"SERVICE_PROVIDER\",\r\n CUSTOMER = \"CUSTOMER\",\r\n}\r\n\r\nexport enum EOfferStatus {\r\n OFFER = \"OFFER\",\r\n OFFERED = \"OFFERED\",\r\n COMPLETE = \"COMPLETE\"\r\n}\r\n\r\n// use translate\r\nexport const OfferStatus = {\r\n [EOfferStatus.OFFER]: \"Tarjous avoin\",\r\n [EOfferStatus.OFFERED]: \"Tarjous tehty\",\r\n [EOfferStatus.COMPLETE]: \"Tarjous otettu\"\r\n};\r\n\r\nexport enum EOfferRequestType {\r\n SIMPLE = \"SIMPLE\", \r\n CONSTRUCTION = \"CONSTRUCTION\",\r\n WELLNESS = \"WELLNESS\",\r\n}\r\n\r\nexport enum EInvoicingType {\r\n EINVOICE = \"eInvoice\",\r\n OTHER = \"other\",\r\n}\r\n\r\nexport enum EBuildingType {\r\n TOWN_HOUSE = \"townHouse\", \r\n SEMI_DETACHED_HOUSE = \"semidetachedHouse\", \r\n ROW_HOUSE = \"rowHouse\", \r\n DETACHED_HOUSE = \"detachedHouse\", \r\n APARTMENT_HOUSE = \"apartmentHouse\", \r\n OTHER = \"other\",\r\n}\r\n\r\nexport enum ESubscriptionLevel {\r\n FREE = \"FREE\",\r\n BASIC = \"BASIC\",\r\n}\r\n\r\nexport enum ESearchStorageKey {\r\n SERVICE_PROVIDERS_SERVICE_ID = \"SERVICE_PROVIDERS_SERVICE_ID\",\r\n SERVICE_PROVIDERS_OPERATOR_ID = \"SERVICE_PROVIDERS_OPERATOR_ID\",\r\n SERVICE_PROVIDERS_LOCATION_ID = \"SERVICE_PROVIDERS_LOCATION_ID\",\r\n SERVICE_PROVIDERS_SUBSCRIPTION_LEVEL = \"SERVICE_PROVIDERS_SUBSCRIPTION_LEVEL\",\r\n SERVICE_PROVIDERS_PAYMENT_METHOD = \"SERVICE_PROVIDERS_PAYMENT_METHOD\",\r\n \r\n OFFER_REQUEST_SERVICE_ID = \"OFFER_REQUEST_SERVICE_ID\",\r\n OFFER_REQUEST_OPERATOR_ID = \"OFFER_REQUEST_OPERATOR_ID\",\r\n\r\n LOG_ITEMS_SEARCH = \"LOG_ITEMS_SEARCH\",\r\n\r\n OFFER_REQUEST_ACCESS_SEARCH = \"OFFER_REQUEST_ACCESS_SEARCH\",\r\n\r\n}\r\n\r\nexport enum ETags {\r\n NORMAL = \"normal\",\r\n UUTISET = \"uutiset\",\r\n FRONTPAGE = \"frontPage\",\r\n}\r\n\r\nexport enum EPaymentMethod {\r\n MONTH = \"MONTH\",\r\n MICRO = \"MICRO\"\r\n}\r\n\r\nexport enum EEvents {\r\n OFFER_REQUEST_VIEW = \"OFFER_REQUEST_VIEW\",\r\n OFFER_REQUEST_VIEW_PIN = \"OFFER_REQUEST_VIEW_PIN\",\r\n OFFER_REQUEST_SAVE = \"OFFER_REQUEST_SAVE\",\r\n OFFER_REQUEST_SAVE_LOCAL = \"OFFER_REQUEST_SAVE_LOCAL\",\r\n OFFER_REQUEST_DELETE = \"OFFER_REQUEST_DELETE\",\r\n OFFER_REQUEST_UPDATE = \"OFFER_REQUEST_UPDATE\",\r\n OFFER_REQUEST_UPDATE_PIN = \"OFFER_REQUEST_UPDATE_PIN\",\r\n OFFER_REQUEST_ARCHIVE_PIN = \"OFFER_REQUEST_ARCHIVE_PIN\",\r\n OFFER_REQUEST_LIST = \"OFFER_REQUEST_LIST\",\r\n OFFER_REQUEST_ADD_ACCESS = \"OFFER_REQUEST_ADD_ACCESS\",\r\n USER_ACCEPT_TERMS_OF_USE = \"USER_ACCEPT_TERMS_OF_USE\",\r\n ORGANIZATION_CONFIRM_BILLING = \"ORGANIZATION_CONFIRM_BILLING\",\r\n AUTH_LOGIN = \"AUTH_LOGIN\",\r\n AUTH_LOGOUT = \"AUTH_LOGOUT\"\r\n}\r\n\r\nexport enum ELanguage {\r\n FI = \"fi\",\r\n EN = \"en\",\r\n SE = \"se\"\r\n}","import { EOrganizationLevel, EPaymentMethod, ESubscriptionLevel } from '../enums';\r\nimport { ELanguage } from '../i18n';\r\nimport { IOrganization } from '../interfaces/domain';\r\nimport { ERoute } from './Routes';\r\n\r\ninterface IAuthUser {\r\n id: number;\r\n firebaseUserId: string;\r\n organization: IOrganization;\r\n name: string;\r\n email: string;\r\n isTermsOfUseAccepted: boolean;\r\n preferredLanguage: ELanguage;\r\n}\r\n\r\nexport class AuthUser implements IAuthUser {\r\n public id: number;\r\n public firebaseUserId: string;\r\n public organization: IOrganization;\r\n public name: string;\r\n public email: string;\r\n public isTermsOfUseAccepted: boolean;\r\n public preferredLanguage: ELanguage;\r\n\r\n public constructor(authUser: IAuthUser) {\r\n this.id = authUser.id;\r\n this.firebaseUserId = authUser.firebaseUserId\r\n this.organization = authUser.organization;\r\n this.name = authUser.name;\r\n this.email = authUser.email;\r\n this.isTermsOfUseAccepted = authUser.isTermsOfUseAccepted || false;\r\n this.preferredLanguage = authUser.preferredLanguage;\r\n }\r\n\r\n public get routes(): ERoute[] {\r\n const routes: ERoute[] = [\r\n ERoute.ORGANIZATION_USER,\r\n ERoute.USER,\r\n ERoute.USERS,\r\n ERoute.ORGANIZATIONS_ME,\r\n ERoute.SETTINGS,\r\n \r\n ];\r\n\r\n const { isPrimary, isOperator, isBasic, isFree } = this;\r\n\r\n if(isFree) {\r\n routes.push.apply(routes, [\r\n ERoute.SUBSCRIPTION_EXPIRED\r\n ]);\r\n }\r\n\r\n if(isPrimary) {\r\n routes.push.apply(routes, [\r\n ERoute.ADMIN,\r\n ERoute.OPERATORS,\r\n ERoute.OPERATOR,\r\n ERoute.LOG_ITEMS\r\n ]);\r\n }\r\n\r\n if(isPrimary || isOperator) {\r\n routes.push.apply(routes, [\r\n ERoute.SERVICE_PROVIDERS,\r\n ERoute.SERVICE_PROVIDER,\r\n ERoute.SERVICE_PROVIDER_PROVIDER,\r\n ERoute.SERVICES,\r\n ERoute.SERVICE,\r\n ERoute.SERVICES_SERVICE,\r\n ERoute.SERVICE_PROVIDER_FORM,\r\n ERoute.FEEDBACKS,\r\n ERoute.LOCATIONS,\r\n ERoute.LOCATION,\r\n ERoute.CONTENT,\r\n ERoute.CONTENTS,\r\n ERoute.CONTENTS_CONTENT,\r\n ERoute.OFFER_REQUEST_ACCESS,\r\n ]);\r\n }\r\n\r\n if(isPrimary || isOperator || isBasic) {\r\n routes.push.apply(routes, [\r\n ERoute.OFFER_REQUESTS,\r\n ERoute.OFFER_REQUEST,\r\n ERoute.OFFER_REQUEST_OFFER\r\n ]);\r\n }\r\n\r\n return routes;\r\n }\r\n\r\n public get isPrimary(): boolean {\r\n return this.organization.level === EOrganizationLevel.PRIMARY;\r\n }\r\n\r\n public get isOperator(): boolean {\r\n return this.organization.level === EOrganizationLevel.OPERATOR;\r\n }\r\n\r\n public get isServiceProvider(): boolean {\r\n return this.organization.level === EOrganizationLevel.SERVICE_PROVIDER;\r\n }\r\n\r\n public get isBasic(): boolean {\r\n return this.isServiceProvider && this.organization.subscriptionLevel === ESubscriptionLevel.BASIC;\r\n }\r\n\r\n public get isFree(): boolean {\r\n return this.isServiceProvider && this.organization.subscriptionLevel === ESubscriptionLevel.FREE;\r\n }\r\n\r\n public get isMicro(): boolean {\r\n return this.isServiceProvider && this.organization.paymentMethod === EPaymentMethod.MICRO;\r\n }\r\n\r\n public get redirect(): ERoute {\r\n if(this.isPrimary || this.isOperator || this.isBasic) {\r\n return ERoute.OFFER_REQUESTS;\r\n }\r\n return ERoute.SUBSCRIPTION_EXPIRED;\r\n }\r\n\r\n public get allowSearch(): boolean {\r\n return this.isPrimary || this.isOperator || this.isBasic;\r\n }\r\n\r\n public hasOfferRequestAccess(offerRequestId: string): boolean {\r\n if (this.organization.offerRequestAccess){\r\n return this.organization.offerRequestAccess?.includes(parseInt(offerRequestId));\r\n }\r\n return false;\r\n }\r\n\r\n public addOfferRequestAccess(offerRequestId: string): void {\r\n let offerRequestAccess = this.organization.offerRequestAccess;\r\n if (!offerRequestAccess) {\r\n offerRequestAccess = [];\r\n }\r\n offerRequestAccess.push(parseInt(offerRequestId));\r\n this.organization.offerRequestAccess = offerRequestAccess;\r\n }\r\n\r\n set isBillingConfirmed(isBillingConfirmed: boolean) {\r\n this.organization.isBillingConfirmed = isBillingConfirmed;\r\n }\r\n\r\n}\r\n","export enum ActionTypes {\r\n // Auth\r\n AUTH_START,\r\n AUTH_SUCCESS,\r\n AUTH_FAIL,\r\n\r\n AUTH_LOGOUT_START,\r\n AUTH_LOGOUT_SUCCESS,\r\n AUTH_LOGOUT_FAIL,\r\n\r\n AUTH_GET_CUSTOM_TOKEN_START,\r\n AUTH_GET_CUSTOM_TOKEN_SUCCESS,\r\n AUTH_GET_CUSTOM_TOKEN_FAIL,\r\n\r\n AUTH_GET_START,\r\n AUTH_GET_SUCCESS,\r\n AUTH_GET_FAIL,\r\n\r\n AUTH_ADD_OFFER_REQUEST_ACCESS,\r\n\r\n AUTH_SET_BILLING_CONFIRMED,\r\n\r\n AUTH_SET_ORGANIZATION,\r\n\r\n // Offerrequests\r\n OFFER_REQUEST_GET_START,\r\n OFFER_REQUEST_GET_SUCCESS,\r\n OFFER_REQUEST_GET_FAIL,\r\n\r\n OFFER_REQUEST_LIST_START,\r\n OFFER_REQUEST_LIST_SUCCESS,\r\n OFFER_REQUEST_LIST_FAIL,\r\n\r\n OFFER_REQUEST_DELETE_START,\r\n OFFER_REQUEST_DELETE_SUCCESS,\r\n OFFER_REQUEST_DELETE_FAIL,\r\n\r\n OFFER_REQUEST_SAVE_START,\r\n OFFER_REQUEST_SAVE_SUCCESS,\r\n OFFER_REQUEST_SAVE_FAIL,\r\n\r\n OFFER_REQUEST_UPDATE_START,\r\n OFFER_REQUEST_UPDATE_SUCCESS,\r\n OFFER_REQUEST_UPDATE_FAIL,\r\n\r\n OFFER_REQUEST_CLEAR,\r\n\r\n OFFER_REQUEST_CUSTOMER_GET_START,\r\n OFFER_REQUEST_CUSTOMER_GET_SUCCESS,\r\n OFFER_REQUEST_CUSTOMER_GET_FAIL,\r\n\r\n OFFER_REQUEST_CUSTOMER_UPDATE_START,\r\n OFFER_REQUEST_CUSTOMER_UPDATE_SUCCESS,\r\n OFFER_REQUEST_CUSTOMER_UPDATE_FAIL,\r\n\r\n OFFER_REQUEST_CUSTOMER_ARCHIVE_START,\r\n OFFER_REQUEST_CUSTOMER_ARCHIVE_SUCCESS,\r\n OFFER_REQUEST_CUSTOMER_ARCHIVE_FAIL,\r\n\r\n OFFER_REQUEST_ADD_ACCESS_START,\r\n OFFER_REQUEST_ADD_ACCESS_SUCCESS,\r\n OFFER_REQUEST_ADD_ACCESS_FAIL,\r\n OFFER_REQUEST_ADD_ACCESS_CLEAR,\r\n\r\n OFFER_REQUEST_ACCESS_LIST_START,\r\n OFFER_REQUEST_ACCESS_LIST_SUCCESS,\r\n OFFER_REQUEST_ACCESS_LIST_FAIL,\r\n\r\n\r\n // Serviceproviders\r\n SERVICE_PROVIDER_GET_START,\r\n SERVICE_PROVIDER_GET_SUCCESS,\r\n SERVICE_PROVIDER_GET_FAIL,\r\n\r\n SERVICE_PROVIDER_LIST_START,\r\n SERVICE_PROVIDER_LIST_SUCCESS,\r\n SERVICE_PROVIDER_LIST_FAIL,\r\n\r\n SERVICE_PROVIDER_DELETE_START,\r\n SERVICE_PROVIDER_DELETE_SUCCESS,\r\n SERVICE_PROVIDER_DELETE_FAIL,\r\n\r\n SERVICE_PROVIDER_SAVE_START,\r\n SERVICE_PROVIDER_SAVE_SUCCESS,\r\n SERVICE_PROVIDER_SAVE_FAIL,\r\n\r\n SERVICE_PROVIDER_UPDATE_START,\r\n SERVICE_PROVIDER_UPDATE_SUCCESS,\r\n SERVICE_PROVIDER_UPDATE_FAIL,\r\n\r\n CLEAR_SERVICEPROVIDER,\r\n\r\n // ServiceProviderForm\r\n SERVICE_PROVIDER_FORM_GET_START,\r\n SERVICE_PROVIDER_FORM_GET_SUCCESS,\r\n SERIVCE_PROVIDER_FORM_GET_FAIL,\r\n\r\n SERVICE_PROVIDER_FORM_LIST_START,\r\n SERVICE_PROVIDER_FORM_LIST_SUCCESS,\r\n SERVICE_PROVIDER_FORM_LIST_FAIL,\r\n\r\n SERVICE_PROVIDER_FORM_DELETE_START,\r\n SERVICE_PROVIDER_FORM_DELETE_SUCCESS,\r\n SERVICE_PROVIDER_FORM_DELETE_FAIL,\r\n\r\n // Service\r\n SERVICE_GET_START,\r\n SERVICE_GET_SUCCESS,\r\n SERVICE_GET_FAIL,\r\n\r\n SERVICE_LIST_START,\r\n SERVICE_LIST_SUCCESS,\r\n SERVICE_LIST_FAIL,\r\n\r\n SERVICE_DELETE_START,\r\n SERVICE_DELETE_SUCCESS,\r\n SERVICE_DELETE_FAIL,\r\n\r\n SERVICE_SAVE_START,\r\n SERVICE_SAVE_SUCCESS,\r\n SERVICE_SAVE_FAIL,\r\n\r\n SERVICE_UPDATE_START,\r\n SERVICE_UPDATE_SUCCESS,\r\n SERVICE_UPDATE_FAIL,\r\n\r\n SERVICE_CLEAR,\r\n\r\n SERVICE_TOKEN_GET_START,\r\n SERVICE_TOKEN_GET_SUCCESS,\r\n SERVICE_TOKEN_GET_FAIL,\r\n\r\n SERVICE_SEND_START,\r\n SERVICE_SEND_SUCCESS,\r\n SERVICE_SEND_FAIL,\r\n\r\n UPDATE_SERVICE_STATUS_START,\r\n UPDATE_SERVICE_STATUS_SUCCESS,\r\n UPDATE_SERVICE_STATUS_FAIL,\r\n\r\n // Feedback\r\n FEEDBACK_GET_START,\r\n FEEDBACK_GET_SUCCESS,\r\n FEEDBACK_GET_FAIL,\r\n\r\n FEEDBACK_LIST_START,\r\n FEEDBACK_LIST_SUCCESS,\r\n FEEDBACK_LIST_FAIL,\r\n\r\n FEEDBACK_DELETE_START,\r\n FEEDBACK_DELETE_SUCCESS,\r\n FEEDBACK_DELETE_FAIL,\r\n\r\n FEEDBACK_SAVE_START,\r\n FEEDBACK_SAVE_SUCCESS,\r\n FEEDBACK_SAVE_FAIL,\r\n\r\n FEEDBACK_UPDATE_START,\r\n FEEDBACK_UPDATE_SUCCESS,\r\n FEEDBACK_UPDATE_FAIL,\r\n\r\n FEEDBACK_CLEAR,\r\n\r\n FEEDBACK_TOKEN_GET_START,\r\n FEEDBACK_TOKEN_GET_SUCCESS,\r\n FEEDBACK_TOKEN_GET_FAIL,\r\n\r\n FEEDBACK_SEND_START,\r\n FEEDBACK_SEND_SUCCESS,\r\n FEEDBACK_SEND_FAIL,\r\n\r\n FEEDBACK_UPDATE_STATUS_START,\r\n FEEDBACK_UPDATE_STATUS_SUCCESS,\r\n FEEDBACK_UPDATE_STATUS_FAIL,\r\n\r\n FEEDBACK_GET_FORM_DATA_START,\r\n FEEDBACK_GET_FORM_DATA_SUCCESS,\r\n FEEDBACK_GET_FORM_DATA_FAIL,\r\n\r\n // Users\r\n USER_GET_START,\r\n USER_GET_SUCCESS,\r\n USER_GET_FAIL,\r\n\r\n USER_LIST_START,\r\n USER_LIST_SUCCESS,\r\n USER_LIST_FAIL,\r\n\r\n USER_SAVE_START,\r\n USER_SAVE_SUCCESS,\r\n USER_SAVE_FAIL,\r\n\r\n USER_UPDATE_START,\r\n USER_UPDATE_SUCCESS,\r\n USER_UPDATE_FAIL,\r\n\r\n USER_ACCEPT_TERMS_OF_USE_START,\r\n USER_ACCEPT_TERMS_OF_USE_SUCCESS,\r\n USER_ACCEPT_TERMS_OF_USE_FAIL,\r\n\r\n USER_CHANGE_LANGUAGE_START,\r\n USER_CHANGE_LANGUAGE_SUCCESS,\r\n USER_CHANGE_LANGUAGE_FAIL,\r\n\r\n\r\n USER_CLEAR,\r\n\r\n // Attachments\r\n ATTACHMENT_CLEAR,\r\n\r\n ATTACHMENT_UPLOAD_START,\r\n ATTACHMENT_UPLOAD_SUCCESS,\r\n ATTACHMENT_UPLOAD_FAIL,\r\n\r\n // ORGANIZATIONS\r\n ORGANIZATION_CLEAR,\r\n\r\n ORGANIZATION_GET_MY_START,\r\n ORGANIZATION_GET_MY_SUCCESS,\r\n ORGANIZATION_GET_MY_FAIL,\r\n\r\n ORGANIZATION_EXPORT_START,\r\n ORGANIZATION_EXPORT_SUCCESS,\r\n ORGANIZATION_EXPORT_FAIL,\r\n\r\n ORGANIZATION_UPDATE_MY_START,\r\n ORGANIZATION_UPDATE_MY_SUCCESS,\r\n ORGANIZATION_UPDATE_MY_FAIL,\r\n\r\n ORGANIZATION_UPDATE_IMAGE_START,\r\n ORGANIZATION_UPDATE_IMAGE_FAIL,\r\n ORGANIZATION_UPDATE_IMAGE_SUCCESS,\r\n\r\n ORGANIZATION_DELETE_IMAGE_START,\r\n ORGANIZATION_DELETE_IMAGE_FAIL,\r\n ORGANIZATION_DELETE_IMAGE_SUCCESS,\r\n\r\n ORGANIZATION_GET_START,\r\n ORGANIZATION_GET_SUCCESS,\r\n ORGANIZATION_GET_FAIL,\r\n\r\n ORGANIZATION_LIST_START,\r\n ORGANIZATION_LIST_SUCCESS,\r\n ORGANIZATION_LIST_FAIL,\r\n\r\n ORGANIZATION_SAVE_START,\r\n ORGANIZATION_SAVE_SUCCESS,\r\n ORGANIZATION_SAVE_FAIL,\r\n\r\n ORGANIZATION_UPDATE_START,\r\n ORGANIZATION_UPDATE_SUCCESS,\r\n ORGANIZATION_UPDATE_FAIL,\r\n\r\n ORGANIZATION_CONFIRM_BILLING_START,\r\n ORGANIZATION_CONFIRM_BILLING_SUCCESS,\r\n ORGANIZATION_CONFIRM_BILLING_FAIL,\r\n\r\n // Locations\r\n LOCATION_GET_START,\r\n LOCATION_GET_SUCCESS,\r\n LOCATION_GET_FAIL,\r\n\r\n LOCATION_LIST_START,\r\n LOCATION_LIST_SUCCESS,\r\n LOCATION_LIST_FAIL,\r\n\r\n LOCATION_DELETE_START,\r\n LOCATION_DELETE_SUCCESS,\r\n LOCATION_DELETE_FAIL,\r\n\r\n LOCATION_SAVE_START,\r\n LOCATION_SAVE_SUCCESS,\r\n LOCATION_SAVE_FAIL,\r\n\r\n LOCATION_UPDATE_START,\r\n LOCATION_UPDATE_SUCCESS,\r\n LOCATION_UPDATE_FAIL,\r\n\r\n LOCATION_CLEAR,\r\n\r\n //Content\r\n CONTENT_GET_START,\r\n CONTENT_GET_SUCCESS,\r\n CONTENT_GET_FAIL,\r\n CONTENT_LIST_START,\r\n CONTENT_LIST_SUCCESS,\r\n CONTENT_LIST_FAIL,\r\n CONTENT_DELETE_START,\r\n CONTENT_DELETE_SUCCESS,\r\n CONTENT_DELETE_FAIL,\r\n CONTENT_SAVE_START,\r\n CONTENT_SAVE_SUCCESS,\r\n CONTENT_SAVE_FAIL,\r\n CONTENT_UPDATE_START,\r\n CONTENT_UPDATE_SUCCESS,\r\n CONTENT_UPDATE_FAIL,\r\n CONTENT_CLEAR,\r\n\r\n //Geolocation\r\n GEOLOCATION_GET_START,\r\n GEOLOCATION_GET_SUCCESS,\r\n GEOLOCATION_GET_FAIL,\r\n\r\n //LogItem\r\n LOG_ITEM_LIST_START,\r\n LOG_ITEM_LIST_SUCCESS,\r\n LOG_ITEM_LIST_FAIL,\r\n LOG_ITEM_LIST_CLEAR,\r\n}\r\n","import { AxiosResponse } from \"axios\";\r\nimport { Dispatch } from \"redux\";\r\nimport axios from \"../../axios\";\r\nimport { AuthUser } from \"../../classes/AuthUser\";\r\nimport firebase from \"../../firebase\";\r\nimport { IAuthAction, IOrganization } from \"../../interfaces\";\r\nimport { ActionTypes } from \"./actionTypes\";\r\nimport ReactGA from 'react-ga4';\r\n\r\nconst apiPath = \"/json/auth\";\r\n\r\nconst authStart = (): IAuthAction => {\r\n return {\r\n type: ActionTypes.AUTH_START,\r\n };\r\n};\r\n\r\nconst authSuccess = (\r\n user: AuthUser | null,\r\n firebaseToken: string\r\n): IAuthAction => {\r\n return {\r\n type: ActionTypes.AUTH_SUCCESS,\r\n user,\r\n };\r\n};\r\n\r\nconst authFail = (error: string): IAuthAction => {\r\n return {\r\n type: ActionTypes.AUTH_FAIL,\r\n error,\r\n };\r\n};\r\n\r\nexport const auth = (email: string, password: string, preferredLanguage: string) => {\r\n return async (dispatch: Dispatch) => {\r\n dispatch(authStart());\r\n try {\r\n await firebase\r\n .auth()\r\n .signInWithEmailAndPassword(email, password)\r\n .then(async (response) => {\r\n if (response.user) {\r\n const tokenResult = await response.user.getIdTokenResult();\r\n if (tokenResult) {\r\n const res = await axios.post(`${apiPath}/login`, { preferredLanguage });\r\n\r\n ReactGA.event({category: \"auth\", action: \"login\",});\r\n\r\n dispatch(authSuccess(new AuthUser(res.data), tokenResult.token));\r\n } else {\r\n dispatch(authFail(\"error\"));\r\n }\r\n } else {\r\n dispatch(authFail(\"error\"));\r\n }\r\n })\r\n .catch((error) => {\r\n dispatch(authFail(error.message));\r\n });\r\n } catch ({ response }) {\r\n dispatch(authFail((response as AxiosResponse).data));\r\n }\r\n };\r\n};\r\n\r\nconst logoutStart = (): IAuthAction => {\r\n return {\r\n type: ActionTypes.AUTH_LOGOUT_START,\r\n };\r\n};\r\n\r\nconst logoutSuccess = (): IAuthAction => {\r\n return {\r\n type: ActionTypes.AUTH_LOGOUT_SUCCESS,\r\n };\r\n};\r\n\r\nconst logoutFail = (error: string): IAuthAction => {\r\n return {\r\n type: ActionTypes.AUTH_LOGOUT_FAIL,\r\n error,\r\n };\r\n};\r\n\r\nexport const logout = () => {\r\n return async (dispatch: Dispatch) => {\r\n dispatch(logoutStart());\r\n try {\r\n await axios.post(`${apiPath}/logout`);\r\n firebase.auth().signOut();\r\n dispatch(logoutSuccess());\r\n } catch (error) {\r\n dispatch(logoutFail(error as string));\r\n }\r\n };\r\n};\r\n\r\nconst getCurrentUserStart = (): IAuthAction => {\r\n return {\r\n type: ActionTypes.AUTH_GET_START,\r\n };\r\n};\r\n\r\nconst getCurrentUserSuccess = (user: AuthUser | null): IAuthAction => {\r\n return {\r\n type: ActionTypes.AUTH_GET_SUCCESS,\r\n user,\r\n };\r\n};\r\n\r\nconst getCurrentUserFail = (error: string): IAuthAction => {\r\n return {\r\n type: ActionTypes.AUTH_GET_FAIL,\r\n error,\r\n };\r\n};\r\n\r\nexport const getCurrentUser = () => {\r\n return async (dispatch: Dispatch) => {\r\n dispatch(getCurrentUserStart());\r\n try {\r\n const res = await axios.post(`${apiPath}/login`);\r\n dispatch(getCurrentUserSuccess(new AuthUser(res.data)));\r\n } catch ({ response }) {\r\n dispatch(getCurrentUserFail((response as AxiosResponse).data));\r\n }\r\n };\r\n};\r\n\r\nconst getCustomTokenStart = (): IAuthAction => {\r\n return {\r\n type: ActionTypes.AUTH_GET_CUSTOM_TOKEN_START,\r\n };\r\n};\r\n\r\nconst getCustomTokenSuccess = (customToken: string): IAuthAction => {\r\n return {\r\n type: ActionTypes.AUTH_GET_CUSTOM_TOKEN_SUCCESS,\r\n customToken\r\n };\r\n};\r\n\r\nconst getCustomTokenFail = (error: string): IAuthAction => {\r\n return {\r\n type: ActionTypes.AUTH_GET_CUSTOM_TOKEN_FAIL,\r\n error,\r\n };\r\n};\r\n\r\nexport const getCustomToken = (token: string) => {\r\n return async (dispatch: Dispatch) => {\r\n dispatch(getCustomTokenStart());\r\n try {\r\n const resp = await axios.get(`${apiPath}/getCustomToken?token=${token}`);\r\n dispatch(getCustomTokenSuccess(resp.data));\r\n } catch ({ response }) {\r\n dispatch(getCustomTokenFail((response as AxiosResponse).data));\r\n }\r\n };\r\n};\r\n\r\nexport const addAuthUserOfferRequestAccess = (offerRequestId: string): IAuthAction => {\r\n return {\r\n type: ActionTypes.AUTH_ADD_OFFER_REQUEST_ACCESS,\r\n offerRequestId\r\n };\r\n};\r\n\r\nexport const setAuthUserBillingConfirmed = (): IAuthAction => {\r\n return {\r\n type: ActionTypes.AUTH_SET_BILLING_CONFIRMED,\r\n };\r\n};\r\n\r\nexport const setAuthUserOrganization = (organization: IOrganization): IAuthAction => {\r\n return {\r\n type: ActionTypes.AUTH_SET_ORGANIZATION,\r\n organization\r\n };\r\n};","import { ILocationAction } from './../../interfaces/state';\r\nimport { Dispatch } from \"redux\";\r\nimport axios from \"../../axios\";\r\nimport { ILocation } from \"../../interfaces/domain\";\r\nimport { ActionTypes } from \"./actionTypes\";\r\nimport { AxiosResponse } from 'axios';\r\n\r\n\r\nexport const JSON_LOCATIONS = \"/json/locations\";\r\nexport const JSON_LOCATIONS_ADD = JSON_LOCATIONS + \"/add\";\r\nexport const JSON_LOCATIONS_UPDATE = JSON_LOCATIONS + \"/update\";\r\nexport const JSON_LOCATIONS_LIST = JSON_LOCATIONS + \"/list\";\r\n\r\ntype TAction = ILocationAction;\r\nconst apiPath = '/json/locations';\r\n\r\nconst getLocationStart = (): TAction => {\r\n return {\r\n type: ActionTypes.LOCATION_GET_START,\r\n };\r\n};\r\n\r\nconst getLocationSuccess = (location: ILocation): TAction => {\r\n return {\r\n type: ActionTypes.LOCATION_GET_SUCCESS,\r\n location,\r\n };\r\n};\r\n\r\nconst getLocationFail = (error: string): TAction => {\r\n return {\r\n type: ActionTypes.LOCATION_GET_FAIL,\r\n error,\r\n };\r\n};\r\n\r\nexport const getLocation = (id: string) => {\r\n return async (dispatch: Dispatch) => {\r\n dispatch(getLocationStart());\r\n try {\r\n const res = await axios.get(`${apiPath}/get?id=${id}`);\r\n dispatch(getLocationSuccess(res.data));\r\n return res.data;\r\n } catch ({ response }) {\r\n dispatch(getLocationFail((response as AxiosResponse).data));\r\n return null;\r\n }\r\n };\r\n};\r\n\r\nconst deleteLocationStart = (): TAction => {\r\n return {\r\n type: ActionTypes.LOCATION_DELETE_START,\r\n };\r\n};\r\n\r\nconst deleteLocationSuccess = (location: ILocation): TAction => {\r\n return {\r\n type: ActionTypes.LOCATION_DELETE_SUCCESS,\r\n location,\r\n };\r\n};\r\n\r\nconst deleteLocationFail = (error: string): TAction => {\r\n return {\r\n type: ActionTypes.LOCATION_DELETE_FAIL,\r\n error,\r\n };\r\n};\r\n\r\nexport const deleteLocation = (id: string) => {\r\n return async (dispatch: Dispatch) => {\r\n dispatch(deleteLocationStart());\r\n try {\r\n const res = await axios.delete(`${apiPath}/delete?id=${id}`);\r\n dispatch(deleteLocationSuccess(res.data));\r\n return res.data;\r\n } catch ({ response }) {\r\n dispatch(deleteLocationFail((response as AxiosResponse).data));\r\n return null;\r\n }\r\n };\r\n};\r\n\r\nconst listLocationsStart = (): TAction => {\r\n return {\r\n type: ActionTypes.LOCATION_LIST_START,\r\n };\r\n};\r\n\r\nconst listLocationsSuccess = (locations: Array): TAction => {\r\n return {\r\n type: ActionTypes.LOCATION_LIST_SUCCESS,\r\n locations,\r\n };\r\n};\r\n\r\nconst listLocationsFail = (error: string): TAction => {\r\n return {\r\n type: ActionTypes.LOCATION_LIST_FAIL,\r\n error,\r\n };\r\n};\r\n\r\nexport const listLocations = (includeServices?: boolean, operatorId?: string) => {\r\n return async (dispatch: Dispatch) => {\r\n dispatch(listLocationsStart());\r\n try {\r\n let params = [];\r\n if (includeServices) params.push(\"includeServices=true\");\r\n if (operatorId) params.push(`operatorId=${operatorId}`);\r\n\r\n const res = await axios.get(`${apiPath}/list${params.length ? `?${params.join('&')}` : ''}`);\r\n dispatch(listLocationsSuccess(res.data));\r\n return res.data;\r\n } catch ({ response }) {\r\n dispatch(listLocationsFail((response as AxiosResponse).data));\r\n return null;\r\n }\r\n };\r\n};\r\n\r\nconst saveLocationStart = (): TAction => {\r\n return {\r\n type: ActionTypes.LOCATION_SAVE_START,\r\n };\r\n};\r\n\r\nconst saveLocationSuccess = (location: ILocation): TAction => {\r\n return {\r\n type: ActionTypes.LOCATION_SAVE_SUCCESS,\r\n location,\r\n };\r\n};\r\n\r\nconst saveLocationFail = (error: string): TAction => {\r\n return {\r\n type: ActionTypes.LOCATION_SAVE_FAIL,\r\n error,\r\n };\r\n};\r\n\r\nexport const saveLocation = (service: ILocation) => {\r\n return async (dispatch: Dispatch) => {\r\n dispatch(saveLocationStart());\r\n try {\r\n const res = await axios.post(`${apiPath}/add`, service);\r\n dispatch(saveLocationSuccess(res.data));\r\n } catch ({ response }) {\r\n dispatch(saveLocationFail((response as AxiosResponse).data));\r\n }\r\n };\r\n};\r\n\r\nconst updateLocationStart = (): TAction => {\r\n return {\r\n type: ActionTypes.LOCATION_UPDATE_START,\r\n };\r\n};\r\n\r\nconst updateLocationSuccess = (location: ILocation): TAction => {\r\n return {\r\n type: ActionTypes.LOCATION_UPDATE_SUCCESS,\r\n location,\r\n };\r\n};\r\n\r\nconst updateLocationFail = (error: string): TAction => {\r\n return {\r\n type: ActionTypes.LOCATION_UPDATE_FAIL,\r\n error,\r\n };\r\n};\r\n\r\nexport const updateLocation = (service: ILocation) => {\r\n return async (dispatch: Dispatch) => {\r\n dispatch(updateLocationStart());\r\n try {\r\n const res = await axios.put(`${apiPath}/update`, service);\r\n dispatch(updateLocationSuccess(res.data));\r\n } catch ({ response }) {\r\n dispatch(updateLocationFail((response as AxiosResponse).data));\r\n }\r\n };\r\n};\r\n\r\nexport const clearLocation = () => {\r\n return {\r\n type: ActionTypes.LOCATION_CLEAR,\r\n };\r\n};\r\n","import { IOfferRequest, IOfferRequestAccess } from \"../../interfaces/domain\";\r\nimport axios from \"../../axios\";\r\nimport { ActionTypes } from \"./actionTypes\";\r\n\r\nimport { IAppState, IOfferRequestAction } from \"../../interfaces\";\r\nimport { Dispatch } from \"redux\";\r\nimport { ThunkAction } from \"redux-thunk\";\r\nimport { TDispatch } from \"../..\";\r\nimport { AxiosResponse } from \"axios\";\r\n\r\n\r\nconst apiPath = '/json/offerrequests'\r\n\r\nconst getOfferRequestStart = (): IOfferRequestAction => {\r\n return {\r\n type: ActionTypes.OFFER_REQUEST_GET_START,\r\n };\r\n};\r\n\r\nconst getOfferRequestSuccess = (offerrequest: IOfferRequest): IOfferRequestAction => {\r\n return {\r\n type: ActionTypes.OFFER_REQUEST_GET_SUCCESS,\r\n offerRequest: offerrequest,\r\n };\r\n};\r\n\r\nconst getOfferRequestFail = (error: string): IOfferRequestAction => {\r\n return {\r\n type: ActionTypes.OFFER_REQUEST_GET_FAIL,\r\n error,\r\n };\r\n};\r\n\r\nexport const getOfferRequest = (id: string) => {\r\n return async (dispatch: Dispatch) => {\r\n dispatch(getOfferRequestStart());\r\n try {\r\n const res = await axios.get(`${apiPath}/get?id=${id}`);\r\n dispatch(getOfferRequestSuccess(res.data));\r\n return res.data;\r\n } catch ({ response }) {\r\n dispatch(getOfferRequestFail((response as AxiosResponse).data));\r\n return null;\r\n }\r\n };\r\n};\r\n\r\nconst deleteOfferRequestStart = (): IOfferRequestAction => {\r\n return {\r\n type: ActionTypes.OFFER_REQUEST_DELETE_START,\r\n };\r\n};\r\n\r\nconst deleteOfferRequestSuccess = (offerrequest: IOfferRequest): IOfferRequestAction => {\r\n return {\r\n type: ActionTypes.OFFER_REQUEST_DELETE_SUCCESS,\r\n offerRequest: offerrequest,\r\n };\r\n};\r\n\r\nconst deleteOfferRequestFail = (error: string): IOfferRequestAction => {\r\n return {\r\n type: ActionTypes.OFFER_REQUEST_DELETE_FAIL,\r\n error,\r\n };\r\n};\r\n\r\nexport const deleteOfferRequest = (id: string) => {\r\n return async (dispatch: Dispatch) => {\r\n dispatch(deleteOfferRequestStart());\r\n try {\r\n const res = await axios.delete(`${apiPath}/delete?id=${id}`);\r\n dispatch(deleteOfferRequestSuccess(res.data));\r\n return res.data;\r\n } catch ({ response }) {\r\n dispatch(deleteOfferRequestFail((response as AxiosResponse).data));\r\n return null;\r\n }\r\n };\r\n};\r\n\r\nconst listOfferRequestsStart = (): IOfferRequestAction => {\r\n return {\r\n type: ActionTypes.OFFER_REQUEST_LIST_START,\r\n };\r\n};\r\n\r\nconst listOfferRequestsSuccess = (offerrequests: Array): IOfferRequestAction => {\r\n return {\r\n type: ActionTypes.OFFER_REQUEST_LIST_SUCCESS,\r\n offerrequests,\r\n };\r\n};\r\n\r\nconst listOfferRequestsFail = (error: string): IOfferRequestAction => {\r\n return {\r\n type: ActionTypes.OFFER_REQUEST_LIST_FAIL,\r\n error,\r\n };\r\n};\r\n\r\ntype TListOfferRequestPromise = Promise;\r\ntype TListOfferRequestAction = ThunkAction<\r\n TListOfferRequestPromise,\r\n IAppState,\r\n any,\r\n IOfferRequestAction\r\n>;\r\n\r\nexport interface IOfferRequestsSearchOptions {\r\n operatorId?: string;\r\n serviceId?: string;\r\n limit?: boolean;\r\n}\r\n\r\n\r\nexport const listOfferRequests = (options?: IOfferRequestsSearchOptions): TListOfferRequestAction => (\r\n dispatch: TDispatch\r\n): TListOfferRequestPromise => {\r\n dispatch(listOfferRequestsStart());\r\n return axios\r\n .post(`${apiPath}/list`, options)\r\n .then((res) => {\r\n dispatch(listOfferRequestsSuccess(res.data));\r\n return Promise.resolve(res.data);\r\n })\r\n .catch(({ response }) => {\r\n dispatch(listOfferRequestsFail((response as AxiosResponse).data));\r\n return Promise.resolve((response as AxiosResponse).data);\r\n });\r\n};\r\n\r\nconst saveOfferRequestStart = (): IOfferRequestAction => {\r\n return {\r\n type: ActionTypes.OFFER_REQUEST_SAVE_START,\r\n };\r\n};\r\n\r\nconst saveOfferRequestSuccess = (offerrequest: IOfferRequest): IOfferRequestAction => {\r\n return {\r\n type: ActionTypes.OFFER_REQUEST_SAVE_SUCCESS,\r\n offerRequest: offerrequest,\r\n };\r\n};\r\n\r\nconst saveOfferRequestFail = (error: string): IOfferRequestAction => {\r\n return {\r\n type: ActionTypes.OFFER_REQUEST_SAVE_FAIL,\r\n error,\r\n };\r\n};\r\n\r\nexport const saveOfferRequest = (offerrequest: IOfferRequest) => {\r\n return async (dispatch: Dispatch) => {\r\n dispatch(saveOfferRequestStart());\r\n try {\r\n const res = await axios.post(`${apiPath}/addlocal`, offerrequest);\r\n dispatch(saveOfferRequestSuccess(res.data));\r\n } catch ({ response }) {\r\n dispatch(saveOfferRequestFail((response as AxiosResponse).data));\r\n }\r\n };\r\n};\r\n\r\nconst updateOfferRequestStart = (): IOfferRequestAction => {\r\n return {\r\n type: ActionTypes.OFFER_REQUEST_UPDATE_START,\r\n };\r\n};\r\n\r\nconst updateOfferRequestSuccess = (offerrequest: IOfferRequest): IOfferRequestAction => {\r\n return {\r\n type: ActionTypes.OFFER_REQUEST_UPDATE_SUCCESS,\r\n offerRequest: offerrequest,\r\n };\r\n};\r\n\r\nconst updateOfferRequestFail = (error: string): IOfferRequestAction => {\r\n return {\r\n type: ActionTypes.OFFER_REQUEST_UPDATE_FAIL,\r\n error,\r\n };\r\n};\r\n\r\nexport const updateOfferRequest = (offerrequest: IOfferRequest) => {\r\n return async (dispatch: Dispatch) => {\r\n dispatch(updateOfferRequestStart());\r\n try {\r\n const res = await axios.put(`${apiPath}/update`, offerrequest);\r\n dispatch(updateOfferRequestSuccess(res.data));\r\n } catch ({ response }) {\r\n dispatch(updateOfferRequestFail((response as AxiosResponse).data));\r\n }\r\n };\r\n};\r\n\r\nconst getCustomerOfferRequestStart = (): IOfferRequestAction => {\r\n return {\r\n type: ActionTypes.OFFER_REQUEST_CUSTOMER_GET_START,\r\n };\r\n};\r\n\r\nconst getCustomerOfferRequestSuccess = (\r\n offerrequest: IOfferRequest\r\n): IOfferRequestAction => {\r\n return {\r\n type: ActionTypes.OFFER_REQUEST_CUSTOMER_GET_SUCCESS,\r\n offerRequest: offerrequest,\r\n };\r\n};\r\n\r\nconst getCustomerOfferRequestFail = (\r\n error: string\r\n): IOfferRequestAction => {\r\n return {\r\n type: ActionTypes.OFFER_REQUEST_CUSTOMER_GET_FAIL,\r\n error,\r\n };\r\n};\r\n\r\nexport const getCustomerOfferRequest = (email: string, pinCode: string) => {\r\n return async (dispatch: Dispatch) => {\r\n dispatch(getCustomerOfferRequestStart());\r\n try {\r\n const res = await axios.get(`${apiPath}/pin/get?email=${email}&pin=${pinCode}`);\r\n dispatch(getCustomerOfferRequestSuccess(res.data));\r\n return res.data;\r\n } catch ({ response }) {\r\n dispatch(getCustomerOfferRequestFail((response as AxiosResponse).data));\r\n return null;\r\n }\r\n };\r\n};\r\n\r\nconst updateCustomerOfferRequestStart = (): IOfferRequestAction => {\r\n return {\r\n type: ActionTypes.OFFER_REQUEST_CUSTOMER_UPDATE_START,\r\n };\r\n};\r\n\r\nconst updateCustomerOfferRequestSuccess = (\r\n offerrequest: IOfferRequest\r\n): IOfferRequestAction => {\r\n return {\r\n type: ActionTypes.OFFER_REQUEST_CUSTOMER_UPDATE_SUCCESS,\r\n offerRequest: offerrequest,\r\n };\r\n};\r\n\r\nconst updateCustomerOfferRequestFail = (\r\n error: string\r\n): IOfferRequestAction => {\r\n return {\r\n type: ActionTypes.OFFER_REQUEST_CUSTOMER_UPDATE_FAIL,\r\n error,\r\n };\r\n};\r\n\r\nexport const updateCustomerOfferRequest = (\r\n email: string,\r\n pinCode: string,\r\n offerrequest: IOfferRequest\r\n) => {\r\n return async (dispatch: Dispatch) => {\r\n dispatch(updateCustomerOfferRequestStart());\r\n try {\r\n const res = await axios.put(`${apiPath}/pin/update?email=${email}&pin=${pinCode}`, offerrequest);\r\n dispatch(updateCustomerOfferRequestSuccess(res.data));\r\n } catch ({ response }) {\r\n dispatch(updateCustomerOfferRequestFail((response as AxiosResponse).data));\r\n }\r\n };\r\n};\r\n\r\nconst archiveCustomerOfferRequestStart = (): IOfferRequestAction => {\r\n return {\r\n type: ActionTypes.OFFER_REQUEST_CUSTOMER_ARCHIVE_START,\r\n };\r\n};\r\n\r\nconst archiveCustomerOfferRequestSuccess = (\r\n offerrequest: IOfferRequest\r\n): IOfferRequestAction => {\r\n return {\r\n type: ActionTypes.OFFER_REQUEST_CUSTOMER_ARCHIVE_SUCCESS,\r\n offerRequest: offerrequest,\r\n };\r\n};\r\n\r\nconst archiveCustomerOfferRequestFail = (\r\n error: string\r\n): IOfferRequestAction => {\r\n return {\r\n type: ActionTypes.OFFER_REQUEST_CUSTOMER_ARCHIVE_FAIL,\r\n error,\r\n };\r\n};\r\n\r\nexport const archiveCustomerOfferRequest = (email: string, pinCode: string) => {\r\n return async (dispatch: Dispatch) => {\r\n dispatch(archiveCustomerOfferRequestStart());\r\n try {\r\n const res = await axios.put(`${apiPath}/pin/archive?email=${email}&pin=${pinCode}`);\r\n dispatch(archiveCustomerOfferRequestSuccess(res.data));\r\n } catch ({ response }) {\r\n dispatch(archiveCustomerOfferRequestFail((response as AxiosResponse).data));\r\n }\r\n };\r\n};\r\n\r\nconst addAccessOfferRequestStart = (): IOfferRequestAction => {\r\n return {\r\n type: ActionTypes.OFFER_REQUEST_ADD_ACCESS_START,\r\n };\r\n};\r\n\r\nconst addAccessOfferRequestSuccess = (offerRequest: IOfferRequest): IOfferRequestAction => {\r\n return {\r\n type: ActionTypes.OFFER_REQUEST_ADD_ACCESS_SUCCESS,\r\n offerRequest\r\n };\r\n};\r\n\r\nconst addAccessOfferRequestFail = (error: string): IOfferRequestAction => {\r\n return {\r\n type: ActionTypes.OFFER_REQUEST_ADD_ACCESS_FAIL,\r\n error,\r\n };\r\n};\r\n\r\nexport const addAccessOfferRequestClear = (): IOfferRequestAction => {\r\n return {\r\n type: ActionTypes.OFFER_REQUEST_ADD_ACCESS_CLEAR,\r\n };\r\n};\r\n\r\nexport const addAccessOfferRequest = (id: string) => {\r\n return async (dispatch: Dispatch) => {\r\n dispatch(addAccessOfferRequestStart());\r\n try {\r\n const resp = await axios.post(`${apiPath}/access/add?id=${id}`);\r\n dispatch(addAccessOfferRequestSuccess({ id: resp.data }));\r\n } catch ({ response }) {\r\n dispatch(addAccessOfferRequestFail((response as AxiosResponse).data));\r\n }\r\n };\r\n};\r\n\r\nconst listOfferRequestAccessStart = (): IOfferRequestAction => {\r\n return {\r\n type: ActionTypes.OFFER_REQUEST_ACCESS_LIST_START,\r\n };\r\n};\r\n\r\nconst listOfferRequestAccessSuccess = (offerRequestAccess: Array): IOfferRequestAction => {\r\n return {\r\n type: ActionTypes.OFFER_REQUEST_ACCESS_LIST_SUCCESS,\r\n offerRequestAccess,\r\n };\r\n};\r\n\r\nconst listOfferRequestAccessFail = (error: string): IOfferRequestAction => {\r\n return {\r\n type: ActionTypes.OFFER_REQUEST_ACCESS_LIST_FAIL,\r\n error,\r\n };\r\n};\r\n\r\ntype TListOfferRequestAccessPromise = Promise;\r\ntype TListOfferRequestAccessAction = ThunkAction<\r\n TListOfferRequestAccessPromise,\r\n IAppState,\r\n any,\r\n IOfferRequestAction\r\n>;\r\n\r\nexport interface IOfferRequestAccessSearchOptions {\r\n organizationId?: string;\r\n createdStart?: string;\r\n createdEnd?: string;\r\n}\r\n\r\n\r\nexport const listOfferRequestAccess = (options?: IOfferRequestAccessSearchOptions): TListOfferRequestAccessAction => (\r\n dispatch: TDispatch\r\n): TListOfferRequestAccessPromise => {\r\n dispatch(listOfferRequestAccessStart());\r\n return axios\r\n .post(`${apiPath}/access/list`, options)\r\n .then((res) => {\r\n dispatch(listOfferRequestAccessSuccess(res.data));\r\n return Promise.resolve(res.data);\r\n })\r\n .catch(({ response }) => {\r\n dispatch(listOfferRequestAccessFail((response as AxiosResponse).data));\r\n return Promise.resolve((response as AxiosResponse).data);\r\n });\r\n};\r\n\r\nexport const clearOfferRequest = () => {\r\n return {\r\n type: ActionTypes.OFFER_REQUEST_CLEAR,\r\n };\r\n};\r\n","import { AxiosResponse } from 'axios';\r\nimport { Dispatch } from \"redux\";\r\nimport axios from \"../../axios\";\r\nimport { IOrganizationAction } from \"../../interfaces\";\r\nimport { IOrganization } from \"../../interfaces/domain\";\r\nimport { ActionTypes } from \"./actionTypes\";\r\nimport * as actions from './'\r\n\r\n\r\ntype TAction = IOrganizationAction;\r\n\r\nconst apiPath = \"/json/organizations\";\r\n\r\nexport const clearOrganization = (): TAction => {\r\n return {\r\n type: ActionTypes.ORGANIZATION_CLEAR,\r\n };\r\n};\r\n\r\nconst getMyOrganizationStart = (): TAction => {\r\n return {\r\n type: ActionTypes.ORGANIZATION_GET_MY_START,\r\n };\r\n};\r\n\r\nconst getMyOrganizationSuccess = (organization: IOrganization): TAction => {\r\n return {\r\n type: ActionTypes.ORGANIZATION_GET_MY_SUCCESS,\r\n organization,\r\n };\r\n};\r\n\r\nconst getMyOrganizationFail = (error: string): TAction => {\r\n return {\r\n type: ActionTypes.ORGANIZATION_GET_MY_FAIL,\r\n error,\r\n };\r\n};\r\n\r\nexport const getMyOrganization = () => {\r\n return async (dispatch: Dispatch) => {\r\n dispatch(getMyOrganizationStart());\r\n try {\r\n const res = await axios.get(`${apiPath}/me`);\r\n dispatch(getMyOrganizationSuccess(res.data));\r\n } catch ({ response }) {\r\n dispatch(getMyOrganizationFail((response as AxiosResponse).data));\r\n }\r\n };\r\n};\r\n\r\nconst updateMyOrganizationStart = (): TAction => {\r\n return {\r\n type: ActionTypes.ORGANIZATION_UPDATE_MY_START,\r\n };\r\n};\r\n\r\nconst updateMyOrganizationSuccess = (\r\n organization: IOrganization\r\n): TAction => {\r\n return {\r\n type: ActionTypes.ORGANIZATION_UPDATE_MY_SUCCESS,\r\n organization,\r\n };\r\n};\r\n\r\nconst updateMyOrganizationFail = (\r\n error: string\r\n): TAction => {\r\n return {\r\n type: ActionTypes.ORGANIZATION_UPDATE_MY_FAIL,\r\n error,\r\n };\r\n};\r\n\r\nexport const updateMyOrganization = (organization: IOrganization) => {\r\n return async (dispatch: Dispatch) => {\r\n dispatch(updateMyOrganizationStart());\r\n try {\r\n const res = await axios.put(`${apiPath}/me/update`, organization);\r\n const updatedOrganization = res.data;\r\n dispatch(updateMyOrganizationSuccess(updatedOrganization));\r\n dispatch(actions.setAuthUserOrganization(updatedOrganization));\r\n } catch ({ response }) {\r\n dispatch(updateMyOrganizationFail((response as AxiosResponse).data));\r\n }\r\n };\r\n};\r\n\r\nconst updateOrganizationImageStart = (): TAction => {\r\n return {\r\n type: ActionTypes.ORGANIZATION_UPDATE_IMAGE_START,\r\n };\r\n};\r\n\r\nconst updateOrganizationImageSuccess = (\r\n image: string\r\n): TAction => {\r\n return {\r\n type: ActionTypes.ORGANIZATION_UPDATE_IMAGE_SUCCESS,\r\n image,\r\n };\r\n};\r\n\r\nconst updateOrganizationImageFail = (\r\n error: string\r\n): TAction => {\r\n return {\r\n type: ActionTypes.ORGANIZATION_UPDATE_IMAGE_FAIL,\r\n error,\r\n };\r\n};\r\n\r\nexport const updateOrganizationImage = (data: FormData) => {\r\n return async (dispatch: Dispatch) => {\r\n dispatch(updateOrganizationImageStart());\r\n try {\r\n const res = await axios.post(`${apiPath}/image/update`, data); // returns image\r\n dispatch(updateOrganizationImageSuccess(res.data));\r\n } catch ({ response }) {\r\n dispatch(updateOrganizationImageFail((response as AxiosResponse).data));\r\n }\r\n };\r\n};\r\n\r\nconst deleteOrganizationImageStart = (): TAction => {\r\n return {\r\n type: ActionTypes.ORGANIZATION_DELETE_IMAGE_START,\r\n };\r\n};\r\n\r\nconst deleteOrganizationImageSuccess = (): TAction => {\r\n return {\r\n type: ActionTypes.ORGANIZATION_DELETE_IMAGE_SUCCESS,\r\n };\r\n};\r\n\r\nconst deleteOrganizationImageFail = (\r\n error: string\r\n): TAction => {\r\n return {\r\n type: ActionTypes.ORGANIZATION_DELETE_IMAGE_FAIL,\r\n error,\r\n };\r\n};\r\n\r\nexport const deleteOrganizationImage = (id: string) => {\r\n return async (dispatch: Dispatch) => {\r\n dispatch(deleteOrganizationImageStart());\r\n try {\r\n await axios.delete(`${apiPath}/image/delete?id=${id}`);\r\n dispatch(deleteOrganizationImageSuccess());\r\n } catch ({ response }) {\r\n dispatch(deleteOrganizationImageFail((response as AxiosResponse).data));\r\n }\r\n };\r\n};\r\n\r\n\r\nconst getOrganizationStart = (): TAction => {\r\n return {\r\n type: ActionTypes.ORGANIZATION_GET_START,\r\n };\r\n};\r\n\r\nconst getOrganizationSuccess = (\r\n organization: IOrganization\r\n): TAction => {\r\n return {\r\n type: ActionTypes.ORGANIZATION_GET_SUCCESS,\r\n organization,\r\n };\r\n};\r\n\r\nconst getOrganizationFail = (error: string): TAction => {\r\n return {\r\n type: ActionTypes.ORGANIZATION_GET_FAIL,\r\n error,\r\n };\r\n};\r\n\r\nexport const getOrganization = (id: string) => {\r\n return async (dispatch: Dispatch) => {\r\n dispatch(getOrganizationStart());\r\n try {\r\n const res = await axios.get(`${apiPath}/get?id=${id}`);\r\n dispatch(getOrganizationSuccess(res.data));\r\n } catch ({ response }) {\r\n dispatch(getOrganizationFail((response as AxiosResponse).data));\r\n }\r\n };\r\n};\r\n\r\nconst listOrganizationsStart = (): TAction => {\r\n return {\r\n type: ActionTypes.ORGANIZATION_LIST_START,\r\n };\r\n};\r\n\r\nconst listOrganizationsSuccess = (\r\n organizations: Array\r\n): TAction => {\r\n return {\r\n type: ActionTypes.ORGANIZATION_LIST_SUCCESS,\r\n organizations,\r\n };\r\n};\r\n\r\nconst listOrganizationsFail = (error: string): TAction => {\r\n return {\r\n type: ActionTypes.ORGANIZATION_LIST_FAIL,\r\n error,\r\n };\r\n};\r\n\r\nexport const listOrganizations = () => {\r\n return async (dispatch: Dispatch) => {\r\n dispatch(listOrganizationsStart());\r\n try {\r\n const res = await axios.get(`${apiPath}/list`);\r\n dispatch(listOrganizationsSuccess(res.data));\r\n } catch ({ response }) {\r\n dispatch(listOrganizationsFail((response as AxiosResponse).data));\r\n }\r\n };\r\n};\r\n\r\nconst saveOrganizationStart = (): TAction => {\r\n return {\r\n type: ActionTypes.ORGANIZATION_SAVE_START,\r\n };\r\n};\r\n\r\nconst saveOrganizationSuccess = (\r\n organization: IOrganization\r\n): TAction => {\r\n return {\r\n type: ActionTypes.ORGANIZATION_SAVE_SUCCESS,\r\n organization,\r\n };\r\n};\r\n\r\nconst saveOrganizationFail = (error: string): TAction => {\r\n return {\r\n type: ActionTypes.ORGANIZATION_SAVE_FAIL,\r\n error,\r\n };\r\n};\r\n\r\nexport const saveOrganization = (operator: IOrganization) => {\r\n return async (dispatch: Dispatch) => {\r\n dispatch(saveOrganizationStart());\r\n try {\r\n const res = await axios.post(`${apiPath}/add`, operator);\r\n dispatch(saveOrganizationSuccess(res.data));\r\n } catch ({ response }) {\r\n dispatch(saveOrganizationFail((response as AxiosResponse).data));\r\n }\r\n };\r\n};\r\n\r\nconst updateOrganizationStart = (): TAction => {\r\n return {\r\n type: ActionTypes.ORGANIZATION_UPDATE_START,\r\n };\r\n};\r\n\r\nconst updateOrganizationSuccess = (\r\n organization: IOrganization\r\n): TAction => {\r\n return {\r\n type: ActionTypes.ORGANIZATION_UPDATE_SUCCESS,\r\n organization,\r\n };\r\n};\r\n\r\nconst updateOrganizationFail = (error: string): TAction => {\r\n return {\r\n type: ActionTypes.ORGANIZATION_UPDATE_FAIL,\r\n error,\r\n };\r\n};\r\n\r\nexport const updateOrganization = (orgnaization: IOrganization) => {\r\n return async (dispatch: Dispatch) => {\r\n dispatch(updateOrganizationStart());\r\n try {\r\n const res = await axios.put(`${apiPath}/update`, orgnaization);\r\n dispatch(updateOrganizationSuccess(res.data));\r\n } catch ({ response }) {\r\n dispatch(updateOrganizationFail((response as AxiosResponse).data));\r\n }\r\n };\r\n};\r\n\r\n\r\nconst confirmBillingStart = (): TAction => {\r\n return {\r\n type: ActionTypes.ORGANIZATION_CONFIRM_BILLING_START,\r\n };\r\n};\r\n\r\nconst confirmBillingSuccess = (\r\n): TAction => {\r\n return {\r\n type: ActionTypes.ORGANIZATION_CONFIRM_BILLING_SUCCESS,\r\n };\r\n};\r\n\r\nconst confirmBillingFail = (error: string): TAction => {\r\n return {\r\n type: ActionTypes.ORGANIZATION_CONFIRM_BILLING_FAIL,\r\n error,\r\n };\r\n};\r\n\r\nexport const confirmBilling = () => {\r\n return async (dispatch: Dispatch) => {\r\n dispatch(confirmBillingStart());\r\n try {\r\n await axios.put(`${apiPath}/confirmBilling`);\r\n dispatch(confirmBillingSuccess());\r\n } catch ({ response }) {\r\n dispatch(confirmBillingFail((response as AxiosResponse).data));\r\n }\r\n };\r\n};\r\n\r\n\r\n\r\n","import { AxiosResponse } from 'axios';\r\nimport { Dispatch } from 'redux';\r\n\r\nimport axios from '../../axios';\r\nimport { IServiceAction } from '../../interfaces';\r\nimport { IService } from '../../interfaces/domain';\r\nimport { ActionTypes } from './actionTypes';\r\n\r\n\r\nconst apiPath = '/json/services';\r\n\r\nconst getServiceStart = (): IServiceAction => {\r\n return {\r\n type: ActionTypes.SERVICE_GET_START,\r\n };\r\n};\r\n\r\nconst getServiceSuccess = (service: IService): IServiceAction => {\r\n return {\r\n type: ActionTypes.SERVICE_GET_SUCCESS,\r\n service,\r\n };\r\n};\r\n\r\nconst getServiceFail = (error: string): IServiceAction => {\r\n return {\r\n type: ActionTypes.SERVICE_GET_FAIL,\r\n error,\r\n };\r\n};\r\n\r\nexport const getService = (id: string) => {\r\n return async (dispatch: Dispatch) => {\r\n dispatch(getServiceStart());\r\n try {\r\n const res = await axios.get(`${apiPath}/get?id=${id}`);\r\n dispatch(getServiceSuccess(res.data));\r\n return res.data;\r\n } catch ({ response }) {\r\n dispatch(getServiceFail((response as AxiosResponse).data));\r\n return null;\r\n }\r\n };\r\n};\r\n\r\nconst deleteServiceStart = (): IServiceAction => {\r\n return {\r\n type: ActionTypes.SERVICE_DELETE_START,\r\n };\r\n};\r\n\r\nconst deleteServiceSuccess = (service: IService): IServiceAction => {\r\n return {\r\n type: ActionTypes.SERVICE_DELETE_SUCCESS,\r\n service,\r\n };\r\n};\r\n\r\nconst deleteServiceFail = (error: string): IServiceAction => {\r\n return {\r\n type: ActionTypes.SERVICE_DELETE_FAIL,\r\n error,\r\n };\r\n};\r\n\r\nexport const deleteService = (id: string) => {\r\n return async (dispatch: Dispatch) => {\r\n dispatch(deleteServiceStart());\r\n try {\r\n const res = await axios.delete(`${apiPath}/delete?id=${id}`);\r\n dispatch(deleteServiceSuccess(res.data));\r\n return res.data;\r\n } catch ({ response }) {\r\n dispatch(deleteServiceFail((response as AxiosResponse).data));\r\n return null;\r\n }\r\n };\r\n};\r\n\r\nconst listServicesStart = (): IServiceAction => {\r\n return {\r\n type: ActionTypes.SERVICE_LIST_START,\r\n };\r\n};\r\n\r\nconst listServicesSuccess = (\r\n services: Array\r\n): IServiceAction => {\r\n return {\r\n type: ActionTypes.SERVICE_LIST_SUCCESS,\r\n services,\r\n };\r\n};\r\n\r\nconst listServicesFail = (error: string): IServiceAction => {\r\n return {\r\n type: ActionTypes.SERVICE_LIST_FAIL,\r\n error,\r\n };\r\n};\r\n\r\nexport interface IServicesSearchOptions {\r\n includeArchived?: boolean;\r\n operatorId?: string;\r\n}\r\n\r\nexport const listServices = (\r\n options?: IServicesSearchOptions\r\n) => {\r\n return async (dispatch: Dispatch) => {\r\n dispatch(listServicesStart());\r\n try {\r\n const resp = await axios.post(`${apiPath}/list`, options);\r\n dispatch(listServicesSuccess(resp.data));\r\n } catch({ response }) {\r\n dispatch(listServicesFail((response as AxiosResponse).data));\r\n }\r\n }\r\n};\r\n\r\nconst saveServiceStart = (): IServiceAction => {\r\n return {\r\n type: ActionTypes.SERVICE_SAVE_START,\r\n };\r\n};\r\n\r\nconst saveServiceSuccess = (service: IService): IServiceAction => {\r\n return {\r\n type: ActionTypes.SERVICE_SAVE_SUCCESS,\r\n service,\r\n };\r\n};\r\n\r\nconst saveServiceFail = (error: string): IServiceAction => {\r\n return {\r\n type: ActionTypes.SERVICE_SAVE_FAIL,\r\n error,\r\n };\r\n};\r\n\r\nexport const saveService = (service: IService) => {\r\n return async (dispatch: Dispatch) => {\r\n dispatch(saveServiceStart());\r\n try {\r\n const res = await axios.post(`${apiPath}/add`, service);\r\n dispatch(saveServiceSuccess(res.data));\r\n } catch ({ response }) {\r\n dispatch(saveServiceFail((response as AxiosResponse).data));\r\n }\r\n };\r\n};\r\n\r\nconst updateServiceStart = (): IServiceAction => {\r\n return {\r\n type: ActionTypes.SERVICE_UPDATE_START,\r\n };\r\n};\r\n\r\nconst updateServiceSuccess = (service: IService): IServiceAction => {\r\n return {\r\n type: ActionTypes.SERVICE_UPDATE_SUCCESS,\r\n service,\r\n };\r\n};\r\n\r\nconst updateServiceFail = (error: string): IServiceAction => {\r\n return {\r\n type: ActionTypes.SERVICE_UPDATE_FAIL,\r\n error,\r\n };\r\n};\r\n\r\nexport const updateService = (service: IService) => {\r\n return async (dispatch: Dispatch) => {\r\n dispatch(updateServiceStart());\r\n try {\r\n const res = await axios.put(`${apiPath}/update`, service);\r\n dispatch(updateServiceSuccess(res.data));\r\n } catch ({ response }) {\r\n dispatch(updateServiceFail((response as AxiosResponse).data));\r\n }\r\n };\r\n};\r\n\r\nexport const clearService = () => {\r\n return {\r\n type: ActionTypes.SERVICE_CLEAR,\r\n };\r\n};\r\n","import { AxiosResponse } from \"axios\";\r\nimport { Dispatch } from \"redux\";\r\nimport axios from \"../../axios\";\r\nimport { IFeedbackAction } from \"../../interfaces\";\r\nimport { IFeedback } from \"../../interfaces/domain\";\r\nimport { IOfferRequest, IOrganization } from \"./../../interfaces/domain\";\r\nimport { ActionTypes } from \"./actionTypes\";\r\n\r\nconst apiPath = '/json/feedback';\r\n\r\nconst getFeedbackStart = (): IFeedbackAction => {\r\n return {\r\n type: ActionTypes.FEEDBACK_GET_START,\r\n };\r\n};\r\n\r\nconst getFeedbackSuccess = (feedback: IFeedback): IFeedbackAction => {\r\n return {\r\n type: ActionTypes.FEEDBACK_GET_SUCCESS,\r\n feedback,\r\n };\r\n};\r\n\r\nconst getFeedbackFail = (error: string): IFeedbackAction => {\r\n return {\r\n type: ActionTypes.FEEDBACK_GET_FAIL,\r\n error,\r\n };\r\n};\r\n\r\nexport const getFeedback = (id: string) => {\r\n return async (dispatch: Dispatch) => {\r\n dispatch(getFeedbackStart());\r\n try {\r\n const res = await axios.get(`${apiPath}/get?id=${id}`);\r\n dispatch(getFeedbackSuccess(res.data));\r\n return res.data;\r\n } catch ({ response }) {\r\n dispatch(getFeedbackFail((response as AxiosResponse).data));\r\n return null;\r\n }\r\n };\r\n};\r\n\r\nconst deleteFeedbackStart = (): IFeedbackAction => {\r\n return {\r\n type: ActionTypes.FEEDBACK_DELETE_START,\r\n };\r\n};\r\n\r\nconst deleteFeedbackSuccess = (feedback: IFeedback): IFeedbackAction => {\r\n return {\r\n type: ActionTypes.FEEDBACK_DELETE_SUCCESS,\r\n feedback,\r\n };\r\n};\r\n\r\nconst deleteFeedbackFail = (error: string): IFeedbackAction => {\r\n return {\r\n type: ActionTypes.FEEDBACK_DELETE_FAIL,\r\n error,\r\n };\r\n};\r\n\r\nexport const deleteFeedback = (id: string) => {\r\n return async (dispatch: Dispatch) => {\r\n dispatch(deleteFeedbackStart());\r\n try {\r\n const res = await axios.delete(`${apiPath}/delete?id=${id}`);\r\n dispatch(deleteFeedbackSuccess(res.data));\r\n return res.data;\r\n } catch ({ response }) {\r\n dispatch(deleteFeedbackFail((response as AxiosResponse).data));\r\n return null;\r\n }\r\n };\r\n};\r\n\r\nconst listFeedbacksStart = (): IFeedbackAction => {\r\n return {\r\n type: ActionTypes.FEEDBACK_LIST_START,\r\n };\r\n};\r\n\r\nconst listFeedbacksSuccess = (\r\n feedbacks: Array\r\n): IFeedbackAction => {\r\n return {\r\n type: ActionTypes.FEEDBACK_LIST_SUCCESS,\r\n feedbacks,\r\n };\r\n};\r\n\r\nconst listFeedbacksFail = (error: string): IFeedbackAction => {\r\n return {\r\n type: ActionTypes.FEEDBACK_LIST_FAIL,\r\n error,\r\n };\r\n};\r\n\r\nexport const listFeedbacks = () => {\r\n return async (dispatch: Dispatch) => {\r\n dispatch(listFeedbacksStart());\r\n try {\r\n const res = await axios.get(`${apiPath}/list`);\r\n dispatch(listFeedbacksSuccess(res.data));\r\n } catch ({ response }) {\r\n dispatch(listFeedbacksFail((response as AxiosResponse).data));\r\n }\r\n };\r\n};\r\n\r\nconst saveFeedbackStart = (): IFeedbackAction => {\r\n return {\r\n type: ActionTypes.FEEDBACK_SAVE_START,\r\n };\r\n};\r\n\r\nconst saveFeedbackSuccess = (): IFeedbackAction => {\r\n return {\r\n type: ActionTypes.FEEDBACK_SAVE_SUCCESS\r\n };\r\n};\r\n\r\nconst saveFeedbackFail = (error: string): IFeedbackAction => {\r\n return {\r\n type: ActionTypes.FEEDBACK_SAVE_FAIL,\r\n error,\r\n };\r\n};\r\n\r\nexport const saveFeedback = (feedback: IFeedback, id: string, pin: string) => {\r\n return async (dispatch: Dispatch) => {\r\n dispatch(saveFeedbackStart());\r\n try {\r\n await axios.post(`${apiPath}/add?id=${id}&pin=${pin}`, feedback);\r\n dispatch(saveFeedbackSuccess());\r\n } catch ({ response }) {\r\n dispatch(saveFeedbackFail((response as AxiosResponse).data));\r\n }\r\n };\r\n};\r\n\r\nconst updateFeedbackStart = (): IFeedbackAction => {\r\n return {\r\n type: ActionTypes.FEEDBACK_UPDATE_START,\r\n };\r\n};\r\n\r\nconst updateFeedbackSuccess = (feedback: IFeedback): IFeedbackAction => {\r\n return {\r\n type: ActionTypes.FEEDBACK_UPDATE_SUCCESS,\r\n feedback,\r\n };\r\n};\r\n\r\nconst updateFeedbackFail = (error: string): IFeedbackAction => {\r\n return {\r\n type: ActionTypes.FEEDBACK_SAVE_FAIL,\r\n error,\r\n };\r\n};\r\n\r\nexport const updateFeedback = (feedback: IFeedback) => {\r\n return async (dispatch: Dispatch) => {\r\n dispatch(updateFeedbackStart());\r\n try {\r\n const res = await axios.put(`${apiPath}/update`, feedback);\r\n dispatch(updateFeedbackSuccess(res.data));\r\n } catch ({ response }) {\r\n dispatch(updateFeedbackFail((response as AxiosResponse).data));\r\n }\r\n };\r\n};\r\n\r\nconst getFeedbackFormDataStart = (): IFeedbackAction => {\r\n return {\r\n type: ActionTypes.FEEDBACK_GET_FORM_DATA_START,\r\n };\r\n};\r\n\r\nconst getFeedbackFormDataSuccess = (\r\n offerRequest: IOfferRequest,\r\n serviceProviders: IOrganization[]\r\n): IFeedbackAction => {\r\n return {\r\n type: ActionTypes.FEEDBACK_GET_FORM_DATA_SUCCESS,\r\n offerRequest,\r\n serviceProviders,\r\n };\r\n};\r\n\r\nconst getFeedbackFormDataFail = (error: string): IFeedbackAction => {\r\n return {\r\n type: ActionTypes.FEEDBACK_GET_FORM_DATA_FAIL,\r\n error,\r\n };\r\n};\r\n\r\nexport const getFeedbackFormData = (id: string, pinCode: string) => {\r\n return async (dispatch: Dispatch) => {\r\n dispatch(getFeedbackFormDataStart());\r\n try {\r\n const res = await axios.get(`${apiPath}/form/get?id=${id}&pin=${pinCode}`);\r\n dispatch(\r\n getFeedbackFormDataSuccess(\r\n res.data.offerRequest,\r\n res.data.serviceProviders\r\n )\r\n );\r\n return res.data;\r\n } catch ({ response }) {\r\n dispatch(getFeedbackFormDataFail((response as AxiosResponse).data));\r\n return null;\r\n }\r\n };\r\n};\r\n\r\nexport const clearFeedback = () => {\r\n return {\r\n type: ActionTypes.FEEDBACK_CLEAR,\r\n };\r\n};\r\n","import { AxiosResponse } from 'axios';\r\nimport { Dispatch } from 'redux';\r\nimport { ThunkAction } from 'redux-thunk';\r\n\r\nimport { TDispatch } from '../..';\r\nimport axios from '../../axios';\r\nimport { IAppState, IServiceProviderAction } from '../../interfaces';\r\nimport { IOrganization, IServiceProvider } from '../../interfaces/domain';\r\nimport { IUser } from './../../interfaces/domain';\r\nimport { ActionTypes } from './actionTypes';\r\n\r\nconst apiPath = \"/json/serviceproviders\";\r\n\r\ntype TAction = IServiceProviderAction;\r\n\r\n\r\nconst getServiceProviderStart = (): TAction => {\r\n return {\r\n type: ActionTypes.SERVICE_PROVIDER_GET_START,\r\n };\r\n};\r\n\r\nconst getServiceProviderSuccess = (serviceprovider: IServiceProvider): TAction => {\r\n return {\r\n type: ActionTypes.SERVICE_PROVIDER_GET_SUCCESS,\r\n serviceprovider,\r\n };\r\n};\r\n\r\nconst getServiceProviderFail = (error: string): TAction => {\r\n return {\r\n type: ActionTypes.SERVICE_PROVIDER_GET_FAIL,\r\n error,\r\n };\r\n};\r\n\r\nexport const getServiceProvider = (id: string) => {\r\n return async (dispatch: Dispatch) => {\r\n dispatch(getServiceProviderStart());\r\n try {\r\n const res = await axios.get(`${apiPath}/get?id=${id}`);\r\n dispatch(getServiceProviderSuccess(res.data));\r\n return res.data;\r\n } catch ({ response }) {\r\n dispatch(getServiceProviderFail((response as AxiosResponse).data));\r\n return null;\r\n }\r\n };\r\n};\r\n\r\nconst deleteServiceProviderStart = (): TAction => {\r\n return {\r\n type: ActionTypes.SERVICE_PROVIDER_DELETE_START,\r\n };\r\n};\r\n\r\nconst deleteServiceProviderSuccess = (serviceprovider: IServiceProvider): TAction => {\r\n return {\r\n type: ActionTypes.SERVICE_PROVIDER_DELETE_SUCCESS,\r\n serviceprovider,\r\n };\r\n};\r\n\r\nconst deleteServiceProviderFail = (error: string): TAction => {\r\n return {\r\n type: ActionTypes.SERVICE_PROVIDER_DELETE_FAIL,\r\n error,\r\n };\r\n};\r\n\r\nexport const deleteServiceProvider = (id: string) => {\r\n return async (dispatch: Dispatch) => {\r\n dispatch(deleteServiceProviderStart());\r\n try {\r\n const res = await axios.delete(`${apiPath}/delete?id=${id}`);\r\n dispatch(deleteServiceProviderSuccess(res.data));\r\n return res.data;\r\n } catch ({ response }) {\r\n dispatch(deleteServiceProviderFail((response as AxiosResponse).data));\r\n return null;\r\n }\r\n };\r\n};\r\n\r\nconst listServiceProvidersStart = (): TAction => {\r\n return {\r\n type: ActionTypes.SERVICE_PROVIDER_LIST_START,\r\n };\r\n};\r\n\r\nconst listServiceProvidersSuccess = (serviceproviders: IServiceProvider[]): TAction => {\r\n return {\r\n type: ActionTypes.SERVICE_PROVIDER_LIST_SUCCESS,\r\n serviceproviders,\r\n };\r\n};\r\n\r\nconst listServiceProvidersFail = (error: string): TAction => {\r\n return {\r\n type: ActionTypes.SERVICE_PROVIDER_LIST_FAIL,\r\n error,\r\n };\r\n};\r\n\r\ntype TListServiceProviderPromise = Promise;\r\ntype TListServiceProviderAction = ThunkAction<\r\n TListServiceProviderPromise,\r\n IAppState,\r\n any,\r\n TAction\r\n>;\r\n\r\nexport interface IServiceProvidersSearchOptions {\r\n operatorId?: string;\r\n locationId?: string;\r\n serviceId?: string;\r\n subscriptionLevel?: string;\r\n paymentMethod?: string;\r\n}\r\n\r\nexport const listServiceProviders = (\r\n options?: IServiceProvidersSearchOptions\r\n): TListServiceProviderAction => (\r\n dispatch: TDispatch\r\n): TListServiceProviderPromise => {\r\n dispatch(listServiceProvidersStart());\r\n return axios\r\n .post(`${apiPath}/list`, options)\r\n .then((res) => {\r\n dispatch(listServiceProvidersSuccess(res.data));\r\n return Promise.resolve(res.data);\r\n })\r\n .catch(({ response }) => {\r\n dispatch(listServiceProvidersFail((response as AxiosResponse).data));\r\n return Promise.resolve((response as AxiosResponse).data);\r\n });\r\n};\r\n\r\nconst saveServiceProviderStart = (): TAction => {\r\n return {\r\n type: ActionTypes.SERVICE_PROVIDER_SAVE_START,\r\n };\r\n};\r\n\r\nconst saveServiceProviderSuccess = (serviceprovider: IServiceProvider): TAction => {\r\n return {\r\n type: ActionTypes.SERVICE_PROVIDER_SAVE_SUCCESS,\r\n serviceprovider,\r\n };\r\n};\r\n\r\nconst saveServiceProviderFail = (error: string): TAction => {\r\n return {\r\n type: ActionTypes.SERVICE_PROVIDER_SAVE_FAIL,\r\n error,\r\n };\r\n};\r\n\r\nexport const saveServiceProvider = (organization: IServiceProvider, user?: IUser, formId?: string) => {\r\n return async (dispatch: Dispatch) => {\r\n dispatch(saveServiceProviderStart());\r\n try {\r\n const res = await axios.post(`${apiPath}/addlocal`, { organization, user, formId });\r\n dispatch(saveServiceProviderSuccess(res.data));\r\n } catch ({ response }) {\r\n dispatch(saveServiceProviderFail((response as AxiosResponse).data));\r\n }\r\n };\r\n};\r\n\r\nconst updateServiceProviderStart = (): TAction => {\r\n return {\r\n type: ActionTypes.SERVICE_PROVIDER_UPDATE_START,\r\n };\r\n};\r\n\r\nconst updateServiceProviderSuccess = (serviceprovider: IServiceProvider): TAction => {\r\n return {\r\n type: ActionTypes.SERVICE_PROVIDER_UPDATE_SUCCESS,\r\n serviceprovider,\r\n };\r\n};\r\n\r\nconst updateServiceProviderFail = (error: string): TAction => {\r\n return {\r\n type: ActionTypes.SERVICE_PROVIDER_UPDATE_FAIL,\r\n error,\r\n };\r\n};\r\n\r\nexport const updateServiceProvider = (serviceprovider: IOrganization) => {\r\n return async (dispatch: Dispatch) => {\r\n dispatch(updateServiceProviderStart());\r\n try {\r\n const res = await axios.put(`${apiPath}/update`, serviceprovider);\r\n dispatch(updateServiceProviderSuccess(res.data));\r\n } catch ({ response }) {\r\n dispatch(updateServiceProviderFail((response as AxiosResponse).data));\r\n }\r\n };\r\n};\r\n\r\nconst getServiceProviderFormStart = (): TAction => {\r\n return {\r\n type: ActionTypes.SERVICE_PROVIDER_FORM_GET_START,\r\n };\r\n};\r\n\r\nconst getServiceProviderFormSuccess = (serviceProviderForm: IServiceProvider): TAction => {\r\n return {\r\n type: ActionTypes.SERVICE_PROVIDER_FORM_GET_SUCCESS,\r\n serviceProviderForm,\r\n };\r\n};\r\n\r\nexport const getServiceProviderFormFail = (error: string): TAction => {\r\n return {\r\n type: ActionTypes.SERIVCE_PROVIDER_FORM_GET_FAIL,\r\n error,\r\n };\r\n};\r\n\r\nexport const getServiceProviderForm = (id: string) => {\r\n return async (dispatch: Dispatch) => {\r\n dispatch(getServiceProviderFormStart());\r\n try {\r\n const res = await axios.get(`${apiPath}/forms/get?id=${id}`);\r\n dispatch(getServiceProviderFormSuccess(res.data));\r\n return res.data;\r\n } catch ({ response }) {\r\n dispatch(getServiceProviderFormFail((response as AxiosResponse).data));\r\n return null;\r\n }\r\n };\r\n};\r\n\r\nconst listServiceProviderFormsStart = (): TAction => {\r\n return {\r\n type: ActionTypes.SERVICE_PROVIDER_FORM_LIST_START,\r\n };\r\n};\r\n\r\nconst listServiceProviderFormsSuccess = (serviceProviderForms: IServiceProvider[]): TAction => {\r\n return {\r\n type: ActionTypes.SERVICE_PROVIDER_FORM_LIST_SUCCESS,\r\n serviceProviderForms,\r\n };\r\n};\r\n\r\nconst listServiceProviderFormsFail = (error: string): TAction => {\r\n return {\r\n type: ActionTypes.SERVICE_PROVIDER_FORM_LIST_FAIL,\r\n error,\r\n };\r\n};\r\n\r\nexport const listServiceProviderForms = (operatorId?: string) => {\r\n return async (dispatch: Dispatch) => {\r\n dispatch(listServiceProviderFormsStart());\r\n const param = operatorId ? `?operatorId=${operatorId}` : '';\r\n try {\r\n const res = await axios.get(`${apiPath}/forms/list${param}`)\r\n dispatch(listServiceProviderFormsSuccess(res.data));\r\n } catch({ response }) {\r\n dispatch(listServiceProviderFormsFail((response as AxiosResponse).data));\r\n }\r\n }\r\n};\r\n\r\nconst deleteServiceProviderFormStart = (): TAction => {\r\n return {\r\n type: ActionTypes.SERVICE_PROVIDER_FORM_DELETE_START,\r\n };\r\n};\r\n\r\nconst deleteServiceProviderFormSuccess = (serviceprovider: IServiceProvider): TAction => {\r\n return {\r\n type: ActionTypes.SERVICE_PROVIDER_FORM_DELETE_SUCCESS,\r\n serviceprovider,\r\n };\r\n};\r\n\r\nconst deleteServiceProviderFormFail = (error: string): TAction => {\r\n return {\r\n type: ActionTypes.SERVICE_PROVIDER_FORM_DELETE_FAIL,\r\n error,\r\n };\r\n};\r\n\r\nexport const deleteServiceProviderForm = (id: string) => {\r\n return async (dispatch: Dispatch) => {\r\n dispatch(deleteServiceProviderFormStart());\r\n try {\r\n const res = await axios.delete(`${apiPath}/forms/delete?id=${id}`);\r\n dispatch(deleteServiceProviderFormSuccess(res.data));\r\n return res.data;\r\n } catch ({ response }) {\r\n dispatch(deleteServiceProviderFormFail((response as AxiosResponse).data));\r\n return null;\r\n }\r\n };\r\n};\r\n\r\n\r\nexport const clearServiceProvider = () => {\r\n return {\r\n type: ActionTypes.CLEAR_SERVICEPROVIDER,\r\n };\r\n};\r\n","import { AxiosResponse } from \"axios\";\r\nimport { Dispatch } from \"redux\";\r\nimport axios from \"../../axios\";\r\nimport { IUser, IUserAction } from \"../../interfaces\";\r\nimport { ActionTypes } from \"./actionTypes\";\r\n\r\nconst apiPath = '/json/users';\r\n\r\nconst getUserStart = (): IUserAction => {\r\n return {\r\n type: ActionTypes.USER_GET_START,\r\n };\r\n};\r\n\r\nconst getUserSuccess = (user: IUser): IUserAction => {\r\n return {\r\n type: ActionTypes.USER_GET_SUCCESS,\r\n user,\r\n };\r\n};\r\n\r\nconst getUserFail = (error: string): IUserAction => {\r\n return {\r\n type: ActionTypes.USER_GET_FAIL,\r\n error,\r\n };\r\n};\r\n\r\nexport const getUser = (id: string, organizationId?: string) => {\r\n return async (dispatch: Dispatch) => {\r\n dispatch(getUserStart());\r\n try {\r\n const params = [`id=${id}`];\r\n if(organizationId) params.push(`organizationId=${organizationId}`);\r\n \r\n const res = await axios.get(`${apiPath}/get?${params.join('&')}`);\r\n dispatch(getUserSuccess(res.data));\r\n } catch ({ response }) {\r\n dispatch(getUserFail((response as AxiosResponse).data));\r\n }\r\n };\r\n};\r\n\r\nconst listUsersStart = (): IUserAction => {\r\n return {\r\n type: ActionTypes.USER_LIST_START,\r\n };\r\n};\r\n\r\nconst listUsersSuccess = (users: Array): IUserAction => {\r\n return {\r\n type: ActionTypes.USER_LIST_SUCCESS,\r\n users,\r\n };\r\n};\r\n\r\nconst listUsersFail = (error: string): IUserAction => {\r\n return {\r\n type: ActionTypes.USER_LIST_FAIL,\r\n error,\r\n };\r\n};\r\n\r\nexport const listUsers = (organizationId?: string) => {\r\n return async (dispatch: Dispatch) => {\r\n dispatch(listUsersStart());\r\n try {\r\n let param = ``;\r\n if(organizationId) param = `?organizationId=${organizationId}`;\r\n const res = await axios.get(`${apiPath}/list${param}`);\r\n dispatch(listUsersSuccess(res.data));\r\n } catch ({ response }) {\r\n dispatch(listUsersFail((response as AxiosResponse).data));\r\n }\r\n };\r\n};\r\n\r\nconst saveUserStart = (): IUserAction => {\r\n return {\r\n type: ActionTypes.USER_SAVE_START,\r\n };\r\n};\r\n\r\nconst saveUserSuccess = (user: IUser): IUserAction => {\r\n return {\r\n type: ActionTypes.USER_SAVE_SUCCESS,\r\n user,\r\n };\r\n};\r\n\r\nconst saveUserFail = (error: string): IUserAction => {\r\n return {\r\n type: ActionTypes.USER_SAVE_FAIL,\r\n error,\r\n };\r\n};\r\n\r\nexport const saveUser = (user: IUser, organizationId?: string) => {\r\n return async (dispatch: Dispatch) => {\r\n dispatch(saveUserStart());\r\n const param = organizationId ? `?organizationId=${organizationId}` : '';\r\n try {\r\n const res = await axios.post(\r\n `${apiPath}/add${param}`,\r\n user\r\n );\r\n dispatch(saveUserSuccess(res.data));\r\n } catch ({ response }) {\r\n dispatch(saveUserFail((response as AxiosResponse).data));\r\n }\r\n };\r\n};\r\n\r\nconst updateUserStart = (): IUserAction => {\r\n return {\r\n type: ActionTypes.USER_UPDATE_START,\r\n };\r\n};\r\n\r\nconst updateUserSuccess = (user: IUser): IUserAction => {\r\n return {\r\n type: ActionTypes.USER_UPDATE_SUCCESS,\r\n user,\r\n };\r\n};\r\n\r\nconst updateUserFail = (error: string): IUserAction => {\r\n return {\r\n type: ActionTypes.USER_UPDATE_FAIL,\r\n error,\r\n };\r\n};\r\n\r\nexport const updateUser = (user: IUser, organizationId?: string) => {\r\n return async (dispatch: Dispatch) => {\r\n dispatch(updateUserStart());\r\n const param = organizationId ? `?organizationId=${organizationId}` : '';\r\n try {\r\n const res = await axios.put(\r\n `${apiPath}/update${param}`,\r\n user\r\n );\r\n dispatch(updateUserSuccess(res.data));\r\n } catch ({ response }) {\r\n dispatch(updateUserFail((response as AxiosResponse).data));\r\n }\r\n };\r\n};\r\n\r\nconst acceptTermsOfUseStart = (): IUserAction => {\r\n return {\r\n type: ActionTypes.USER_ACCEPT_TERMS_OF_USE_START,\r\n };\r\n};\r\n\r\nconst acceptTermsOfUseSuccess = (user: IUser): IUserAction => {\r\n return {\r\n type: ActionTypes.USER_ACCEPT_TERMS_OF_USE_SUCCESS,\r\n user,\r\n };\r\n};\r\n\r\nconst acceptTermsOfUseFail = (error: string): IUserAction => {\r\n return {\r\n type: ActionTypes.USER_ACCEPT_TERMS_OF_USE_FAIL,\r\n error,\r\n };\r\n};\r\n\r\nexport const acceptTermsOfUse = () => {\r\n return async (dispatch: Dispatch) => {\r\n dispatch(acceptTermsOfUseStart());\r\n try {\r\n const res = await axios.put(`${apiPath}/acceptTerms`);\r\n dispatch(acceptTermsOfUseSuccess(res.data));\r\n } catch ({ response }) {\r\n dispatch(acceptTermsOfUseFail((response as AxiosResponse).data));\r\n }\r\n };\r\n};\r\n\r\nconst changeUserLanguageStart = (): IUserAction => {\r\n return {\r\n type: ActionTypes.USER_CHANGE_LANGUAGE_START,\r\n };\r\n};\r\n\r\nconst changeUserLanguageSuccess = (user: IUser): IUserAction => {\r\n return {\r\n type: ActionTypes.USER_CHANGE_LANGUAGE_SUCCESS,\r\n user,\r\n };\r\n};\r\n\r\nconst changeUserLanguageFail = (error: string): IUserAction => {\r\n return {\r\n type: ActionTypes.USER_CHANGE_LANGUAGE_FAIL,\r\n error,\r\n };\r\n};\r\n\r\nexport const changeUserLanguage = (preferredLanguage: string) => {\r\n return async (dispatch: Dispatch) => {\r\n dispatch(changeUserLanguageStart());\r\n try {\r\n const res = await axios.put(`${apiPath}/changeLanguage`, { preferredLanguage });\r\n dispatch(changeUserLanguageSuccess(res.data));\r\n } catch ({ response }) {\r\n dispatch(changeUserLanguageFail((response as AxiosResponse).data));\r\n }\r\n };\r\n};\r\n\r\nexport const clearUser = (): IUserAction => {\r\n return {\r\n type: ActionTypes.USER_CLEAR,\r\n };\r\n};\r\n","import { AxiosResponse } from 'axios';\r\nimport { Dispatch } from 'redux';\r\nimport { ThunkAction } from 'redux-thunk';\r\n\r\nimport { TDispatch } from '../..';\r\nimport axios from '../../axios';\r\nimport { IAppState, IContentAction } from '../../interfaces';\r\nimport { IContent, IOrganization } from '../../interfaces/domain';\r\nimport { ActionTypes } from './actionTypes';\r\n\r\nconst apiPath = \"/json/contents\";\r\n\r\ntype TAction = IContentAction;\r\n\r\n\r\nconst getContentStart = (): TAction => {\r\n return {\r\n type: ActionTypes.CONTENT_GET_START,\r\n };\r\n};\r\n\r\nconst getContentSuccess = (content: IContent): TAction => {\r\n return {\r\n type: ActionTypes.CONTENT_GET_SUCCESS,\r\n content,\r\n };\r\n};\r\n\r\nconst getContentFail = (error: string): TAction => {\r\n return {\r\n type: ActionTypes.CONTENT_GET_FAIL,\r\n error,\r\n };\r\n};\r\n\r\nexport const getContent = (id: string) => {\r\n return async (dispatch: Dispatch) => {\r\n dispatch(getContentStart());\r\n try {\r\n const res = await axios.get(`${apiPath}/get?id=${id}`);\r\n dispatch(getContentSuccess(res.data));\r\n return res.data;\r\n } catch ({ response }) {\r\n dispatch(getContentFail((response as AxiosResponse).data));\r\n return null;\r\n }\r\n };\r\n};\r\n\r\nconst deleteContentStart = (): TAction => {\r\n return {\r\n type: ActionTypes.CONTENT_DELETE_START,\r\n };\r\n};\r\n\r\nconst deleteContentSuccess = (content: IContent): TAction => {\r\n return {\r\n type: ActionTypes.CONTENT_DELETE_SUCCESS,\r\n content,\r\n };\r\n};\r\n\r\nconst deleteContentFail = (error: string): TAction => {\r\n return {\r\n type: ActionTypes.CONTENT_DELETE_FAIL,\r\n error,\r\n };\r\n};\r\n\r\nexport const deleteContent = (id: string) => {\r\n return async (dispatch: Dispatch) => {\r\n dispatch(deleteContentStart());\r\n try {\r\n const res = await axios.delete(`${apiPath}/delete?id=${id}`);\r\n dispatch(deleteContentSuccess(res.data));\r\n return res.data;\r\n } catch ({ response }) {\r\n dispatch(deleteContentFail((response as AxiosResponse).data));\r\n return null;\r\n }\r\n };\r\n};\r\n\r\nconst listContentsStart = (): TAction => {\r\n return {\r\n type: ActionTypes.CONTENT_LIST_START,\r\n };\r\n};\r\n\r\nconst listContentsSuccess = (contents: IContent[]): TAction => {\r\n return {\r\n type: ActionTypes.CONTENT_LIST_SUCCESS,\r\n contents,\r\n };\r\n};\r\n\r\nconst listContentsFail = (error: string): TAction => {\r\n return {\r\n type: ActionTypes.CONTENT_LIST_FAIL,\r\n error,\r\n };\r\n};\r\n\r\ntype TListContentPromise = Promise;\r\ntype TListContentAction = ThunkAction<\r\n TListContentPromise,\r\n IAppState,\r\n any,\r\n TAction\r\n>;\r\n\r\nexport interface IContentsSearchOptions {\r\n operatorId?: string;\r\n}\r\n\r\nexport const listContents = (\r\n options?: IContentsSearchOptions\r\n): TListContentAction => (\r\n dispatch: TDispatch\r\n): TListContentPromise => {\r\n dispatch(listContentsStart());\r\n return axios\r\n .post(`${apiPath}/list`, options)\r\n .then((res) => {\r\n dispatch(listContentsSuccess(res.data));\r\n return Promise.resolve(res.data);\r\n })\r\n .catch(({ response }) => {\r\n dispatch(listContentsFail((response as AxiosResponse).data));\r\n return Promise.resolve((response as AxiosResponse).data);\r\n });\r\n};\r\n\r\nconst saveContentStart = (): TAction => {\r\n return {\r\n type: ActionTypes.CONTENT_SAVE_START,\r\n };\r\n};\r\n\r\nconst saveContentSuccess = (content: IContent): TAction => {\r\n return {\r\n type: ActionTypes.CONTENT_SAVE_SUCCESS,\r\n content,\r\n };\r\n};\r\n\r\nconst saveContentFail = (error: string): TAction => {\r\n return {\r\n type: ActionTypes.CONTENT_SAVE_FAIL,\r\n error,\r\n };\r\n};\r\n\r\nexport const saveContent = (content: IContent) => {\r\n return async (dispatch: Dispatch) => {\r\n dispatch(saveContentStart());\r\n try {\r\n const res = await axios.post(`${apiPath}/add`, content);\r\n dispatch(saveContentSuccess(res.data));\r\n } catch ({ response }) {\r\n dispatch(saveContentFail((response as AxiosResponse).data));\r\n }\r\n };\r\n};\r\n\r\nconst updateContentStart = (): TAction => {\r\n return {\r\n type: ActionTypes.CONTENT_UPDATE_START,\r\n };\r\n};\r\n\r\nconst updateContentSuccess = (content: IContent): TAction => {\r\n return {\r\n type: ActionTypes.CONTENT_UPDATE_SUCCESS,\r\n content,\r\n };\r\n};\r\n\r\nconst updateContentFail = (error: string): TAction => {\r\n return {\r\n type: ActionTypes.CONTENT_UPDATE_FAIL,\r\n error,\r\n };\r\n};\r\n\r\nexport const updateContent = (content: IOrganization) => {\r\n return async (dispatch: Dispatch) => {\r\n dispatch(updateContentStart());\r\n try {\r\n const res = await axios.put(`${apiPath}/update`, content);\r\n dispatch(updateContentSuccess(res.data));\r\n } catch ({ response }) {\r\n dispatch(updateContentFail((response as AxiosResponse).data));\r\n }\r\n };\r\n};\r\n\r\n\r\n\r\n\r\nexport const clearContent = () => {\r\n return {\r\n type: ActionTypes.CONTENT_CLEAR,\r\n };\r\n};\r\n","import { ILogItem } from \"../../interfaces/domain\";\r\nimport axios from \"../../axios\";\r\nimport { ActionTypes } from \"./actionTypes\";\r\n\r\nimport { IAppState, ILogItemAction } from \"../../interfaces\";\r\nimport { ThunkAction } from \"redux-thunk\";\r\nimport { TDispatch } from \"../..\";\r\n\r\n\r\nconst apiPath = '/json/logitems'\r\n\r\nconst listLogItemsStart = (): ILogItemAction => {\r\n return {\r\n type: ActionTypes.LOG_ITEM_LIST_START,\r\n };\r\n};\r\n\r\nconst listLogItemsSuccess = (logItems: Array): ILogItemAction => {\r\n return {\r\n type: ActionTypes.LOG_ITEM_LIST_SUCCESS,\r\n logItems,\r\n };\r\n};\r\n\r\nconst listLogItemsFail = (error: string): ILogItemAction => {\r\n return {\r\n type: ActionTypes.LOG_ITEM_LIST_FAIL,\r\n error,\r\n };\r\n};\r\n\r\ntype TListLogItemPromise = Promise;\r\ntype TListLogItemAction = ThunkAction<\r\n TListLogItemPromise,\r\n IAppState,\r\n any,\r\n ILogItemAction\r\n>;\r\n\r\nexport interface ILogItemSearchOptions {\r\n operatorId?: string;\r\n serviceProviderId?: string;\r\n event?: string;\r\n createdStart?: string;\r\n createdEnd?: string;\r\n}\r\n\r\n\r\nexport const listLogItems = (options?: ILogItemSearchOptions): TListLogItemAction => (\r\n dispatch: TDispatch\r\n): TListLogItemPromise => {\r\n dispatch(listLogItemsStart());\r\n return axios\r\n .post(`${apiPath}/list`, options)\r\n .then((res) => {\r\n dispatch(listLogItemsSuccess(res.data));\r\n return Promise.resolve(res.data);\r\n })\r\n .catch(({ response }) => {\r\n dispatch(listLogItemsFail(response.data));\r\n return Promise.resolve(response.data);\r\n });\r\n};\r\n\r\nexport const clearLogItems = () => {\r\n return {\r\n type: ActionTypes.LOG_ITEM_LIST_CLEAR,\r\n };\r\n};","import { IGeoLocationAction } from './../../interfaces/state';\r\nimport { Dispatch } from \"redux\";\r\nimport axios from \"../../axios\";\r\nimport { IGeoLocation } from \"../../interfaces/domain\";\r\nimport { ActionTypes } from \"./actionTypes\";\r\nimport { AxiosResponse } from 'axios';\r\n\r\ntype TAction = IGeoLocationAction;\r\n\r\nconst getGeoLocationStart = (): TAction => {\r\n return {\r\n type: ActionTypes.GEOLOCATION_GET_START,\r\n };\r\n};\r\n\r\nconst getGeoLocationSuccess = (geoLocation: IGeoLocation): TAction => {\r\n return {\r\n type: ActionTypes.GEOLOCATION_GET_SUCCESS,\r\n geoLocation,\r\n };\r\n};\r\n\r\nconst getGeoLocationFail = (error: string): TAction => {\r\n return {\r\n type: ActionTypes.GEOLOCATION_GET_FAIL,\r\n error,\r\n };\r\n};\r\n\r\nexport const getGeoLocation = (address: string, zip: string, city: string, country: string) => {\r\n return async (dispatch: Dispatch) => {\r\n dispatch(getGeoLocationStart());\r\n try {\r\n const params = [\r\n \"address=\" + encodeURIComponent(address),\r\n \"zip=\" + encodeURIComponent(zip),\r\n \"city=\" + encodeURIComponent(city),\r\n \"country=\" + encodeURIComponent(country),\r\n ];\r\n const res = await axios.get(`/json/geolocation/get?${params.join('&')}`);\r\n dispatch(getGeoLocationSuccess(res.data));\r\n return res.data;\r\n } catch ({ response }) {\r\n dispatch(getGeoLocationFail((response as AxiosResponse).data));\r\n return null;\r\n }\r\n };\r\n};","import React, { CSSProperties, ReactNode } from 'react';\r\nimport classes from './Alert.module.scss';\r\n\r\n\r\nexport enum EAlertColor {\r\n DANGER,\r\n SUCCESS,\r\n PRIMARY,\r\n WARNING\r\n}\r\n\r\ninterface IProps {\r\n children: ReactNode;\r\n className?: string;\r\n style?: CSSProperties;\r\n noHorizontalMargin?: boolean;\r\n color?: EAlertColor;\r\n}\r\n\r\nconst Alert: React.FC = ({ children, className, style, noHorizontalMargin, color }) => {\r\n const classNames = [classes.Container];\r\n if (className) {\r\n classNames.push(className);\r\n }\r\n\r\n switch (color) {\r\n case EAlertColor.PRIMARY:\r\n classNames.push(classes.Primary);\r\n break;\r\n case EAlertColor.SUCCESS:\r\n classNames.push(classes.Success);\r\n break;\r\n case EAlertColor.WARNING:\r\n classNames.push(classes.Warning);\r\n break;\r\n default:\r\n classNames.push(classes.Danger);\r\n break;\r\n }\r\n\r\n if (noHorizontalMargin) {\r\n if (!style) style = {};\r\n style = {\r\n ...style,\r\n marginLeft: 0,\r\n marginRight: 0\r\n };\r\n }\r\n return
{children}
;\r\n};\r\n\r\nexport default Alert;\r\n","import { faSpinner } from '@fortawesome/free-solid-svg-icons';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport React from 'react';\r\nimport classes from './Spinner.module.scss';\r\n\r\n\r\nexport enum ESpinnerSize {\r\n SMALL, MEDIUM, LARGE\r\n}\r\n\r\nexport enum ESpinnerColor {\r\n CONTENT, PRIMARY\r\n}\r\n\r\ninterface IProps {\r\n color?: ESpinnerColor;\r\n size?: ESpinnerSize;\r\n center?: boolean;\r\n}\r\n\r\nconst Spinner: React.FC = ({ center = true, color = ESpinnerColor.PRIMARY, size = ESpinnerSize.MEDIUM }) => {\r\n const containerClassNames: string[] = [];\r\n\r\n if (center) {\r\n containerClassNames.push(classes.Center);\r\n }\r\n\r\n switch (size) {\r\n case ESpinnerSize.SMALL:\r\n containerClassNames.push(classes.SizeSmall);\r\n break;\r\n case ESpinnerSize.MEDIUM:\r\n containerClassNames.push(classes.SizeMedium);\r\n break;\r\n case ESpinnerSize.LARGE:\r\n containerClassNames.push(classes.SizeLarge);\r\n break;\r\n }\r\n\r\n switch (color) {\r\n case ESpinnerColor.CONTENT:\r\n containerClassNames.push(classes.ColorContent);\r\n break;\r\n default:\r\n containerClassNames.push(classes.ColorPrimary);\r\n break;\r\n }\r\n\r\n return (\r\n
\r\n \r\n
\r\n )\r\n}\r\n\r\nexport default Spinner;","import React from \"react\";\r\nimport ReactDropzone from \"react-dropzone\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { TDispatch } from \"../../..\";\r\nimport { IAppState } from '../../../interfaces';\r\nimport * as actions from \"../../../store/actions\";\r\nimport Alert from \"../Alert/Alert\";\r\nimport Spinner from \"../Spinner/Spinner\";\r\nimport classes from \"./OrganizationImageDropzone.module.scss\";\r\n\r\nexport interface IDropzoneConfig {\r\n text?: string;\r\n dragText?: string;\r\n}\r\n\r\ninterface IProps {\r\n className?: string;\r\n config?: IDropzoneConfig;\r\n}\r\n\r\nconst OrganizationImageDropzone: React.FC = ({\r\n className,\r\n config = { dragText: \"\", text: \"\" },\r\n}) => {\r\n const { t } = useTranslation();\r\n const dispatch = useDispatch();\r\n const { error, loading } = useSelector((state: IAppState) => ({\r\n error: state.organization.imageError,\r\n loading: state.organization.imageLoading,\r\n }));\r\n\r\n const onDropHandler = async (files: File[]) => {\r\n const formData = new FormData();\r\n for (let file of files) {\r\n formData.append(\"files[]\", file);\r\n }\r\n\r\n if (!formData.has(\"files[]\")) return;\r\n await dispatch(actions.updateOrganizationImage(formData));\r\n };\r\n\r\n return (\r\n <>\r\n {error && {t(error)}}\r\n \r\n {({ getRootProps, getInputProps, isDragActive }) => {\r\n return (\r\n
\r\n \r\n
\r\n {loading ? (\r\n \r\n ) : null}\r\n

{isDragActive ? config.dragText : config.text}

\r\n
\r\n
\r\n );\r\n }}\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default OrganizationImageDropzone;\r\n","import { IconDefinition } from \"@fortawesome/fontawesome-svg-core\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport React, { CSSProperties, ReactNode } from \"react\";\r\nimport Spinner, { ESpinnerColor, ESpinnerSize } from \"../Spinner/Spinner\";\r\nimport classes from \"./Button.module.scss\";\r\n\r\nexport enum EButtonSize {\r\n SMALL,\r\n MEDIUM,\r\n LARGE,\r\n}\r\n\r\nexport enum EButtonColor {\r\n PRIMARY,\r\n SECONDARY,\r\n SUCCESS,\r\n DANGER,\r\n NONE,\r\n}\r\n\r\ninterface IProps {\r\n icon?: IconDefinition;\r\n onClick: (event: React.MouseEvent) => void;\r\n disabled?: boolean;\r\n children?: ReactNode;\r\n className?: string;\r\n style?: CSSProperties;\r\n size?: EButtonSize;\r\n color?: EButtonColor;\r\n type?: \"submit\" | \"reset\" | \"button\";\r\n link?: boolean;\r\n loading?: boolean;\r\n}\r\n\r\nconst Button: React.FC = ({\r\n icon,\r\n onClick,\r\n disabled,\r\n children,\r\n className,\r\n style,\r\n size,\r\n color,\r\n type = \"button\",\r\n link,\r\n loading,\r\n}) => {\r\n const classNames = [];\r\n\r\n if (link) {\r\n classNames.push(classes.Link);\r\n } else {\r\n classNames.push(classes.Button);\r\n }\r\n\r\n if (disabled) classNames.push(classes.Disabled);\r\n if (className) classNames.push(className);\r\n\r\n switch (size) {\r\n case EButtonSize.SMALL:\r\n classNames.push(classes.Small);\r\n break;\r\n case EButtonSize.LARGE:\r\n classNames.push(classes.Large);\r\n break;\r\n default:\r\n }\r\n\r\n switch (color) {\r\n case EButtonColor.SECONDARY:\r\n classNames.push(classes.Secondary);\r\n break;\r\n case EButtonColor.SUCCESS:\r\n classNames.push(classes.Success);\r\n break;\r\n case EButtonColor.DANGER:\r\n classNames.push(classes.Danger);\r\n break;\r\n case EButtonColor.NONE:\r\n classNames.push(classes.None);\r\n break;\r\n default:\r\n }\r\n\r\n return (\r\n \r\n {loading ? (\r\n \r\n ) : (\r\n <>\r\n {icon && } {children}\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default Button;\r\n","import React from \"react\";\r\nimport Button from \"../../Button/Button\";\r\n\r\nimport classes from \"./RadioButtonOption.module.scss\";\r\nimport { ETranslation } from \"../../../../translations/translation-keys\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\ninterface IProps {\r\n value: string;\r\n label?: string;\r\n labelTranslation?: ETranslation;\r\n isActive: boolean;\r\n disabled?: boolean;\r\n invalid?: boolean;\r\n onClick: (value: string) => void;\r\n}\r\n\r\nconst RadioButtonOption: React.FC = ({\r\n value,\r\n label,\r\n labelTranslation,\r\n isActive,\r\n disabled,\r\n onClick,\r\n invalid\r\n}) => {\r\n const { t } = useTranslation();\r\n const classNames = [];\r\n\r\n if(!isActive) {\r\n classNames.push(classes.InActive);\r\n } \r\n if(invalid) {\r\n classNames.push(classes.Invalid);\r\n }\r\n\r\n return ;\r\n};\r\n\r\nexport default RadioButtonOption;\r\n","import React from \"react\";\r\n\r\nimport classes from \"./RadioButton.module.scss\";\r\nimport { IOption } from \"../Input/Input\";\r\nimport RadioButtonOption from \"./RadioButtonOption/RadioButtonOption\";\r\n\r\ninterface IProps {\r\n value: string;\r\n onChange: (value: string) => void;\r\n options: IOption[] | undefined;\r\n disabled?: boolean;\r\n invalid?: boolean;\r\n className?: string;\r\n}\r\n\r\nconst RadioButton: React.FC = ({ value, onChange, options, disabled, invalid, className }) => {\r\n const classNames = [classes.OptionContainer];\r\n if (className) {\r\n classNames.push(className);\r\n }\r\n return (\r\n
\r\n {options &&\r\n options.map((option, i) => (\r\n \r\n \r\n {i < (options.length - 1) && (\r\n \r\n )}\r\n \r\n \r\n ))}\r\n
\r\n );\r\n};\r\n\r\nexport default RadioButton;\r\n","import React, {\r\n ReactNode,\r\n useCallback,\r\n useEffect,\r\n useRef,\r\n useState\r\n} from \"react\";\r\nimport Spinner, { ESpinnerSize } from \"../../UI/Spinner/Spinner\";\r\nimport classes from \"./SearchSelect.module.scss\";\r\n\r\ninterface IOption {\r\n value: string;\r\n label?: string;\r\n}\r\n\r\ntype TValue = IOption | IOption[] | \"\";\r\n\r\nexport type TFetchOption = (\r\n searchTerm: string,\r\n signal: AbortSignal\r\n) => Promise;\r\n\r\nexport const createSelectedValue = (\r\n id?: string,\r\n label?: string\r\n): IOption | undefined => {\r\n return (typeof id !== 'undefined' && id !== '') ? { value: id, label } : undefined;\r\n};\r\n\r\n// export const createSelectedDeals = (\r\n// deals?: IDeal[]\r\n// ): IOption[] => {\r\n// const options: IOption[] = [];\r\n// if(deals) {\r\n// deals.forEach(deal => {\r\n// if (deal && deal.id) {\r\n// options.push({ value: deal.id.toString(), label: deal.name });\r\n// }\r\n// });\r\n// }\r\n// return options;\r\n// }\r\n\r\ninterface IProps {\r\n inputName: string;\r\n onChange: (value: TValue) => void;\r\n value: TValue;\r\n fetchOptions?: TFetchOption;\r\n searchTermMin?: number;\r\n placeholder?: string;\r\n options?: IOption[];\r\n multiple?: boolean;\r\n disabled?: boolean;\r\n relative?: boolean;\r\n}\r\n\r\nconst DEFAULT_SEARCH_TERM_MIN = 3;\r\n\r\nconst SearchSelect: React.FC = ({\r\n inputName,\r\n value,\r\n onChange,\r\n fetchOptions,\r\n placeholder,\r\n options = [],\r\n searchTermMin = DEFAULT_SEARCH_TERM_MIN,\r\n multiple,\r\n disabled,\r\n relative,\r\n}) => {\r\n const [searchValue, setSearchValue] = useState(\"\");\r\n const [selectValue, setSelectValue] = useState(value);\r\n const [loading, setLoading] = useState(false);\r\n const [selectOptions, setSelectOptions] = useState(options);\r\n const [filteredOptions, setFilteredOptions] = useState(options);\r\n const [hasFocus, setFocus] = useState(false);\r\n const searchTimeout = useRef(null);\r\n const abortController = useRef();\r\n const searchRef = useRef(null);\r\n\r\n const canSearch =\r\n !disabled && (multiple || (typeof (selectValue as IOption).value === 'undefined') || hasFocus);\r\n\r\n const blurHandler = useCallback((event: MouseEvent | null) => {\r\n document.removeEventListener(\"click\", blurHandler);\r\n setFocus(false);\r\n setLoading(false);\r\n\r\n if (event) {\r\n const classList = (event.target as any).classList;\r\n if (classList.contains(classes.Option)) return;\r\n }\r\n setSearchValue(\"\");\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (fetchOptions) return;\r\n setSelectOptions(options);\r\n }, [options, fetchOptions]);\r\n\r\n useEffect(() => {\r\n return () => {\r\n document.removeEventListener(\"click\", blurHandler);\r\n };\r\n // eslint-disable-next-line\r\n }, []);\r\n\r\n useEffect(() => {\r\n setSelectValue(value);\r\n }, [value]);\r\n\r\n useEffect(() => {\r\n filterSearch(searchValue);\r\n // eslint-disable-next-line\r\n }, [selectOptions]);\r\n\r\n const searchHandler = (value: string) => {\r\n setSearchValue(value);\r\n filterSearch(value);\r\n setFocus(true);\r\n if (fetchOptions) {\r\n if (abortController.current) abortController.current.abort();\r\n if (searchTimeout.current) clearTimeout(searchTimeout.current);\r\n\r\n searchTimeout.current = window.setTimeout(async () => {\r\n if (value.length >= searchTermMin) {\r\n setLoading(true);\r\n try {\r\n abortController.current = new AbortController();\r\n const newOptions = await fetchOptions(\r\n value,\r\n abortController.current.signal\r\n );\r\n setSelectOptions(newOptions);\r\n abortController.current = null;\r\n } catch (error) {\r\n // Nothing to do\r\n } finally {\r\n setLoading(false);\r\n }\r\n }\r\n }, 300);\r\n }\r\n };\r\n\r\n const filterSearch = (search: string) => {\r\n setFilteredOptions(\r\n [...selectOptions].filter(\r\n (selectOption) =>\r\n (selectOption.label || selectOption.value)\r\n .toLowerCase()\r\n .indexOf(search.toLowerCase()) !== -1\r\n )\r\n );\r\n };\r\n\r\n const selectHandler = (option: IOption) => {\r\n let newSelectValue: TValue;\r\n if (multiple) {\r\n newSelectValue = [...(selectValue as IOption[])];\r\n newSelectValue.push(option);\r\n } else {\r\n newSelectValue = option;\r\n }\r\n setSearchValue(\"\");\r\n setFocus(false);\r\n onChange(newSelectValue);\r\n };\r\n\r\n const focusHandler = useCallback(() => {\r\n if (hasFocus) {\r\n blurHandler(null);\r\n return;\r\n }\r\n setFilteredOptions([...selectOptions]);\r\n setSearchValue(\"\");\r\n setFocus(true);\r\n document.removeEventListener(\"click\", blurHandler);\r\n document.addEventListener(\"click\", blurHandler);\r\n }, [hasFocus, selectOptions, blurHandler]);\r\n\r\n useEffect(() => {\r\n if (hasFocus && searchRef.current) {\r\n searchRef.current.focus();\r\n }\r\n }, [hasFocus, searchRef]);\r\n\r\n const renderOptions = () => {\r\n if (!filteredOptions || filteredOptions.length === 0) {\r\n let text = \"\";\r\n if (searchValue.length < searchTermMin) {\r\n text = `Kirjoita vähintään ${searchTermMin} merkkiä.`;\r\n } else {\r\n text = \"Ei hakutuloksia.\";\r\n }\r\n\r\n return
{text}
;\r\n }\r\n\r\n let selectedValues: string[] = [];\r\n\r\n if (selectValue) {\r\n if (multiple) {\r\n selectedValues = (selectValue as IOption[]).map(\r\n (option) => option.value.toString()\r\n );\r\n } else {\r\n selectedValues.push((selectValue as IOption).value);\r\n }\r\n }\r\n\r\n return filteredOptions.map((option) => {\r\n const classNames = [classes.Option];\r\n let canClick = true;\r\n if (\r\n selectedValues.length &&\r\n selectedValues.indexOf(option.value.toString()) !== -1\r\n ) {\r\n classNames.push(classes.OptionSelected);\r\n canClick = false;\r\n }\r\n return (\r\n canClick && selectHandler(option)}\r\n >\r\n {option.label}\r\n \r\n );\r\n });\r\n };\r\n\r\n const Selected: React.FC<{ children: ReactNode; value: string }> = ({\r\n value,\r\n children,\r\n }) => {\r\n const removeSelectedHandler = (\r\n event: React.MouseEvent,\r\n value: string\r\n ) => {\r\n event.stopPropagation();\r\n if (multiple) {\r\n onChange(\r\n (selectValue as IOption[]).filter((option) => option.value !== value)\r\n );\r\n } else {\r\n onChange(\"\");\r\n }\r\n };\r\n\r\n const classNames = [classes.Selected];\r\n\r\n if (!multiple) {\r\n classNames.push(classes.SingleSelected);\r\n }\r\n\r\n return (\r\n !multiple && !disabled && focusHandler()}\r\n >\r\n
{children}
\r\n {!disabled && (\r\n removeSelectedHandler(event, value)}\r\n >\r\n ×\r\n \r\n )}\r\n \r\n );\r\n };\r\n\r\n const renderSingle = (option: IOption) => {\r\n if (!option || (typeof option.value === 'undefined')) return null;\r\n return (\r\n {option.label || option.value}\r\n );\r\n };\r\n\r\n const renderMultiple = (options: IOption[]) => {\r\n if (!options || options.length === 0) return null;\r\n return options.map((option) => (\r\n \r\n {option.label || option.value}\r\n \r\n ));\r\n };\r\n\r\n const renderSearch = () => {\r\n return (\r\n ) =>\r\n searchHandler(event.target.value)\r\n }\r\n ref={searchRef}\r\n onClick={() => focusHandler()}\r\n />\r\n );\r\n };\r\n\r\n const classNames = [classes.InputContainer];\r\n\r\n if (disabled) {\r\n classNames.push(classes.Disabled);\r\n }\r\n\r\n return (\r\n
\r\n
\r\n
\r\n {multiple\r\n ? renderMultiple(selectValue as IOption[])\r\n : renderSingle(selectValue as IOption)}\r\n {canSearch ? renderSearch() : null}\r\n
\r\n\r\n {loading ? (\r\n
\r\n
\r\n \r\n
\r\n
\r\n ) : (\r\n hasFocus && (\r\n \r\n {renderOptions()}\r\n
\r\n )\r\n )}\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default SearchSelect;\r\n","import { faStar } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport React from \"react\";\r\nimport Button from \"../../Button/Button\";\r\nimport classes from \"./StarOption.module.scss\";\r\n\r\n\r\ninterface IProps {\r\n value: string;\r\n isActive: boolean;\r\n disabled?: boolean;\r\n invalid?: boolean;\r\n onClick: (value: string) => void;\r\n}\r\n\r\nconst StarOption: React.FC = ({\r\n value,\r\n isActive,\r\n disabled,\r\n onClick,\r\n invalid\r\n}) => {\r\n const classNames = [classes.Button];\r\n\r\n if (!isActive) {\r\n classNames.push(classes.InActive);\r\n }\r\n if (invalid) {\r\n classNames.push(classes.Invalid);\r\n }\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default StarOption;\r\n","import React from \"react\";\r\nimport { IOption } from \"../Input/Input\";\r\nimport classes from \"./Star.module.scss\";\r\nimport StarOption from \"./StarOption/StarOption\";\r\n\r\ninterface IProps {\r\n value: string;\r\n onChange: (value: string) => void;\r\n options: IOption[] | undefined;\r\n disabled?: boolean;\r\n invalid?: boolean;\r\n}\r\n\r\nconst Star: React.FC = ({ value, onChange, options, disabled, invalid }) => {\r\n const activeIndex = options?.findIndex(o => o.value === value);\r\n return (\r\n
\r\n {options &&\r\n options.map((option, i) => (\r\n \r\n \r\n {i < (options.length - 1) && (\r\n \r\n )}\r\n \r\n\r\n ))}\r\n
\r\n );\r\n};\r\n\r\nexport default Star;\r\n","import { fi } from 'date-fns/locale';\r\nimport React, { CSSProperties, useCallback, useContext, useEffect, useState } from \"react\";\r\nimport ReactDatePicker from \"react-datepicker\";\r\nimport 'react-datepicker/dist/react-datepicker.css';\r\nimport { useTranslation } from \"react-i18next\";\r\nimport InputContext, { EInputUpdateAction } from \"../../../context/InputContext\";\r\nimport { IAttachment, IOrganization } from '../../../interfaces';\r\nimport { ETranslation } from \"../../../translations/translation-keys\";\r\nimport AutoTextArea from '../AutoTextArea/AutoTextArea';\r\nimport OrganizationImageDropzone from '../OrganizationImageDropzone/OrganizationImageDropzone';\r\nimport RadioButton from \"../RadioButton/RadioButton\";\r\nimport SearchSelect, { TFetchOption } from '../SearchSelect/SearchSelect';\r\nimport Spinner, { ESpinnerSize } from '../Spinner/Spinner';\r\nimport Star from '../Star/Star';\r\nimport classes from \"./Input.module.scss\";\r\n\r\nexport enum EInfoColor {\r\n DANGER\r\n}\r\n\r\nexport interface IOption {\r\n value: string;\r\n label?: string;\r\n labelTranslation?: ETranslation;\r\n}\r\n\r\n\r\nexport enum EInputType {\r\n static = \"static\",\r\n text = \"text\",\r\n number = \"number\",\r\n radio = \"radio\",\r\n date = \"date\",\r\n time = \"time\",\r\n email = \"email\",\r\n tel = \"tel\",\r\n select = \"select\",\r\n checkbox = \"checkbox\",\r\n textarea = \"textarea\",\r\n datepicker = \"datepicker\",\r\n password = \"password\",\r\n reactSelect = \"reactSelect\",\r\n searchSelect = \"searchSelect\",\r\n star = \"star\",\r\n organizationImage = \"organizationImage\"\r\n}\r\n\r\nexport interface IValidSamples {\r\n [key: string]: boolean;\r\n}\r\n\r\nexport interface IValidationResult {\r\n isValid: boolean;\r\n message: ETranslation | null;\r\n messageParams?: {\r\n [key: string]: string;\r\n };\r\n}\r\n\r\nexport interface IInputValidation {\r\n required?: boolean;\r\n requiredCompareValue?: string;\r\n requiredIf?: string;\r\n requiredIfValue?: string | string[];\r\n requiredIfNot?: string;\r\n dependencies?: string[];\r\n minLength?: number;\r\n minLengthMessage?: ETranslation;\r\n maxLength?: number;\r\n maxLengthMessage?: ETranslation;\r\n minAmount?: number;\r\n minAmountMessage?: ETranslation;\r\n maxAmount?: number;\r\n maxAmountMessage?: ETranslation;\r\n}\r\n\r\nexport interface IInputFieldItem {\r\n type: EInputType;\r\n label?: string;\r\n labelTranslation?: ETranslation;\r\n value: TInputValue;\r\n options?: IOption[];\r\n placeholder?: string;\r\n placeholderTranslation?: ETranslation;\r\n disabled?: boolean;\r\n validation?: IInputValidation;\r\n validationResult?: IValidationResult;\r\n max?: string;\r\n min?: string;\r\n onAdd?: () => void;\r\n pre?: string;\r\n post?: string;\r\n multiple?: boolean;\r\n readOnly?: boolean\r\n}\r\n\r\nexport interface IInputField {\r\n [key: string]: IInputFieldItem;\r\n}\r\n\r\nexport interface IInputData {\r\n id?: string;\r\n}\r\n\r\nexport type TInputValue =\r\n | string\r\n | string[]\r\n | number\r\n | Date\r\n | IAttachment[]\r\n | IAttachment\r\n | IOrganization\r\n | IOption\r\n | IOption[]\r\n | boolean\r\n | null\r\n | undefined;\r\n\r\nexport interface IInputOptions {\r\n updateAction?: EInputUpdateAction;\r\n weight?: number;\r\n info?: string;\r\n topInfo?: string | JSX.Element;\r\n infoColor?: EInfoColor;\r\n data?: IInputData;\r\n disabled?: boolean;\r\n max?: string;\r\n min?: string;\r\n showLabel?: boolean;\r\n containerStyles?: CSSProperties;\r\n showValidation?: boolean;\r\n onAdd?: () => void;\r\n onRemove?: (id: string) => Promise;\r\n onSetValidSample?: React.Dispatch>;\r\n onSetValid?: React.Dispatch>;\r\n onBlurModifyValue?: (value: TInputValue) => TInputValue;\r\n onBlur?: (value: TInputValue) => void;\r\n onClick?: () => void;\r\n hideUnselected?: boolean;\r\n pre?: string;\r\n post?: string;\r\n options?: IOption[];\r\n multiple?: boolean;\r\n fetchOptions?: TFetchOption;\r\n loading?: boolean;\r\n}\r\n\r\ninterface IProps extends IInputOptions {\r\n label?: string;\r\n labelTranslation?: ETranslation;\r\n value: TInputValue;\r\n type: EInputType;\r\n validationResult?: IValidationResult;\r\n valid?: boolean;\r\n onChange: (value: TInputValue) => void;\r\n inputName: string;\r\n placeholder?: string;\r\n placeholderTranslation?: ETranslation;\r\n readOnly?: boolean;\r\n validation?: IInputValidation;\r\n}\r\n\r\nexport const isInputDisabled = (\r\n disableFields: boolean,\r\n item: IInputFieldItem,\r\n options?: IInputOptions\r\n) => {\r\n return disableFields || item.disabled || (options && options.disabled);\r\n};\r\n\r\nexport const inputsToObject = function (inputs: IInputField): T {\r\n const result: { [key: string]: TInputValue } = {};\r\n for (let key in inputs) {\r\n result[key] = inputs[key].value;\r\n }\r\n return (result as unknown) as T;\r\n};\r\n\r\nconst Input: React.FC = ({\r\n label,\r\n labelTranslation,\r\n value,\r\n onChange,\r\n type,\r\n options,\r\n weight,\r\n inputName,\r\n info,\r\n topInfo,\r\n infoColor,\r\n placeholder,\r\n placeholderTranslation,\r\n validationResult = { isValid: true, message: \"\", messageParams: {} },\r\n data,\r\n disabled,\r\n max,\r\n min,\r\n showLabel,\r\n updateAction,\r\n containerStyles,\r\n showValidation,\r\n pre,\r\n post,\r\n onClick,\r\n hideUnselected,\r\n onAdd = () => console.log(\"onAdd needs to be passed as parameter\"),\r\n onRemove = () =>\r\n Promise.reject(console.log(\"onRemove needs to be passed as parameter\")),\r\n onSetValidSample = () =>\r\n console.log(\"onSetValidSample needs to be passed as paramater\"),\r\n onSetValid = () => console.log(\"onSetValid needs to be passed as paramater\"),\r\n onBlurModifyValue,\r\n onBlur,\r\n multiple,\r\n fetchOptions,\r\n readOnly,\r\n validation,\r\n loading\r\n}) => {\r\n //console.log(\"inputUpdated\", inputName)\r\n const { t } = useTranslation();\r\n const { onAutoUpdate, initDone } = useContext(InputContext);\r\n const [initValue, setInitValue] = useState(value);\r\n const [isDisabled, setIsDisabled] = useState(readOnly);\r\n\r\n useEffect(() => {\r\n if (initDone) {\r\n setInitValue(value);\r\n }\r\n // eslint-disable-next-line\r\n }, [initDone, setInitValue]);\r\n\r\n const autoUpdateHandler = (value: TInputValue) => {\r\n if (onBlur) {\r\n onBlur(value);\r\n }\r\n\r\n if (onBlurModifyValue) {\r\n value = onBlurModifyValue(value);\r\n }\r\n\r\n if (initValue !== value) {\r\n if (updateAction && onAutoUpdate) {\r\n onAutoUpdate(inputName, value, updateAction, data); // Maybe needs some checks here if context missing.\r\n }\r\n setInitValue(value);\r\n }\r\n };\r\n\r\n const singleChangeHandler = (value: TInputValue) => {\r\n onChange(value);\r\n autoUpdateHandler(value);\r\n };\r\n\r\n const infoClasses = [classes.Info];\r\n\r\n switch (infoColor) {\r\n case EInfoColor.DANGER:\r\n infoClasses.push(classes.InfoDanger);\r\n break;\r\n default:\r\n }\r\n\r\n const getLabel = useCallback(\r\n (label?: string, showLabel?: boolean, labelTranslation?: ETranslation, required?: boolean) => {\r\n if (!label && !showLabel && !labelTranslation) return null;\r\n return (\r\n \r\n );\r\n },\r\n [t]\r\n );\r\n\r\n const invalid = showValidation && !validationResult.isValid && !disabled;\r\n const invalidMessage =\r\n showValidation && !validationResult.isValid && validationResult.message;\r\n\r\n const classNames = [classes.Container];\r\n if (invalid) {\r\n classNames.push(classes.Invalid);\r\n }\r\n\r\n const inputGroupClassNames = [classes.InputGroup];\r\n if (pre) {\r\n inputGroupClassNames.push(classes.HasPre);\r\n }\r\n if (post) {\r\n inputGroupClassNames.push(classes.HasPost);\r\n }\r\n\r\n return (\r\n setIsDisabled(false) : undefined}\r\n >\r\n {getLabel(label, showLabel, labelTranslation, validation?.required)}\r\n {topInfo &&
{topInfo}
}\r\n
\r\n {pre &&
{pre}
}\r\n {(() => {\r\n if(loading) {\r\n return (\r\n
\r\n \r\n
\r\n )\r\n }\r\n\r\n switch (type) {\r\n case EInputType.text:\r\n case EInputType.number:\r\n case EInputType.date:\r\n case EInputType.time:\r\n case EInputType.email:\r\n case EInputType.tel:\r\n case EInputType.password:\r\n return (\r\n ) => onChange(event.target.value)}\r\n onBlur={() => autoUpdateHandler(value)}\r\n onFocus={readOnly ? (e) => e.target.removeAttribute(\"readonly\") : undefined}\r\n readOnly={readOnly}\r\n />\r\n );\r\n case EInputType.select:\r\n return (\r\n ) =>\r\n onChange(event.target.value)\r\n }\r\n onBlur={() => autoUpdateHandler(value)}\r\n value={value as string}\r\n >\r\n {options &&\r\n options.map(option => (\r\n \r\n ))}\r\n \r\n );\r\n case EInputType.radio:\r\n return (\r\n \r\n );\r\n case EInputType.checkbox:\r\n return (\r\n ) => singleChangeHandler(event.target.checked)}\r\n checked={value as boolean}\r\n disabled={disabled}\r\n />\r\n );\r\n case EInputType.textarea:\r\n return (\r\n \r\n onChange(value)\r\n }\r\n onBlur={() => autoUpdateHandler(value)}\r\n disabled={disabled}\r\n />\r\n );\r\n case EInputType.static:\r\n return (\r\n

{value}

\r\n );\r\n case EInputType.datepicker:\r\n if (value) value = new Date(value as string);\r\n return (\r\n onChange(date)}\r\n onBlur={() => autoUpdateHandler(value)}\r\n dateFormat=\"dd.MM.yyyy\"\r\n locale={fi}\r\n isClearable={!disabled}\r\n placeholderText={placeholderTranslation ? t(placeholderTranslation) : placeholder ? placeholder : label}\r\n disabled={disabled}\r\n wrapperClassName=\"datePicker\"\r\n />\r\n );\r\n case EInputType.searchSelect:\r\n return (\r\n singleChangeHandler(value)}\r\n fetchOptions={fetchOptions}\r\n options={options || []}\r\n multiple={multiple}\r\n placeholder={placeholderTranslation ? t(placeholderTranslation) : placeholder}\r\n disabled={disabled}\r\n />\r\n );\r\n case EInputType.star:\r\n return (\r\n \r\n );\r\n case EInputType.organizationImage:\r\n return (\r\n \r\n );\r\n }\r\n })()}\r\n {post &&
{post}
}\r\n
\r\n {info &&
{info}
}\r\n {invalidMessage && (\r\n
\r\n {t(invalidMessage, {\r\n ...(validationResult.messageParams\r\n ? validationResult.messageParams\r\n : {}),\r\n })}\r\n
\r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default React.memo(Input, (prevProps, nextProps) => {\r\n return (\r\n prevProps.value === nextProps.value &&\r\n prevProps.validationResult === nextProps.validationResult &&\r\n prevProps.disabled === nextProps.disabled &&\r\n prevProps.showValidation === nextProps.showValidation &&\r\n prevProps.options === nextProps.options &&\r\n prevProps.min === nextProps.min &&\r\n prevProps.info === nextProps.info &&\r\n prevProps.topInfo === nextProps.topInfo &&\r\n prevProps.pre === nextProps.pre &&\r\n prevProps.labelTranslation === nextProps.labelTranslation &&\r\n prevProps.placeholderTranslation === nextProps.placeholderTranslation &&\r\n prevProps.onAdd === nextProps.onAdd &&\r\n prevProps.loading === nextProps.loading\r\n );\r\n});\r\n","import * as dateFns from 'date-fns';\r\nimport React, { useEffect, useRef } from 'react';\r\nimport * as uuid from 'uuid';\r\n\r\nimport History from 'history';\r\n\r\nimport {\r\n EInputType,\r\n IInputField,\r\n IInputFieldItem,\r\n IOption,\r\n IValidationResult,\r\n TInputValue,\r\n} from '../components/UI/Input/Input';\r\nimport { IService } from '../interfaces';\r\nimport { ETranslation } from '../translations/translation-keys';\r\n\r\nexport function updateObject(\r\n oldObject: T,\r\n updatedProperties: Partial\r\n): T {\r\n return {\r\n ...oldObject,\r\n ...updatedProperties,\r\n };\r\n}\r\n\r\nexport const isValidEmail = (email: string) => {\r\n return /\\S+@\\S+\\.\\S+/.test(email);\r\n};\r\n\r\nexport const isOptionArray = (value: TInputValue): value is IOption[] =>\r\n Array.isArray(value) &&\r\n value.length > 0 &&\r\n value.every((item: any) => item.value !== undefined);\r\nconst isOption = (value: TInputValue): value is IOption =>\r\n (value as IOption).value !== undefined;\r\nexport const isStringArray = (value: TInputValue): value is string[] =>\r\n Array.isArray(value) &&\r\n value.length > 0 &&\r\n value.every((item: any) => typeof item === \"string\");\r\n\r\nexport function getInputData(inputs: IInputField): T {\r\n let data: any = {};\r\n for (let key in inputs) {\r\n const input = inputs[key];\r\n let value = input.value;\r\n\r\n if (value === undefined) {\r\n\r\n } else if (value === null){\r\n \r\n } else if (isOptionArray(value)) {\r\n value = value.map((item) => item.value);\r\n } else if (isOption(value)) {\r\n value = value.value;\r\n }\r\n data[key] = value;\r\n }\r\n return data;\r\n}\r\n\r\nexport const initForm = (\r\n setInputs: React.Dispatch>,\r\n data: any,\r\n disableFields?: boolean\r\n): void => {\r\n setInputs((inputs) => {\r\n let newInputs = {\r\n ...inputs,\r\n };\r\n // Set values from data and validate\r\n for (let key in inputs) {\r\n let value = data[key];\r\n if (typeof value !== \"undefined\") {\r\n let input = inputs[key];\r\n\r\n // Kauhee ratkasu\r\n const inputType = input.type;\r\n switch(inputType) {\r\n case EInputType.static:\r\n if(typeof value === 'object') {\r\n value = value.name;\r\n }\r\n break;\r\n case EInputType.select:\r\n if(typeof value === 'object') {\r\n value = value.id;\r\n } \r\n break;\r\n case EInputType.searchSelect: \r\n if(typeof value === 'object') {\r\n if(Array.isArray(value)) {\r\n if (value.length > 0 && typeof value[0] === 'object') {\r\n value = value.map(v => ({value: v.id, label: v.name }));\r\n }\r\n } else {\r\n value = {value: value.id, label: value.name};\r\n }\r\n }\r\n break;\r\n }\r\n\r\n newInputs[key] = {\r\n ...input,\r\n value,\r\n };\r\n }\r\n updateInputValid(newInputs, key);\r\n }\r\n return newInputs;\r\n })\r\n};\r\n\r\nconst updateInputValid = (\r\n newState: IInputField,\r\n inputName: string\r\n): IInputField => {\r\n newState[inputName].validationResult = validateInput(\r\n newState,\r\n newState[inputName]\r\n );\r\n\r\n const validation = newState[inputName].validation;\r\n if (validation && validation.dependencies) {\r\n for (let dependencyName of validation.dependencies) {\r\n newState[dependencyName].validationResult = validateInput(\r\n newState,\r\n newState[dependencyName]\r\n );\r\n }\r\n }\r\n return newState;\r\n};\r\n\r\nexport const updateInputHandler = (\r\n inputName: string,\r\n value: TInputValue,\r\n setInputs: React.Dispatch>\r\n) => {\r\n setInputs((prevState: IInputField) => {\r\n let newState = { ...prevState };\r\n newState[inputName].value = value;\r\n newState = updateInputValid(newState, inputName);\r\n return newState;\r\n });\r\n};\r\n\r\nexport const disableInputs = (\r\n disabled: boolean,\r\n setInputs: React.Dispatch>,\r\n exclude?: string[]\r\n): void => {\r\n setInputs((prevState: IInputField) => {\r\n let newState = { ...prevState };\r\n for (let key in newState) {\r\n if (exclude && exclude.includes(key)) {\r\n continue;\r\n }\r\n newState[key].disabled = disabled;\r\n }\r\n return newState;\r\n });\r\n};\r\n\r\nconst INVALID_DEFAULT: IValidationResult = {\r\n isValid: false,\r\n message: null,\r\n};\r\nconst validateRequiredIf = (\r\n value: string,\r\n requiredIfValue?: string | string[]\r\n) => {\r\n if (!requiredIfValue) return false;\r\n if (Array.isArray(requiredIfValue)) {\r\n return !requiredIfValue.includes(value);\r\n } else {\r\n return requiredIfValue !== value;\r\n }\r\n};\r\n\r\nconst isValidValue = (\r\n item: IInputFieldItem,\r\n requiredIfValue?: string | string[],\r\n requiredCompareValue?: string\r\n): IValidationResult => {\r\n const { type, validation = {} } = item;\r\n let value;\r\n switch (type) {\r\n case EInputType.text:\r\n case EInputType.number:\r\n case EInputType.date:\r\n case EInputType.radio:\r\n case EInputType.tel:\r\n case EInputType.textarea:\r\n case EInputType.time:\r\n case EInputType.select:\r\n case EInputType.email:\r\n case EInputType.password:\r\n value = item.value as string;\r\n if (requiredCompareValue) {\r\n if (requiredCompareValue === value) return INVALID_DEFAULT;\r\n } else if (value === \"\") {\r\n return INVALID_DEFAULT;\r\n }\r\n // if (requireIfValue && requireIfValue !== value) return INVALID_DEFAULT;\r\n if (validateRequiredIf(value, requiredIfValue)) return INVALID_DEFAULT;\r\n if (type === EInputType.email && !isValidEmail(value as string))\r\n return {\r\n isValid: false,\r\n message: ETranslation.VALIDATION_EMAIL, // ADD Translation\r\n };\r\n if (validation.minLength && value.length < validation.minLength) {\r\n return {\r\n isValid: false,\r\n message:\r\n validation.minLengthMessage || ETranslation.VALIDATION_MIN_LENGTH,\r\n messageParams: {\r\n minLength: validation.minLength.toString(),\r\n },\r\n };\r\n }\r\n if (validation.maxLength && value.length > validation.maxLength) {\r\n return {\r\n isValid: false,\r\n message:\r\n validation.maxLengthMessage || ETranslation.VALIDATION_MAX_LENGTH,\r\n messageParams: {\r\n maxLength: validation.maxLength.toString(),\r\n },\r\n };\r\n }\r\n if (validation.minAmount && parseInt(value) < validation.minAmount) {\r\n return {\r\n isValid: false,\r\n message:\r\n validation.minAmountMessage || ETranslation.VALIDATION_MIN_AMOUNT,\r\n messageParams: {\r\n minAmount: validation.minAmount.toString(),\r\n },\r\n };\r\n }\r\n if (validation.maxAmount && parseInt(value) > validation.maxAmount) {\r\n return {\r\n isValid: false,\r\n message:\r\n validation.maxAmountMessage || ETranslation.VALIDATION_MAX_AMOUNT,\r\n messageParams: {\r\n maxAmount: validation.maxAmount.toString(),\r\n },\r\n };\r\n }\r\n break;\r\n case EInputType.checkbox:\r\n value = item.value as string[];\r\n if (value.length === 0) return INVALID_DEFAULT;\r\n break;\r\n case EInputType.datepicker:\r\n value = item.value as Date;\r\n if (!value) return INVALID_DEFAULT;\r\n break;\r\n default:\r\n return INVALID_DEFAULT;\r\n }\r\n return {\r\n isValid: true,\r\n message: null,\r\n };\r\n};\r\n\r\nexport const validateInput = (\r\n inputs: IInputField,\r\n item: IInputFieldItem\r\n): IValidationResult => {\r\n const { validation } = item;\r\n if (validation) {\r\n if (validation.required) {\r\n return isValidValue(item, undefined, validation.requiredCompareValue);\r\n } else if (validation.requiredIf) {\r\n if (\r\n isValidValue(inputs[validation.requiredIf], validation.requiredIfValue)\r\n .isValid\r\n ) {\r\n return isValidValue(item);\r\n }\r\n } else if (validation.requiredIfNot) {\r\n if (\r\n !isValidValue(\r\n inputs[validation.requiredIfNot],\r\n validation.requiredIfValue\r\n ).isValid\r\n ) {\r\n return isValidValue(item);\r\n }\r\n }\r\n }\r\n return {\r\n isValid: true,\r\n message: null,\r\n };\r\n};\r\n\r\nexport const validateInputs = (inputs: IInputField) => {\r\n const keys = Object.keys(inputs);\r\n for (let key of keys) {\r\n const item = inputs[key];\r\n const validationResult = validateInput(inputs, item);\r\n if (!validationResult.isValid) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n};\r\n\r\nexport const dateToDateTimeString = (date: Date | null): string => {\r\n if (!date || !dateFns.isValid(date)) return \"\";\r\n return dateFns.format(date, \"dd.MM.yyyy HH:mm\");\r\n};\r\n\r\n// copy without reference\r\nexport const dateToString = (date?: Date | null): string => {\r\n if (!date) return \"\";\r\n const newDate = new Date(date.valueOf());\r\n return dateFns.format(newDate, \"dd.MM.yyyy\");\r\n};\r\n\r\n// format date string to dd.MM.yyyy\r\nexport const formatDateString = (date?: string | null): string => {\r\n if (!date) return \"\";\r\n const newDate = new Date(date);\r\n return dateFns.format(newDate, \"dd.MM.yyyy\");\r\n};\r\n\r\n/**\r\n * Excel payment\r\n *\r\n * https://support.google.com/docs/answer/3093185?hl=fi\r\n * https://stackoverflow.com/a/6088618\r\n * https://gist.github.com/maarten00/23400873d51bf2ec4eeb\r\n *\r\n * MAKSU(korko; jaksojen_määrä; nykyinen_arvo; [tuleva_arvo], [loppu_tai_alku])\r\n * korko – Korkokanta (desimaalina, 0.25, ei 25%).\r\n * jaksojen_määrä – Suoritettavien maksutapahtumien määrä.\r\n * nykyinen_arvo – Annuiteetin nykyinen arvo.\r\n * tuleva_arvo – [VALINNAINEN] – Viimeisen maksun suorittamisen jälkeen jäljellä oleva tuleva arvo.\r\n * loppu_tai_alku – [VALINNAINEN – oletuksena 0] – Maksut erääntyvät kunkin jakson lopussa (0) tai alussa (1).\r\n * esim. pmt(3.25/100/12, 60, -28950.00, 3000.00, 1)\r\n */\r\nexport const pmt = (\r\n rate: number,\r\n number_of_periods: number,\r\n present_value: number,\r\n future_value?: number,\r\n end_or_beginning?: number\r\n) => {\r\n rate = rate || 0;\r\n number_of_periods = number_of_periods || 0;\r\n present_value = present_value || 0;\r\n future_value = future_value || 0;\r\n end_or_beginning = end_or_beginning || 0;\r\n\r\n if (rate !== 0.0) {\r\n // Interest rate exists\r\n const q = Math.pow(1 + rate, number_of_periods);\r\n return (\r\n -(rate * (future_value + q * present_value)) /\r\n ((-1 + q) * (1 + rate * end_or_beginning))\r\n );\r\n } else if (number_of_periods !== 0.0) {\r\n // No interest rate, but number of payments exists\r\n return -(future_value + present_value) / number_of_periods;\r\n }\r\n\r\n return 0.0;\r\n};\r\n\r\n/**\r\n * Excel future value\r\n *\r\n * https://support.google.com/docs/answer/3093224?hl=fi\r\n * https://gist.github.com/lancevo/6010111\r\n *\r\n * TULEVA.ARVO(korko; jaksojen_määrä; maksun_määrä; [nykyinen_arvo]; [loppu_tai_alku])\r\n * korko – Korkokanta.\r\n * jaksojen_määrä – Suoritettavien maksutapahtumien määrä.\r\n * maksun_määrä – Jaksoa kohden maksettava määrä.\r\n * nykyinen_arvo – [VALINNAINEN – 0 oletuksena] – Annuiteetin nykyinen arvo.\r\n * loppu_tai_alku – [VALINNAINEN – oletuksena 0] – Maksut erääntyvät kunkin jakson lopussa (0) tai alussa (1).\r\n */\r\nexport const fv = (\r\n rate: number,\r\n number_of_periods: number,\r\n payment_amount: number,\r\n present_value?: number,\r\n end_or_beginning?: number\r\n) => {\r\n rate = rate || 0;\r\n number_of_periods = number_of_periods || 0;\r\n payment_amount = payment_amount || 0;\r\n\r\n let pow = Math.pow(1 + rate, number_of_periods);\r\n present_value = present_value || 0;\r\n end_or_beginning = end_or_beginning || 0;\r\n\r\n if (rate !== 0.0) {\r\n return (\r\n (payment_amount * (1 + rate * end_or_beginning) * (1 - pow)) / rate -\r\n present_value * pow\r\n );\r\n } else {\r\n return -1 * (present_value + payment_amount * number_of_periods);\r\n }\r\n};\r\n\r\nexport const calculateMaintenanceBudgetTotal = (\r\n extraTireSets: number,\r\n extraTireSetPrice: number,\r\n maintenanceBudget: number,\r\n tireStoragePrice: number,\r\n replacementCarPrice: number\r\n) => {\r\n // huoltobudjetti (total): lisärengassarjat * sarjahinta (pitää lisätä kenttä) + huoltobudjetti + rengashotelli + sijaisauto\r\n extraTireSets = extraTireSets || 0;\r\n extraTireSetPrice = extraTireSetPrice || 0;\r\n maintenanceBudget = maintenanceBudget || 0;\r\n tireStoragePrice = tireStoragePrice || 0;\r\n replacementCarPrice = replacementCarPrice || 0;\r\n\r\n const tirePrice = +extraTireSets * +extraTireSetPrice;\r\n if (tirePrice !== 0.0) {\r\n return (\r\n +tirePrice + +maintenanceBudget + +tireStoragePrice + +replacementCarPrice\r\n );\r\n } else {\r\n return +maintenanceBudget + +tireStoragePrice + +replacementCarPrice;\r\n }\r\n};\r\n\r\nexport const calculateTotalPriceIncludingPollution = (\r\n carTax: number,\r\n totalPrice: number,\r\n replacementCarPrice: number,\r\n grossProfitVat: number,\r\n winterTires: number\r\n) => {\r\n // kokonaishinta saastutuksella = kokonaishinta + sijaisauto + kate + talvirenkaat\r\n carTax = carTax || 0;\r\n totalPrice = totalPrice || 0;\r\n replacementCarPrice = replacementCarPrice || 0;\r\n grossProfitVat = grossProfitVat || 0;\r\n winterTires = winterTires || 0;\r\n return (\r\n +carTax +\r\n +totalPrice +\r\n +replacementCarPrice +\r\n +grossProfitVat +\r\n +winterTires\r\n );\r\n};\r\n\r\nexport const toTwoDecimals = (num: number): number => {\r\n return Number(num.toFixed(2));\r\n};\r\n\r\nexport const removeWhitespace = (str: string): string => {\r\n return str.replace(/\\s/g, \"\");\r\n};\r\n\r\nexport const generateUUID = (prefix?: string) => {\r\n return `${prefix}-${uuid.v1()}`;\r\n};\r\n\r\nexport const isDevelopment = () => {\r\n return process.env.NODE_ENV === \"development\";\r\n};\r\n\r\nexport const copyToClipboard = (input: HTMLInputElement) => {\r\n input.select();\r\n input.setSelectionRange(0, 99999);\r\n document.execCommand(\"copy\");\r\n if (window.getSelection) {\r\n if (window.getSelection()?.empty) {\r\n window.getSelection()?.empty();\r\n } else if (window.getSelection()?.removeAllRanges) {\r\n window.getSelection()?.removeAllRanges();\r\n }\r\n }\r\n};\r\n\r\nexport const servicesToOptions = (services?: IService[]) => {\r\n if (!services) return undefined;\r\n const options: IOption[] = [];\r\n services.forEach((s) => {\r\n if (s.id) {\r\n options.push({\r\n value: s.id.toString(),\r\n label: s.name,\r\n });\r\n }\r\n });\r\n return options;\r\n};\r\n\r\nexport const serviceToOption = (service?: IService) => {\r\n if (!service || !service.id) return undefined;\r\n const option: IOption = {\r\n value: service.id.toString(),\r\n label: service.name,\r\n };\r\n\r\n return option;\r\n};\r\n\r\nexport const usePrevious = (value: T): T | undefined => {\r\n const ref = useRef();\r\n useEffect(() => {\r\n ref.current = value;\r\n });\r\n return ref.current;\r\n};\r\n\r\nexport const createCSV = (csvString: string, fileName: string) => {\r\n if (!csvString) return;\r\n const a = document.createElement(\"a\");\r\n window.URL = window.URL || window.webkitURL;\r\n const base64toBlobContent = base64toBlob(\r\n csvString,\r\n \"attachment/csv;charset=ISO-8859-1\"\r\n );\r\n // console.log(\"base64toBlobContent \", base64toBlobContent);\r\n\r\n const downloadUrl = window.URL.createObjectURL(base64toBlobContent);\r\n\r\n a.href = downloadUrl;\r\n a.target = \"_blank\";\r\n a.download = fileName;\r\n\r\n document.body.appendChild(a);\r\n a.click();\r\n document.body.removeChild(a);\r\n};\r\n\r\n// ainoa toimiva byte[] utf8 -> iso-8859-1 käännös\r\nconst base64toBlob = (base64Data: string, contentType: string) => {\r\n contentType = contentType || \"\";\r\n const sliceSize = 1024;\r\n const byteCharacters = atob(base64Data);\r\n const bytesLength = byteCharacters.length;\r\n const slicesCount = Math.ceil(bytesLength / sliceSize);\r\n const byteArrays = new Array(slicesCount);\r\n\r\n for (let sliceIndex = 0; sliceIndex < slicesCount; ++sliceIndex) {\r\n const begin = sliceIndex * sliceSize;\r\n const end = Math.min(begin + sliceSize, bytesLength);\r\n\r\n const bytes = new Array(end - begin);\r\n for (let offset = begin, i = 0; offset < end; ++i, ++offset) {\r\n bytes[i] = byteCharacters[offset].charCodeAt(0);\r\n }\r\n byteArrays[sliceIndex] = new Uint8Array(bytes);\r\n }\r\n return new Blob(byteArrays, { type: contentType });\r\n};\r\n\r\n\r\nexport const linkHandler = (event: React.MouseEvent, route: string, history: History.History): void => {\r\n event.ctrlKey ? window.open(route, \"_blank\") : history.push(route);\r\n}","import { faSearch } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { RouteComponentProps, withRouter } from \"react-router-dom\";\r\nimport { Routes } from \"../../../classes/Routes\";\r\nimport * as searchService from \"../../../services/searchService\";\r\nimport { updateInputHandler } from \"../../../shared/utility\";\r\nimport { ETranslation } from \"../../../translations/translation-keys\";\r\nimport Input, { EInputType, IInputField, IInputOptions } from \"../../UI/Input/Input\";\r\nimport classes from \"./Search.module.scss\";\r\n\r\nenum ESearch {\r\n search = \"search\",\r\n}\r\n\r\ninterface IProps extends RouteComponentProps {\r\n text: string;\r\n}\r\n\r\nenum EKind {\r\n OfferRequest = \"OfferRequest\",\r\n Organization = \"Organization\",\r\n}\r\n\r\ninterface ISearchItem {\r\n value: string;\r\n label: string;\r\n kind: EKind;\r\n}\r\n\r\nconst Search: React.FC = ({ text, history, location }) => {\r\n const { t } = useTranslation();\r\n\r\n const [searchOpen, setSearchOpen] = useState(false);\r\n\r\n const [inputs, setInputs] = useState({\r\n [ESearch.search]: {\r\n type: EInputType.searchSelect,\r\n placeholder: t(ETranslation.COMMON_SEARCH),\r\n value: \"\",\r\n }\r\n });\r\n\r\n const createInput = (inputName: ESearch, options?: IInputOptions) => {\r\n const item = inputs[inputName];\r\n return updateInputHandler(inputName, value, setInputs)}\r\n inputName={inputName}\r\n />\r\n };\r\n\r\n useEffect(() => {\r\n if (searchOpen) setSearchOpen(false);\r\n // eslint-disable-next-line\r\n }, [location]);\r\n\r\n\r\n const searchOption = inputs[ESearch.search].value as ISearchItem;\r\n\r\n useEffect(() => {\r\n const value = searchOption.value;\r\n if (value) {\r\n // setInputs({ ...initialInputs });\r\n switch (searchOption.kind) {\r\n case EKind.OfferRequest:\r\n history.push(Routes.OFFER_REQUEST(value));\r\n break;\r\n case EKind.Organization:\r\n history.push(Routes.SERVICE_PROVIDER(value));\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n }, [searchOption, history]);\r\n\r\n const classNames = [classes.Container];\r\n\r\n if (searchOpen) {\r\n classNames.push(classes.Open);\r\n }\r\n\r\n return (\r\n
\r\n {!searchOpen && (\r\n

setSearchOpen(true)}>\r\n \r\n {\" \"}\r\n {text}\r\n

\r\n )}\r\n {searchOpen && createInput(ESearch.search, { \r\n fetchOptions: searchService.search, \r\n containerStyles: { width: \"100%\", margin: 0 }\r\n })}\r\n
\r\n );\r\n}\r\n\r\nexport default withRouter(Search);\r\n","import { faChevronDown, faTimes } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport React, { useContext } from \"react\";\r\nimport { NavLink, RouteComponentProps, withRouter } from \"react-router-dom\";\r\nimport { ERoute } from \"../../../classes/Routes\";\r\nimport { AuthUser } from \"../../../classes/AuthUser\";\r\nimport HeaderContext from \"../../../context/HeaderContext\";\r\nimport Backdrop from \"../../UI/Backdrop/Backdrop\";\r\nimport Search from \"../Search/Search\";\r\nimport classes from \"./Menu.module.scss\";\r\n\r\nexport enum EMenuType {\r\n DESKTOP,\r\n MOBILE,\r\n}\r\n\r\ninterface IProps extends RouteComponentProps {\r\n type: EMenuType;\r\n isOpen: boolean;\r\n toggleMenu: () => void;\r\n currentUser: AuthUser;\r\n}\r\n\r\nexport interface IMenuItem {\r\n text: string;\r\n link?: string;\r\n to?: ERoute;\r\n subMenuItems?: IMenuItem[];\r\n action?: () => void;\r\n search?: boolean;\r\n}\r\n\r\nconst Menu: React.FC = ({ type, isOpen, toggleMenu, location, currentUser }) => {\r\n const { menuItems, dropdownMenuItems } = useContext(HeaderContext);\r\n\r\n const classNames = [classes.Menu];\r\n switch (type) {\r\n case EMenuType.DESKTOP:\r\n classNames.push(classes.DesktopMenu);\r\n break;\r\n case EMenuType.MOBILE:\r\n classNames.push(classes.MobileMenu);\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n if (isOpen) {\r\n classNames.push(classes.isOpen);\r\n }\r\n\r\n const menuItemClickHandler = (menuItem: IMenuItem): void => {\r\n if (menuItem.link) {\r\n window.location.href = menuItem.link;\r\n }\r\n if (menuItem.action) {\r\n menuItem.action();\r\n }\r\n };\r\n\r\n const isActiveChild = (menuItems?: IMenuItem[]): boolean => {\r\n if (!menuItems) return false;\r\n return menuItems.some(\r\n (menuItem) => menuItem.to && location.pathname.startsWith(menuItem.to)\r\n );\r\n };\r\n\r\n const renderMenuItem = (menuItem: IMenuItem, userDropdown?: boolean) => {\r\n if (type === EMenuType.MOBILE && menuItem.search) return null;\r\n const key = menuItem.text;\r\n let item: JSX.Element | null = null;\r\n if (menuItem.to) {\r\n if(!currentUser.routes.includes(menuItem.to)) return null;\r\n\r\n item = (\r\n \r\n {menuItem.text}\r\n \r\n );\r\n } else {\r\n if (menuItem.search && !currentUser.allowSearch) return null;\r\n if (menuItem.subMenuItems) {\r\n const hasAtleastOneAccess = menuItem.subMenuItems.some(item => item.to && currentUser.routes.includes(item.to));\r\n if(!hasAtleastOneAccess) return null;\r\n }\r\n\r\n const classNames = [classes.MenuItem];\r\n const isActive = isActiveChild(menuItem.subMenuItems);\r\n if (isActive) {\r\n classNames.push(classes.MenuItemActive);\r\n }\r\n if (userDropdown) {\r\n classNames.push(classes.UserDropdown);\r\n }\r\n item = (\r\n menuItemClickHandler(menuItem)}\r\n >\r\n {menuItem.search ? (\r\n \r\n ) : menuItem.text}{\" \"}\r\n {menuItem.subMenuItems && (\r\n \r\n )}\r\n \r\n );\r\n }\r\n\r\n const containerClasses = [classes.MenuItemContainer];\r\n\r\n if (userDropdown) {\r\n containerClasses.push(classes.UserDropdownContainer);\r\n }\r\n if (menuItem.search) {\r\n containerClasses.push(classes.Search);\r\n }\r\n\r\n return (\r\n
\r\n {item}\r\n {menuItem.subMenuItems && (\r\n
\r\n {menuItem.subMenuItems.map((menuItem) => renderMenuItem(menuItem))}\r\n
\r\n )}\r\n
\r\n );\r\n };\r\n\r\n return (\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n {menuItems.map(menuItem => renderMenuItem(menuItem))}\r\n {dropdownMenuItems.map(menuItem => renderMenuItem(menuItem, true))}\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default withRouter(Menu);\r\n","import { faBars } from '@fortawesome/free-solid-svg-icons';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport React, { useState } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { RouteComponentProps, withRouter } from 'react-router-dom';\r\nimport { Routes } from '../../classes/Routes';\r\nimport { AuthUser } from '../../classes/AuthUser';\r\nimport HeaderContext from '../../context/HeaderContext';\r\nimport { ETranslation } from '../../translations/translation-keys';\r\nimport classes from './Header.module.scss';\r\nimport Menu, { EMenuType, IMenuItem } from './Menu/Menu';\r\n\r\ninterface IProps extends RouteComponentProps {\r\n currentUser: AuthUser;\r\n logout: () => void;\r\n}\r\n\r\nconst Header: React.FC = ({ history, currentUser, logout }) => {\r\n const [isOpen, setIsOpen] = useState(false);\r\n\r\n const toggleMenu = () => setIsOpen((prevState) => !prevState);\r\n\r\n const { t } = useTranslation();\r\n\r\n const clickHandler = (link: string) => history.push(link);\r\n\r\n const menuItems: IMenuItem[] = [\r\n { text: t(ETranslation.ORDER_SERVICE), to: Routes.SUBSCRIPTION_EXPIRED },\r\n { text: t(ETranslation.OFFERREQUESTS), to: Routes.OFFER_REQUESTS },\r\n { text: t(ETranslation.LOCATIONS), to: Routes.LOCATIONS },\r\n { text: t(ETranslation.SERVICEPROVIDERS), to: Routes.SERVICE_PROVIDERS },\r\n { text: t(ETranslation.SERVICES), to: Routes.SERVICES },\r\n { text: t(ETranslation.FEEDBACKS), to: Routes.FEEDBACKS },\r\n { text: t(ETranslation.OPERATORS), to: Routes.OPERATORS },\r\n { text: t(ETranslation.CONTENTS), to: Routes.CONTENTS },\r\n { text: t(ETranslation.MANAGEMENT), subMenuItems: [\r\n { text: t(ETranslation.OFFER_REQUEST_ACCESS), to: Routes.OFFER_REQUEST_ACCESS },\r\n { text: t(ETranslation.LOG_ITEMS), to: Routes.LOG_ITEMS }\r\n ]\r\n },\r\n { text: t(ETranslation.COMMON_SEARCH), search: true },\r\n ];\r\n\r\n const dropdownMenuItems: IMenuItem[] = [\r\n { \r\n text: currentUser?.name || \"\", \r\n subMenuItems: [\r\n { text: t(ETranslation.ORGANIZATION_ME), to: Routes.ORGANIZATIONS_ME },\r\n { text: t(ETranslation.USERS), to: Routes.USERS },\r\n { text: t(ETranslation.SETTINGS), to: Routes.SETTINGS },\r\n { text: t(ETranslation.LOGOUT), action: logout }\r\n ]\r\n }\r\n ];\r\n\r\n return (\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
clickHandler(Routes.ADMIN)}>\r\n
\r\n \r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default withRouter(React.memo(Header));\r\n","import React from \"react\";\r\nimport { AuthUser } from \"../../classes/AuthUser\";\r\nimport Header from \"../Header/Header\";\r\n\r\nconst classes = require(\"./Layout.module.scss\");\r\n\r\ninterface IProps {\r\n currentUser: AuthUser | null;\r\n onLogout: () => void;\r\n children: any;\r\n}\r\n\r\nconst Layout: React.FC = ({ currentUser, onLogout, children }) => {\r\n return (\r\n
\r\n {currentUser && (
)}\r\n
\r\n {children}\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Layout;","import React, { useEffect, useState } from 'react';\r\n\r\nimport classes from './SplashScreen.module.scss';\r\n\r\ninterface IProps {\r\n loading: boolean;\r\n}\r\n\r\nconst SplashScreen:React.FC = ({ loading }) => {\r\n const [hide, setHide] = useState(false);\r\n\r\n useEffect(() => {\r\n if(!loading) {\r\n setHide(true);\r\n }\r\n }, [loading])\r\n\r\n const classNames = [classes.Container];\r\n\r\n if (hide) {\r\n classNames.push(classes.Hide);\r\n }\r\n\r\n const innerClassNames = [classes.Inner];\r\n \r\n return (\r\n
\r\n
H
\r\n
\r\n )\r\n}\r\n\r\n\r\nexport default SplashScreen;","import React, { ReactNode } from \"react\";\r\n\r\nexport enum EModalSize {\r\n FULL,\r\n MEDIUM,\r\n SMALL,\r\n}\r\n\r\nexport interface IModal {\r\n content: ReactNode;\r\n isOpen: boolean;\r\n title?: string;\r\n size: EModalSize;\r\n loading?: boolean;\r\n disabled?: boolean;\r\n onModalClose?: () => void;\r\n noScroll?: boolean;\r\n}\r\n\r\nexport const defaultModal: IModal = {\r\n content: null,\r\n isOpen: false,\r\n title: \"\",\r\n size: EModalSize.SMALL,\r\n loading: false,\r\n disabled: false,\r\n onModalClose: () => {},\r\n};\r\n\r\nconst ModalContext = React.createContext<{\r\n setModal: (modal: React.SetStateAction) => void;\r\n closeModal: () => void;\r\n}>({\r\n setModal: (modal: React.SetStateAction) => {},\r\n closeModal: () => {},\r\n});\r\n\r\nexport default ModalContext;\r\n","import { faTimes } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport React, { useContext } from \"react\";\r\nimport Backdrop from \"../Backdrop/Backdrop\";\r\nimport Spinner from \"../Spinner/Spinner\";\r\nimport classes from \"./Modal.module.scss\";\r\nimport ModalContext, { defaultModal, EModalSize, IModal } from \"./ModalContext\";\r\n\r\ninterface IProps {\r\n modal: IModal;\r\n}\r\n\r\nconst Modal: React.FC = ({ modal }) => {\r\n const { setModal } = useContext(ModalContext);\r\n\r\n const containerClassNames = [classes.Container];\r\n\r\n if (modal.isOpen) {\r\n containerClassNames.push(classes.ContainerOpen);\r\n }\r\n\r\n switch (modal.size) {\r\n case EModalSize.FULL:\r\n containerClassNames.push(classes.ContainerFull);\r\n break;\r\n case EModalSize.MEDIUM:\r\n containerClassNames.push(classes.ContainerMedium);\r\n break;\r\n case EModalSize.SMALL:\r\n containerClassNames.push(classes.ContainerSmall);\r\n break;\r\n default:\r\n }\r\n\r\n const closeModal = () => {\r\n if (modal.disabled) return;\r\n setModal(defaultModal);\r\n if (modal.onModalClose) modal.onModalClose();\r\n };\r\n\r\n const contentClassNames = [classes.Content];\r\n if (modal.noScroll) {\r\n contentClassNames.push(classes.NoScroll);\r\n }\r\n\r\n return (\r\n \r\n \r\n
\r\n event.stopPropagation()}\r\n >\r\n
\r\n

{modal.title}

\r\n {!modal.disabled && (\r\n \r\n \r\n \r\n )}\r\n
\r\n {modal.loading ? : modal.content}\r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default Modal;\r\n","import React from \"react\";\r\n\r\nconst Admin: React.FC = () => {\r\n return (\r\n

Admin Page

\r\n )\r\n}\r\n\r\nexport default Admin;\r\n","import React from \"react\";\r\nimport classes from \"./Container.module.scss\";\r\n\r\ninterface IProps {\r\n // children: ReactNode;\r\n style?: React.CSSProperties;\r\n}\r\n\r\nconst Container:React.FC = ({ children, style }) => {\r\n return (\r\n
\r\n {children}\r\n
\r\n )\r\n}\r\n\r\nexport default Container;\r\n","import React from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { RouteComponentProps } from \"react-router-dom\";\r\nimport { Routes } from \"../../classes/Routes\";\r\n\r\nimport Button from \"../../components/UI/Button/Button\";\r\nimport Container from \"../../components/UI/Container/Container\";\r\nimport { ETranslation } from \"../../translations/translation-keys\";\r\n\r\ninterface IProps extends RouteComponentProps {}\r\n\r\nconst SubscriptionExpired: React.FC = ({ history }) => {\r\n const { t } = useTranslation();\r\n\r\n\r\n const expiredInfoLinkHandler = () => {\r\n history.push(Routes.ORGANIZATIONS_ME);\r\n }\r\n\r\n return (\r\n \r\n

{t(ETranslation.SUBSCRIPTION_EXPIRED)}

\r\n

{t(ETranslation.SERVICEPROVIDER_EXPIRED_SUBSCRIBE)}

\r\n

{t(ETranslation.SUBSCRIPTION_EXPIRED_INFO)}

\r\n
\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default SubscriptionExpired;\r\n","import React, { ReactNode, CSSProperties } from \"react\";\r\nimport classes from \"./InputGroup.module.scss\";\r\n\r\ninterface IProps {\r\n children: ReactNode[];\r\n style?: CSSProperties;\r\n className?: string;\r\n}\r\n\r\nconst InputGroup: React.FC = ({ children, style, className }) => {\r\n const containerClassNames = [classes.Container];\r\n if (className) containerClassNames.push(className);\r\n return (\r\n
\r\n {children}\r\n
\r\n )\r\n}\r\n\r\nexport default InputGroup;\r\n","import React, { useState } from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport firebase from \"../../../firebase\";\r\nimport { isValidEmail } from \"../../../shared/utility\";\r\nimport { ETranslation } from \"../../../translations/translation-keys\";\r\nimport Button from \"../../UI/Button/Button\";\r\nimport { EInputType } from \"../../UI/Input/Input\";\r\nimport InputGroup from \"../../UI/InputGroup/InputGroup\";\r\nimport classes from \"./PasswordResetDialog.module.scss\";\r\n\r\ninterface IProps {\r\n onCancel: () => void;\r\n}\r\n\r\nconst PasswordResetDialog: React.FC = ({ onCancel }) => {\r\n const { t } = useTranslation();\r\n\r\n const [email, setEmail] = useState(\"\");\r\n\r\n const sendPasswordResetEmail = () => {\r\n if (email) {\r\n firebase.auth().sendPasswordResetEmail(email);\r\n }\r\n onCancel();\r\n }\r\n\r\n return (\r\n
\r\n

{t(ETranslation.PASSWORD_RESET_TEXT)}

\r\n
\r\n {\r\n const value = event && event.target && event.target.value;\r\n setEmail(value as string)\r\n }}\r\n />\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n )\r\n}\r\n\r\nexport default PasswordResetDialog;\r\n","import { ETranslation } from \"./translation-keys\";\r\n\r\nconst commonTranslations = {\r\n [ETranslation.COMMON_SAVE]: \"Tallenna\",\r\n [ETranslation.COMMON_RETURN]: \"Palaa\",\r\n [ETranslation.COMMON_ADD]: \"Lisää\",\r\n [ETranslation.COMMON_REMOVE]: \"Poista\",\r\n [ETranslation.COMMON_COPY]: \"Kopioi\",\r\n [ETranslation.COMMON_STREET_ADDRESS]: \"Katuosoite\",\r\n [ETranslation.COMMON_ZIP]: \"Postinumero\",\r\n [ETranslation.COMMON_CITY]: \"Postitoimipaikka\",\r\n [ETranslation.COMMON_NO_CHOICE]: \"Ei valintaa\",\r\n [ETranslation.COMMON_CREATED]: \"Luotu\",\r\n [ETranslation.COMMON_YES]: \"Kyllä\",\r\n [ETranslation.COMMON_NO]: \"Ei\",\r\n [ETranslation.COMMON_COUNTRY]: \"Maa\",\r\n [ETranslation.COMMON_PHONE]: \"Puhelinnumero\",\r\n [ETranslation.COMMON_EMAIL]: \"Sähköposti\",\r\n [ETranslation.COMMON_SERVICE]: \"Palvelu\",\r\n [ETranslation.COMMON_ARCHIVED]: \"Arkistoitu\",\r\n [ETranslation.COMMON_WWW]: \"WWW\",\r\n [ETranslation.COMMON_FACEBOOK]: \"Facebook\",\r\n [ETranslation.COMMON_TWITTER]: \"Twitter\",\r\n [ETranslation.COMMON_INSTAGRAM]: \"Instagram\",\r\n [ETranslation.COMMON_LINKEDIN]: \"Linkedin\",\r\n [ETranslation.COMMON_LATITUDE]: \"Latitude\",\r\n [ETranslation.COMMON_LONGITUDE]: \"Longitude\",\r\n [ETranslation.COMMON_TOKEN]: \"Token\",\r\n [ETranslation.COMMON_SEARCH]: \"Haku\",\r\n [ETranslation.COMMON_SEND]: \"Lähetä\",\r\n [ETranslation.COMMON_CANCEL]: \"Peruuta\",\r\n [ETranslation.COMMON_ADD_ALL]: \"Lisää kaikki\",\r\n [ETranslation.COMMON_CLOSE]: \"Sulje\",\r\n [ETranslation.COMMON_OPERATOR_NAME]: \"Operaattori\",\r\n [ETranslation.COMMON_SERVICE_PROVIDER_NAME]: \"Palveluntarjoaja\",\r\n [ETranslation.COMMON_FETCH]: \"Hae\",\r\n [ETranslation.COMMON_BUY]: \"Osta\",\r\n [ETranslation.COMMON_COPY_CONTACT_INFORMATION]: \"Kopioi leikepyödälle\",\r\n [ETranslation.COMMON_COPIED]: \"Tarjouspyynnön yhteystiedot kopioitu leikepöydälle\",\r\n [ETranslation.COMMON_CONTINUE]: \"Jatka\",\r\n [ETranslation.COMMON_CONFIRM]: \"Vahvista\",\r\n [ETranslation.COMMON_LOAD_ALL]: \"Lataa kaikki\",\r\n \r\n};\r\n\r\nconst geoLocationTranslation = {\r\n [ETranslation.GEO_LOCATION_ERROR]: 'Haku epäonnistui.'\r\n}\r\n\r\nconst authTranslations = {\r\n [ETranslation.TITLE_HANKIX]: \"HankiX tarjouspyyntöpalvelu\",\r\n [ETranslation.LOGIN]: \"Kirjaudu\",\r\n [ETranslation.USERNAME]: \"Käyttäjänimi\",\r\n [ETranslation.PASSWORD]: \"Salasana\",\r\n [ETranslation.PASSWORD_MIN_LENGTH_MESSAGE]:\r\n \"Salasanan pitää sisältää vähintään 6 merkkiä.\",\r\n [ETranslation.FORGOT_PASSWORD]: \"Unohditko salasanasi?\",\r\n [ETranslation.RESET_PASSWORD]: \"Palauta salasana\",\r\n};\r\n\r\nconst headerTranslations = {\r\n [ETranslation.ADMIN]: \"Admin\",\r\n [ETranslation.OPERATORS]: \"Operaattorit\",\r\n [ETranslation.ORGANIZATIONS]: \"Yritykset\",\r\n [ETranslation.OFFERREQUESTS]: \"Tarjouspyynnöt\",\r\n [ETranslation.SERVICEPROVIDERS]: \"Palveluntarjoajat\",\r\n [ETranslation.SERVICES]: \"Palvelut\",\r\n [ETranslation.FEEDBACKS]: \"Palautteet\",\r\n [ETranslation.USERS]: \"Käyttäjät\",\r\n [ETranslation.LOGOUT]: \"Kirjaudu ulos\",\r\n [ETranslation.SETTINGS]: \"Asetukset\",\r\n [ETranslation.CONTENTS]: \"Uutisten hallinta\",\r\n [ETranslation.MANAGEMENT]: \"Hallinta\",\r\n [ETranslation.OFFER_REQUEST_ACCESS]: \"Ostetut tarjouspyynnöt\",\r\n [ETranslation.LOG_ITEMS]: \"Käyttäjäloki\",\r\n [ETranslation.ORDER_SERVICE]: 'Tilaa palvelu',\r\n};\r\n\r\nconst offerRequestsTranslations = {\r\n [ETranslation.TITLE_OFFERREQUESTS]: \"Tarjouspyynnöt\",\r\n [ETranslation.OFFERREQUESTS_ADD_NEW]: \"Lisää tarjouspyyntö\",\r\n [ETranslation.NO_OFFERREQUESTS]: \"Ei tarjouspyyntöjä vielä. Malttia! Markkinointi on käynnistymässä.\",\r\n};\r\n\r\nconst offerRequestTranslations = {\r\n [ETranslation.TITLE_OFFERREQUEST]: \"Tarjouspyyntö\",\r\n [ETranslation.TITLE_SORT]: \"Lajittele\",\r\n [ETranslation.TITLE_OFFERREQUEST_NEW]: \"Uusi tarjouspyyntö\",\r\n [ETranslation.OFFERREQUEST_FIRSTNAME]: \"Etunimi\",\r\n [ETranslation.OFFERREQUEST_LASTNAME]: \"Sukunimi\",\r\n [ETranslation.OFFERREQUEST_EMAIL]: \"Sähköposti\",\r\n [ETranslation.OFFERREQUEST_CREATED]: \"Saapunut\",\r\n [ETranslation.OFFERREQUEST_ADDRESS]: \"Osoite\",\r\n [ETranslation.OFFERREQUEST_PHONE]: \"Puhelin-numero\",\r\n [ETranslation.OFFERREQUEST_CITY]: \"Kaupunki\",\r\n [ETranslation.OFFERREQUEST_STATUS]: \"Tila\",\r\n [ETranslation.OFFERREQUEST_TYPE]: \"Tyyppi\",\r\n [ETranslation.OFFERREQUEST_OPERATOR]: \"Asiakas\",\r\n [ETranslation.OFFER_REQUEST_CONSTRUCTION_AREA]: \"Pinta-ala m\\u00b2\",\r\n [ETranslation.OFFER_REQUEST_CONSTRUCTION_BUILDING_TYPE]: \"Rakennustyyppi\",\r\n [ETranslation.OFFER_REQUEST_CONSTRUCTION_BUILDING_TYPE_OTHER]:\r\n \"Muu rakennustyyppi\",\r\n [ETranslation.OFFER_REQUEST_CONSTRUCTION_CONSTRUCTION_YEAR]: \"Rakennusvuosi\",\r\n [ETranslation.OFFER_REQUEST_WELLNESS_LENGTH]: \"Palvelun pituus\",\r\n [ETranslation.OFFER_REQUEST_WELLNESS_REGULAR]: \"Säännöllinen\",\r\n [ETranslation.OFFERREQUEST_INFO]: \"Lisätiedot ja tarkennukset\",\r\n [ETranslation.OFFER_REQUEST_DELETED]: \"Tarjouspyyntö poistettu\",\r\n [ETranslation.OFFER_REQUEST_ARCHIVED]: \"Tarjouspyyntö arkistoitu\",\r\n [ETranslation.OFFER_REQUEST_PROVINCE]: \"Maakunta\",\r\n [ETranslation.OFFER_REQUEST_LANGUAGE]: \"Kieli\",\r\n \r\n [ETranslation.OFFER_REQUEST_ADD_ACCESS_ERROR]: \"Jotain meni väärin, Ei voitu lisätä oikeutta tarjouspyyntöön\",\r\n [ETranslation.OFFER_REQUEST_ACCESS_OFFER_REQUEST_CREATED]: \"Tarjouspyyntö luontipvm\",\r\n [ETranslation.OFFER_REQUEST_ACCESS_USERNAME]: \"Käyttäjän nimi\",\r\n [ETranslation.OFFER_REQUEST_ACCESS_OFFER_REQUEST]: \"Tarjouspyyntö\",\r\n [ETranslation.OFFER_REQUEST_ACCESS_CREATED]: \"Ostopvm\",\r\n [ETranslation.OFFER_REQUEST_ACCESS_CREATED_START]: \"Ostopvm alku\",\r\n [ETranslation.OFFER_REQUEST_ACCESS_CREATED_END]: \"Ostopvm loppu\",\r\n [ETranslation.OFFER_REQUEST_ACCESS_NO_OFFER_REQUESTS]: \"Ei löytynyt yhtään ostettua tarjouspyyntöä\",\r\n\r\n};\r\n\r\nconst logItemTranslations = {\r\n [ETranslation.LOG_ITEM_EVENT]: \"Tapahtuma\",\r\n [ETranslation.LOG_ITEM_USER_AGENT]: \"User Agent\",\r\n [ETranslation.LOG_ITEM_EVENT_CREATED_START]: \"Tapahtuma pvm alku\",\r\n [ETranslation.LOG_ITEM_EVENT_CREATED_END]: \"Tapahtuma pvm loppu\",\r\n [ETranslation.LOG_ITEM_EVENTS_SELECT]: \"Valitse tapahtuma\",\r\n [ETranslation.LOG_ITEM_EVENTS_OFFER_REQUEST_VIEW]: \"OFFER_REQUEST_VIEW\",\r\n [ETranslation.LOG_ITEM_EVENTS_OFFER_REQUEST_VIEW_PIN]: \"OFFER_REQUEST_VIEW_PIN\",\r\n [ETranslation.LOG_ITEM_EVENTS_OFFER_REQUEST_SAVE]: \"OFFER_REQUEST_SAVE\",\r\n [ETranslation.LOG_ITEM_EVENTS_OFFER_REQUEST_SAVE_LOCAL]: \"OFFER_REQUEST_SAVE_LOCAL\",\r\n [ETranslation.LOG_ITEM_EVENTS_OFFER_REQUEST_DELETE]: \"OFFER_REQUEST_DELETE\",\r\n [ETranslation.LOG_ITEM_EVENTS_OFFER_REQUEST_UPDATE]: \"OFFER_REQUEST_UPDATE\",\r\n [ETranslation.LOG_ITEM_EVENTS_OFFER_REQUEST_UPDATE_PIN]: \"OFFER_REQUEST_UPDATE_PIN\",\r\n [ETranslation.LOG_ITEM_EVENTS_OFFER_REQUEST_ARCHIVE_PIN]: \"OFFER_REQUEST_ARCHIVE_PIN\",\r\n [ETranslation.LOG_ITEM_EVENTS_OFFER_REQUEST_LIST]: \"OFFER_REQUEST_LIST\",\r\n [ETranslation.LOG_ITEM_EVENTS_OFFER_REQUEST_ADD_ACCESS]: \"OFFER_REQUEST_ADD_ACCESS\",\r\n [ETranslation.LOG_ITEM_EVENTS_USER_ACCEPT_TERMS_OF_USE]: \"USER_ACCEPT_TERMS_OF_USE\",\r\n [ETranslation.LOG_ITEM_EVENTS_ORGANIZATION_CONFIRM_BILLING]: \"ORGANIZATION_CONFIRM_BILLING\",\r\n [ETranslation.LOG_ITEM_EVENTS_AUTH_LOGIN]: \"AUTH_LOGIN\",\r\n [ETranslation.LOG_ITEM_EVENTS_AUTH_LOGOUT]: \"AUTH_LOGOUT\",\r\n [ETranslation.LOG_ITEM_NO_LOG_ITEMS]: \"Ei löytynyt käyttäjäloki merkintöjä\",\r\n\r\n}\r\n\r\nconst offerRequestTypeTranslations = {\r\n [ETranslation.OFFER_REQUEST_TYPE_SIMPLE]: \"Perus\",\r\n [ETranslation.OFFER_REQUEST_TYPE_CONSTRUCTION]: \"Rakennus\",\r\n [ETranslation.OFFER_REQUEST_TYPE_WELLNESS]: \"Hyvinvointi\",\r\n};\r\n\r\nconst buildingTypeTranslations = {\r\n [ETranslation.BUIDLING_TYPE_SELECT]: \"Valitse rakennustyyppi\",\r\n [ETranslation.BUILDING_TYPE_TOWN_HOUSE]: \"Omakotitalo\",\r\n [ETranslation.BUILDING_TYPE_SEMI_DETACHED_HOUSE]: \"Paritalo\",\r\n [ETranslation.BUILDING_TYPE_ROW_HOUSE]: \"Rivitalo\",\r\n [ETranslation.BUILDING_TYPE_DETACHED_HOUSE]: \"Erillistalo\",\r\n [ETranslation.BUILDING_TYPE_APARTMENT_HOUSE]: \"Kerrostalo\",\r\n [ETranslation.BUILDING_TYPE_OTHER]: \"Muu\",\r\n};\r\n\r\nconst languageSelectTranslations = {\r\n [ETranslation.OFFERREQUEST_LANGUAGE_FI]: \"Suomi\",\r\n [ETranslation.OFFERREQUEST_LANGUAGE_EN]: \"Englanti\",\r\n [ETranslation.OFFERREQUEST_LANGUAGE_SE]: \"Ruotsi\",\r\n};\r\n\r\nconst reactSelectTranslations = {\r\n [ETranslation.REACT_SELECT_PLACEHOLDER]: \"Valitse\",\r\n [ETranslation.REACT_SELECT_ADD_NEW]: \"Lisää\",\r\n};\r\n\r\nconst operatorsTranslations = {\r\n [ETranslation.TITLE_OPERATORS]: \"Operaattorit\",\r\n [ETranslation.OPERATORS_ADD_NEW]: \"Lisää uusi operaattori\",\r\n [ETranslation.NO_OPERATORS]: \"Ei operaattoreita.\",\r\n};\r\n\r\nconst offerRequestStatusTranslations = {\r\n [ETranslation.OFFERREQUEST_STATUS_OFFER]: \"Tarjous avoin\",\r\n [ETranslation.OFFERREQUEST_STATUS_OFFERED]: \"Tarjous tehty\",\r\n [ETranslation.OFFERREQUEST_STATUS_COMPLETE]: \"Tarjous otettu\",\r\n [ETranslation.OFFERREQUEST_SEND_DATE]: \"lähetetty\",\r\n};\r\n\r\nconst serviceProvidersTranslations = {\r\n [ETranslation.TITLE_SERVICEPROVIDERS]: \"Palveluntarjoajat\",\r\n [ETranslation.SERVICEPROVIDERS_ADD_NEW]: \"Lisää palveluntarjoaja\",\r\n [ETranslation.NO_SERVICEPROVIDERS]: \"Ei palveluntarjoajia\",\r\n [ETranslation.SERVICEPROVIDER_FORMS]: \"Uudet tilaukset\",\r\n [ETranslation.NO_SERVICEPROVIDER_FORMS]: \"Ei uusia tilauksia\",\r\n};\r\n\r\nconst serviceProviderTranslations = {\r\n [ETranslation.TITLE_SERVICEPROVIDER]: \"Palveluntarjoajat\",\r\n [ETranslation.TITLE_SORT]: \"Lajittele\",\r\n [ETranslation.TITLE_SERVICEPROVIDER_NEW]: \"Uusi palveluntarjoaja\",\r\n [ETranslation.SERVICEPROVIDER_FIRSTNAME]: \"Etunimi\",\r\n [ETranslation.SERVICEPROVIDER_LASTNAME]: \"Sukunimi\",\r\n [ETranslation.SERVICEPROVIDER_EMAIL]: \"Sähköposti\",\r\n [ETranslation.SERVICEPROVIDER_CREATED]: \"Liittynyt\",\r\n [ETranslation.SERVICEPROVIDER_ADDRESS]: \"Osoite\",\r\n [ETranslation.SERVICEPROVIDER_PHONE]: \"Puhelin-numero\",\r\n [ETranslation.SERVICEPROVIDER_CITY]: \"Kaupunki\",\r\n [ETranslation.SERVICEPROVIDER_STATUS]: \"Tila\",\r\n [ETranslation.SERVICEPROVIDER_TYPE]: \"Tyyppi\",\r\n [ETranslation.SERVICEPROVIDER_OPERATOR]: \"Asiakas\",\r\n [ETranslation.SERVICEPROVIDER_COMPANY]: \"Yritys\",\r\n\r\n [ETranslation.SERVICEPROVIDER_INVOICING_TYPE]: \"Laskutustapa\",\r\n [ETranslation.SERVICEPROVIDER_EINVOICE_ADDRESS]: \"Verkkolaskuosoite\",\r\n [ETranslation.SERVICEPROVIDER_EINVOICEOPERATOR_ADDRESS]: \"Operaattorin tunnus\",\r\n [ETranslation.SERVICEPROVIDER_INVOICEINFO]: \"Laskutuksen lisätiedot\",\r\n [ETranslation.SERVICEPROVIDER_INVOICE_CONFIRM]: \"Tarjouspyynnön tietojen avaaminen on maksullinen toiminto. Vahvista laskutustietosi.\",\r\n [ETranslation.SERVICEPROVIDER_INVOICE_MODAL_DESCRIPTION]: \"Laskutustietojen vahvistaminen mahdollistaa tarjouspyyntöjen tietojen ostamisen kappalehintaan. Laskutamme ostot kuukausittain koontilaskuna. Saat ostamalla tarjouspyynnön tiedot heti käyttöösi ja voit tehdä asiakkaalle tarjouksen. Tarjouspyynnön ostaminen ei varmista tarjouksen hyväksymistä, eikä velvoita tarjouksen tekemiseen.\",\r\n [ETranslation.SERVICEPROVIDER_INVOICE_CONFIRM_LABEL]: \"Vahvistan laskutustiedot oikeiksi\",\r\n [ETranslation.SERVICEPROVIDER_INVOICE_CHANGE_BILLING_INFORMATION]: \"Muuta laskutustiedot\",\r\n [ETranslation.SERVICEPROVIDER_SUBSCRIPTION_LEVEL]: \"Tilaus\",\r\n [ETranslation.INVOICING_TYPE_EINVOICE]: \"Verkkolasku\",\r\n [ETranslation.INVOICING_TYPE_OTHER]: \"Muu laskutus\",\r\n [ETranslation.SERVICEPROVIDER_USER_PHONE]: \"Käyttäjän puhelinnumero\",\r\n [ETranslation.SERVICEPROVIDER_ORGANIZATION_PHONE]: \"Yrityksen puhelinnumero\",\r\n [ETranslation.SUBSCRIPTION_LEVEL_FREE]: \"Maksuton\",\r\n [ETranslation.SUBSCRIPTION_LEVEL_BASIC]: \"Perus\",\r\n [ETranslation.SERVICEPROVIDER_EXPORT_ALL]: \"Vie palveluntarjoajat\",\r\n [ETranslation.SERVICEPROVIDER_EXPORT]: \"Vie palveluntarjoaja\",\r\n [ETranslation.SUBSCRIPTION_EXPIRED]: \"Palvelun tilauskausi ei ole voimassa!\",\r\n [ETranslation.SUBSCRIPTION_EXPIRED_INFO]: 'Voit muokata ',\r\n [ETranslation.SUBSCRIPTION_EXPIRED_INFO_LINK]: 'yrityksesi tietoja',\r\n [ETranslation.SERVICEPROVIDER_EXPIRED_SUBSCRIBE]: \"Tilaa palvelu osoitteesta www.hankix.fi tai ota yhteyttä osoitteeseen info@hankix.fi\",\r\n [ETranslation.SERVICEPROVIDER_PAYMENT_METHOD]: \"Maksutapa\",\r\n [ETranslation.PAYMENT_METHOD_MONTH]: \"Kuukausi\",\r\n [ETranslation.PAYMENT_METHOD_MICRO]: \"Micro\",\r\n};\r\n\r\nconst servicesTranslations = {\r\n [ETranslation.TITLE_SERVICES]: \"Palvelut\",\r\n [ETranslation.SERVICES_ADD_NEW]: \"Lisää uusi palvelu\",\r\n [ETranslation.NO_SERVICES]: \"Ei palveluita\",\r\n};\r\n\r\nconst serviceTranslations = {\r\n [ETranslation.TITLE_SERVICE]: \"Palvelu\",\r\n [ETranslation.TITLE_SERVICE_NEW]: \"Uusi palvelu\",\r\n [ETranslation.SERVICE_NAME]: \"Palvelun nimi\",\r\n [ETranslation.SERVICE_URL]: \"URL\",\r\n};\r\n\r\nconst operatorTranslations = {\r\n [ETranslation.TITLE_OPERATOR]: \"Operaattori\",\r\n [ETranslation.TITLE_OPERATOR_NEW]: \"Uusi operaattori\",\r\n [ETranslation.OPERATOR_NAME]: \"Nimi\",\r\n [ETranslation.OPERATOR_LEVEL]: \"Taso\",\r\n [ETranslation.OPERATOR_BUSINESS_ID]: \"Y-tunnus\",\r\n [ETranslation.OPERATOR_PIPEDRIVE_ORGANIZATION_ID]: \"Pipedrive\",\r\n};\r\n\r\nconst usersTranslations = {\r\n [ETranslation.TITLE_USERS]: \"Käyttäjät\",\r\n [ETranslation.USERS_ADD_NEW]: \"Lisää uusi käyttäjä\",\r\n [ETranslation.NO_USERS]: \"Ei käyttäjiä.\",\r\n [ETranslation.USER_NAME]: \"Nimi\",\r\n [ETranslation.USER_PASSWORD]: \"Salasana\",\r\n};\r\n\r\nconst userTranslations = {\r\n [ETranslation.TITLE_USER]: \"Käyttäjä\",\r\n [ETranslation.TITLE_USER_NEW]: \"Uusi käyttäjä\",\r\n [ETranslation.USER_FIRST_NAME]: \"Etunimi\",\r\n [ETranslation.USER_LAST_NAME]: \"Sukunimi\",\r\n [ETranslation.USER_EMAIL]: \"Sähköposti\",\r\n [ETranslation.USER_PHONE_NUMBER]: \"Puhelinnumero\",\r\n [ETranslation.USER_TITLE]: \"Titteli\",\r\n [ETranslation.USER_ALLOW_LOGIN]: \"Salli kirjautuminen\",\r\n [ETranslation.USER_PROFILE_IMAGE]: \"Profiilikuva\",\r\n [ETranslation.USER_ADDRESS]: \"Kotiosoite\",\r\n [ETranslation.USER_SEND_NEW_OFFER_REQUEST_SUMMARY]:\r\n \"Lähetä uudet tarjouspyynnöt sähköpostiin\",\r\n};\r\n\r\nconst validationTranslations = {\r\n [ETranslation.VALIDATION_EMAIL]: \"Tarkista sähköposti\",\r\n [ETranslation.VALIDATION_MIN_LENGTH]:\r\n \"Syötä vähintään {{minLength}} merkkiä.\",\r\n [ETranslation.VALIDATION_MAX_LENGTH]: \"Syötä enintään {{maxLength}} merkkiä.\",\r\n [ETranslation.VALIDATION_MIN_AMOUNT]:\r\n \"Luku ei voi olla pienempi kuin {{minAmount}}.\",\r\n [ETranslation.VALIDATION_MAX_AMOUNT]:\r\n \"Luku ei voi olla suurempi kuin {{maxAmount}}.\",\r\n};\r\n\r\nconst errorTranslations = {\r\n [ETranslation.TOKEN_ERROR]: \"Kirjautumisvirhe.\",\r\n [ETranslation.REFRESH_TOKEN_ERROR]: \"Kirjautumisvirhe.\",\r\n [ETranslation.FILE_UPLOAD_ERROR]: \"Tiedoston lisääminen epäonnistui.\",\r\n [ETranslation.IDENTIFIER_ERROR]: \"Virheellinen tunniste.\",\r\n [ETranslation.DATABASE_ERROR]: \"Tietokantavirhe.\",\r\n [ETranslation.DATA_EMPTY_ERROR]: \"Virheellinen syöte.\",\r\n [ETranslation.ORGANIZATION_ERROR]: \"Kirjautumisvirhe.\",\r\n [ETranslation.NO_ACCESS_ERROR]: \"Sinulla ei ole käyttöoikeutta.\",\r\n [ETranslation.NOT_FOUND_ERROR]: \"Ei tuloksia.\",\r\n [ETranslation.PIPEDRIVE_NOT_CONNECTED_ERROR]:\r\n \"Tiliisi ei ole liitetty Pipedriveä.\",\r\n [ETranslation.NO_CONTRACT_LENGTH_ERROR]:\r\n \"Sopimuksen hyväksyminen epäonnistui, sopimuksen kesto oli tyhjä.\",\r\n [ETranslation.SEARCH_QUERY_STRING_ERROR]: \"Virheellinen syöte.\",\r\n [ETranslation.FEEDBACK_ALREADY_EXISTS]: \"Palaute on jo lisätty.\",\r\n};\r\n\r\nconst organizationTranslations = {\r\n [ETranslation.ORGANIZATION_ME]: \"Yritykseni\",\r\n [ETranslation.ORGANIZATION_ORDER_DATE]: \"Luotu\",\r\n [ETranslation.ORGANIZATION_IMAGE]: \"Logo\",\r\n [ETranslation.ORGANIZATION_IMAGE_DROPZONE]: \"Paina tästä tai pudota tiedosto.\",\r\n [ETranslation.ORGANIZATION_IMAGE_DROPZONE_DROP]: \"Pudota tiedosto\",\r\n};\r\n\r\nconst customerOfferRequestTranslations = {\r\n [ETranslation.CUSTOMER_OFFER_REQUEST]: \"Tarjouspyyntö\",\r\n [ETranslation.CUSTOMER_OFFER_REQUEST_SAVE_CHANGES]: \"Tallenna muokkaukset\",\r\n [ETranslation.CUSTOMER_OFFER_REQUEST_ARCHIVE]: \"Arkistoi\",\r\n [ETranslation.CUSTOMER_OFFER_REQUEST_UNARCHIVE]: \"Palauta\",\r\n [ETranslation.CUSTOMER_OFFER_REQUEST_HELP_TEXT_1]:\r\n \"Tarkenna ja muokkaa tarjouspyynnön tietoja.\",\r\n [ETranslation.CUSTOMER_OFFER_REQUEST_HELP_TEXT_2]:\r\n \"Jos et enää halua enempää tarjouksia, arkistoi tarjouspyyntö.\",\r\n [ETranslation.CUSTOMER_OFFER_REQUEST_THANK_YOU_MESSAGE]: \"Kiitos, muokkaukset tallennettu.\",\r\n [ETranslation.CUSTOMER_OFFER_REQUEST_ARCHIVED_CONFIRM]: \"Tarjouspyyntö on arkistoitu, eikä sitä enää näytetä palveluntarjoajille\",\r\n [ETranslation.CUSTOMER_OFFER_REQUEST_ERROR_TOP]: \"Virhe, tarjouspyyntöä ei löydy\",\r\n [ETranslation.CUSTOMER_OFFER_REQUEST_ERROR_BOTTOM]: \"Tarkista linkki tai ota yhteyttä.\",\r\n};\r\n\r\nconst confirmTranslations = {\r\n [ETranslation.CONFIRM_DELETE_SERVICEPROVIDER]:\r\n \"Haluatko varmasti poistaa palveluntarjoajan?\",\r\n [ETranslation.CONFIRM_DELETE_SERVICE]: \"Haluatko varmasti poistaa palvelun?\",\r\n [ETranslation.CONFIRM_DELETE_OPERATOR]:\r\n \"Haluatko varmasti poistaa operaattorin?\",\r\n [ETranslation.CONFIRM_DELETE_LOCATION]:\r\n \"Haluatko varmasti poistaa sijainnin?\",\r\n [ETranslation.CONFIRM_DELETE_SERVICEPROVIDER_FORM]:\r\n \"Haluatko varmasti poistaa tilauksen?\",\r\n [ETranslation.CONFIRM_DELETE_OFFER_REQUEST]:\r\n \"Haluatko varmasti poistaa tarjouspyynnön?\",\r\n\r\n [ETranslation.CONFIRM_BUY_TITLE]: \"Osta tarjouspyyntö\",\r\n [ETranslation.CONFIRM_BUY_DESCRIPTION]: \"Osta tarjouspyynnön tiedot käyttöösi (ml. asiakkaan yhteystiedot, kohteen perustiedot). Tiedot ovat käytettävissäsi kunnes tarjouspyyntö arkistoidaan.\",\r\n [ETranslation.CONFIRM_BUY_QUESTION]: \"Haluatko ostaa valitsemasi tarjouspyynnön tiedot 19 € + alv hintaan?\",\r\n};\r\n\r\nconst locationsTranslations = {\r\n [ETranslation.NO_LOCATIONS]: \"Ei sijainteja\",\r\n [ETranslation.LOCATIONS]: \"Sijainnit\",\r\n [ETranslation.LOCATIONS_NEW]: \"Uusi sijainti\",\r\n [ETranslation.LOCATION]: \"Sijainti\",\r\n [ETranslation.LOCATION_NAME]: \"Nimi\",\r\n [ETranslation.LOCATION_NAME_GENITIVE]: \"Nimi genetiivi (-n)\",\r\n [ETranslation.LOCATION_NAME_INESSIVE]: \"Nimi inessiivi (-ssa/ssä)\",\r\n [ETranslation.LOCATION_CONTENT]: \"Sisältö\",\r\n [ETranslation.LOCATION_LATITUDE]: \"Leveysaste, latitude, Suomessa ~ 62\",\r\n [ETranslation.LOCATION_LONGITUDE]: \"Pituusaste, longitude, Suomessa ~ 25\",\r\n [ETranslation.LOCATION_ZOOM_LEVEL]: \"Zoom level\",\r\n};\r\n\r\nconst feedbackTranslations = {\r\n [ETranslation.FEEDBACK_SATISFACTION]: \"Tyytyväisyys palveluun\",\r\n [ETranslation.FEEDBACK_SERVICEPROVIDER]: \"Palveluntarjoaja\",\r\n [ETranslation.FEEDBACK_SERVICE_PROVIDER_OTHER]: \"Muu palveluntarjoaja\",\r\n [ETranslation.TITLE_FEEDBACKS]: \"Palaute\",\r\n [ETranslation.TITLE_FEEDBACK_NEW]: \"Uusi palaute\",\r\n [ETranslation.FEEDBACKS_ADD_NEW]: \"Lisää palaute\",\r\n [ETranslation.NO_FEEDBACK]: \"Ei palautteita\",\r\n [ETranslation.FEEDBACK_FORM_NOT_FOUND]: \"Jäin ilman tarjouspyyntöjä\",\r\n [ETranslation.FEEDBACK_FORM_SOMETHING_ELSE]: \"Joku muu, mikä?\",\r\n [ETranslation.FEEDBACK_THANK_YOU_TITLE]: \"Kiitos\",\r\n [ETranslation.FEEDBACK_THANK_YOU_MESSAGE]: \"Kiitos palautteesta!\",\r\n [ETranslation.FEEDBACK_EXISTS_MESSAGE]: \"Kiitos, olet jo antanut palautteen.\",\r\n [ETranslation.FEEDBACK_MESSAGE]: \"Palaute\",\r\n};\r\nconst settingsTranslations = {\r\n [ETranslation.TITLE_SETTINGS]: \"Asetukset\",\r\n [ETranslation.SEND_PASSWORD_RESET_LINK]: \"Vaihda salasana\",\r\n [ETranslation.PASSWORD_RESET_TEXT]:\r\n \"Oletko varma, että haluat lähettää salasanan palautuslinkin sähköpostiisi?\",\r\n};\r\n\r\nconst billingTranslations = {\r\n [ETranslation.BILLING_EXPORT_ALL]: \"Vie laskut\",\r\n [ETranslation.BILLING_EXPORT_ORGANIZATION]: \"Vie lasku\",\r\n};\r\n\r\nconst selectTranslations = {\r\n [ETranslation.SELECT_SERVICE_PLACEHOLDER]: 'Valitse palvelu',\r\n [ETranslation.SELECT_OPERATOR_PLACEHOLDER]: 'Valitse operaattori',\r\n [ETranslation.SELECT_LOCATIONS_PLACEHOLDER]: 'Valitse sijainnit',\r\n [ETranslation.SELECT_SERVICE_PROVIDER_PLACEHOLDER]: \"Valitse palveluntarjoaja\"\r\n}\r\n\r\nconst contentsTranslations = {\r\n [ETranslation.TITLE_CONTENTS]: \"Uutiset\",\r\n [ETranslation.CONTENTS_ADD_NEW]: \"Lisää uusi uutinen\",\r\n [ETranslation.NO_CONTENTS]: \"Ei uutisia\",\r\n};\r\n\r\nconst contentTranslations = {\r\n [ETranslation.TITLE_CONTENT]: \"Uutinen\",\r\n [ETranslation.TITLE_CONTENT_NEW]: \"Uusi uutinen\",\r\n [ETranslation.CONTENT_NAME]: \"Uutisen nimi\",\r\n [ETranslation.CONTENT_SHORTCONTENT]: \"Uutinen lyhyesti\",\r\n [ETranslation.CONTENT_CONTENTTEXT]: \"Uutinen pitkästi\",\r\n [ETranslation.CONTENT_DATE]: \"Uutisen julkaisupäivä\",\r\n [ETranslation.CONTENT_SHOWDATE]: \"Näytä uutisen julkaisupäivä\",\r\n [ETranslation.CONTENT_TAGS]: \"Tagit\",\r\n [ETranslation.CONTENT_TAG_NORMAL]: \"Normal\",\r\n [ETranslation.CONTENT_TAG_NEWS]: \"Uutiset\",\r\n [ETranslation.CONTENT_TAG_FRONTPAGE]: \"Frontpage\",\r\n\r\n};\r\n\r\nconst languageTranslations = {\r\n [ETranslation.LANGUAGE_TITLE]: \"Kieli\",\r\n [ETranslation.LANGUAGE_IN_FINNISH]: \"Suomeksi\",\r\n [ETranslation.LANGUAGE_IN_ENGLISH]: \"In english\",\r\n [ETranslation.LANGUAGE_ENGLISH]: \"English\",\r\n [ETranslation.LANGUAGE_FINNISH]: \"Suomi\",\r\n\r\n\r\n};\r\n\r\nconst termsOfServiceTranslations = {\r\n [ETranslation.TERMS_TITLE]: \"Tervetuloa HankiX-palveluun! Aloita hyväksymällä käyttöehdot\",\r\n [ETranslation.TERMS_BINDING]: \"Käyttöehdoissa sitoudut, kiteytetysti:\",\r\n [ETranslation.TERMS_LIST_1]: \"lailliseen liiketoimintaan\",\r\n [ETranslation.TERMS_LIST_2]: \"käsittelemään asiakastietoja luottamuksellisesti\",\r\n [ETranslation.TERMS_LIST_3]: \"maksamaan palvelun käytöstä sopimuksen mukaisesti\",\r\n [ETranslation.TERMS_READ_MORE]: \"Lue linkistä kaikki\",\r\n [ETranslation.TERMS_TERMS]: \"käyttöehdot\",\r\n [ETranslation.TERMS_ACCEPT]: \"Hyväksy käyttöehdot\",\r\n}\r\n\r\nconst offerRequestInfoTranslations = {\r\n [ETranslation.OFFERREQUEST_INFO_OFFER_YOUR_SERVICE]: \"Tarjoa palveluasi:\",\r\n [ETranslation.OFFERREQUEST_INFO_LIST_ITEM_1]: \"Valitse kiinnostava tarjouspyyntö listasta.\",\r\n [ETranslation.OFFERREQUEST_INFO_LIST_ITEM_2]: \"Varmista että voit tarjota pyydetyn palvelun kohteeseen.\",\r\n [ETranslation.OFFERREQUEST_INFO_LIST_ITEM_3]: \"Ota yhteyttä asiakkaaseen ja anna tarjouksesi.\",\r\n [ETranslation.OFFERREQUEST_INFO_QUESTIONS]: \"Kysyttävää?\",\r\n [ETranslation.OFFERREQUEST_INFO_READ_MORE]: \"Lisätietoa palvelusta ja hinnoittelusta: \",\r\n [ETranslation.OFFERREQUEST_INFO_CONFIRM_INFO]: \"Onko yrityksesi tiedot oikein?\",\r\n [ETranslation.OFFERREQUEST_INFO_EDIT_INFO]: \"Muokkaa\",\r\n}\r\n\r\nconst translationsEn = {\r\n ...commonTranslations,\r\n ...authTranslations,\r\n ...headerTranslations,\r\n ...operatorsTranslations,\r\n ...operatorTranslations,\r\n ...offerRequestTranslations,\r\n ...offerRequestsTranslations,\r\n ...offerRequestStatusTranslations,\r\n ...serviceProvidersTranslations,\r\n ...serviceProviderTranslations,\r\n ...servicesTranslations,\r\n ...serviceTranslations,\r\n ...reactSelectTranslations,\r\n ...usersTranslations,\r\n ...userTranslations,\r\n ...validationTranslations,\r\n ...errorTranslations,\r\n ...organizationTranslations,\r\n ...customerOfferRequestTranslations,\r\n ...confirmTranslations,\r\n ...locationsTranslations,\r\n ...feedbackTranslations,\r\n ...settingsTranslations,\r\n ...billingTranslations,\r\n ...offerRequestTypeTranslations,\r\n ...buildingTypeTranslations,\r\n ...selectTranslations,\r\n ...contentTranslations,\r\n ...contentsTranslations,\r\n ...geoLocationTranslation,\r\n ...logItemTranslations,\r\n ...languageTranslations,\r\n ...termsOfServiceTranslations,\r\n ...offerRequestInfoTranslations,\r\n ...languageSelectTranslations\r\n};\r\n\r\nexport default translationsEn;\r\n","import { ETranslation } from \"./translation-keys\";\r\n\r\nconst commonTranslations = {\r\n [ETranslation.COMMON_SAVE]: \"Save\",\r\n [ETranslation.COMMON_RETURN]: \"Return\",\r\n [ETranslation.COMMON_ADD]: \"Add\",\r\n [ETranslation.COMMON_REMOVE]: \"Delete\",\r\n [ETranslation.COMMON_COPY]: \"Copy\",\r\n [ETranslation.COMMON_STREET_ADDRESS]: \"Street address\",\r\n [ETranslation.COMMON_ZIP]: \"ZIP code\",\r\n [ETranslation.COMMON_CITY]: \"City\",\r\n [ETranslation.COMMON_NO_CHOICE]: \"No choise\",\r\n [ETranslation.COMMON_CREATED]: \"Created\",\r\n [ETranslation.COMMON_YES]: \"Yes\",\r\n [ETranslation.COMMON_NO]: \"No\",\r\n [ETranslation.COMMON_COUNTRY]: \"Country\",\r\n [ETranslation.COMMON_PHONE]: \"Phone number\",\r\n [ETranslation.COMMON_EMAIL]: \"Email\",\r\n [ETranslation.COMMON_SERVICE]: \"Service\",\r\n [ETranslation.COMMON_ARCHIVED]: \"Archived\",\r\n [ETranslation.COMMON_WWW]: \"WWW\",\r\n [ETranslation.COMMON_FACEBOOK]: \"Facebook\",\r\n [ETranslation.COMMON_TWITTER]: \"Twitter\",\r\n [ETranslation.COMMON_INSTAGRAM]: \"Instagram\",\r\n [ETranslation.COMMON_LINKEDIN]: \"Linkedin\",\r\n [ETranslation.COMMON_LATITUDE]: \"Latitude\",\r\n [ETranslation.COMMON_LONGITUDE]: \"Longitude\",\r\n [ETranslation.COMMON_TOKEN]: \"Token\",\r\n [ETranslation.COMMON_SEARCH]: \"Search\",\r\n [ETranslation.COMMON_SEND]: \"Send\",\r\n [ETranslation.COMMON_CANCEL]: \"Cancel\",\r\n [ETranslation.COMMON_ADD_ALL]: \"Add all\",\r\n [ETranslation.COMMON_CLOSE]: \"Close\",\r\n [ETranslation.COMMON_OPERATOR_NAME]: \"Operator\",\r\n [ETranslation.COMMON_SERVICE_PROVIDER_NAME]: \"Serviceprovider\",\r\n [ETranslation.COMMON_FETCH]: \"Fetch\",\r\n [ETranslation.COMMON_BUY]: \"Purchase\",\r\n [ETranslation.COMMON_COPY_CONTACT_INFORMATION]: \"Copy to clipboard\",\r\n [ETranslation.COMMON_COPIED]: \"Copied to clipboard\",\r\n [ETranslation.COMMON_CONTINUE]: \"Continue\",\r\n [ETranslation.COMMON_CONFIRM]: \"Confirm\",\r\n [ETranslation.COMMON_LOAD_ALL]: \"Load all\",\r\n \r\n};\r\n\r\nconst geoLocationTranslation = {\r\n [ETranslation.GEO_LOCATION_ERROR]: 'Geo location search failed'\r\n}\r\n\r\nconst authTranslations = {\r\n [ETranslation.TITLE_HANKIX]: \"HankiX offer request service\",\r\n [ETranslation.LOGIN]: \"Login\",\r\n [ETranslation.USERNAME]: \"Username\",\r\n [ETranslation.PASSWORD]: \"Password\",\r\n [ETranslation.PASSWORD_MIN_LENGTH_MESSAGE]:\r\n \"Password must contain at least 6 characters\",\r\n [ETranslation.FORGOT_PASSWORD]: \"Forgot your password?\",\r\n [ETranslation.RESET_PASSWORD]: \"Reset password\",\r\n};\r\n\r\nconst headerTranslations = {\r\n [ETranslation.ADMIN]: \"Admin\",\r\n [ETranslation.OPERATORS]: \"Operators\",\r\n [ETranslation.ORGANIZATIONS]: \"Organizations\",\r\n [ETranslation.OFFERREQUESTS]: \"Offer requests\",\r\n [ETranslation.SERVICEPROVIDERS]: \"Serviceproviders\",\r\n [ETranslation.SERVICES]: \"Services\",\r\n [ETranslation.FEEDBACKS]: \"Feedbacks\",\r\n [ETranslation.USERS]: \"Users\",\r\n [ETranslation.LOGOUT]: \"Log out\",\r\n [ETranslation.SETTINGS]: \"Settings\",\r\n [ETranslation.CONTENTS]: \"News management\",\r\n [ETranslation.MANAGEMENT]: \"Management\",\r\n [ETranslation.OFFER_REQUEST_ACCESS]: \"Purchased offer requests\",\r\n [ETranslation.LOG_ITEMS]: \"User log\",\r\n [ETranslation.ORDER_SERVICE]: 'Order service',\r\n};\r\n\r\nconst offerRequestsTranslations = {\r\n [ETranslation.TITLE_OFFERREQUESTS]: \"Offer requests\",\r\n [ETranslation.OFFERREQUESTS_ADD_NEW]: \"Add new offer request\",\r\n [ETranslation.NO_OFFERREQUESTS]: \"No offer requests yet! Patience! Marketing is starting.\",\r\n};\r\n\r\nconst offerRequestTranslations = {\r\n [ETranslation.TITLE_OFFERREQUEST]: \"Offer request\",\r\n [ETranslation.TITLE_SORT]: \"Sort\",\r\n [ETranslation.TITLE_OFFERREQUEST_NEW]: \"New offer request\",\r\n [ETranslation.OFFERREQUEST_FIRSTNAME]: \"Firstname\",\r\n [ETranslation.OFFERREQUEST_LASTNAME]: \"Lastname\",\r\n [ETranslation.OFFERREQUEST_EMAIL]: \"Email\",\r\n [ETranslation.OFFERREQUEST_CREATED]: \"Arrived\",\r\n [ETranslation.OFFERREQUEST_ADDRESS]: \"Address\",\r\n [ETranslation.OFFERREQUEST_PHONE]: \"Phone number\",\r\n [ETranslation.OFFERREQUEST_CITY]: \"City\",\r\n [ETranslation.OFFERREQUEST_STATUS]: \"Status\",\r\n [ETranslation.OFFERREQUEST_TYPE]: \"Type\",\r\n [ETranslation.OFFERREQUEST_OPERATOR]: \"Customr\",\r\n [ETranslation.OFFER_REQUEST_CONSTRUCTION_AREA]: \"Area m\\u00b2\",\r\n [ETranslation.OFFER_REQUEST_CONSTRUCTION_BUILDING_TYPE]: \"Building type\",\r\n [ETranslation.OFFER_REQUEST_CONSTRUCTION_BUILDING_TYPE_OTHER]:\r\n \"Other buildring type\",\r\n [ETranslation.OFFER_REQUEST_CONSTRUCTION_CONSTRUCTION_YEAR]: \"Construction year\",\r\n [ETranslation.OFFER_REQUEST_WELLNESS_LENGTH]: \"Length\",\r\n [ETranslation.OFFER_REQUEST_WELLNESS_REGULAR]: \"Regular\",\r\n [ETranslation.OFFERREQUEST_INFO]: \"Additional information and clarifications\",\r\n [ETranslation.OFFER_REQUEST_DELETED]: \"Offer request deleted\",\r\n [ETranslation.OFFER_REQUEST_ARCHIVED]: \"Offer request archived\",\r\n [ETranslation.OFFER_REQUEST_PROVINCE]: \"Province\",\r\n [ETranslation.OFFER_REQUEST_LANGUAGE]: \"Kieli\",\r\n\r\n [ETranslation.OFFER_REQUEST_ADD_ACCESS_ERROR]: \"Something went wrong, Could not add rights to offer request\",\r\n [ETranslation.OFFER_REQUEST_ACCESS_OFFER_REQUEST_CREATED]: \"Offer request created date\",\r\n [ETranslation.OFFER_REQUEST_ACCESS_USERNAME]: \"Users name\",\r\n [ETranslation.OFFER_REQUEST_ACCESS_OFFER_REQUEST]: \"Offer request\",\r\n [ETranslation.OFFER_REQUEST_ACCESS_CREATED]: \"Purchase date\",\r\n [ETranslation.OFFER_REQUEST_ACCESS_CREATED_START]: \"Purchase date start\",\r\n [ETranslation.OFFER_REQUEST_ACCESS_CREATED_END]: \"Purchase date end\",\r\n [ETranslation.OFFER_REQUEST_ACCESS_NO_OFFER_REQUESTS]:\"No purchased offer requests were found\",\r\n\r\n};\r\n\r\nconst logItemTranslations = {\r\n [ETranslation.LOG_ITEM_EVENT]: \"Event\",\r\n [ETranslation.LOG_ITEM_USER_AGENT]: \"User Agent\",\r\n [ETranslation.LOG_ITEM_EVENT_CREATED_START]: \"Event date start\",\r\n [ETranslation.LOG_ITEM_EVENT_CREATED_END]: \"Event date end\",\r\n [ETranslation.LOG_ITEM_EVENTS_SELECT]: \"Choose event\",\r\n [ETranslation.LOG_ITEM_EVENTS_OFFER_REQUEST_VIEW]: \"OFFER_REQUEST_VIEW\",\r\n [ETranslation.LOG_ITEM_EVENTS_OFFER_REQUEST_VIEW_PIN]: \"OFFER_REQUEST_VIEW_PIN\",\r\n [ETranslation.LOG_ITEM_EVENTS_OFFER_REQUEST_SAVE]: \"OFFER_REQUEST_SAVE\",\r\n [ETranslation.LOG_ITEM_EVENTS_OFFER_REQUEST_SAVE_LOCAL]: \"OFFER_REQUEST_SAVE_LOCAL\",\r\n [ETranslation.LOG_ITEM_EVENTS_OFFER_REQUEST_DELETE]: \"OFFER_REQUEST_DELETE\",\r\n [ETranslation.LOG_ITEM_EVENTS_OFFER_REQUEST_UPDATE]: \"OFFER_REQUEST_UPDATE\",\r\n [ETranslation.LOG_ITEM_EVENTS_OFFER_REQUEST_UPDATE_PIN]: \"OFFER_REQUEST_UPDATE_PIN\",\r\n [ETranslation.LOG_ITEM_EVENTS_OFFER_REQUEST_ARCHIVE_PIN]: \"OFFER_REQUEST_ARCHIVE_PIN\",\r\n [ETranslation.LOG_ITEM_EVENTS_OFFER_REQUEST_LIST]: \"OFFER_REQUEST_LIST\",\r\n [ETranslation.LOG_ITEM_EVENTS_OFFER_REQUEST_ADD_ACCESS]: \"OFFER_REQUEST_ADD_ACCESS\",\r\n [ETranslation.LOG_ITEM_EVENTS_USER_ACCEPT_TERMS_OF_USE]: \"USER_ACCEPT_TERMS_OF_USE\",\r\n [ETranslation.LOG_ITEM_EVENTS_ORGANIZATION_CONFIRM_BILLING]: \"ORGANIZATION_CONFIRM_BILLING\",\r\n [ETranslation.LOG_ITEM_EVENTS_AUTH_LOGIN]: \"AUTH_LOGIN\",\r\n [ETranslation.LOG_ITEM_EVENTS_AUTH_LOGOUT]: \"AUTH_LOGOUT\",\r\n [ETranslation.LOG_ITEM_NO_LOG_ITEMS]: \"No user log events were found\",\r\n\r\n}\r\n\r\nconst offerRequestTypeTranslations = {\r\n [ETranslation.OFFER_REQUEST_TYPE_SIMPLE]: \"Simple\",\r\n [ETranslation.OFFER_REQUEST_TYPE_CONSTRUCTION]: \"Construction\",\r\n [ETranslation.OFFER_REQUEST_TYPE_WELLNESS]: \"Wellness\",\r\n};\r\n\r\nconst buildingTypeTranslations = {\r\n [ETranslation.BUIDLING_TYPE_SELECT]: \"Select building type\",\r\n [ETranslation.BUILDING_TYPE_TOWN_HOUSE]: \"Town house\",\r\n [ETranslation.BUILDING_TYPE_SEMI_DETACHED_HOUSE]: \"Semi detached house\",\r\n [ETranslation.BUILDING_TYPE_ROW_HOUSE]: \"Row house\",\r\n [ETranslation.BUILDING_TYPE_DETACHED_HOUSE]: \"Detached house\",\r\n [ETranslation.BUILDING_TYPE_APARTMENT_HOUSE]: \"Apartment house\",\r\n [ETranslation.BUILDING_TYPE_OTHER]: \"Other\",\r\n};\r\n\r\nconst languageSelectTranslations = {\r\n [ETranslation.OFFERREQUEST_LANGUAGE_FI]: \"Finnish\",\r\n [ETranslation.OFFERREQUEST_LANGUAGE_EN]: \"English\",\r\n [ETranslation.OFFERREQUEST_LANGUAGE_SE]: \"Swedish\",\r\n};\r\n\r\nconst reactSelectTranslations = {\r\n [ETranslation.REACT_SELECT_PLACEHOLDER]: \"Select\",\r\n [ETranslation.REACT_SELECT_ADD_NEW]: \"Add\",\r\n};\r\n\r\nconst operatorsTranslations = {\r\n [ETranslation.TITLE_OPERATORS]: \"Operators\",\r\n [ETranslation.OPERATORS_ADD_NEW]: \"Add new operator\",\r\n [ETranslation.NO_OPERATORS]: \"No operators.\",\r\n};\r\n\r\nconst offerRequestStatusTranslations = {\r\n [ETranslation.OFFERREQUEST_STATUS_OFFER]: \"Offer open\",\r\n [ETranslation.OFFERREQUEST_STATUS_OFFERED]: \"Offer made\",\r\n [ETranslation.OFFERREQUEST_STATUS_COMPLETE]: \"Offer taken\",\r\n [ETranslation.OFFERREQUEST_SEND_DATE]: \"Sent date\",\r\n};\r\n\r\nconst serviceProvidersTranslations = {\r\n [ETranslation.TITLE_SERVICEPROVIDERS]: \"Serviceproviders\",\r\n [ETranslation.SERVICEPROVIDERS_ADD_NEW]: \"Add new serviceprovider\",\r\n [ETranslation.NO_SERVICEPROVIDERS]: \"No serviceproviders\",\r\n [ETranslation.SERVICEPROVIDER_FORMS]: \"New orders\",\r\n [ETranslation.NO_SERVICEPROVIDER_FORMS]: \"No new orders\",\r\n};\r\n\r\nconst serviceProviderTranslations = {\r\n [ETranslation.TITLE_SERVICEPROVIDER]: \"Serviceproviders\",\r\n [ETranslation.TITLE_SORT]: \"Sort\",\r\n [ETranslation.TITLE_SERVICEPROVIDER_NEW]: \"New serviceprovider\",\r\n [ETranslation.SERVICEPROVIDER_FIRSTNAME]: \"Firstname\",\r\n [ETranslation.SERVICEPROVIDER_LASTNAME]: \"Lastname\",\r\n [ETranslation.SERVICEPROVIDER_EMAIL]: \"Email\",\r\n [ETranslation.SERVICEPROVIDER_CREATED]: \"Joined\",\r\n [ETranslation.SERVICEPROVIDER_ADDRESS]: \"Address\",\r\n [ETranslation.SERVICEPROVIDER_PHONE]: \"Phone number\",\r\n [ETranslation.SERVICEPROVIDER_CITY]: \"City\",\r\n [ETranslation.SERVICEPROVIDER_STATUS]: \"Status\",\r\n [ETranslation.SERVICEPROVIDER_TYPE]: \"Type\",\r\n [ETranslation.SERVICEPROVIDER_OPERATOR]: \"Customer\",\r\n [ETranslation.SERVICEPROVIDER_COMPANY]: \"Company\",\r\n\r\n [ETranslation.SERVICEPROVIDER_INVOICING_TYPE]: \"Invoicing type\",\r\n [ETranslation.SERVICEPROVIDER_EINVOICE_ADDRESS]: \"EInvoice address\",\r\n [ETranslation.SERVICEPROVIDER_EINVOICEOPERATOR_ADDRESS]: \"Operator address\",\r\n [ETranslation.SERVICEPROVIDER_INVOICEINFO]: \"Invoice info\",\r\n [ETranslation.SERVICEPROVIDER_INVOICE_CONFIRM]: \"Opening an offer request is a paid action. Confirm your billing information.\",\r\n [ETranslation.SERVICEPROVIDER_INVOICE_MODAL_DESCRIPTION]: \"Confirmation of billing information allows you to purchase offer request information at unit price. We invoice purchases on a monthly basis as a consolidated invoice. You will receive the information in the request for quotation immediately and you will be able to make an offer to the customer. Purchasing a offer request does not guarantee the acceptance of the offer and does not oblige you to make an offer.\",\r\n [ETranslation.SERVICEPROVIDER_INVOICE_CONFIRM_LABEL]: \"I confirm that my billing information is correct.\",\r\n [ETranslation.SERVICEPROVIDER_INVOICE_CHANGE_BILLING_INFORMATION]: \"Change billing information\",\r\n [ETranslation.SERVICEPROVIDER_SUBSCRIPTION_LEVEL]: \"Subscription\",\r\n [ETranslation.INVOICING_TYPE_EINVOICE]: \"EInvoice\",\r\n [ETranslation.INVOICING_TYPE_OTHER]: \"Other billing type\",\r\n [ETranslation.SERVICEPROVIDER_USER_PHONE]: \"Users phone number\",\r\n [ETranslation.SERVICEPROVIDER_ORGANIZATION_PHONE]: \"Organizations phone number\",\r\n [ETranslation.SUBSCRIPTION_LEVEL_FREE]: \"Free\",\r\n [ETranslation.SUBSCRIPTION_LEVEL_BASIC]: \"Basic\",\r\n [ETranslation.SERVICEPROVIDER_EXPORT_ALL]: \"Export serviceproviders\",\r\n [ETranslation.SERVICEPROVIDER_EXPORT]: \"Export serviceprovider\",\r\n [ETranslation.SUBSCRIPTION_EXPIRED]: \"Your service subscription period has expired!\",\r\n [ETranslation.SUBSCRIPTION_EXPIRED_INFO]: 'You can edit ',\r\n [ETranslation.SUBSCRIPTION_EXPIRED_INFO_LINK]: 'your business information',\r\n [ETranslation.SERVICEPROVIDER_EXPIRED_SUBSCRIBE]: \"Order the service from www.hankix.fi or contact info@hankix.fi\",\r\n [ETranslation.SERVICEPROVIDER_PAYMENT_METHOD]: \"Payment method\",\r\n [ETranslation.PAYMENT_METHOD_MONTH]: \"Month\",\r\n [ETranslation.PAYMENT_METHOD_MICRO]: \"Micro\",\r\n};\r\n\r\nconst servicesTranslations = {\r\n [ETranslation.TITLE_SERVICES]: \"Services\",\r\n [ETranslation.SERVICES_ADD_NEW]: \"Add new service\",\r\n [ETranslation.NO_SERVICES]: \"No services\",\r\n};\r\n\r\nconst serviceTranslations = {\r\n [ETranslation.TITLE_SERVICE]: \"Service\",\r\n [ETranslation.TITLE_SERVICE_NEW]: \"New service\",\r\n [ETranslation.SERVICE_NAME]: \"Service name\",\r\n [ETranslation.SERVICE_URL]: \"URL\",\r\n};\r\n\r\nconst operatorTranslations = {\r\n [ETranslation.TITLE_OPERATOR]: \"Operator\",\r\n [ETranslation.TITLE_OPERATOR_NEW]: \"New operator\",\r\n [ETranslation.OPERATOR_NAME]: \"Name\",\r\n [ETranslation.OPERATOR_LEVEL]: \"Level\",\r\n [ETranslation.OPERATOR_BUSINESS_ID]: \"Business ID\",\r\n [ETranslation.OPERATOR_PIPEDRIVE_ORGANIZATION_ID]: \"Pipedrive\",\r\n};\r\n\r\nconst usersTranslations = {\r\n [ETranslation.TITLE_USERS]: \"Users\",\r\n [ETranslation.USERS_ADD_NEW]: \"Add new uder\",\r\n [ETranslation.NO_USERS]: \"No users.\",\r\n [ETranslation.USER_NAME]: \"Name\",\r\n [ETranslation.USER_PASSWORD]: \"Password\",\r\n};\r\n\r\nconst userTranslations = {\r\n [ETranslation.TITLE_USER]: \"User\",\r\n [ETranslation.TITLE_USER_NEW]: \"New user\",\r\n [ETranslation.USER_FIRST_NAME]: \"Firstname\",\r\n [ETranslation.USER_LAST_NAME]: \"Lastname\",\r\n [ETranslation.USER_EMAIL]: \"Email\",\r\n [ETranslation.USER_PHONE_NUMBER]: \"Phone number\",\r\n [ETranslation.USER_TITLE]: \"Title\",\r\n [ETranslation.USER_ALLOW_LOGIN]: \"Allow login\",\r\n [ETranslation.USER_PROFILE_IMAGE]: \"Profile picture\",\r\n [ETranslation.USER_ADDRESS]: \"Home address\",\r\n [ETranslation.USER_SEND_NEW_OFFER_REQUEST_SUMMARY]:\r\n \"Send new offer requests to email\",\r\n};\r\n\r\nconst validationTranslations = {\r\n [ETranslation.VALIDATION_EMAIL]: \"Check email\",\r\n [ETranslation.VALIDATION_MIN_LENGTH]:\r\n \"Input minimum of {{minLength}} characters.\",\r\n [ETranslation.VALIDATION_MAX_LENGTH]: \"Input maximum {{maxLength}} characters.\",\r\n [ETranslation.VALIDATION_MIN_AMOUNT]:\r\n \"Amount cannot be lesser than {{minAmount}}.\",\r\n [ETranslation.VALIDATION_MAX_AMOUNT]:\r\n \"Amount cannot be greater than {{maxAmount}}.\",\r\n};\r\n\r\nconst errorTranslations = {\r\n [ETranslation.TOKEN_ERROR]: \"Login error.\",\r\n [ETranslation.REFRESH_TOKEN_ERROR]: \"Login error.\",\r\n [ETranslation.FILE_UPLOAD_ERROR]: \"File upload failed.\",\r\n [ETranslation.IDENTIFIER_ERROR]: \"Invalid identifier.\",\r\n [ETranslation.DATABASE_ERROR]: \"Tietokantavirhe.\",\r\n [ETranslation.DATA_EMPTY_ERROR]: \"Invalid input.\",\r\n [ETranslation.ORGANIZATION_ERROR]: \"Login error.\",\r\n [ETranslation.NO_ACCESS_ERROR]: \"You have no access.\",\r\n [ETranslation.NOT_FOUND_ERROR]: \"No results.\",\r\n [ETranslation.PIPEDRIVE_NOT_CONNECTED_ERROR]:\r\n \"You account has not been connected to Pipedrive.\",\r\n [ETranslation.NO_CONTRACT_LENGTH_ERROR]:\r\n \"Contract approval failed, contract duration was empty.\",\r\n [ETranslation.SEARCH_QUERY_STRING_ERROR]: \"Invalid input.\",\r\n [ETranslation.FEEDBACK_ALREADY_EXISTS]: \"Feedback has already been added\",\r\n};\r\n\r\nconst organizationTranslations = {\r\n [ETranslation.ORGANIZATION_ME]: \"My organization\",\r\n [ETranslation.ORGANIZATION_ORDER_DATE]: \"Created\",\r\n [ETranslation.ORGANIZATION_IMAGE]: \"Logo\",\r\n [ETranslation.ORGANIZATION_IMAGE_DROPZONE]: \"Click here or drop an image\",\r\n [ETranslation.ORGANIZATION_IMAGE_DROPZONE_DROP]: \"Drop image\",\r\n};\r\n\r\nconst customerOfferRequestTranslations = {\r\n [ETranslation.CUSTOMER_OFFER_REQUEST]: \"Offer request\",\r\n [ETranslation.CUSTOMER_OFFER_REQUEST_SAVE_CHANGES]: \"Save changes\",\r\n [ETranslation.CUSTOMER_OFFER_REQUEST_ARCHIVE]: \"Archive\",\r\n [ETranslation.CUSTOMER_OFFER_REQUEST_UNARCHIVE]: \"Unarchive\",\r\n [ETranslation.CUSTOMER_OFFER_REQUEST_HELP_TEXT_1]:\r\n \"Specify and edit the information in the offer request\",\r\n [ETranslation.CUSTOMER_OFFER_REQUEST_HELP_TEXT_2]:\r\n \"If you no longer wish to receive further offers, please archive the offer request.\",\r\n [ETranslation.CUSTOMER_OFFER_REQUEST_THANK_YOU_MESSAGE]: \"Thank you, changes have been saved.\",\r\n [ETranslation.CUSTOMER_OFFER_REQUEST_ARCHIVED_CONFIRM]: \"Offer request has been archived and it will no longer be shown to serviceproviders.\",\r\n [ETranslation.CUSTOMER_OFFER_REQUEST_ERROR_TOP]: \"Error, offer request not found\",\r\n [ETranslation.CUSTOMER_OFFER_REQUEST_ERROR_BOTTOM]: \"Check the link or contact us.\",\r\n};\r\n\r\nconst confirmTranslations = {\r\n [ETranslation.CONFIRM_DELETE_SERVICEPROVIDER]:\r\n \"Are you sure you want to delete this serviceprovider?\",\r\n [ETranslation.CONFIRM_DELETE_SERVICE]: \"Are you sure you want to delete this service?\",\r\n [ETranslation.CONFIRM_DELETE_OPERATOR]:\r\n \"Are you sure you want to delete this operator?\",\r\n [ETranslation.CONFIRM_DELETE_LOCATION]:\r\n \"Are you sure you want to delete this location?\",\r\n [ETranslation.CONFIRM_DELETE_SERVICEPROVIDER_FORM]:\r\n \"Are you sure you want to delete this order?\",\r\n [ETranslation.CONFIRM_DELETE_OFFER_REQUEST]:\r\n \"Are you sure you want to delete this offer request?\",\r\n\r\n\r\n [ETranslation.CONFIRM_BUY_TITLE]: \"Open offer request\",\r\n [ETranslation.CONFIRM_BUY_DESCRIPTION]: \"By purchasing the offer request you get to view the information until the customer does not want anymore offers and the offer request is archived.\",\r\n [ETranslation.CONFIRM_BUY_QUESTION]: \"Are you sure you want to purchace this offer request?\" \r\n};\r\n\r\nconst locationsTranslations = {\r\n [ETranslation.NO_LOCATIONS]: \"No locations \",\r\n [ETranslation.LOCATIONS]: \"Locations\",\r\n [ETranslation.LOCATIONS_NEW]: \"New location\",\r\n [ETranslation.LOCATION]: \"Location\",\r\n [ETranslation.LOCATION_NAME]: \"Name\",\r\n [ETranslation.LOCATION_NAME_GENITIVE]: \"Name genetive ('s)\",\r\n [ETranslation.LOCATION_NAME_INESSIVE]: \"Name inessive (in/at)\",\r\n [ETranslation.LOCATION_CONTENT]: \"Content\",\r\n [ETranslation.LOCATION_LATITUDE]: \"Latitude, In Finland ~ 62\",\r\n [ETranslation.LOCATION_LONGITUDE]: \"Longitude, In Finland ~ 25\",\r\n [ETranslation.LOCATION_ZOOM_LEVEL]: \"Zoom level\",\r\n};\r\n\r\nconst feedbackTranslations = {\r\n [ETranslation.FEEDBACK_SATISFACTION]: \"Satisfaction with service\",\r\n [ETranslation.FEEDBACK_SERVICEPROVIDER]: \"Serviceprovider\",\r\n [ETranslation.FEEDBACK_SERVICE_PROVIDER_OTHER]: \"Other serviceprovider\",\r\n [ETranslation.TITLE_FEEDBACKS]: \"Feedback\",\r\n [ETranslation.TITLE_FEEDBACK_NEW]: \"New feedback\",\r\n [ETranslation.FEEDBACKS_ADD_NEW]: \"Add new feedback\",\r\n [ETranslation.NO_FEEDBACK]: \"No feedback\",\r\n [ETranslation.FEEDBACK_FORM_NOT_FOUND]: \"I was left without offer requests\",\r\n [ETranslation.FEEDBACK_FORM_SOMETHING_ELSE]: \"Something else, what?\",\r\n [ETranslation.FEEDBACK_THANK_YOU_TITLE]: \"Thank you\",\r\n [ETranslation.FEEDBACK_THANK_YOU_MESSAGE]: \"Thank you for feedback!\",\r\n [ETranslation.FEEDBACK_EXISTS_MESSAGE]: \"Than you, you have already given feedback.\",\r\n [ETranslation.FEEDBACK_MESSAGE]: \"Feedback\",\r\n};\r\nconst settingsTranslations = {\r\n [ETranslation.TITLE_SETTINGS]: \"Settings\",\r\n [ETranslation.SEND_PASSWORD_RESET_LINK]: \"Change password\",\r\n [ETranslation.PASSWORD_RESET_TEXT]:\r\n \"Are you sure you want to send a change password link to your email?\",\r\n};\r\n\r\nconst billingTranslations = {\r\n [ETranslation.BILLING_EXPORT_ALL]: \"Export invoices\",\r\n [ETranslation.BILLING_EXPORT_ORGANIZATION]: \"Export invoice\",\r\n};\r\n\r\nconst selectTranslations = {\r\n [ETranslation.SELECT_SERVICE_PLACEHOLDER]: 'Choose service',\r\n [ETranslation.SELECT_OPERATOR_PLACEHOLDER]: 'Choose operator',\r\n [ETranslation.SELECT_LOCATIONS_PLACEHOLDER]: 'Choose locations',\r\n [ETranslation.SELECT_SERVICE_PROVIDER_PLACEHOLDER]: \"Choose serviceprovider\"\r\n}\r\n\r\nconst contentsTranslations = {\r\n [ETranslation.TITLE_CONTENTS]: \"News\",\r\n [ETranslation.CONTENTS_ADD_NEW]: \"Add new news\",\r\n [ETranslation.NO_CONTENTS]: \"No news\",\r\n};\r\n\r\nconst contentTranslations = {\r\n [ETranslation.TITLE_CONTENT]: \"News\",\r\n [ETranslation.TITLE_CONTENT_NEW]: \"New news\",\r\n [ETranslation.CONTENT_NAME]: \"News name\",\r\n [ETranslation.CONTENT_SHORTCONTENT]: \"News in brief\",\r\n [ETranslation.CONTENT_CONTENTTEXT]: \"News contents\",\r\n [ETranslation.CONTENT_DATE]: \"News release date\",\r\n [ETranslation.CONTENT_SHOWDATE]: \"Show news release date\",\r\n [ETranslation.CONTENT_TAGS]: \"Tags\",\r\n [ETranslation.CONTENT_TAG_NORMAL]: \"Normal\",\r\n [ETranslation.CONTENT_TAG_NEWS]: \"News\",\r\n [ETranslation.CONTENT_TAG_FRONTPAGE]: \"Frontpage\",\r\n\r\n};\r\n\r\nconst languageTranslations = {\r\n [ETranslation.LANGUAGE_TITLE]: \"Language\",\r\n [ETranslation.LANGUAGE_IN_FINNISH]: \"Suomeksi\",\r\n [ETranslation.LANGUAGE_IN_ENGLISH]: \"In english\",\r\n [ETranslation.LANGUAGE_ENGLISH]: \"English\",\r\n [ETranslation.LANGUAGE_FINNISH]: \"Suomi\",\r\n\r\n\r\n};\r\n\r\nconst termsOfServiceTranslations = {\r\n [ETranslation.TERMS_TITLE]: \"Welcome to the HankiX-service! Start by accepting terms of use\",\r\n [ETranslation.TERMS_BINDING]: \"You agree to the terms of use:\",\r\n [ETranslation.TERMS_LIST_1]: \"legitimate business\",\r\n [ETranslation.TERMS_LIST_2]: \"treat customer information confidentially\",\r\n [ETranslation.TERMS_LIST_3]: \"to pay for the use of the service in accordance with the contract\",\r\n [ETranslation.TERMS_READ_MORE]: \"Read everything from the link\",\r\n [ETranslation.TERMS_TERMS]: \"terms of use\",\r\n [ETranslation.TERMS_ACCEPT]: \"Accept the terms of use\",\r\n}\r\n\r\nconst offerRequestInfoTranslations = {\r\n [ETranslation.OFFERREQUEST_INFO_OFFER_YOUR_SERVICE]: \"Offer your service:\",\r\n [ETranslation.OFFERREQUEST_INFO_LIST_ITEM_1]: \"Select an interesting offer request from the list.\",\r\n [ETranslation.OFFERREQUEST_INFO_LIST_ITEM_2]: \"Make sure you can provide the requested service to the destination.\",\r\n [ETranslation.OFFERREQUEST_INFO_LIST_ITEM_3]: \"Contact the customer and submit your offer.\",\r\n [ETranslation.OFFERREQUEST_INFO_QUESTIONS]: \"Questions?\",\r\n [ETranslation.OFFERREQUEST_INFO_READ_MORE]: \"Read more about the service and pricing: \",\r\n [ETranslation.OFFERREQUEST_INFO_CONFIRM_INFO]: \"Is your business information correct?\",\r\n [ETranslation.OFFERREQUEST_INFO_EDIT_INFO]: \"Edit\",\r\n}\r\n\r\nconst translationsEn = {\r\n ...commonTranslations,\r\n ...authTranslations,\r\n ...headerTranslations,\r\n ...operatorsTranslations,\r\n ...operatorTranslations,\r\n ...offerRequestTranslations,\r\n ...offerRequestsTranslations,\r\n ...offerRequestStatusTranslations,\r\n ...serviceProvidersTranslations,\r\n ...serviceProviderTranslations,\r\n ...servicesTranslations,\r\n ...serviceTranslations,\r\n ...reactSelectTranslations,\r\n ...usersTranslations,\r\n ...userTranslations,\r\n ...validationTranslations,\r\n ...errorTranslations,\r\n ...organizationTranslations,\r\n ...customerOfferRequestTranslations,\r\n ...confirmTranslations,\r\n ...locationsTranslations,\r\n ...feedbackTranslations,\r\n ...settingsTranslations,\r\n ...billingTranslations,\r\n ...offerRequestTypeTranslations,\r\n ...buildingTypeTranslations,\r\n ...selectTranslations,\r\n ...contentTranslations,\r\n ...contentsTranslations,\r\n ...geoLocationTranslation,\r\n ...logItemTranslations,\r\n ...languageTranslations,\r\n ...termsOfServiceTranslations,\r\n ...offerRequestInfoTranslations,\r\n ...languageSelectTranslations\r\n};\r\n\r\nexport default translationsEn;\r\n","import i18n from \"i18next\";\r\nimport { initReactI18next } from \"react-i18next\";\r\nimport translationsFi from \"./translations/translation-fi\";\r\nimport translationsEn from \"./translations/translation-en\";\r\n\r\n\r\n\r\nexport enum ELanguage {\r\n FI = \"fi\",\r\n EN = \"en\"\r\n}\r\n\r\n// the translations\r\n// (tip move them in a JSON file and import them)\r\nconst resources = {\r\n [ELanguage.FI]: {\r\n translation: translationsFi,\r\n },\r\n [ELanguage.EN]: {\r\n translation: translationsEn,\r\n },\r\n};\r\n\r\ni18n\r\n .use(initReactI18next) // passes i18n down to react-i18next\r\n .init({\r\n resources,\r\n lng: \"fi\",\r\n keySeparator: false, // we do not use keys in form messages.welcome\r\n interpolation: {\r\n escapeValue: false, // react already safes from xss\r\n },\r\n });\r\n\r\nexport default i18n;\r\n","import React, { useContext, useEffect, useState } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\n\r\nimport qs from 'query-string';\r\n\r\nimport PasswordResetDialog from '../../components/Auth/PasswordResetDialog/PasswordResetDialog';\r\nimport Alert from '../../components/UI/Alert/Alert';\r\nimport Button, { EButtonColor } from '../../components/UI/Button/Button';\r\nimport Input, { EInputType, IInputField, IInputOptions } from '../../components/UI/Input/Input';\r\nimport ModalContext, { EModalSize } from '../../components/UI/Modal/ModalContext';\r\nimport Spinner from '../../components/UI/Spinner/Spinner';\r\nimport { EInputUpdateAction } from '../../context/InputContext';\r\nimport { IAppState, IAuthState } from '../../interfaces';\r\nimport { updateInputHandler } from '../../shared/utility';\r\nimport * as actions from '../../store/actions';\r\nimport { ETranslation } from '../../translations/translation-keys';\r\nimport classes from './Auth.module.scss';\r\nimport { useLocation } from 'react-router';\r\n\r\nimport firebase from '../../firebase';\r\nimport i18n from '../../i18n';\r\n\r\nexport enum EAuth {\r\n username = \"username\",\r\n password = \"password\",\r\n};\r\n\r\nconst Auth: React.FC = () => {\r\n const { setModal, closeModal } = useContext(ModalContext);\r\n const dispatch = useDispatch();\r\n\r\n const location = useLocation();\r\n\r\n const { loading, error, customToken } = useSelector((state) => state.auth);\r\n\r\n const { t } = useTranslation();\r\n\r\n useEffect(() => {\r\n const params = qs.parse(location.search);\r\n if (params.t) {\r\n dispatch(actions.getCustomToken(params.t as string));\r\n }\r\n\r\n }, [location, dispatch]);\r\n\r\n useEffect(() => {\r\n if (customToken) {\r\n firebase.auth().signInWithCustomToken(customToken);\r\n }\r\n }, [customToken, error]);\r\n\r\n const [inputs, setInputs] = useState({\r\n [EAuth.username]: {\r\n type: EInputType.email,\r\n labelTranslation: ETranslation.USERNAME,\r\n placeholderTranslation: ETranslation.USERNAME,\r\n value: \"\",\r\n },\r\n [EAuth.password]: {\r\n type: EInputType.password,\r\n labelTranslation: ETranslation.PASSWORD,\r\n placeholderTranslation: ETranslation.PASSWORD,\r\n value: \"\",\r\n },\r\n });\r\n\r\n const createAuthInput = (inputName: EAuth, options?: IInputOptions) => {\r\n const item = inputs[inputName];\r\n return updateInputHandler(inputName, value, setInputs)}\r\n inputName={inputName}\r\n />\r\n };\r\n\r\n const submitHandler = (event: React.MouseEvent | React.FormEvent) => {\r\n event.preventDefault();\r\n const username = inputs[EAuth.username].value as string;\r\n const password = inputs[EAuth.password].value as string;\r\n const preferredLanguage = i18n.language;\r\n dispatch(actions.auth(username, password, preferredLanguage));\r\n };\r\n\r\n const setPasswordResetDialog = () => setModal({\r\n isOpen: true,\r\n title: t(ETranslation.RESET_PASSWORD),\r\n size: EModalSize.SMALL,\r\n content: ,\r\n })\r\n\r\n return (\r\n
\r\n
\r\n
{t(ETranslation.TITLE_HANKIX)}
\r\n {(loading && ) || (\r\n
\r\n
\r\n {createAuthInput(EAuth.username)}\r\n {createAuthInput(EAuth.password)}\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n {i18n.language === \"fi\" ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n
\r\n {error && (\r\n {error}\r\n )}\r\n
\r\n )}\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Auth;\r\n\r\n","import { IOption } from '../components/UI/Input/Input';\r\n\r\nexport function createOptions(\r\n items: T[],\r\n createLabel: (item: T) => string,\r\n placeholder?: string\r\n): IOption[] {\r\n const options: IOption[] = [];\r\n\r\n if (placeholder) {\r\n options.push({ value: '', label: placeholder })\r\n }\r\n\r\n options.push.apply(\r\n options,\r\n items.map((item) => {\r\n return {\r\n value: item.id,\r\n label: createLabel(item),\r\n };\r\n })\r\n );\r\n return options;\r\n}\r\n","import * as qs from 'query-string';\r\nimport React, { useEffect, useState } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { RouteComponentProps } from 'react-router-dom';\r\n\r\nimport Alert, { EAlertColor } from '../../../components/UI/Alert/Alert';\r\nimport Button from '../../../components/UI/Button/Button';\r\nimport Container from '../../../components/UI/Container/Container';\r\nimport Input, { EInputType, IInputField, IInputOptions, IOption } from '../../../components/UI/Input/Input';\r\nimport Spinner from '../../../components/UI/Spinner/Spinner';\r\nimport { IAppState, IFeedback, IFeedbackState } from '../../../interfaces';\r\nimport { createOptions } from '../../../shared/option-utils';\r\nimport { getInputData, updateInputHandler } from '../../../shared/utility';\r\nimport * as actions from '../../../store/actions';\r\nimport { ETranslation } from '../../../translations/translation-keys';\r\n\r\ninterface IProps extends RouteComponentProps {}\r\n\r\nexport enum EFeedback {\r\n serviceProvider = \"serviceProvider\",\r\n serviceProviderOther = \"serviceProviderOther\",\r\n serviceSatisfaction = \"serviceSatisfaction\",\r\n operatorToken = \"operatorToken\",\r\n serviceToken = \"serviceToken\",\r\n message = \"message\",\r\n}\r\n\r\nconst Feedback: React.FC = ({ history, location }) => {\r\n const [id, setId] = useState(\"\");\r\n const [pin, setPin] = useState(\"\");\r\n\r\n const [serviceProviderOptions, setServiceProviderOptions] = useState<\r\n IOption[]\r\n >([]);\r\n\r\n useEffect(() => {\r\n const q = qs.parse(location.search);\r\n setId(q.id as string);\r\n setPin(q.pin as string);\r\n }, [location]);\r\n\r\n\r\n const { loading, serviceProviders, saveOk, error } = useSelector(state => state.feedbacks)\r\n\r\n const dispatch = useDispatch();\r\n const { t } = useTranslation();\r\n \r\n const [inputs, setInputs] = useState({\r\n [EFeedback.serviceSatisfaction]: {\r\n type: EInputType.star,\r\n labelTranslation: ETranslation.FEEDBACK_SATISFACTION,\r\n placeholderTranslation: ETranslation.FEEDBACK_SATISFACTION,\r\n value: \"\",\r\n options: [\r\n { value: \"1\" },\r\n { value: \"2\" },\r\n { value: \"3\" },\r\n { value: \"4\" },\r\n { value: \"5\" },\r\n ],\r\n },\r\n\r\n [EFeedback.serviceProvider]: {\r\n type: EInputType.select,\r\n labelTranslation: ETranslation.FEEDBACK_SERVICEPROVIDER,\r\n placeholderTranslation: ETranslation.FEEDBACK_SERVICEPROVIDER,\r\n value: ETranslation.FEEDBACK_FORM_NOT_FOUND,\r\n options: [],\r\n },\r\n [EFeedback.serviceProviderOther]: {\r\n type: EInputType.text,\r\n labelTranslation: ETranslation.FEEDBACK_SERVICE_PROVIDER_OTHER,\r\n placeholderTranslation: ETranslation.FEEDBACK_SERVICE_PROVIDER_OTHER,\r\n value: \"\",\r\n },\r\n [EFeedback.serviceToken]: {\r\n type: EInputType.static,\r\n labelTranslation: ETranslation.COMMON_TOKEN,\r\n value: \"\",\r\n },\r\n [EFeedback.message]: {\r\n type: EInputType.textarea,\r\n labelTranslation: ETranslation.FEEDBACK_MESSAGE,\r\n placeholderTranslation: ETranslation.FEEDBACK_MESSAGE,\r\n value: \"\",\r\n },\r\n });\r\n\r\n // get offer request\r\n useEffect(() => {\r\n if (id && pin) {\r\n dispatch(actions.getFeedbackFormData(id, pin));\r\n }\r\n }, [dispatch, id, pin]);\r\n\r\n // put service providers into input\r\n useEffect(() => {\r\n if (serviceProviders) {\r\n const options = createOptions(serviceProviders, (s) => s.name || \"\");\r\n options.unshift({\r\n value: ETranslation.FEEDBACK_FORM_NOT_FOUND,\r\n label: t(ETranslation.FEEDBACK_FORM_NOT_FOUND),\r\n });\r\n options.push({\r\n value: ETranslation.FEEDBACK_FORM_SOMETHING_ELSE,\r\n label: t(ETranslation.FEEDBACK_FORM_SOMETHING_ELSE),\r\n });\r\n setServiceProviderOptions(options);\r\n }\r\n }, [serviceProviders, t]);\r\n\r\n const createInput = (inputName: EFeedback, options?: IInputOptions) => {\r\n const item = inputs[inputName];\r\n return (\r\n updateInputHandler(inputName, value, setInputs)}\r\n inputName={inputName}\r\n />\r\n );\r\n };\r\n\r\n const submitHandler = async (\r\n event:\r\n | React.MouseEvent\r\n | React.FormEvent\r\n ) => {\r\n event.preventDefault();\r\n\r\n const feedback = getInputData(inputs);\r\n\r\n const serviceProvider = inputs[EFeedback.serviceProvider].value as string;\r\n if (serviceProvider) {\r\n switch (serviceProvider) {\r\n case ETranslation.FEEDBACK_FORM_NOT_FOUND:\r\n feedback.isServiceProviderNotFound = true;\r\n feedback.serviceProvider = undefined;\r\n break;\r\n case ETranslation.FEEDBACK_FORM_SOMETHING_ELSE:\r\n feedback.isServiceProviderOther = true;\r\n feedback.serviceProvider = undefined;\r\n break;\r\n }\r\n }\r\n \r\n dispatch(actions.saveFeedback(feedback, id, pin));\r\n };\r\n\r\n const serviceSatification = inputs[EFeedback.serviceSatisfaction]\r\n .value as string;\r\n const serviceProvider = inputs[EFeedback.serviceProvider].value as string;\r\n\r\n if (saveOk) {\r\n return (\r\n \r\n {t(ETranslation.FEEDBACK_THANK_YOU_MESSAGE)}\r\n \r\n )\r\n }\r\n\r\n if (error) {\r\n return {t(error)}\r\n }\r\n\r\n return (\r\n \r\n

{t(ETranslation.TITLE_FEEDBACKS)}

\r\n {loading ? (\r\n \r\n ) : (\r\n
\r\n {createInput(EFeedback.serviceSatisfaction)}\r\n {inputs[EFeedback.serviceSatisfaction].value && (\r\n <>\r\n {createInput(EFeedback.message)}\r\n {createInput(EFeedback.serviceProvider, {\r\n options: serviceProviderOptions,\r\n loading,\r\n })}\r\n {serviceProvider ===\r\n ETranslation.FEEDBACK_FORM_SOMETHING_ELSE &&\r\n createInput(EFeedback.serviceProviderOther)}\r\n \r\n )}\r\n
\r\n )}\r\n
\r\n \r\n {t(ETranslation.COMMON_SEND)}\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Feedback;\r\n","import React, { ReactNode, CSSProperties } from \"react\";\r\n\r\nimport classes from \"./Table.module.scss\";\r\n\r\ninterface IProps {\r\n children: ReactNode;\r\n hover?: boolean;\r\n className?: string;\r\n style?: CSSProperties;\r\n containerClassName?: string;\r\n}\r\n\r\nconst Table: React.FC = ({\r\n children,\r\n hover,\r\n className,\r\n style,\r\n containerClassName,\r\n}) => {\r\n const tableClassNames = [classes.Table];\r\n if (hover) {\r\n tableClassNames.push(classes.Hover);\r\n }\r\n if (className) {\r\n tableClassNames.push(className);\r\n }\r\n const containerClassNames = [classes.Container];\r\n if (containerClassName) {\r\n containerClassNames.push(containerClassName);\r\n }\r\n\r\n return (\r\n
\r\n \r\n {children}\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Table;\r\n","import { faStar } from '@fortawesome/free-solid-svg-icons';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport React, { useEffect } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { RouteComponentProps } from 'react-router';\r\n\r\nimport { Routes } from '../../classes/Routes';\r\nimport Alert from '../../components/UI/Alert/Alert';\r\nimport Container from '../../components/UI/Container/Container';\r\nimport Spinner from '../../components/UI/Spinner/Spinner';\r\nimport Table from '../../components/UI/Table/Table';\r\nimport { IAppState } from '../../interfaces';\r\nimport { linkHandler } from '../../shared/utility';\r\nimport * as actions from '../../store/actions';\r\nimport { ETranslation } from '../../translations/translation-keys';\r\nimport classes from './Feedbacks.module.scss';\r\n\r\nconst Feedbacks: React.FC = ({ history }) => {\r\n const { loading, error, feedbacks } = useSelector((state: IAppState) => ({\r\n loading: state.feedbacks.loading,\r\n error: state.feedbacks.error,\r\n feedbacks: state.feedbacks.feedbacks,\r\n }));\r\n\r\n const dispatch = useDispatch();\r\n const { t } = useTranslation();\r\n\r\n useEffect(() => {\r\n dispatch(actions.listFeedbacks());\r\n }, [dispatch]);\r\n\r\n const showFeedback = (event: React.MouseEvent, id: string) => {\r\n linkHandler(event, Routes.OFFER_REQUEST(id), history);\r\n }\r\n\r\n const mapStars = (num?: number) => {\r\n if (!num) return null;\r\n return [...Array(num)].map((e, i) => );\r\n }\r\n\r\n return (\r\n <>\r\n {error && }\r\n \r\n

{t(ETranslation.TITLE_FEEDBACKS)}

\r\n {loading\r\n ? \r\n : feedbacks\r\n ? (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {feedbacks.map(feedback => (\r\n showFeedback(e, feedback.offerRequest!.id)}>\r\n \r\n \r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n
{t(ETranslation.CUSTOMER_OFFER_REQUEST)}{t(ETranslation.COMMON_SERVICE)}{t(ETranslation.FEEDBACK_SERVICEPROVIDER)}{t(ETranslation.FEEDBACK_SATISFACTION)}{t(ETranslation.FEEDBACK_MESSAGE)}
{feedback.offerRequest?.firstName} {feedback.offerRequest?.lastName}{feedback.offerRequest?.service?.name}{feedback.serviceProvider\r\n ? feedback.serviceProvider.name\r\n : feedback.otherFeedback\r\n ? feedback.otherFeedback\r\n : t(ETranslation.FEEDBACK_FORM_NOT_FOUND)\r\n }{mapStars(feedback.serviceSatisfaction)}{feedback.message}
\r\n )\r\n :

{t(ETranslation.NO_FEEDBACK)}

\r\n }\r\n
\r\n \r\n );\r\n}\r\n\r\nexport default Feedbacks;","import React, { CSSProperties, ReactNode } from \"react\";\r\nimport classes from \"./ModalBody.module.scss\";\r\n\r\ninterface IProps {\r\n children: ReactNode;\r\n style?: CSSProperties;\r\n}\r\n\r\nconst ModalBody: React.FC = ({ children, style }) => {\r\n return (\r\n
\r\n {children}\r\n
\r\n );\r\n};\r\n\r\nexport default ModalBody;\r\n","import React, { ReactNode } from 'react';\r\nimport classes from './ModalFooter.module.scss';\r\n\r\ninterface IProps {\r\n children: ReactNode;\r\n}\r\n\r\nconst ModalFooter: React.FC = ({ children }) => {\r\n return (\r\n
\r\n {children}\r\n
\r\n )\r\n};\r\n\r\nexport default ModalFooter;\r\n","import React, { ReactNode } from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { ETranslation } from \"../../../translations/translation-keys\";\r\nimport Button from \"../Button/Button\";\r\nimport InputGroup from \"../InputGroup/InputGroup\";\r\nimport ModalBody from \"../Modal/ModalBody/ModalBody\";\r\nimport ModalFooter from \"../Modal/ModalFooter/ModalFooter\";\r\n\r\ninterface IProps {\r\n body?: ReactNode;\r\n onConfirm: () => void;\r\n onCancel: () => void;\r\n}\r\n\r\nconst ConfirmDialog: React.FC = ({ body, onConfirm, onCancel }) => {\r\n const { t } = useTranslation();\r\n return (\r\n <>\r\n \r\n {body}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default ConfirmDialog;\r\n","import { useDispatch } from 'react-redux';\r\nimport { IOrganization } from './../interfaces/domain';\r\nimport { useCallback } from 'react';\r\nimport { ETranslation } from './../translations/translation-keys';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { IAppState, IOrganizationState, IAuthState } from './../interfaces/state';\r\nimport { useSelector } from 'react-redux';\r\nimport { IOption } from '../components/UI/Input/Input';\r\nimport { useEffect, useState } from 'react';\r\nimport { createOptions } from '../shared/option-utils';\r\n\r\nimport * as actions from '../store/actions';\r\n\r\nconst defaultParams = {\r\n withPlaceholder: false,\r\n withBusinessId: false\r\n}\r\n\r\nexport const useOrganizationOptions = ({ withBusinessId, withPlaceholder } = defaultParams) => {\r\n const { authUser } = useSelector(state => state.auth);\r\n const { t } = useTranslation()\r\n const [organizationOptions, setOrganizationOptions] = useState([])\r\n const dispatch = useDispatch();\r\n\r\n const [tryFetch, setTryFetch] = useState(false);\r\n\r\n const { organizations, loading } = useSelector((state) => state.organization);\r\n\r\n useEffect(() => {\r\n if(authUser) {\r\n setTryFetch(authUser.isPrimary);\r\n }\r\n }, [authUser]);\r\n\r\n useEffect(() => {\r\n if(tryFetch && !organizations && !loading) {\r\n dispatch(actions.listOrganizations());\r\n setTryFetch(false);\r\n }\r\n }, [dispatch, organizations, tryFetch, loading]);\r\n\r\n const createLabel = useCallback((organization: IOrganization) => {\r\n let labelArray = [organization.name || organization.id];\r\n\r\n if(withBusinessId && organization.businessId) {\r\n labelArray.push(`(${organization.businessId})`)\r\n }\r\n return labelArray.join(' ');\r\n }, [withBusinessId]);\r\n\r\n useEffect(() => {\r\n let placeholder;\r\n if (withPlaceholder) {\r\n placeholder = t(ETranslation.SELECT_OPERATOR_PLACEHOLDER);\r\n }\r\n setOrganizationOptions(organizations ? createOptions(organizations, createLabel, placeholder) : []);\r\n }, [organizations, t, withPlaceholder, createLabel]);\r\n\r\n return { organizationOptions, organizationsLoading: loading };\r\n\r\n}","import React, { useContext, useEffect, useState } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { RouteComponentProps } from 'react-router-dom';\r\nimport { Routes } from '../../../classes/Routes';\r\nimport Alert from '../../../components/UI/Alert/Alert';\r\nimport Button from '../../../components/UI/Button/Button';\r\nimport ConfirmDialog from '../../../components/UI/ConfirmDialog/ConfirmDialog';\r\nimport Container from '../../../components/UI/Container/Container';\r\nimport Input, { EInputType, IInputField, IInputOptions } from '../../../components/UI/Input/Input';\r\nimport InputGroup from '../../../components/UI/InputGroup/InputGroup';\r\nimport ModalContext, { defaultModal, EModalSize } from '../../../components/UI/Modal/ModalContext';\r\nimport Spinner from '../../../components/UI/Spinner/Spinner';\r\nimport { EInputUpdateAction } from '../../../context/InputContext';\r\nimport { useOrganizationOptions } from '../../../hooks/useOrganizationOptions';\r\nimport { IAppState, IAuthState, ILocation, ILocationState } from '../../../interfaces';\r\nimport { getInputData, initForm, updateInputHandler, validateInputs } from '../../../shared/utility';\r\nimport * as actions from '../../../store/actions';\r\nimport { ETranslation } from '../../../translations/translation-keys';\r\n\r\ninterface IMatch {\r\n id: string;\r\n}\r\n\r\ninterface IProps extends RouteComponentProps { }\r\n\r\nexport enum ELocation {\r\n operator = \"operator\",\r\n locationToken = \"locationToken\",\r\n name = \"name\",\r\n nameGenetive = \"nameGenitive\",\r\n nameInessive = \"nameInessive\",\r\n content = \"content\",\r\n latitude = \"latitude\",\r\n longitude = \"longitude\",\r\n zoomLevel = \"zoomLevel\",\r\n}\r\n\r\nconst Location: React.FC = ({ match, history }) => {\r\n const dispatch = useDispatch();\r\n const { t } = useTranslation();\r\n \r\n const { setModal } = useContext(ModalContext);\r\n \r\n const [isValid, setIsValid] = useState(false);\r\n \r\n const { loading, error, location, saveOrUpdateOk } = useSelector((state) => state.locations);\r\n const { authUser } = useSelector((state) => state.auth);\r\n\r\n const { organizationOptions, organizationsLoading } = useOrganizationOptions({ withBusinessId: true, withPlaceholder: true });\r\n\r\n const { id } = match.params;\r\n\r\n const [inputs, setInputs] = useState({\r\n [ELocation.operator]: {\r\n type: EInputType.select,\r\n labelTranslation: ETranslation.COMMON_OPERATOR_NAME,\r\n placeholderTranslation: ETranslation.COMMON_OPERATOR_NAME,\r\n value: \"\",\r\n options: [],\r\n validation: {\r\n required: authUser?.isPrimary,\r\n },\r\n },\r\n [ELocation.locationToken]: {\r\n type: EInputType.static,\r\n labelTranslation: ETranslation.COMMON_TOKEN,\r\n value: \"\",\r\n },\r\n [ELocation.name]: {\r\n type: EInputType.text,\r\n labelTranslation: ETranslation.LOCATION_NAME,\r\n placeholderTranslation: ETranslation.LOCATION_NAME,\r\n value: \"\",\r\n validation: {\r\n required: true\r\n }\r\n },\r\n [ELocation.nameGenetive]: {\r\n type: EInputType.text,\r\n labelTranslation: ETranslation.LOCATION_NAME_GENITIVE,\r\n placeholderTranslation: ETranslation.LOCATION_NAME_GENITIVE,\r\n value: \"\",\r\n },\r\n [ELocation.nameInessive]: {\r\n type: EInputType.text,\r\n labelTranslation: ETranslation.LOCATION_NAME_INESSIVE,\r\n placeholderTranslation: ETranslation.LOCATION_NAME_INESSIVE,\r\n value: \"\",\r\n },\r\n [ELocation.content]: {\r\n type: EInputType.textarea,\r\n labelTranslation: ETranslation.LOCATION_CONTENT,\r\n placeholderTranslation: ETranslation.LOCATION_CONTENT,\r\n value: \"\",\r\n },\r\n [ELocation.latitude]: {\r\n type: EInputType.number,\r\n labelTranslation: ETranslation.LOCATION_LATITUDE,\r\n placeholderTranslation: ETranslation.LOCATION_LATITUDE,\r\n value: \"\",\r\n validation: {\r\n required: true\r\n }\r\n },\r\n [ELocation.longitude]: {\r\n type: EInputType.number,\r\n labelTranslation: ETranslation.LOCATION_LONGITUDE,\r\n placeholderTranslation: ETranslation.LOCATION_LONGITUDE,\r\n value: \"\",\r\n validation: {\r\n required: true\r\n }\r\n },\r\n [ELocation.zoomLevel]: {\r\n type: EInputType.number,\r\n labelTranslation: ETranslation.LOCATION_ZOOM_LEVEL,\r\n placeholderTranslation: ETranslation.LOCATION_ZOOM_LEVEL,\r\n value: 8,\r\n },\r\n });\r\n\r\n\r\n useEffect(() => {\r\n if(saveOrUpdateOk) {\r\n history.push(Routes.LOCATIONS);\r\n }\r\n return () => {\r\n dispatch(actions.clearLocation());\r\n }\r\n }, [dispatch, saveOrUpdateOk, history]);\r\n\r\n useEffect(() => {\r\n if (Routes.isNotNew(id)) {\r\n dispatch(actions.getLocation(id));\r\n }\r\n }, [id, dispatch]);\r\n\r\n useEffect(() => {\r\n if (location) {\r\n initForm(setInputs, location);\r\n }\r\n }, [location]);\r\n\r\n useEffect(() => {\r\n setIsValid(validateInputs(inputs));\r\n }, [inputs]);\r\n\r\n const createInput = (inputName: ELocation, options?: IInputOptions) => {\r\n const item = inputs[inputName];\r\n return updateInputHandler(inputName, value, setInputs)}\r\n inputName={inputName}\r\n showValidation={!isValid}\r\n />\r\n };\r\n\r\n const submitHandler = async (event: React.MouseEvent) => {\r\n event.preventDefault();\r\n\r\n const location = getInputData(inputs);\r\n\r\n if (Routes.isNew(id)) {\r\n dispatch(actions.saveLocation(location));\r\n } else {\r\n location.id = id;\r\n dispatch(actions.updateLocation(location));\r\n }\r\n };\r\n\r\n const deleteLocation = () => setModal({\r\n isOpen: true,\r\n title: t(ETranslation.COMMON_REMOVE),\r\n size: EModalSize.SMALL,\r\n content: (\r\n {t(ETranslation.CONFIRM_DELETE_LOCATION)}

}\r\n onConfirm={() => {\r\n dispatch(actions.deleteLocation(id))\r\n setModal(defaultModal);\r\n history.goBack();\r\n }}\r\n onCancel={() => setModal(defaultModal)}\r\n />\r\n ),\r\n });\r\n\r\n return (\r\n \r\n {error && }\r\n

{Routes.isNew(id) ? t(ETranslation.LOCATIONS_NEW) : t(ETranslation.LOCATION)}

\r\n {loading\r\n ? \r\n : (\r\n <> \r\n { authUser?.isPrimary && createInput(ELocation.operator, { options: organizationOptions, loading: organizationsLoading }) }\r\n \r\n {createInput(ELocation.name)}\r\n {createInput(ELocation.nameGenetive)}\r\n {createInput(ELocation.nameInessive)}\r\n \r\n {createInput(ELocation.content)}\r\n \r\n {createInput(ELocation.latitude)}\r\n {createInput(ELocation.longitude)}\r\n \r\n {createInput(ELocation.zoomLevel)}\r\n {Routes.isNotNew(id) && (\r\n createInput(ELocation.locationToken)\r\n )}\r\n \r\n )\r\n }\r\n \r\n \r\n \r\n {Routes.isNotNew(id) && (\r\n \r\n )}\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default Location;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport CreatableReactSelect from \"react-select/creatable\";\r\nimport ReactSelect from \"react-select\";\r\nimport { ETranslation } from \"../../../translations/translation-keys\";\r\nimport { IOption } from \"../Input/Input\";\r\n\r\ninterface IProps {\r\n inputName?: string;\r\n value: string;\r\n onChange: (value: string) => void;\r\n onInputChange?: (value: string) => void;\r\n options?: IOption[];\r\n disabled?: boolean;\r\n invalid?: boolean;\r\n className?: string;\r\n isSearchable?: boolean;\r\n isClearable?: boolean;\r\n isLoading?: boolean;\r\n isCreatable?: boolean;\r\n isMulti?: boolean;\r\n}\r\n\r\nconst Select: React.FC = ({\r\n inputName, value, onChange, onInputChange, options, disabled, invalid, className, isSearchable, isClearable, isLoading, isMulti, isCreatable = true\r\n}) => {\r\n const { t } = useTranslation();\r\n\r\n const [selectValue, setSelectValue] = useState();\r\n const [selectOptions, setSelectOptions] = useState([]);\r\n\r\n useEffect(() => {\r\n if(value && selectOptions) {\r\n setSelectValue(selectOptions.find(o => o.value === value));\r\n } else {\r\n setSelectValue(undefined);\r\n }\r\n\r\n }, [value, selectOptions]);\r\n\r\n useEffect(() => {\r\n setSelectOptions(options ? options.map(o => ({ label: (o.labelTranslation ? t(o.labelTranslation) : o.label) || o.value, value: o.value })) : []);\r\n }, [options, t]);\r\n\r\n const changeHandler = (option: IOption | null) => {\r\n onChange(option?.value || '');\r\n }\r\n\r\n return (\r\n isCreatable ? (\r\n changeHandler(option as IOption | null)}\r\n options={selectOptions}\r\n isDisabled={disabled}\r\n invalid={invalid}\r\n className={className}\r\n isSearchable={isSearchable}\r\n isClearable={isClearable}\r\n isLoading={isLoading}\r\n formatCreateLabel={value => `${t(ETranslation.REACT_SELECT_ADD_NEW)} \"${value}\"`}\r\n placeholder={t(ETranslation.REACT_SELECT_PLACEHOLDER)}\r\n isMulti={isMulti}\r\n />\r\n ) : (\r\n changeHandler(option as IOption | null)}\r\n options={selectOptions}\r\n isDisabled={disabled}\r\n invalid={invalid}\r\n className={className}\r\n isSearchable={isSearchable}\r\n isClearable={isClearable}\r\n isLoading={isLoading}\r\n noOptionsMessage={() => t(ETranslation.NOT_FOUND_ERROR)}\r\n placeholder={t(ETranslation.REACT_SELECT_PLACEHOLDER)}\r\n isMulti={isMulti}\r\n />\r\n )\r\n )\r\n}\r\n\r\nexport default Select;\r\n","import React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport { useOrganizationOptions } from '../../../hooks/useOrganizationOptions';\r\nimport { ETranslation } from '../../../translations/translation-keys';\r\nimport Select from '../../UI/Select/Select';\r\n\r\n\r\ninterface IProps {\r\n setOperatorId: React.Dispatch>;\r\n operatorId: string;\r\n}\r\n\r\nconst OperatorSearch: React.FC = ({ setOperatorId, operatorId}) => {\r\n\r\n const { organizationOptions, organizationsLoading } = useOrganizationOptions();\r\n const { t } = useTranslation();\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n )\r\n\r\n}\r\n\r\nexport default OperatorSearch;","import classes from './SearchContainer.module.scss';\r\nimport React, { ReactNode } from 'react';\r\n\r\n\r\ninterface IProps {\r\n children: ReactNode\r\n}\r\n\r\nconst SearchContainer: React.FC = ({ children }) => {\r\n return (\r\n
\r\n {children}\r\n
\r\n )\r\n}\r\n\r\nexport default SearchContainer","import React, { useEffect, useState } from 'react';\r\nimport { ESearchStorageKey } from '../../../enums';\r\n\r\nimport OperatorSearch from '../../Searches/OperatorSearch/OperatorSearch';\r\nimport SearchContainer from '../../Searches/SearchContainer/SearchContainer';\r\n\r\ninterface IProps {\r\n onSearch: (operatorId: string) => void;\r\n};\r\n\r\nconst LocationsSearch: React.FC = ({ onSearch }) => {\r\n \r\n const [isInit, setInit] = useState(false);\r\n const [operatorId, setOperatorId] = useState(\"\");\r\n\r\n useEffect(() => {\r\n setOperatorId(localStorage.getItem(ESearchStorageKey.OFFER_REQUEST_OPERATOR_ID) || '');\r\n setInit(true);\r\n }, []);\r\n\r\n useEffect(() => {\r\n if(isInit) {\r\n onSearch(operatorId);\r\n localStorage.setItem(ESearchStorageKey.OFFER_REQUEST_OPERATOR_ID, operatorId);\r\n }\r\n }, [operatorId, onSearch, isInit]);\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default LocationsSearch;\r\n","import { faPlus } from '@fortawesome/free-solid-svg-icons';\r\nimport React, { useCallback, useEffect } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { RouteComponentProps } from 'react-router-dom';\r\n\r\nimport { ERouteStaticParams, Routes } from '../../classes/Routes';\r\nimport LocationsSearch from '../../components/Location/LocationSearch/LocationsSearch';\r\nimport Alert from '../../components/UI/Alert/Alert';\r\nimport Button from '../../components/UI/Button/Button';\r\nimport Container from '../../components/UI/Container/Container';\r\nimport Spinner from '../../components/UI/Spinner/Spinner';\r\nimport Table from '../../components/UI/Table/Table';\r\nimport { IAppState, IAuthState, ILocationState } from '../../interfaces';\r\nimport { linkHandler } from '../../shared/utility';\r\nimport * as actions from '../../store/actions';\r\nimport { ETranslation } from '../../translations/translation-keys';\r\n\r\ninterface IProps extends RouteComponentProps {}\r\n\r\nconst Locations: React.FC = ({ history }) => {\r\n const dispatch = useDispatch();\r\n\r\n const { loading, error, locations } = useSelector(state => state.locations);\r\n const { authUser } = useSelector(state => state.auth);\r\n\r\n const { t } = useTranslation();\r\n\r\n const showLocation = (\r\n event: React.MouseEvent,\r\n id: string\r\n ) => {\r\n linkHandler(event, Routes.LOCATION(id), history);\r\n };\r\n\r\n const searchHandler = useCallback((operatorId?: string) => {\r\n dispatch(actions.listLocations(true, operatorId));\r\n }, [dispatch])\r\n\r\n useEffect(() => {\r\n if(!authUser?.isPrimary) searchHandler();\r\n }, [authUser, searchHandler]);\r\n\r\n return (\r\n <>\r\n {error && }\r\n \r\n

{t(ETranslation.LOCATIONS)}

\r\n history.push(Routes.LOCATION(ERouteStaticParams.new))}\r\n icon={faPlus}\r\n style={{ marginBottom: \"1rem\" }}\r\n >\r\n {t(ETranslation.LOCATIONS_NEW)}\r\n \r\n {authUser?.isPrimary && }\r\n {loading ? (\r\n \r\n ) : locations ? (\r\n \r\n \r\n \r\n { authUser?.isPrimary && }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {locations.map((location) => (\r\n showLocation(e, location.id)}>\r\n { authUser?.isPrimary && }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n
{t(ETranslation.COMMON_OPERATOR_NAME)}{t(ETranslation.LOCATION_NAME)}{t(ETranslation.COMMON_TOKEN)}{t(ETranslation.LOCATION_NAME_GENITIVE)}{t(ETranslation.LOCATION_NAME_INESSIVE)}{t(ETranslation.LOCATION_CONTENT)}{t(ETranslation.LOCATION_LATITUDE)}{t(ETranslation.LOCATION_LONGITUDE)}{t(ETranslation.SERVICES)}{t(ETranslation.LOCATION_ZOOM_LEVEL)}
{location.operator.name}{location.name}{location.locationToken}{location.nameGenitive}{location.nameInessive}{location.content}{location.latitude}{location.longitude}{location.services?.map((s) => s.name).join(\", \")}{location.zoomLevel}
\r\n ) : (\r\n

{t(ETranslation.NO_LOCATIONS)}

\r\n )}\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default Locations;\r\n","import { ETranslation } from './../translations/translation-keys';\r\nimport { EBuildingType, ESubscriptionLevel, EInvoicingType, ETags, EPaymentMethod, EEvents, ELanguage } from './../enums/index';\r\nimport { IOption } from '../components/UI/Input/Input';\r\n\r\n\r\n\r\nexport const subscriptionLevels: IOption[] = [\r\n { value: ESubscriptionLevel.FREE, labelTranslation: ETranslation.SUBSCRIPTION_LEVEL_FREE },\r\n { value: ESubscriptionLevel.BASIC, labelTranslation: ETranslation.SUBSCRIPTION_LEVEL_BASIC }\r\n];\r\n\r\n\r\nexport const buildingTypes: IOption[] = [\r\n { labelTranslation: ETranslation.BUIDLING_TYPE_SELECT, value: \"\" },\r\n { labelTranslation: ETranslation.BUILDING_TYPE_TOWN_HOUSE, value: EBuildingType.TOWN_HOUSE },\r\n { labelTranslation: ETranslation.BUILDING_TYPE_SEMI_DETACHED_HOUSE, value: EBuildingType.SEMI_DETACHED_HOUSE },\r\n { labelTranslation: ETranslation.BUILDING_TYPE_ROW_HOUSE, value: EBuildingType.ROW_HOUSE },\r\n { labelTranslation: ETranslation.BUILDING_TYPE_DETACHED_HOUSE, value: EBuildingType.DETACHED_HOUSE },\r\n { labelTranslation: ETranslation.BUILDING_TYPE_APARTMENT_HOUSE, value: EBuildingType.APARTMENT_HOUSE },\r\n { labelTranslation: ETranslation.BUILDING_TYPE_OTHER, value: EBuildingType.OTHER },\r\n];\r\n\r\nexport const invoicingTypes: IOption[] = [\r\n { value: EInvoicingType.EINVOICE, labelTranslation: ETranslation.INVOICING_TYPE_EINVOICE },\r\n { value: EInvoicingType.OTHER, labelTranslation: ETranslation.INVOICING_TYPE_OTHER },\r\n];\r\n\r\nexport const tagTypes: IOption[] = [\r\n { value: ETags.NORMAL, label: \"Normal\" },\r\n { value: ETags.UUTISET, label: \"News\" },\r\n { value: ETags.FRONTPAGE, label: \"FrontPage\" },\r\n];\r\n\r\nexport const paymentMethods: IOption[] = [\r\n { value: EPaymentMethod.MONTH, labelTranslation: ETranslation.PAYMENT_METHOD_MONTH },\r\n { value: EPaymentMethod.MICRO, labelTranslation: ETranslation.PAYMENT_METHOD_MICRO }\r\n];\r\n\r\nexport const events: IOption[] = [\r\n { value: \"\", labelTranslation: ETranslation.LOG_ITEM_EVENTS_SELECT},\r\n { value: EEvents.AUTH_LOGIN, labelTranslation: ETranslation.LOG_ITEM_EVENTS_AUTH_LOGIN },\r\n { value: EEvents.AUTH_LOGOUT, labelTranslation: ETranslation.LOG_ITEM_EVENTS_AUTH_LOGOUT },\r\n { value: EEvents.OFFER_REQUEST_ADD_ACCESS, labelTranslation: ETranslation.LOG_ITEM_EVENTS_OFFER_REQUEST_ADD_ACCESS },\r\n { value: EEvents.OFFER_REQUEST_ARCHIVE_PIN, labelTranslation: ETranslation.LOG_ITEM_EVENTS_OFFER_REQUEST_ARCHIVE_PIN },\r\n { value: EEvents.OFFER_REQUEST_DELETE, labelTranslation: ETranslation.LOG_ITEM_EVENTS_OFFER_REQUEST_DELETE },\r\n { value: EEvents.OFFER_REQUEST_LIST, labelTranslation: ETranslation.LOG_ITEM_EVENTS_OFFER_REQUEST_LIST },\r\n { value: EEvents.OFFER_REQUEST_SAVE, labelTranslation: ETranslation.LOG_ITEM_EVENTS_OFFER_REQUEST_SAVE },\r\n { value: EEvents.OFFER_REQUEST_SAVE_LOCAL, labelTranslation: ETranslation.LOG_ITEM_EVENTS_OFFER_REQUEST_SAVE_LOCAL },\r\n { value: EEvents.OFFER_REQUEST_UPDATE, labelTranslation: ETranslation.LOG_ITEM_EVENTS_OFFER_REQUEST_UPDATE },\r\n { value: EEvents.OFFER_REQUEST_UPDATE_PIN, labelTranslation: ETranslation.LOG_ITEM_EVENTS_OFFER_REQUEST_UPDATE_PIN },\r\n { value: EEvents.OFFER_REQUEST_VIEW, labelTranslation: ETranslation.LOG_ITEM_EVENTS_OFFER_REQUEST_VIEW },\r\n { value: EEvents.OFFER_REQUEST_VIEW_PIN, labelTranslation: ETranslation.LOG_ITEM_EVENTS_OFFER_REQUEST_VIEW_PIN },\r\n { value: EEvents.ORGANIZATION_CONFIRM_BILLING, labelTranslation: ETranslation.LOG_ITEM_EVENTS_ORGANIZATION_CONFIRM_BILLING },\r\n { value: EEvents.USER_ACCEPT_TERMS_OF_USE, labelTranslation: ETranslation.LOG_ITEM_EVENTS_USER_ACCEPT_TERMS_OF_USE },\r\n];\r\n\r\nexport const wellnessLength: IOption[] = [\r\n { value: \"30\", label: \"30 min\" },\r\n { value: \"45\", label: \"45 min\" },\r\n { value: \"60\", label: \"60 min\" },\r\n { value: \"90\", label: \"90 min\" },\r\n];\r\n\r\nexport const languages: IOption[] = [\r\n { value: ELanguage.FI, labelTranslation: ETranslation.OFFERREQUEST_LANGUAGE_FI },\r\n { value: ELanguage.EN, labelTranslation: ETranslation.OFFERREQUEST_LANGUAGE_EN },\r\n { value: ELanguage.SE, labelTranslation: ETranslation.OFFERREQUEST_LANGUAGE_SE },\r\n];","import { faExclamationCircle } from '@fortawesome/free-solid-svg-icons';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport * as qs from 'query-string';\r\nimport React, { useContext, useEffect, useState } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { RouteComponentProps } from 'react-router-dom';\r\n\r\nimport Alert, { EAlertColor } from '../../../components/UI/Alert/Alert';\r\nimport Button from '../../../components/UI/Button/Button';\r\nimport Container from '../../../components/UI/Container/Container';\r\nimport Input, { EInputType, IInputField, IInputOptions } from '../../../components/UI/Input/Input';\r\nimport InputGroup from '../../../components/UI/InputGroup/InputGroup';\r\nimport ModalContext, { EModalSize } from '../../../components/UI/Modal/ModalContext';\r\nimport Spinner from '../../../components/UI/Spinner/Spinner';\r\nimport { EInputUpdateAction } from '../../../context/InputContext';\r\nimport { buildingTypes, languages } from '../../../data/select-data';\r\nimport { EBuildingType, EOfferRequestType } from '../../../enums';\r\nimport { IAppState, IOfferRequest, IOfferRequestState } from '../../../interfaces';\r\nimport { formatDateString, getInputData, initForm, updateInputHandler, validateInputs } from '../../../shared/utility';\r\nimport * as actions from '../../../store/actions';\r\nimport { ETranslation } from '../../../translations/translation-keys';\r\nimport classes from './CustomerOfferRequest.module.scss';\r\n\r\ninterface IProps extends RouteComponentProps {}\r\n\r\nexport enum ECustomerOfferRequest {\r\n created = \"created\",\r\n firstName = \"firstName\",\r\n lastName = \"lastName\",\r\n address = \"address\",\r\n phone = \"phone\",\r\n email = \"email\",\r\n service = \"service\",\r\n area = \"area\",\r\n buildingType = \"buildingType\",\r\n buildingTypeOther = \"buildingTypeOther\",\r\n constructionYear = \"constructionYear\",\r\n zip = \"zip\",\r\n city = \"city\",\r\n additionalInfo = \"additionalInfo\",\r\n province = \"province\",\r\n language = \"language\"\r\n}\r\n\r\nconst CustomerOfferRequest: React.FC = ({ location, history }) => {\r\n const { setModal, closeModal } = useContext(ModalContext);\r\n const dispatch = useDispatch();\r\n const [pin, setPin] = useState(\"\");\r\n const [email, setEmail] = useState(\"\");\r\n\r\n const [isValid, setIsValid] = useState(false);\r\n\r\n useEffect(() => {\r\n const q = qs.parse(location.search);\r\n setPin(q.pin as string);\r\n setEmail(q.email as string);\r\n }, [location])\r\n\r\n const { loading, error, offerRequest } = useSelector(state => state.offerRequest);\r\n\r\n const { t } = useTranslation();\r\n\r\n const [inputs, setInputs] = useState({\r\n [ECustomerOfferRequest.created]: {\r\n type: EInputType.static,\r\n labelTranslation: ETranslation.COMMON_CREATED,\r\n value: \"\",\r\n },\r\n [ECustomerOfferRequest.firstName]: {\r\n type: EInputType.text,\r\n labelTranslation: ETranslation.OFFERREQUEST_FIRSTNAME,\r\n placeholderTranslation: ETranslation.OFFERREQUEST_FIRSTNAME,\r\n value: \"\",\r\n },\r\n [ECustomerOfferRequest.lastName]: {\r\n type: EInputType.text,\r\n labelTranslation: ETranslation.OFFERREQUEST_LASTNAME,\r\n placeholderTranslation: ETranslation.OFFERREQUEST_LASTNAME,\r\n value: \"\",\r\n },\r\n [ECustomerOfferRequest.address]: {\r\n type: EInputType.text,\r\n labelTranslation: ETranslation.COMMON_STREET_ADDRESS,\r\n placeholderTranslation: ETranslation.COMMON_STREET_ADDRESS,\r\n value: \"\",\r\n },\r\n [ECustomerOfferRequest.phone]: {\r\n type: EInputType.text,\r\n labelTranslation: ETranslation.COMMON_PHONE,\r\n placeholderTranslation: ETranslation.COMMON_PHONE,\r\n value: \"\",\r\n validation: {\r\n required: true\r\n }\r\n },\r\n [ECustomerOfferRequest.email]: {\r\n type: EInputType.text,\r\n labelTranslation: ETranslation.COMMON_EMAIL,\r\n placeholderTranslation: ETranslation.COMMON_EMAIL,\r\n value: \"\",\r\n disabled: true,\r\n },\r\n [ECustomerOfferRequest.service]: {\r\n type: EInputType.static,\r\n labelTranslation: ETranslation.COMMON_SERVICE,\r\n placeholderTranslation: ETranslation.COMMON_SERVICE,\r\n value: \"\",\r\n },\r\n [ECustomerOfferRequest.area]: {\r\n type: EInputType.text,\r\n labelTranslation: ETranslation.OFFER_REQUEST_CONSTRUCTION_AREA,\r\n placeholderTranslation: ETranslation.OFFER_REQUEST_CONSTRUCTION_AREA,\r\n value: \"\",\r\n },\r\n [ECustomerOfferRequest.buildingType]: {\r\n type: EInputType.select,\r\n labelTranslation: ETranslation.OFFER_REQUEST_CONSTRUCTION_BUILDING_TYPE,\r\n placeholderTranslation: ETranslation.OFFER_REQUEST_CONSTRUCTION_BUILDING_TYPE,\r\n options: buildingTypes,\r\n value: EBuildingType.TOWN_HOUSE,\r\n },\r\n [ECustomerOfferRequest.buildingTypeOther]: {\r\n type: EInputType.text,\r\n labelTranslation:\r\n ETranslation.OFFER_REQUEST_CONSTRUCTION_BUILDING_TYPE_OTHER,\r\n placeholderTranslation:\r\n ETranslation.OFFER_REQUEST_CONSTRUCTION_BUILDING_TYPE_OTHER,\r\n value: \"\",\r\n },\r\n [ECustomerOfferRequest.constructionYear]: {\r\n type: EInputType.text,\r\n labelTranslation:\r\n ETranslation.OFFER_REQUEST_CONSTRUCTION_CONSTRUCTION_YEAR,\r\n placeholderTranslation:\r\n ETranslation.OFFER_REQUEST_CONSTRUCTION_CONSTRUCTION_YEAR,\r\n value: \"\",\r\n },\r\n [ECustomerOfferRequest.zip]: {\r\n type: EInputType.text,\r\n labelTranslation: ETranslation.COMMON_ZIP,\r\n placeholderTranslation: ETranslation.COMMON_ZIP,\r\n value: \"\",\r\n },\r\n [ECustomerOfferRequest.city]: {\r\n type: EInputType.text,\r\n labelTranslation: ETranslation.COMMON_CITY,\r\n placeholderTranslation: ETranslation.COMMON_CITY,\r\n value: \"\",\r\n },\r\n [ECustomerOfferRequest.additionalInfo]: {\r\n type: EInputType.textarea,\r\n labelTranslation: ETranslation.OFFERREQUEST_INFO,\r\n placeholderTranslation: ETranslation.OFFERREQUEST_INFO,\r\n value: \"\",\r\n },\r\n [ECustomerOfferRequest.province]: {\r\n type: EInputType.text,\r\n labelTranslation: ETranslation.OFFER_REQUEST_PROVINCE,\r\n placeholderTranslation: ETranslation.OFFER_REQUEST_PROVINCE,\r\n value: \"\",\r\n },\r\n [ECustomerOfferRequest.language]: {\r\n type: EInputType.select,\r\n labelTranslation: ETranslation.OFFER_REQUEST_LANGUAGE,\r\n placeholderTranslation: ETranslation.OFFER_REQUEST_LANGUAGE,\r\n value: \"\",\r\n options: []\r\n },\r\n });\r\n\r\n useEffect(() => {\r\n if (pin && email) {\r\n dispatch(actions.getCustomerOfferRequest(email, pin));\r\n } \r\n }, [dispatch, pin, email]);\r\n\r\n useEffect(() => {\r\n if (offerRequest) {\r\n const formattedOfferRequest = { ...offerRequest };\r\n formattedOfferRequest.created = formatDateString(formattedOfferRequest.created);\r\n initForm(setInputs, formattedOfferRequest);\r\n }\r\n }, [offerRequest]);\r\n\r\n useEffect(() => {\r\n setIsValid(validateInputs(inputs));\r\n }, [inputs]);\r\n\r\n const createInput = (\r\n inputName: ECustomerOfferRequest,\r\n options?: IInputOptions\r\n ) => {\r\n const item = inputs[inputName];\r\n return (\r\n updateInputHandler(inputName, value, setInputs)}\r\n inputName={inputName}\r\n />\r\n );\r\n };\r\n\r\n const submitHandler = async (\r\n event: React.MouseEvent\r\n ) => {\r\n event.preventDefault();\r\n\r\n const offerRequest = getInputData(inputs);\r\n\r\n dispatch(\r\n actions.updateCustomerOfferRequest(\r\n email,\r\n pin,\r\n offerRequest\r\n )\r\n );\r\n\r\n setModal({\r\n isOpen: true,\r\n title: t(ETranslation.FEEDBACK_THANK_YOU_TITLE),\r\n size: EModalSize.SMALL,\r\n content: (\r\n
\r\n

{t(ETranslation.CUSTOMER_OFFER_REQUEST_THANK_YOU_MESSAGE)}

\r\n \r\n
\r\n ),\r\n });\r\n };\r\n\r\n const archiveHandler = async (\r\n event: React.MouseEvent\r\n ) => {\r\n event.preventDefault();\r\n dispatch(\r\n actions.archiveCustomerOfferRequest(email, pin)\r\n );\r\n };\r\n\r\n return (\r\n <>\r\n {offerRequest?.archived && (\r\n \r\n {t(ETranslation.CUSTOMER_OFFER_REQUEST_ARCHIVED_CONFIRM)}\r\n \r\n )}\r\n {error ?\r\n
\r\n \r\n

{t(ETranslation.CUSTOMER_OFFER_REQUEST_ERROR_BOTTOM)}

\r\n

{t(ETranslation.CUSTOMER_OFFER_REQUEST_ERROR_BOTTOM)}

\r\n info@hankix.fi\r\n
\r\n :\r\n \r\n

{t(ETranslation.CUSTOMER_OFFER_REQUEST)}

\r\n {loading ? (\r\n \r\n ) : offerRequest?.deleted ? (\r\n

{t(ETranslation.OFFER_REQUEST_DELETED)}

\r\n ) : (\r\n <>\r\n \r\n {createInput(ECustomerOfferRequest.created)}\r\n {createInput(ECustomerOfferRequest.service)}\r\n \r\n \r\n {createInput(ECustomerOfferRequest.firstName)}\r\n {createInput(ECustomerOfferRequest.lastName)}\r\n \r\n {offerRequest?.service?.type !== EOfferRequestType.WELLNESS ? (\r\n \r\n {createInput(ECustomerOfferRequest.address)}\r\n {createInput(ECustomerOfferRequest.zip)}\r\n {createInput(ECustomerOfferRequest.city)}\r\n \r\n ) : (\r\n \r\n {createInput(ECustomerOfferRequest.city)}\r\n {createInput(ECustomerOfferRequest.province)}\r\n \r\n )}\r\n \r\n {createInput(ECustomerOfferRequest.phone)}\r\n {createInput(ECustomerOfferRequest.email)}\r\n {createInput(ECustomerOfferRequest.language, {\r\n options: languages\r\n })}\r\n \r\n {offerRequest?.service?.type === EOfferRequestType.CONSTRUCTION ? (\r\n <>\r\n \r\n {createInput(ECustomerOfferRequest.area)}\r\n {createInput(ECustomerOfferRequest.constructionYear)}\r\n \r\n \r\n {createInput(ECustomerOfferRequest.buildingType)}\r\n {inputs[ECustomerOfferRequest.buildingType].value ===\r\n EBuildingType.OTHER\r\n ? createInput(ECustomerOfferRequest.buildingTypeOther)\r\n : null}\r\n \r\n \r\n ) : null}\r\n {createInput(ECustomerOfferRequest.additionalInfo)}\r\n \r\n )}\r\n {!offerRequest?.deleted && (\r\n <>\r\n
\r\n

{t(ETranslation.CUSTOMER_OFFER_REQUEST_HELP_TEXT_1)}

\r\n

{t(ETranslation.CUSTOMER_OFFER_REQUEST_HELP_TEXT_2)}

\r\n
\r\n \r\n \r\n {t(ETranslation.CUSTOMER_OFFER_REQUEST_SAVE_CHANGES)}\r\n \r\n \r\n \r\n \r\n )}\r\n
\r\n }\r\n \r\n );\r\n};\r\n\r\nexport default CustomerOfferRequest;\r\n","import { useSelector } from 'react-redux';\r\n\r\nimport { IAppState, IAuthState } from './../interfaces/state';\r\n\r\nexport const useAuthUser = () => {\r\n const { authUser } = useSelector(state => state.auth);\r\n return authUser;\r\n}","import { useDispatch } from 'react-redux';\r\nimport { useEffect, useState } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useSelector } from 'react-redux';\r\n\r\nimport { IOption } from '../components/UI/Input/Input';\r\nimport { IAppState, IAuthState, IServiceState } from '../interfaces/state';\r\nimport { createOptions } from '../shared/option-utils';\r\nimport { ETranslation } from '../translations/translation-keys';\r\n\r\nimport * as actions from '../store/actions';\r\n\r\ninterface IParams {\r\n withPlaceholder?: boolean;\r\n operatorId?: string;\r\n filterByOperatorId?: boolean;\r\n}\r\n\r\nconst defaultParams: IParams = {\r\n withPlaceholder: false,\r\n operatorId: '',\r\n filterByOperatorId: false,\r\n}\r\n\r\nexport const useServiceOptions = ({ withPlaceholder, operatorId, filterByOperatorId } = defaultParams) => {\r\n const { t } = useTranslation();\r\n const dispatch = useDispatch();\r\n const [serviceOptions, setServiceOptions] = useState([])\r\n const [tryFetch, setTryFetch] = useState(false);\r\n \r\n const { authUser } = useSelector(state => state.auth);\r\n const { services, loading } = useSelector(state => state.services);\r\n\r\n useEffect(() => {\r\n if(authUser) {\r\n setTryFetch(authUser.isPrimary || authUser.isOperator || authUser.isBasic);\r\n }\r\n }, [authUser]);\r\n\r\n useEffect(() => {\r\n if(tryFetch && !services && !loading) {\r\n dispatch(actions.listServices());\r\n setTryFetch(false);\r\n }\r\n }, [dispatch, services, tryFetch, loading]);\r\n\r\n useEffect(() => {\r\n let placeholder;\r\n if(withPlaceholder) {\r\n placeholder = t(ETranslation.SELECT_SERVICE_PLACEHOLDER);\r\n }\r\n if(services) {\r\n let optionServices = [...services];\r\n if (filterByOperatorId) {\r\n optionServices = optionServices.filter(s => s.operator?.id === operatorId);\r\n }\r\n optionServices = optionServices.filter(s => !s.archived);\r\n setServiceOptions(createOptions(optionServices, (s) => s.name || s.id, placeholder));\r\n\r\n } else {\r\n setServiceOptions([]);\r\n }\r\n }, [services, withPlaceholder, operatorId, t, filterByOperatorId]);\r\n\r\n return { serviceOptions, servicesLoading: loading };\r\n}","import React, { useContext, useEffect, useState } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { RouteComponentProps } from 'react-router-dom';\r\n\r\nimport { Routes } from '../../../classes/Routes';\r\nimport Alert from '../../../components/UI/Alert/Alert';\r\nimport Button from '../../../components/UI/Button/Button';\r\nimport ConfirmDialog from '../../../components/UI/ConfirmDialog/ConfirmDialog';\r\nimport Container from '../../../components/UI/Container/Container';\r\nimport Input, { EInputType, IInputField, IInputOptions } from '../../../components/UI/Input/Input';\r\nimport InputGroup from '../../../components/UI/InputGroup/InputGroup';\r\nimport ModalContext, { defaultModal, EModalSize } from '../../../components/UI/Modal/ModalContext';\r\nimport Spinner from '../../../components/UI/Spinner/Spinner';\r\nimport { EInputUpdateAction } from '../../../context/InputContext';\r\nimport { buildingTypes, languages } from '../../../data/select-data';\r\nimport { EBuildingType, EOfferRequestType } from '../../../enums';\r\nimport { useAuthUser } from '../../../hooks/useAuthUser';\r\nimport { useOrganizationOptions } from '../../../hooks/useOrganizationOptions';\r\nimport { useServiceOptions } from '../../../hooks/useServiceOptions';\r\nimport { IAppState, IOfferRequest, IOfferRequestState, IService, IServiceState } from '../../../interfaces';\r\nimport { formatDateString, getInputData, initForm, updateInputHandler, validateInputs } from '../../../shared/utility';\r\nimport * as actions from '../../../store/actions';\r\nimport { ETranslation } from '../../../translations/translation-keys';\r\n\r\ninterface IMatch {\r\n id: string;\r\n}\r\n\r\ninterface IProps extends RouteComponentProps {}\r\n\r\nexport enum EOfferRequest {\r\n operator = \"operator\",\r\n firstName = \"firstName\",\r\n lastName = \"lastName\",\r\n address = \"address\",\r\n phone = \"phone\",\r\n email = \"email\",\r\n service = \"service\",\r\n archived = \"archived\",\r\n area = \"area\",\r\n buildingType = \"buildingType\",\r\n buildingTypeOther = \"buildingTypeOther\",\r\n constructionYear = \"constructionYear\",\r\n zip = \"zip\",\r\n city = \"city\",\r\n additionalInfo = \"additionalInfo\",\r\n province = \"province\",\r\n language = \"language\",\r\n length = \"length\",\r\n regular = \"regular\"\r\n}\r\n\r\nconst OfferRequest: React.FC = ({ match, history }) => {\r\n const dispatch = useDispatch();\r\n const { setModal } = useContext(ModalContext);\r\n const { organizationOptions, organizationsLoading } = useOrganizationOptions({\r\n withBusinessId: true,\r\n withPlaceholder: true,\r\n });\r\n const [service, setService] = useState(null);\r\n\r\n const authUser = useAuthUser();\r\n const { loading, error, offerRequest, saveOrUpdateOk } = useSelector(state => state.offerRequest);\r\n const { services } = useSelector(state => state.services);\r\n\r\n const { t } = useTranslation();\r\n const { id } = match.params;\r\n\r\n const [inputs, setInputs] = useState({\r\n [EOfferRequest.operator]: {\r\n type: EInputType.select,\r\n labelTranslation: ETranslation.COMMON_OPERATOR_NAME,\r\n placeholderTranslation: ETranslation.COMMON_OPERATOR_NAME,\r\n value: \"\",\r\n options: [],\r\n validation: {\r\n required: authUser?.isPrimary,\r\n },\r\n },\r\n [EOfferRequest.firstName]: {\r\n type: EInputType.text,\r\n labelTranslation: ETranslation.OFFERREQUEST_FIRSTNAME,\r\n placeholderTranslation: ETranslation.OFFERREQUEST_FIRSTNAME,\r\n value: \"\",\r\n },\r\n [EOfferRequest.lastName]: {\r\n type: EInputType.text,\r\n labelTranslation: ETranslation.OFFERREQUEST_LASTNAME,\r\n placeholderTranslation: ETranslation.OFFERREQUEST_LASTNAME,\r\n value: \"\",\r\n },\r\n [EOfferRequest.address]: {\r\n type: EInputType.text,\r\n labelTranslation: ETranslation.COMMON_STREET_ADDRESS,\r\n placeholderTranslation: ETranslation.COMMON_STREET_ADDRESS,\r\n value: \"\",\r\n },\r\n [EOfferRequest.zip]: {\r\n type: EInputType.text,\r\n labelTranslation: ETranslation.COMMON_ZIP,\r\n placeholderTranslation: ETranslation.COMMON_ZIP,\r\n value: \"\",\r\n },\r\n [EOfferRequest.city]: {\r\n type: EInputType.text,\r\n labelTranslation: ETranslation.COMMON_CITY,\r\n placeholderTranslation: ETranslation.COMMON_CITY,\r\n value: \"\",\r\n },\r\n [EOfferRequest.phone]: {\r\n type: EInputType.text,\r\n labelTranslation: ETranslation.COMMON_PHONE,\r\n placeholderTranslation: ETranslation.COMMON_PHONE,\r\n value: \"\",\r\n validation: {\r\n required: true,\r\n },\r\n },\r\n [EOfferRequest.email]: {\r\n type: EInputType.email,\r\n labelTranslation: ETranslation.COMMON_EMAIL,\r\n placeholderTranslation: ETranslation.COMMON_EMAIL,\r\n value: \"\",\r\n validation: {\r\n required: true,\r\n },\r\n },\r\n [EOfferRequest.service]: {\r\n type: EInputType.select,\r\n labelTranslation: ETranslation.COMMON_SERVICE,\r\n placeholderTranslation: ETranslation.COMMON_SERVICE,\r\n value: \"\",\r\n options: [],\r\n validation: {\r\n required: true,\r\n },\r\n },\r\n [EOfferRequest.archived]: {\r\n type: EInputType.checkbox,\r\n labelTranslation: ETranslation.COMMON_ARCHIVED,\r\n placeholderTranslation: ETranslation.COMMON_ARCHIVED,\r\n value: \"\",\r\n },\r\n [EOfferRequest.area]: {\r\n type: EInputType.text,\r\n labelTranslation: ETranslation.OFFER_REQUEST_CONSTRUCTION_AREA,\r\n placeholderTranslation: ETranslation.OFFER_REQUEST_CONSTRUCTION_AREA,\r\n value: \"\",\r\n },\r\n [EOfferRequest.buildingType]: {\r\n type: EInputType.select,\r\n labelTranslation: ETranslation.OFFER_REQUEST_CONSTRUCTION_BUILDING_TYPE,\r\n placeholderTranslation: ETranslation.OFFER_REQUEST_CONSTRUCTION_BUILDING_TYPE,\r\n options: buildingTypes,\r\n value: EBuildingType.TOWN_HOUSE,\r\n },\r\n [EOfferRequest.buildingTypeOther]: {\r\n type: EInputType.text,\r\n labelTranslation: ETranslation.OFFER_REQUEST_CONSTRUCTION_BUILDING_TYPE_OTHER,\r\n placeholderTranslation: ETranslation.OFFER_REQUEST_CONSTRUCTION_BUILDING_TYPE_OTHER,\r\n value: \"\",\r\n },\r\n [EOfferRequest.constructionYear]: {\r\n type: EInputType.text,\r\n labelTranslation: ETranslation.OFFER_REQUEST_CONSTRUCTION_CONSTRUCTION_YEAR,\r\n placeholderTranslation: ETranslation.OFFER_REQUEST_CONSTRUCTION_CONSTRUCTION_YEAR,\r\n value: \"\",\r\n },\r\n [EOfferRequest.additionalInfo]: {\r\n type: EInputType.textarea,\r\n labelTranslation: ETranslation.OFFERREQUEST_INFO,\r\n placeholderTranslation: ETranslation.OFFERREQUEST_INFO,\r\n value: \"\",\r\n },\r\n [EOfferRequest.province]: {\r\n type: EInputType.text,\r\n labelTranslation: ETranslation.OFFER_REQUEST_PROVINCE,\r\n placeholderTranslation: ETranslation.OFFER_REQUEST_PROVINCE,\r\n value: \"\",\r\n },\r\n [EOfferRequest.language]: {\r\n type: EInputType.select,\r\n labelTranslation: ETranslation.OFFER_REQUEST_LANGUAGE,\r\n placeholderTranslation: ETranslation.OFFER_REQUEST_LANGUAGE,\r\n value: \"\",\r\n options: []\r\n },\r\n [EOfferRequest.length]: {\r\n type: EInputType.select,\r\n labelTranslation: ETranslation.OFFER_REQUEST_WELLNESS_LENGTH,\r\n placeholderTranslation: ETranslation.OFFER_REQUEST_WELLNESS_LENGTH,\r\n value: \"\",\r\n options: []\r\n },\r\n [EOfferRequest.regular]: {\r\n type: EInputType.checkbox,\r\n labelTranslation: ETranslation.OFFER_REQUEST_WELLNESS_REGULAR,\r\n placeholderTranslation: ETranslation.OFFER_REQUEST_WELLNESS_REGULAR,\r\n value: \"\",\r\n },\r\n });\r\n\r\n const [isValid, setIsValid] = useState(false);\r\n\r\n let operatorId;\r\n if (authUser?.isOperator) {\r\n operatorId = authUser.organization.id;\r\n } else {\r\n operatorId = inputs[EOfferRequest.operator].value as string;\r\n }\r\n\r\n const { serviceOptions, servicesLoading } = useServiceOptions({\r\n withPlaceholder: true,\r\n filterByOperatorId: true,\r\n operatorId\r\n });\r\n\r\n useEffect(() => {\r\n if (saveOrUpdateOk) {\r\n history.push(Routes.OFFER_REQUESTS);\r\n }\r\n return () => {\r\n dispatch(actions.clearOfferRequest());\r\n };\r\n }, [dispatch, history, saveOrUpdateOk]);\r\n\r\n useEffect(() => {\r\n if (Routes.isNotNew(id)) {\r\n dispatch(actions.getOfferRequest(id));\r\n }\r\n }, [id, dispatch]);\r\n\r\n useEffect(() => {\r\n if (offerRequest) {\r\n initForm(setInputs, offerRequest);\r\n }\r\n }, [offerRequest]);\r\n\r\n const serviceId = inputs[EOfferRequest.service].value as string;\r\n\r\n useEffect(() => {\r\n if (serviceId && services) {\r\n setService(services.find((service) => service.id === serviceId) || null);\r\n } else {\r\n setService(null);\r\n }\r\n }, [serviceId, services]);\r\n\r\n useEffect(() => {\r\n setIsValid(validateInputs(inputs));\r\n }, [inputs]);\r\n\r\n const createInput = (inputName: EOfferRequest, options?: IInputOptions) => {\r\n const item = inputs[inputName];\r\n return (\r\n updateInputHandler(inputName, value, setInputs)}\r\n inputName={inputName}\r\n showValidation={!isValid}\r\n />\r\n );\r\n };\r\n\r\n const submitHandler = async (\r\n event: React.MouseEvent\r\n ) => {\r\n event.preventDefault();\r\n\r\n const offerRequest = getInputData(inputs);\r\n\r\n if (Routes.isNew(id)) {\r\n dispatch(actions.saveOfferRequest(offerRequest));\r\n } else {\r\n offerRequest.id = id;\r\n dispatch(actions.updateOfferRequest(offerRequest));\r\n }\r\n };\r\n\r\n const deleteOfferRequest = () =>\r\n setModal({\r\n isOpen: true,\r\n title: t(ETranslation.COMMON_REMOVE),\r\n size: EModalSize.SMALL,\r\n content: (\r\n {t(ETranslation.CONFIRM_DELETE_OFFER_REQUEST)}

}\r\n onConfirm={() => {\r\n dispatch(actions.deleteOfferRequest(id));\r\n history.goBack();\r\n setModal(defaultModal);\r\n }}\r\n onCancel={() => setModal(defaultModal)}\r\n />\r\n ),\r\n });\r\n\r\n const writeContactToClipboardHandler = () => {\r\n const info = [\r\n offerRequest?.firstName,\r\n offerRequest?.lastName,'\\n',\r\n offerRequest?.address,'\\n',\r\n offerRequest?.zip,\r\n offerRequest?.city,'\\n',\r\n offerRequest?.phone,'\\n',\r\n offerRequest?.email,\r\n ...offerRequest?.additionalInfo ? ['\\n','\\n',t(ETranslation.OFFERREQUEST_INFO),'\\n'] : [],\r\n ...offerRequest?.additionalInfo ? [offerRequest?.additionalInfo] : []\r\n ]\r\n const notNullInfo = info.filter(function (e) {return e != null;});\r\n console.log(notNullInfo.join(' ') + \" Copied to clipboard\");\r\n return(notNullInfo.join(' '))\r\n };\r\n\r\n return (\r\n <>\r\n {error && }\r\n \r\n

\r\n {Routes.isNew(id)\r\n ? t(ETranslation.TITLE_OFFERREQUEST_NEW)\r\n : t(ETranslation.TITLE_OFFERREQUEST)}\r\n

\r\n

{offerRequest?.created && formatDateString(offerRequest.created)}

\r\n {loading ? (\r\n \r\n ) : offerRequest?.deleted ? (\r\n

{t(ETranslation.OFFER_REQUEST_DELETED)}

\r\n ) : offerRequest?.archived && authUser?.isServiceProvider ? (\r\n

{t(ETranslation.OFFER_REQUEST_ARCHIVED)}

\r\n ) : (\r\n <>\r\n {authUser?.isPrimary &&\r\n createInput(EOfferRequest.operator, {\r\n options: organizationOptions,\r\n loading: organizationsLoading,\r\n })}\r\n \r\n {createInput(EOfferRequest.firstName)}\r\n {createInput(EOfferRequest.lastName)}\r\n \r\n {service?.type !== EOfferRequestType.WELLNESS ? (\r\n \r\n {createInput(EOfferRequest.address)}\r\n {createInput(EOfferRequest.zip)}\r\n {createInput(EOfferRequest.city)}\r\n \r\n ) : (\r\n \r\n {createInput(EOfferRequest.city)}\r\n {createInput(EOfferRequest.province)}\r\n \r\n )}\r\n \r\n {createInput(EOfferRequest.phone)}\r\n {createInput(EOfferRequest.email)}\r\n \r\n \r\n {createInput(EOfferRequest.service, {\r\n options: serviceOptions,\r\n loading: servicesLoading,\r\n })}\r\n {createInput(EOfferRequest.language, {\r\n options: languages\r\n })}\r\n \r\n {service?.type === EOfferRequestType.CONSTRUCTION ? (\r\n <>\r\n \r\n {createInput(EOfferRequest.area)}\r\n {createInput(EOfferRequest.constructionYear)}\r\n \r\n \r\n {createInput(EOfferRequest.buildingType)}\r\n {inputs[EOfferRequest.buildingType].value ===\r\n EBuildingType.OTHER\r\n ? createInput(EOfferRequest.buildingTypeOther)\r\n : null}\r\n \r\n \r\n ) : null}\r\n {/*service?.type === EOfferRequestType.WELLNESS ? (\r\n <>\r\n {createInput(EOfferRequest.length, {\r\n options: wellnessLength\r\n })}\r\n {createInput(EOfferRequest.regular)}\r\n \r\n ) : null*/}\r\n {createInput(EOfferRequest.additionalInfo)}\r\n {createInput(EOfferRequest.archived)}\r\n \r\n )}\r\n \r\n {!authUser?.isBasic && !offerRequest?.deleted && (\r\n \r\n )}\r\n \r\n {(authUser?.isPrimary || authUser?.isOperator) &&\r\n Routes.isNotNew(id) &&\r\n !offerRequest?.deleted && (\r\n \r\n )}\r\n \r\n \r\n\r\n {(authUser?.isPrimary || authUser?.isOperator) &&\r\n offerRequest?.activeCampaignId && (\r\n
\r\n \r\n window.open(\r\n \"https://positiveproductions.activehosted.com/app/contacts/\" +\r\n offerRequest?.activeCampaignId,\r\n \"_blank\"\r\n )\r\n }\r\n >\r\n ActiveCampaign contact: {offerRequest?.activeCampaignId}\r\n \r\n
\r\n )}\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default OfferRequest;\r\n","import React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { ETranslation } from '../../../translations/translation-keys';\r\n\r\nimport classes from './SingleCheckbox.module.scss'\r\n\r\n\r\ninterface IProps {\r\n labelTranslation?: ETranslation;\r\n label?: string;\r\n onChange: (value: boolean) => void;\r\n value: boolean;\r\n\r\n}\r\n\r\nconst SingleCheckbox: React.FC = ({ label, labelTranslation, onChange, value }) => {\r\n const { t } = useTranslation();\r\n return (\r\n \r\n )\r\n}\r\n\r\nexport default SingleCheckbox;","import React, { useContext, useEffect, useState } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { useHistory } from 'react-router';\r\n\r\nimport { Routes } from '../../classes/Routes';\r\nimport { IAppState, IOrganizationState } from '../../interfaces';\r\nimport * as actions from '../../store/actions';\r\nimport { ETranslation } from '../../translations/translation-keys';\r\nimport Alert from '../UI/Alert/Alert';\r\nimport Button, { EButtonSize } from '../UI/Button/Button';\r\nimport ModalBody from '../UI/Modal/ModalBody/ModalBody';\r\nimport ModalContext from '../UI/Modal/ModalContext';\r\nimport ModalFooter from '../UI/Modal/ModalFooter/ModalFooter';\r\nimport SingleCheckbox from '../UI/SingleCheckbox/SingleCheckbox';\r\nimport Spinner from '../UI/Spinner/Spinner';\r\nimport classes from './ConfirmBillingModal.module.scss';\r\n\r\ninterface IProps {\r\n onSuccess: () => void;\r\n}\r\n\r\nconst ConfirmBillingModal: React.FC = ({ onSuccess }) => {\r\n const [isBillingConfirmed, setIsBillingConfirmed] = useState(false);\r\n\r\n const { t } = useTranslation();\r\n const dispatch = useDispatch();\r\n const history = useHistory();\r\n\r\n const { closeModal } = useContext(ModalContext);\r\n\r\n const { confirmBillingSuccess, confirmBillingLoading, confirmBillingError, organization, loading } =\r\n useSelector((state) => state.organization);\r\n \r\n \r\n \r\n useEffect(() => {\r\n dispatch(actions.getMyOrganization());\r\n return () => {\r\n dispatch(actions.clearOrganization())\r\n }\r\n }, [dispatch]);\r\n\r\n useEffect(() => {\r\n if (confirmBillingSuccess) {\r\n dispatch(actions.setAuthUserBillingConfirmed());\r\n closeModal();\r\n onSuccess();\r\n }\r\n }, [confirmBillingSuccess, closeModal, onSuccess, dispatch]);\r\n\r\n\r\n const confirmHandler = () => {\r\n dispatch(actions.confirmBilling());\r\n };\r\n\r\n const changeHandler = () => {\r\n closeModal();\r\n history.push(Routes.ORGANIZATIONS_ME);\r\n }\r\n\r\n return (\r\n <>\r\n \r\n {(confirmBillingLoading || loading) ? (\r\n \r\n ) : (\r\n <>\r\n {confirmBillingError && {confirmBillingError}}\r\n

{t(ETranslation.SERVICEPROVIDER_INVOICE_MODAL_DESCRIPTION)}

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

{organization?.eInvoiceAddress ? organization?.eInvoiceAddress : \"-\"}

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

{organization?.eInvoiceOperatorAddress ? organization?.eInvoiceOperatorAddress : \"-\"}

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

{organization?.invoicingInfo ? organization?.invoicingInfo : \"-\"}

\r\n
\r\n \r\n
\r\n {organization?.invoicingInfo || organization?.eInvoiceAddress ?\r\n \r\n : \"\"}\r\n \r\n )}\r\n
\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default ConfirmBillingModal;\r\n","import React, { CSSProperties, ReactNode } from 'react';\r\n\r\nimport classes from './InfoBox.module.scss';\r\n\r\ninterface IProps {\r\n children: ReactNode;\r\n style?: CSSProperties;\r\n className?: string;\r\n}\r\n\r\nconst InfoBox: React.FC = ({ children, style, className }) => {\r\n const classNames = [classes.Container];\r\n\r\n if (className) {\r\n classNames.push(className)\r\n }\r\n\r\n return (\r\n
\r\n {children}\r\n
\r\n )\r\n}\r\n\r\nexport default InfoBox;","import { faEnvelope, faPhone } from '@fortawesome/free-solid-svg-icons';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useHistory } from 'react-router';\r\n\r\nimport { AuthUser } from '../../../classes/AuthUser';\r\nimport { Routes } from '../../../classes/Routes';\r\nimport { ETranslation } from '../../../translations/translation-keys';\r\nimport Button, { EButtonSize } from '../../UI/Button/Button';\r\nimport InfoBox from '../../UI/InfoBox/InfoBox';\r\nimport classes from './OfferRequestsInfo.module.scss';\r\n\r\ninterface IProps {\r\n authUser: AuthUser;\r\n}\r\n\r\nconst OfferRequestsInfo: React.FC = ({ authUser}) => {\r\n const history = useHistory();\r\n \r\n const { t } = useTranslation();\r\n\r\n return (\r\n \r\n )\r\n}\r\n\r\nexport default OfferRequestsInfo;\r\n","import React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport { useServiceOptions } from '../../../hooks/useServiceOptions';\r\nimport { ETranslation } from '../../../translations/translation-keys';\r\nimport Select from '../../UI/Select/Select';\r\n\r\n\r\ninterface IProps {\r\n setServiceId: React.Dispatch>;\r\n serviceId: string;\r\n}\r\n\r\nconst ServiceSearch: React.FC = ({ setServiceId, serviceId}) => {\r\n\r\n const { serviceOptions, servicesLoading } = useServiceOptions();\r\n const { t } = useTranslation();\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n )\r\n\r\n}\r\n\r\nexport default ServiceSearch;","import React, { useEffect, useState } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useSelector } from 'react-redux';\r\n\r\nimport { ESearchStorageKey } from '../../../enums';\r\nimport { IAppState, IAuthState } from '../../../interfaces';\r\nimport { IOfferRequestsSearchOptions } from '../../../store/actions/offerRequestActions';\r\nimport { ETranslation } from '../../../translations/translation-keys';\r\nimport OperatorSearch from '../../Searches/OperatorSearch/OperatorSearch';\r\nimport SearchContainer from '../../Searches/SearchContainer/SearchContainer';\r\nimport ServiceSearch from '../../Searches/ServiceSearch/ServiceSearch';\r\n\r\ninterface IProps {\r\n onSearch: (search: IOfferRequestsSearchOptions) => void;\r\n};\r\n\r\nconst OfferRequestsSearch: React.FC = ({ onSearch }) => {\r\n const [isInit, setInit] = useState(false);\r\n const [serviceId, setServiceId] = useState(\"\");\r\n const [operatorId, setOperatorId] = useState(\"\");\r\n const [limit, setLimit] = useState(true);\r\n\r\n const { authUser } = useSelector((state) => state.auth);\r\n const { t } = useTranslation();\r\n\r\n useEffect(() => {\r\n setOperatorId(localStorage.getItem(ESearchStorageKey.OFFER_REQUEST_OPERATOR_ID) || '');\r\n setServiceId(localStorage.getItem(ESearchStorageKey.OFFER_REQUEST_SERVICE_ID) || '');\r\n setInit(true);\r\n }, []);\r\n\r\n useEffect(() => {\r\n if(isInit) {\r\n onSearch({ operatorId, serviceId, limit });\r\n localStorage.setItem(ESearchStorageKey.OFFER_REQUEST_OPERATOR_ID, operatorId);\r\n localStorage.setItem(ESearchStorageKey.OFFER_REQUEST_SERVICE_ID, serviceId);\r\n }\r\n }, [operatorId, serviceId, limit, onSearch, isInit]);\r\n\r\n return (\r\n <>\r\n \r\n {authUser?.isPrimary && (\r\n \r\n )}\r\n \r\n \r\n
setLimit(false)}>{t(ETranslation.COMMON_LOAD_ALL)}
\r\n \r\n );\r\n};\r\n\r\nexport default OfferRequestsSearch;\r\n","import { faChevronDown, faChevronUp } from '@fortawesome/free-solid-svg-icons';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { ETranslation } from '../../../../translations/translation-keys';\r\nimport { EOfferRequestsTableSortBy } from '../OfferRequestsTable';\r\n\r\n\r\ninterface IProps {\r\n children: ETranslation;\r\n sortable?: boolean;\r\n sortBy?: EOfferRequestsTableSortBy;\r\n onSort?: (sortBy: EOfferRequestsTableSortBy) => void;\r\n sort?: EOfferRequestsTableSortBy;\r\n sortDirection?: boolean;\r\n\r\n}\r\n\r\nconst OfferRequestsTableHeader: React.FC = ({ children, sortBy, sortable, onSort, sortDirection, sort }) => {\r\n const { t } = useTranslation(); \r\n\r\n const sortHandler = (sortBy?: EOfferRequestsTableSortBy) => {\r\n if (!sortable || !sortBy || !onSort) return;\r\n onSort(sortBy);\r\n }\r\n\r\n return (\r\n sortHandler(sortBy)}>\r\n {t(children)}\r\n {sortable && sort === sortBy && }\r\n \r\n )\r\n}\r\n\r\nexport default OfferRequestsTableHeader;","import { faCheck, faCheckCircle } from '@fortawesome/free-solid-svg-icons';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport React, { CSSProperties, useEffect, useState } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport { AuthUser } from '../../../classes/AuthUser';\r\nimport { IOfferRequest, IOfferRequestConstruction } from '../../../interfaces';\r\nimport { formatDateString } from '../../../shared/utility';\r\nimport { ETranslation } from '../../../translations/translation-keys';\r\nimport Button, { EButtonSize } from '../../UI/Button/Button';\r\nimport Table from '../../UI/Table/Table';\r\nimport classes from './OfferRequestsTable.module.scss';\r\nimport OfferRequestsTableHeader from './OfferRequestsTableHeader/OfferRequestsTableHeader';\r\n\r\ninterface IProps {\r\n offerrequests: Array\r\n onClick: (event: React.MouseEvent, id: string) => void;\r\n sortable?: boolean;\r\n containerClassName?: string;\r\n containerStyle?: CSSProperties;\r\n authUser: AuthUser;\r\n}\r\n\r\nexport enum EOfferRequestsTableSortBy {\r\n created = \"created\",\r\n firstName = \"firstName\",\r\n lastName = \"lastName\",\r\n address = \"address\",\r\n email = \"email\",\r\n service = \"service\"\r\n}\r\n\r\nconst OfferRequestTable: React.FC = ({ offerrequests, onClick, sortable, containerClassName, containerStyle, authUser }) => {\r\n\r\n const [sortedOfferRequests, setSortedOfferRequests] = useState(offerrequests);\r\n const [sort, setSort] = useState(EOfferRequestsTableSortBy.created);\r\n // true = up, false = down\r\n const [sortDirection, setSortDirection] = useState(false);\r\n\r\n const { t } = useTranslation();\r\n\r\n const { isPrimary, isMicro } = authUser;\r\n\r\n useEffect(() => {\r\n if (!sortable) return;\r\n // console.log(\"sort options changed to:\", sort, sortDirection);\r\n\r\n const newOffers = [...sortedOfferRequests];\r\n\r\n if (sort && newOffers) {\r\n if (sortDirection) {\r\n newOffers.reverse();\r\n setSortedOfferRequests(newOffers);\r\n return;\r\n }\r\n\r\n newOffers.sort((a, b) => {\r\n if (a[sort] === \"\" || a[sort] === null || a[sort] === undefined) return 1;\r\n if (b[sort] === \"\" || b[sort] === null || b[sort] === undefined) return -1;\r\n if (a[sort] === b[sort]) return 0;\r\n if (sort === EOfferRequestsTableSortBy.created) return (a[sort] || \"\") < (b[sort] || \"\") ? 1 : -1;\r\n return (a[sort] || \"\") > (b[sort] || \"\") ? 1 : -1;\r\n });\r\n setSortedOfferRequests(newOffers);\r\n }\r\n\r\n // eslint-disable-next-line\r\n }, [sort, sortDirection, sortable]);\r\n\r\n const changeSortOrDirection = (sortBy: EOfferRequestsTableSortBy) => {\r\n if (sortBy === sort) {\r\n setSortDirection(!sortDirection);\r\n } else {\r\n setSort(sortBy);\r\n setSortDirection(false);\r\n }\r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n {isMicro && (\r\n \r\n )}\r\n {ETranslation.COMMON_CREATED}\r\n {ETranslation.COMMON_SERVICE}\r\n {ETranslation.OFFERREQUEST_FIRSTNAME}\r\n {ETranslation.OFFERREQUEST_LASTNAME}\r\n {ETranslation.OFFERREQUEST_ADDRESS}\r\n {ETranslation.COMMON_ZIP}\r\n {ETranslation.COMMON_CITY}\r\n {ETranslation.OFFERREQUEST_EMAIL}\r\n {isPrimary && {ETranslation.COMMON_OPERATOR_NAME}}\r\n {/*\r\n {ETranslation.OFFERREQUEST_TYPE}\r\n {ETranslation.OFFER_REQUEST_CONSTRUCTION_AREA}\r\n {ETranslation.OFFER_REQUEST_CONSTRUCTION_BUILDING_TYPE}\r\n */}\r\n {ETranslation.OFFER_REQUEST_CONSTRUCTION_CONSTRUCTION_YEAR}\r\n {isPrimary && {ETranslation.COMMON_ARCHIVED}}\r\n \r\n \r\n \r\n {sortedOfferRequests.map(offerRequest => {\r\n let constructionOfferRequest = offerRequest as IOfferRequestConstruction;\r\n return (\r\n onClick(e, offerRequest.id)}>\r\n {isMicro && (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {isPrimary && }\r\n {/*\r\n \r\n \r\n \r\n */}\r\n \r\n {isPrimary && }\r\n \r\n )\r\n })}\r\n \r\n
{authUser.hasOfferRequestAccess(offerRequest.id) ? (\r\n
\r\n \r\n
\r\n ) : (\r\n \r\n )}
{offerRequest.created && formatDateString(offerRequest.created)}{offerRequest.service?.name}{offerRequest.firstName}{offerRequest.lastName}{offerRequest.address}{offerRequest.zip}{offerRequest.city}{offerRequest.email}{offerRequest?.operator?.name}{getTypeString(t, offerrequest?.service?.type)}{constructionOfferRequest.area}{getBuildingTypeString(t, offerrequest)}{constructionOfferRequest.constructionYear}{offerRequest.archived ? : \"\"}
\r\n
\r\n );\r\n};\r\n\r\nexport default OfferRequestTable;\r\n","import { faPlus } from \"@fortawesome/free-solid-svg-icons\";\r\nimport React, { useCallback, useContext, useEffect } from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { RouteComponentProps } from \"react-router-dom\";\r\n\r\nimport { ERouteStaticParams, Routes } from \"../../classes/Routes\";\r\nimport ConfirmBillingModal from \"../../components/ConfirmBillingModal/ConfirmBillingModal\";\r\nimport OfferRequestsInfo from \"../../components/OfferRequests/OfferRequestsInfo/OfferRequestsInfo\";\r\nimport OfferRequestsSearch from \"../../components/OfferRequests/OfferRequestsSearch/OfferRequestsSearch\";\r\nimport OfferRequestTable from \"../../components/OfferRequests/OfferRequestsTable/OfferRequestsTable\";\r\nimport Alert from \"../../components/UI/Alert/Alert\";\r\nimport Button from \"../../components/UI/Button/Button\";\r\nimport ConfirmDialog from \"../../components/UI/ConfirmDialog/ConfirmDialog\";\r\nimport Container from \"../../components/UI/Container/Container\";\r\nimport ModalContext, {\r\n EModalSize,\r\n} from \"../../components/UI/Modal/ModalContext\";\r\nimport Spinner from \"../../components/UI/Spinner/Spinner\";\r\nimport { useAuthUser } from \"../../hooks/useAuthUser\";\r\nimport { IAppState, IOfferRequestState } from \"../../interfaces\";\r\nimport { linkHandler } from \"../../shared/utility\";\r\nimport * as actions from \"../../store/actions\";\r\nimport { ETranslation } from \"../../translations/translation-keys\";\r\nimport classes from \"./OfferRequests.module.scss\";\r\n\r\ninterface IProps extends RouteComponentProps {\r\n offerRequestId?: number;\r\n}\r\n\r\nconst OfferRequests: React.FC = ({ history }) => {\r\n const dispatch = useDispatch();\r\n const { setModal, closeModal } = useContext(ModalContext);\r\n const { t } = useTranslation();\r\n\r\n const authUser = useAuthUser();\r\n const {\r\n loading,\r\n error,\r\n offerRequests,\r\n addAccessError,\r\n addAccessLoading,\r\n addAccessSuccessId,\r\n } = useSelector((state) => state.offerRequest);\r\n\r\n const setAddAccessModal = useCallback(\r\n (content: React.ReactNode | null, loading: boolean = false) => {\r\n setModal({\r\n isOpen: true,\r\n title: t(ETranslation.CONFIRM_BUY_TITLE),\r\n size: EModalSize.SMALL,\r\n loading,\r\n content,\r\n });\r\n },\r\n [t, setModal]\r\n );\r\n\r\n const createAccessModal = (id: string) => {\r\n setAddAccessModal(\r\n

{t(ETranslation.CONFIRM_BUY_DESCRIPTION)}

{t(ETranslation.CONFIRM_BUY_QUESTION)}

}\r\n onConfirm={() => {\r\n dispatch(actions.addAccessOfferRequest(id));\r\n }}\r\n onCancel={closeModal}\r\n />\r\n );\r\n };\r\n\r\n const showOffer = (\r\n event: React.MouseEvent,\r\n id: string\r\n ) => {\r\n if (authUser?.isMicro) {\r\n if (authUser?.hasOfferRequestAccess(id)) {\r\n linkHandler(event, Routes.OFFER_REQUEST(id), history);\r\n } else if (authUser.organization.isBillingConfirmed) {\r\n createAccessModal(id);\r\n } else {\r\n setModal({\r\n isOpen: true,\r\n content: (\r\n {\r\n createAccessModal(id);\r\n }}\r\n />\r\n ),\r\n size: EModalSize.MEDIUM,\r\n title: t(ETranslation.SERVICEPROVIDER_INVOICE_CONFIRM),\r\n });\r\n }\r\n } else {\r\n linkHandler(event, Routes.OFFER_REQUEST(id), history);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n if (addAccessLoading) setAddAccessModal(null, true);\r\n }, [addAccessLoading, setAddAccessModal]);\r\n\r\n useEffect(() => {\r\n if (addAccessError)\r\n setAddAccessModal(\r\n \r\n {t(ETranslation.OFFER_REQUEST_ADD_ACCESS_ERROR)}\r\n \r\n );\r\n }, [addAccessError, setAddAccessModal, t]);\r\n\r\n useEffect(() => {\r\n if (addAccessSuccessId) {\r\n closeModal();\r\n dispatch(actions.addAuthUserOfferRequestAccess(addAccessSuccessId));\r\n history.push(Routes.OFFER_REQUEST(addAccessSuccessId));\r\n }\r\n\r\n return () => {\r\n dispatch(actions.addAccessOfferRequestClear());\r\n };\r\n }, [addAccessSuccessId, history, dispatch, closeModal]);\r\n\r\n const searchHandler = useCallback(\r\n (search) => {\r\n dispatch(actions.listOfferRequests(search));\r\n },\r\n [dispatch]\r\n );\r\n\r\n return (\r\n \r\n {error && {t(error)}}\r\n

{t(ETranslation.TITLE_OFFERREQUESTS)}

\r\n {(authUser?.isPrimary || authUser?.isOperator) && (\r\n \r\n history.push(Routes.OFFER_REQUEST(ERouteStaticParams.new))\r\n }\r\n icon={faPlus}\r\n style={{ marginBottom: \"1rem\" }}\r\n >\r\n {t(ETranslation.OFFERREQUESTS_ADD_NEW)}\r\n \r\n )}\r\n
\r\n
\r\n \r\n {loading ? (\r\n \r\n ) : offerRequests ? (\r\n \r\n ) : (\r\n

\r\n
\r\n {t(ETranslation.NO_OFFERREQUESTS)}\r\n

\r\n )}\r\n
\r\n {authUser?.isServiceProvider && (\r\n \r\n )}\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default OfferRequests;\r\n","import { IOption } from \"./../components/UI/Input/Input\";\r\n\r\n// TODO: labelit käännöstiedostoon\r\nexport const countries: IOption[] = [\r\n { label: \"Suomi\", value: \"FI\" },\r\n { label: \"Afganistan\", value: \"AF\" },\r\n { label: \"Ahvenanmaa\", value: \"AX\" },\r\n { label: \"Alankomaat\", value: \"NL\" },\r\n { label: \"Alankomaiden Karibia\", value: \"BQ\" },\r\n { label: \"Albania\", value: \"AL\" },\r\n { label: \"Algeria\", value: \"DZ\" },\r\n { label: \"Amerikan Samoa\", value: \"AS\" },\r\n { label: \"Andorra\", value: \"AD\" },\r\n { label: \"Angola\", value: \"AO\" },\r\n { label: \"Anguilla\", value: \"AI\" },\r\n { label: \"Antarktis\", value: \"AQ\" },\r\n { label: \"Antigua ja Barbuda\", value: \"AG\" },\r\n { label: \"Arabiemiirikunnat\", value: \"AE\" },\r\n { label: \"Argentiina\", value: \"AR\" },\r\n { label: \"Armenia\", value: \"AM\" },\r\n { label: \"Aruba\", value: \"AW\" },\r\n { label: \"Australia\", value: \"AU\" },\r\n { label: \"Azerbaidžan\", value: \"AZ\" },\r\n { label: \"Bahama\", value: \"BS\" },\r\n { label: \"Bahrain\", value: \"BH\" },\r\n { label: \"Bangladesh\", value: \"BD\" },\r\n { label: \"Barbados\", value: \"BB\" },\r\n { label: \"Belgia\", value: \"BE\" },\r\n { label: \"Belize\", value: \"BZ\" },\r\n { label: \"Benin\", value: \"BJ\" },\r\n { label: \"Bermuda\", value: \"BM\" },\r\n { label: \"Bhutan\", value: \"BT\" },\r\n { label: \"Bolivia\", value: \"BO\" },\r\n { label: \"Bosnia ja Hertsegovina\", value: \"BA\" },\r\n { label: \"Botswana\", value: \"BW\" },\r\n { label: \"Bouvet’nsaari\", value: \"BV\" },\r\n { label: \"Brasilia\", value: \"BR\" },\r\n { label: \"Brittiläinen Intian valtameren alue\", value: \"IO\" },\r\n { label: \"Brittiläiset Neitsytsaaret\", value: \"VG\" },\r\n { label: \"Brunei\", value: \"BN\" },\r\n { label: \"Bulgaria\", value: \"BG\" },\r\n { label: \"Burkina Faso\", value: \"BF\" },\r\n { label: \"Burundi\", value: \"BI\" },\r\n { label: \"Caymansaaret\", value: \"KY\" },\r\n { label: \"Chile\", value: \"CL\" },\r\n { label: \"Cookinsaaret\", value: \"CK\" },\r\n { label: \"Costa Rica\", value: \"CR\" },\r\n { label: \"Curaçao\", value: \"CW\" },\r\n { label: \"Djibouti\", value: \"DJ\" },\r\n { label: \"Dominica\", value: \"DM\" },\r\n { label: \"Dominikaaninen tasavalta\", value: \"DO\" },\r\n { label: \"Ecuador\", value: \"EC\" },\r\n { label: \"Egypti\", value: \"EG\" },\r\n { label: \"El Salvador\", value: \"SV\" },\r\n { label: \"Eritrea\", value: \"ER\" },\r\n { label: \"Espanja\", value: \"ES\" },\r\n { label: \"Etiopia\", value: \"ET\" },\r\n { label: \"Etelä-Afrikka\", value: \"ZA\" },\r\n { label: \"Etelä-Georgia ja Eteläiset Sandwichsaaret\", value: \"GS\" },\r\n { label: \"Etelä-Sudan\", value: \"SS\" },\r\n { label: \"Falklandinsaaret\", value: \"FK\" },\r\n { label: \"Färsaaret\", value: \"FO\" },\r\n { label: \"Fidži\", value: \"FJ\" },\r\n { label: \"Filippiinit\", value: \"PH\" },\r\n { label: \"Gabon\", value: \"GA\" },\r\n { label: \"Gambia\", value: \"GM\" },\r\n { label: \"Georgia\", value: \"GE\" },\r\n { label: \"Ghana\", value: \"GH\" },\r\n { label: \"Gibraltar\", value: \"GI\" },\r\n { label: \"Grenada\", value: \"GD\" },\r\n { label: \"Grönlanti\", value: \"GL\" },\r\n { label: \"Guadeloupe\", value: \"GP\" },\r\n { label: \"Guam\", value: \"GU\" },\r\n { label: \"Guatemala\", value: \"GT\" },\r\n { label: \"Guernsey\", value: \"GG\" },\r\n { label: \"Guinea\", value: \"GN\" },\r\n { label: \"Guinea-Bissau\", value: \"GW\" },\r\n { label: \"Guyana\", value: \"GY\" },\r\n { label: \"Haiti\", value: \"HT\" },\r\n { label: \"Heard ja McDonaldinsaaret\", value: \"HM\" },\r\n { label: \"Honduras\", value: \"HN\" },\r\n { label: \"Hongkong\", value: \"HK\" },\r\n { label: \"Indonesia\", value: \"ID\" },\r\n { label: \"Intia\", value: \"IN\" },\r\n { label: \"Irak\", value: \"IQ\" },\r\n { label: \"Iran\", value: \"IR\" },\r\n { label: \"Irlanti\", value: \"IE\" },\r\n { label: \"Islanti\", value: \"IS\" },\r\n { label: \"Israel\", value: \"IL\" },\r\n { label: \"Italia\", value: \"IT\" },\r\n { label: \"Itä-Timor\", value: \"TL\" },\r\n { label: \"Itävalta\", value: \"AT\" },\r\n { label: \"Jamaika\", value: \"JM\" },\r\n { label: \"Japani\", value: \"JP\" },\r\n { label: \"Jemen\", value: \"YE\" },\r\n { label: \"Jersey\", value: \"JE\" },\r\n { label: \"Jordania\", value: \"JO\" },\r\n { label: \"Joulusaari\", value: \"CX\" },\r\n { label: \"Kambodža\", value: \"KH\" },\r\n { label: \"Kamerun\", value: \"CM\" },\r\n { label: \"Kanada\", value: \"CA\" },\r\n { label: \"Kap Verde\", value: \"CV\" },\r\n { label: \"Kazakstan\", value: \"KZ\" },\r\n { label: \"Kenia\", value: \"KE\" },\r\n { label: \"Keski-Afrikan tasavalta\", value: \"CF\" },\r\n { label: \"Kiina\", value: \"CN\" },\r\n { label: \"Kirgisia\", value: \"KG\" },\r\n { label: \"Kiribati\", value: \"KI\" },\r\n { label: \"Kolumbia\", value: \"CO\" },\r\n { label: \"Komorit\", value: \"KM\" },\r\n { label: \"Kongon demokraattinen tasavalta\", value: \"CD\" },\r\n { label: \"Kongon tasavalta\", value: \"CG\" },\r\n { label: \"Kookossaaret\", value: \"CC\" },\r\n { label: \"Korean demokraattinen kansantasavalta\", value: \"KP\" },\r\n { label: \"Korean tasavalta\", value: \"KR\" },\r\n { label: \"Kreikka\", value: \"GR\" },\r\n { label: \"Kroatia\", value: \"HR\" },\r\n { label: \"Kuuba\", value: \"CU\" },\r\n { label: \"Kuwait\", value: \"KW\" },\r\n { label: \"Kypros\", value: \"CY\" },\r\n { label: \"Laos\", value: \"LA\" },\r\n { label: \"Latvia\", value: \"LV\" },\r\n { label: \"Lesotho\", value: \"LS\" },\r\n { label: \"Libanon\", value: \"LB\" },\r\n { label: \"Liberia\", value: \"LR\" },\r\n { label: \"Libya\", value: \"LY\" },\r\n { label: \"Liechtenstein\", value: \"LI\" },\r\n { label: \"Liettua\", value: \"LT\" },\r\n { label: \"Luxemburg\", value: \"LU\" },\r\n { label: \"Länsi-Sahara\", value: \"EH\" },\r\n { label: \"Macao\", value: \"MO\" },\r\n { label: \"Madagaskar\", value: \"MG\" },\r\n { label: \"Malawi\", value: \"MW\" },\r\n { label: \"Malediivit\", value: \"MV\" },\r\n { label: \"Malesia\", value: \"MY\" },\r\n { label: \"Mali\", value: \"ML\" },\r\n { label: \"Malta\", value: \"MT\" },\r\n { label: \"Mansaari\", value: \"IM\" },\r\n { label: \"Marokko\", value: \"MA\" },\r\n { label: \"Marshallinsaaret\", value: \"MH\" },\r\n { label: \"Martinique\", value: \"MQ\" },\r\n { label: \"Mauritania\", value: \"MR\" },\r\n { label: \"Mauritius\", value: \"MU\" },\r\n { label: \"Mayotte\", value: \"YT\" },\r\n { label: \"Meksiko\", value: \"MX\" },\r\n { label: \"Mikronesian liittovaltio\", value: \"FM\" },\r\n { label: \"Moldova\", value: \"MD\" },\r\n { label: \"Monaco\", value: \"MC\" },\r\n { label: \"Mongolia\", value: \"MN\" },\r\n { label: \"Montenegro\", value: \"ME\" },\r\n { label: \"Montserrat\", value: \"MS\" },\r\n { label: \"Mosambik\", value: \"MZ\" },\r\n { label: \"Myanmar\", value: \"MM\" },\r\n { label: \"Namibia\", value: \"NA\" },\r\n { label: \"Nauru\", value: \"NR\" },\r\n { label: \"Nepal\", value: \"NP\" },\r\n { label: \"Nicaragua\", value: \"NI\" },\r\n { label: \"Niger\", value: \"NE\" },\r\n { label: \"Nigeria\", value: \"NG\" },\r\n { label: \"Niue\", value: \"NU\" },\r\n { label: \"Norfolkinsaari\", value: \"NF\" },\r\n { label: \"Norja\", value: \"NO\" },\r\n { label: \"Norsunluurannikko\", value: \"CI\" },\r\n { label: \"Oman\", value: \"OM\" },\r\n { label: \"Pakistan\", value: \"PK\" },\r\n { label: \"Palau\", value: \"PW\" },\r\n { label: \"Palestiina\", value: \"PS\" },\r\n { label: \"Panama\", value: \"PA\" },\r\n { label: \"Papua-Uusi-Guinea\", value: \"PG\" },\r\n { label: \"Paraguay\", value: \"PY\" },\r\n { label: \"Peru\", value: \"PE\" },\r\n { label: \"Pohjois-Mariaanit\", value: \"MP\" },\r\n { label: \"Pitcairn\", value: \"PN\" },\r\n { label: \"Pohjois-Makedonia\", value: \"MK\" },\r\n { label: \"Portugali\", value: \"PT\" },\r\n { label: \"Puerto Rico\", value: \"PR\" },\r\n { label: \"Puola\", value: \"PL\" },\r\n { label: \"Päiväntasaajan Guinea\", value: \"GQ\" },\r\n { label: \"Qatar\", value: \"QA\" },\r\n { label: \"Ranska\", value: \"FR\" },\r\n { label: \"Ranskan eteläiset alueet\", value: \"TF\" },\r\n { label: \"Ranskan Guayana\", value: \"GF\" },\r\n { label: \"Ranskan Polynesia\", value: \"PF\" },\r\n { label: \"Réunion\", value: \"RE\" },\r\n { label: \"Romania\", value: \"RO\" },\r\n { label: \"Ruanda\", value: \"RW\" },\r\n { label: \"Ruotsi\", value: \"SE\" },\r\n { label: \"Saint Barthélemy\", value: \"BL\" },\r\n { label: \"Saint Helena, Ascension ja Tristan da Cunha\", value: \"SH\" },\r\n { label: \"Saint Kitts ja Nevis\", value: \"KN\" },\r\n { label: \"Saint Lucia\", value: \"LC\" },\r\n { label: \"Saint Martin (Ranska)\", value: \"MF\" },\r\n { label: \"Saint-Pierre ja Miquelon\", value: \"PM\" },\r\n { label: \"Saint Vincent ja Grenadiinit\", value: \"VC\" },\r\n { label: \"Saksa\", value: \"DE\" },\r\n { label: \"Salomonsaaret\", value: \"SB\" },\r\n { label: \"Sambia\", value: \"ZM\" },\r\n { label: \"Samoa\", value: \"WS\" },\r\n { label: \"San Marino\", value: \"SM\" },\r\n { label: \"São Tomé ja Príncipe\", value: \"ST\" },\r\n { label: \"Saudi-Arabia\", value: \"SA\" },\r\n { label: \"Senegal\", value: \"SN\" },\r\n { label: \"Serbia\", value: \"RS\" },\r\n { label: \"Seychellit\", value: \"SC\" },\r\n { label: \"Sierra Leone\", value: \"SL\" },\r\n { label: \"Singapore\", value: \"SG\" },\r\n { label: \"Sint Maarten (Alankomaat)\", value: \"SX\" },\r\n { label: \"Slovakia\", value: \"SK\" },\r\n { label: \"Slovenia\", value: \"SI\" },\r\n { label: \"Somalia\", value: \"SO\" },\r\n { label: \"Sri Lanka\", value: \"LK\" },\r\n { label: \"Sudan\", value: \"SD\" },\r\n // { label: \"Suomi\", value: \"FI\" },\r\n { label: \"Suriname\", value: \"SR\" },\r\n { label: \"Svalbard ja Jan Mayen\", value: \"SJ\" },\r\n { label: \"Swazimaa\", value: \"SZ\" },\r\n { label: \"Sveitsi\", value: \"CH\" },\r\n { label: \"Syyria\", value: \"SY\" },\r\n { label: \"Tadžikistan\", value: \"TJ\" },\r\n { label: \"Taiwan\", value: \"TW\" },\r\n { label: \"Tansania\", value: \"TZ\" },\r\n { label: \"Tanska\", value: \"DK\" },\r\n { label: \"Thaimaa\", value: \"TH\" },\r\n { label: \"Togo\", value: \"TG\" },\r\n { label: \"Tokelau\", value: \"TK\" },\r\n { label: \"Tonga\", value: \"TO\" },\r\n { label: \"Trinidad ja Tobago\", value: \"TT\" },\r\n { label: \"Tšad\", value: \"TD\" },\r\n { label: \"Tšekki\", value: \"CZ\" },\r\n { label: \"Tunisia\", value: \"TN\" },\r\n { label: \"Turkki\", value: \"TR\" },\r\n { label: \"Turkmenistan\", value: \"TM\" },\r\n { label: \"Turks- ja Caicossaaret\", value: \"TC\" },\r\n { label: \"Tuvalu\", value: \"TV\" },\r\n { label: \"Uganda\", value: \"UG\" },\r\n { label: \"Ukraina\", value: \"UA\" },\r\n { label: \"Unkari\", value: \"HU\" },\r\n { label: \"Uruguay\", value: \"UY\" },\r\n { label: \"Uusi-Kaledonia\", value: \"NC\" },\r\n { label: \"Uusi-Seelanti\", value: \"NZ\" },\r\n { label: \"Uzbekistan\", value: \"UZ\" },\r\n { label: \"Valko-Venäjä\", value: \"BY\" },\r\n { label: \"Vanuatu\", value: \"VU\" },\r\n { label: \"Vatikaanivaltio (Pyhä istuin)\", value: \"VA\" },\r\n { label: \"Venezuela\", value: \"VE\" },\r\n { label: \"Venäjä\", value: \"RU\" },\r\n { label: \"Vietnam\", value: \"VN\" },\r\n { label: \"Viro\", value: \"EE\" },\r\n { label: \"Wallis ja Futunasaaret\", value: \"WF\" },\r\n { label: \"Yhdistynyt kuningaskunta\", value: \"GB\" },\r\n { label: \"Yhdysvallat\", value: \"US\" },\r\n { label: \"Yhdysvaltain Neitsytsaaret\", value: \"VI\" },\r\n { label: \"Yhdysvaltain pienet erillissaaret\", value: \"UM\" },\r\n { label: \"Zimbabwe\", value: \"ZW\" },\r\n];\r\n","import { faCheck, faPlus } from '@fortawesome/free-solid-svg-icons';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport React, { useEffect } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { RouteComponentProps } from 'react-router-dom';\r\n\r\nimport { ERouteStaticParams, Routes } from '../../classes/Routes';\r\nimport Alert from '../../components/UI/Alert/Alert';\r\nimport Button from '../../components/UI/Button/Button';\r\nimport Container from '../../components/UI/Container/Container';\r\nimport Spinner from '../../components/UI/Spinner/Spinner';\r\nimport Table from '../../components/UI/Table/Table';\r\nimport { IAppState, IUserState } from '../../interfaces';\r\nimport { linkHandler } from '../../shared/utility';\r\nimport * as actions from '../../store/actions';\r\nimport { ETranslation } from '../../translations/translation-keys';\r\n\r\ninterface IProps extends RouteComponentProps {\r\n organizationId?: string;\r\n}\r\n\r\nconst Users: React.FC = ({ history, organizationId }) => {\r\n const dispatch = useDispatch();\r\n\r\n const { loading, error, users } = useSelector(state => state.users);\r\n\r\n const { t } = useTranslation();\r\n\r\n useEffect(() => {\r\n organizationId\r\n ? dispatch(actions.listUsers(organizationId))\r\n : dispatch(actions.listUsers());\r\n }, [dispatch, organizationId]);\r\n\r\n const showUser = (\r\n event: React.MouseEvent,\r\n id: string\r\n ) => {\r\n if (organizationId) {\r\n linkHandler(event, Routes.ORGANIZATION_USER(organizationId, id), history);\r\n } else {\r\n linkHandler(event, Routes.USER(id), history);\r\n }\r\n };\r\n\r\n const addUser = () => {\r\n if (organizationId) {\r\n history.push(\r\n Routes.ORGANIZATION_USER(organizationId, ERouteStaticParams.new)\r\n );\r\n } else {\r\n history.push(Routes.USER(ERouteStaticParams.new));\r\n }\r\n };\r\n\r\n return (\r\n \r\n {error && {t(error)}}\r\n

{t(ETranslation.TITLE_USERS)}

\r\n \r\n {loading ? (\r\n \r\n ) : users ? (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {users.map((user) => (\r\n showUser(e, user.id)}>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n
{t(ETranslation.USER_NAME)}{t(ETranslation.USER_EMAIL)}{t(ETranslation.USER_TITLE)}{t(ETranslation.USER_PHONE_NUMBER)}{t(ETranslation.USER_ADDRESS)}{t(ETranslation.USER_ALLOW_LOGIN)}
{user.name}{user.email}{user.title}{user.phoneNumber}\r\n {user.streetAddress} {user.zip} {user.city}\r\n \r\n {user.allowLogin ? : \"\"}\r\n
\r\n ) : (\r\n

{t(ETranslation.NO_USERS)}

\r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default Users;\r\n","import React, { useContext, useEffect, useState } from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { RouteComponentProps } from \"react-router-dom\";\r\nimport { Routes } from \"../../../classes/Routes\";\r\nimport Alert from \"../../../components/UI/Alert/Alert\";\r\nimport Button from \"../../../components/UI/Button/Button\";\r\nimport ConfirmDialog from \"../../../components/UI/ConfirmDialog/ConfirmDialog\";\r\nimport Container from \"../../../components/UI/Container/Container\";\r\nimport Input, {\r\n EInputType,\r\n IInputField,\r\n IInputOptions,\r\n} from \"../../../components/UI/Input/Input\";\r\nimport InputGroup from \"../../../components/UI/InputGroup/InputGroup\";\r\nimport ModalContext, {\r\n defaultModal,\r\n EModalSize,\r\n} from \"../../../components/UI/Modal/ModalContext\";\r\nimport Spinner from \"../../../components/UI/Spinner/Spinner\";\r\nimport { EInputUpdateAction } from \"../../../context/InputContext\";\r\nimport { IAppState, IOrganization, IOrganizationState } from \"../../../interfaces\";\r\nimport { countries } from \"../../../shared/countries\";\r\nimport {\r\n getInputData,\r\n initForm,\r\n updateInputHandler,\r\n validateInputs,\r\n} from \"../../../shared/utility\";\r\nimport * as actions from \"../../../store/actions\";\r\nimport { ETranslation } from \"../../../translations/translation-keys\";\r\nimport Users from \"../../Users/Users\";\r\n\r\ninterface IMatch {\r\n id: string;\r\n}\r\n\r\ninterface IProps extends RouteComponentProps {}\r\n\r\nexport enum EOperator {\r\n name = \"name\",\r\n businessId = \"businessId\",\r\n streetAddress = \"streetAddress\",\r\n zip = \"zip\",\r\n city = \"city\",\r\n countryCode = \"countryCode\",\r\n operatorToken = \"operatorToken\",\r\n}\r\n\r\nconst Operator: React.FC = ({ match, history, location }) => {\r\n const dispatch = useDispatch();\r\n\r\n const { setModal } = useContext(ModalContext);\r\n\r\n const { loading, error, organization, saveOrUpdateOk } = useSelector(state => state.organization);\r\n\r\n const { t } = useTranslation();\r\n const { id } = match.params;\r\n\r\n const [inputs, setInputs] = useState({\r\n [EOperator.name]: {\r\n type: EInputType.text,\r\n labelTranslation: ETranslation.OPERATOR_NAME,\r\n placeholderTranslation: ETranslation.OPERATOR_NAME,\r\n value: \"\",\r\n validation: {\r\n required: true,\r\n },\r\n },\r\n [EOperator.businessId]: {\r\n type: EInputType.text,\r\n labelTranslation: ETranslation.OPERATOR_BUSINESS_ID,\r\n placeholderTranslation: ETranslation.OPERATOR_BUSINESS_ID,\r\n value: \"\",\r\n },\r\n [EOperator.streetAddress]: {\r\n type: EInputType.text,\r\n labelTranslation: ETranslation.COMMON_STREET_ADDRESS,\r\n placeholderTranslation: ETranslation.COMMON_STREET_ADDRESS,\r\n value: \"\",\r\n },\r\n [EOperator.zip]: {\r\n type: EInputType.text,\r\n labelTranslation: ETranslation.COMMON_ZIP,\r\n placeholderTranslation: ETranslation.COMMON_ZIP,\r\n value: \"\",\r\n },\r\n [EOperator.city]: {\r\n type: EInputType.text,\r\n labelTranslation: ETranslation.COMMON_CITY,\r\n placeholderTranslation: ETranslation.COMMON_CITY,\r\n value: \"\",\r\n },\r\n [EOperator.countryCode]: {\r\n type: EInputType.select,\r\n labelTranslation: ETranslation.COMMON_COUNTRY,\r\n placeholderTranslation: ETranslation.COMMON_COUNTRY,\r\n value: countries[0].value,\r\n options: countries,\r\n },\r\n [EOperator.operatorToken]: {\r\n type: EInputType.static,\r\n labelTranslation: ETranslation.COMMON_TOKEN,\r\n value: \"\",\r\n },\r\n });\r\n\r\n const [isValid, setIsValid] = useState(false);\r\n\r\n useEffect(() => {\r\n if (saveOrUpdateOk) {\r\n history.push(Routes.OPERATORS);\r\n }\r\n return () => {\r\n dispatch(actions.clearOrganization());\r\n }\r\n }, [saveOrUpdateOk, dispatch, history]);\r\n\r\n useEffect(() => {\r\n if (Routes.isNotNew(id)) {\r\n dispatch(actions.getOrganization(id));\r\n }\r\n }, [id, dispatch]);\r\n\r\n useEffect(() => {\r\n if (organization) {\r\n initForm(setInputs, organization);\r\n }\r\n }, [organization]);\r\n\r\n useEffect(() => {\r\n setIsValid(validateInputs(inputs));\r\n }, [inputs]);\r\n\r\n const createInput = (\r\n inputName: EOperator,\r\n options?: IInputOptions\r\n ) => {\r\n const item = inputs[inputName];\r\n return (\r\n updateInputHandler(inputName, value, setInputs)}\r\n inputName={inputName}\r\n showValidation={!isValid}\r\n />\r\n );\r\n };\r\n\r\n const submitHandler = async (\r\n event: React.MouseEvent\r\n ) => {\r\n event.preventDefault();\r\n const organization = getInputData(inputs);\r\n\r\n if (Routes.isNew(id)) {\r\n dispatch(actions.saveOrganization(organization));\r\n } else {\r\n organization.id = id;\r\n dispatch(actions.updateOrganization(organization));\r\n }\r\n };\r\n\r\n const deleteOperator = (id: string) => {\r\n dispatch(actions.deleteServiceProvider(id));\r\n history.goBack();\r\n setModal(defaultModal);\r\n };\r\n\r\n const setConfirmDeleteDialog = () =>\r\n setModal({\r\n isOpen: true,\r\n title: t(ETranslation.COMMON_REMOVE),\r\n size: EModalSize.SMALL,\r\n content: (\r\n {t(ETranslation.CONFIRM_DELETE_OPERATOR)}

}\r\n onConfirm={() => deleteOperator(id)}\r\n onCancel={() => setModal(defaultModal)}\r\n />\r\n ),\r\n });\r\n\r\n return (\r\n \r\n {error && }\r\n

\r\n {Routes.isNew(id)\r\n ? t(ETranslation.TITLE_OPERATOR_NEW)\r\n : t(ETranslation.TITLE_OPERATOR)}\r\n

\r\n {loading ? (\r\n \r\n ) : (\r\n <>\r\n {createInput(EOperator.name)}\r\n {createInput(EOperator.businessId)}\r\n {createInput(EOperator.streetAddress)}\r\n \r\n {createInput(EOperator.zip)}\r\n {createInput(EOperator.city)}\r\n \r\n {createInput(EOperator.countryCode)}\r\n {Routes.isNotNew(id) && createInput(EOperator.operatorToken)}\r\n \r\n )}\r\n \r\n \r\n \r\n {Routes.isNotNew(id) && (\r\n \r\n )}\r\n \r\n {Routes.isNotNew(id) && (\r\n \r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default Operator;\r\n","import { faPlus } from '@fortawesome/free-solid-svg-icons';\r\nimport React, { useEffect } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { RouteComponentProps } from 'react-router-dom';\r\n\r\nimport { ERouteStaticParams, Routes } from '../../classes/Routes';\r\nimport Alert from '../../components/UI/Alert/Alert';\r\nimport Button from '../../components/UI/Button/Button';\r\nimport Container from '../../components/UI/Container/Container';\r\nimport Spinner from '../../components/UI/Spinner/Spinner';\r\nimport Table from '../../components/UI/Table/Table';\r\nimport { IAppState, IOrganizationState } from '../../interfaces';\r\nimport { linkHandler } from '../../shared/utility';\r\nimport * as actions from '../../store/actions';\r\nimport { ETranslation } from '../../translations/translation-keys';\r\n\r\n\r\ninterface IProps extends RouteComponentProps { }\r\n\r\nconst Operators: React.FC = ({ history }) => {\r\n const dispatch = useDispatch();\r\n\r\n const { loading, error, organizations} = useSelector(state => state.organization);\r\n\r\n const { t } = useTranslation();\r\n\r\n useEffect(() => {\r\n dispatch(actions.listOrganizations());\r\n }, [dispatch]);\r\n\r\n const showOperator = (event: React.MouseEvent, id: string) => {\r\n linkHandler(event, Routes.OPERATOR(id), history);\r\n }\r\n\r\n return (\r\n \r\n {error && }\r\n

{t(ETranslation.TITLE_OPERATORS)}

\r\n \r\n {loading\r\n ? \r\n : organizations\r\n ? (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {organizations.map((organization) => (\r\n showOperator(e, organization.id)}>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n
{t(ETranslation.OPERATOR_NAME)}{t(ETranslation.COMMON_TOKEN)}{t(ETranslation.OPERATOR_BUSINESS_ID)}{t(ETranslation.COMMON_STREET_ADDRESS)}{t(ETranslation.COMMON_ZIP)}{t(ETranslation.COMMON_CITY)}{t(ETranslation.COMMON_COUNTRY)}
{organization.name}{organization.operatorToken}{organization.businessId}{organization.streetAddress}{organization.zip}{organization.city}{organization.countryCode}
\r\n )\r\n :

{t(ETranslation.NO_OPERATORS)}

\r\n }\r\n
\r\n );\r\n}\r\n\r\nexport default Operators;\r\n","import axios from \"../axios\";\r\n\r\nexport const getOrganizationImage = async (id?: string) => {\r\n const queryString = id ? `?id=${id}` : '';\r\n try {\r\n const resp = await axios.get(`/json/organizations/image${queryString}`)\r\n return resp.data;\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n};\r\n\r\n\r\nexport const exportBilling = async (id?: number) => {\r\n const url = id ? `/json/billing/export?id=${id}`: `/json/billing/exportall`;\r\n try {\r\n const resp = await axios.get(url);\r\n return resp.data.csvString;\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n};\r\n\r\nexport const exportServiceProviders = async (id?: number) => {\r\n const url = id ? `/json/export/serviceprovider?id=${id}` : `/json/export/serviceproviders`;\r\n try {\r\n const resp = await axios.get(url);\r\n return resp.data.csvString;\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n};\r\n","import React, { useEffect, useState } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { RouteComponentProps } from 'react-router-dom';\r\n\r\nimport { Routes } from '../../classes/Routes';\r\nimport Alert from '../../components/UI/Alert/Alert';\r\nimport Button from '../../components/UI/Button/Button';\r\nimport Container from '../../components/UI/Container/Container';\r\nimport Input, { EInputType, IInputField, IInputOptions } from '../../components/UI/Input/Input';\r\nimport InputGroup from '../../components/UI/InputGroup/InputGroup';\r\nimport Spinner from '../../components/UI/Spinner/Spinner';\r\nimport { EInputUpdateAction } from '../../context/InputContext';\r\nimport { invoicingTypes } from '../../data/select-data';\r\nimport { EInvoicingType, EOrganizationLevel } from '../../enums';\r\nimport { useAuthUser } from '../../hooks/useAuthUser';\r\nimport { IAppState, IOrganization, IOrganizationState } from '../../interfaces';\r\nimport { getOrganizationImage } from '../../services/organizationService';\r\nimport { countries } from '../../shared/countries';\r\nimport { getInputData, initForm, updateInputHandler } from '../../shared/utility';\r\nimport * as actions from '../../store/actions';\r\nimport { ETranslation } from '../../translations/translation-keys';\r\nimport classes from './Organization.module.scss';\r\n\r\ninterface IProps extends RouteComponentProps {}\r\n\r\nexport enum EOrganization {\r\n name = \"name\",\r\n businessId = \"businessId\",\r\n streetAddress = \"streetAddress\",\r\n zip = \"zip\",\r\n city = \"city\",\r\n countryCode = \"countryCode\",\r\n operatorToken = \"operatorToken\",\r\n latitude = \"latitude\",\r\n longitude = \"longitude\",\r\n phone = \"phone\",\r\n logoBase64Text = \"logoBase64Text\",\r\n invoicingType = \"invoicingType\",\r\n eInvoiceAddress = \"eInvoiceAddress\",\r\n eInvoiceOperatorAddress = \"eInvoiceOperatorAddress\",\r\n invoicingInfo = \"invoicingInfo\",\r\n services = \"services\",\r\n locations = \"locations\",\r\n created = \"created\",\r\n}\r\n\r\nconst Organization: React.FC = ({ history }) => {\r\n const dispatch = useDispatch();\r\n\r\n const [organizationImageLoading, setOrganizationImageLoading] = useState(false);\r\n\r\n const { loading, error, organization, imageLoading, updateImage } = useSelector<\r\n IAppState,\r\n IOrganizationState\r\n >((state) => state.organization);\r\n\r\n const authUser = useAuthUser();\r\n\r\n const { t } = useTranslation();\r\n\r\n const [inputs, setInputs] = useState({\r\n [EOrganization.name]: {\r\n type: EInputType.text,\r\n labelTranslation: ETranslation.OPERATOR_NAME,\r\n placeholderTranslation: ETranslation.OPERATOR_NAME,\r\n value: \"\",\r\n },\r\n [EOrganization.businessId]: {\r\n type: EInputType.text,\r\n labelTranslation: ETranslation.OPERATOR_BUSINESS_ID,\r\n placeholderTranslation: ETranslation.OPERATOR_BUSINESS_ID,\r\n value: \"\",\r\n },\r\n [EOrganization.streetAddress]: {\r\n type: EInputType.text,\r\n labelTranslation: ETranslation.COMMON_STREET_ADDRESS,\r\n placeholderTranslation: ETranslation.COMMON_STREET_ADDRESS,\r\n value: \"\",\r\n },\r\n [EOrganization.zip]: {\r\n type: EInputType.text,\r\n labelTranslation: ETranslation.COMMON_ZIP,\r\n placeholderTranslation: ETranslation.COMMON_ZIP,\r\n value: \"\",\r\n },\r\n [EOrganization.city]: {\r\n type: EInputType.text,\r\n labelTranslation: ETranslation.COMMON_CITY,\r\n placeholderTranslation: ETranslation.COMMON_CITY,\r\n value: \"\",\r\n },\r\n [EOrganization.countryCode]: {\r\n type: EInputType.select,\r\n labelTranslation: ETranslation.COMMON_COUNTRY,\r\n placeholderTranslation: ETranslation.COMMON_COUNTRY,\r\n value: \"\",\r\n options: countries,\r\n },\r\n [EOrganization.operatorToken]: {\r\n type: EInputType.static,\r\n labelTranslation: ETranslation.COMMON_TOKEN,\r\n value: \"\",\r\n },\r\n [EOrganization.latitude]: {\r\n type: EInputType.number,\r\n labelTranslation: ETranslation.LOCATION_LATITUDE,\r\n placeholderTranslation: ETranslation.LOCATION_LATITUDE,\r\n value: \"\",\r\n },\r\n [EOrganization.longitude]: {\r\n type: EInputType.number,\r\n labelTranslation: ETranslation.LOCATION_LONGITUDE,\r\n placeholderTranslation: ETranslation.LOCATION_LONGITUDE,\r\n value: \"\",\r\n },\r\n [EOrganization.phone]: {\r\n type: EInputType.text,\r\n labelTranslation: ETranslation.COMMON_PHONE,\r\n placeholderTranslation: ETranslation.COMMON_PHONE,\r\n value: \"\",\r\n },\r\n [EOrganization.logoBase64Text]: {\r\n type: EInputType.organizationImage,\r\n labelTranslation: ETranslation.ORGANIZATION_IMAGE,\r\n placeholderTranslation: ETranslation.ORGANIZATION_IMAGE,\r\n value: \"\",\r\n },\r\n [EOrganization.invoicingType]: {\r\n type: EInputType.select,\r\n labelTranslation: ETranslation.SERVICEPROVIDER_INVOICING_TYPE,\r\n placeholderTranslation: ETranslation.SERVICEPROVIDER_INVOICING_TYPE,\r\n value: EInvoicingType.EINVOICE,\r\n options: invoicingTypes,\r\n validation: {\r\n required: true,\r\n },\r\n },\r\n [EOrganization.eInvoiceAddress]: {\r\n type: EInputType.text,\r\n labelTranslation: ETranslation.SERVICEPROVIDER_EINVOICE_ADDRESS,\r\n placeholderTranslation: ETranslation.SERVICEPROVIDER_EINVOICE_ADDRESS,\r\n value: \"\",\r\n },\r\n [EOrganization.eInvoiceOperatorAddress]: {\r\n type: EInputType.text,\r\n labelTranslation: ETranslation.SERVICEPROVIDER_EINVOICEOPERATOR_ADDRESS,\r\n placeholderTranslation:\r\n ETranslation.SERVICEPROVIDER_EINVOICEOPERATOR_ADDRESS,\r\n value: \"\",\r\n },\r\n [EOrganization.invoicingInfo]: {\r\n type: EInputType.textarea,\r\n labelTranslation: ETranslation.SERVICEPROVIDER_INVOICEINFO,\r\n placeholderTranslation: ETranslation.SERVICEPROVIDER_INVOICEINFO,\r\n value: \"\",\r\n },\r\n [EOrganization.services]: {\r\n type: EInputType.static,\r\n labelTranslation: ETranslation.SERVICES,\r\n value: \"\",\r\n },\r\n [EOrganization.locations]: {\r\n type: EInputType.static,\r\n labelTranslation: ETranslation.LOCATIONS,\r\n value: \"\",\r\n },\r\n [EOrganization.created]: {\r\n type: EInputType.static,\r\n labelTranslation: ETranslation.ORGANIZATION_ORDER_DATE,\r\n value: \"\",\r\n },\r\n });\r\n\r\n useEffect(() => {\r\n if (authUser?.organization?.id) {\r\n dispatch(actions.getMyOrganization());\r\n }\r\n return () => {\r\n dispatch(actions.clearOrganization());\r\n }\r\n }, [dispatch, authUser]);\r\n\r\n useEffect(() => {\r\n if (organization) {\r\n initForm(setInputs, organization);\r\n }\r\n }, [organization]);\r\n\r\n const [imageData, setImageData] = useState(null);\r\n useEffect(() => {\r\n if (organization) {\r\n (async () => {\r\n setOrganizationImageLoading(true);\r\n const image = await getOrganizationImage(organization.id);\r\n if (image) setImageData(image);\r\n setOrganizationImageLoading(false);\r\n })();\r\n }\r\n }, [organization]);\r\n\r\n useEffect(() => {\r\n if (updateImage) {\r\n setImageData(updateImage);\r\n }\r\n }, [updateImage]);\r\n\r\n const createInput = (inputName: EOrganization, options?: IInputOptions) => {\r\n const item = inputs[inputName];\r\n return (\r\n updateInputHandler(inputName, value, setInputs)}\r\n inputName={inputName}\r\n />\r\n );\r\n };\r\n\r\n const submitHandler = async (\r\n event: React.MouseEvent\r\n ) => {\r\n event.preventDefault();\r\n\r\n const organization = getInputData(inputs);\r\n\r\n dispatch(actions.updateMyOrganization(organization));\r\n history.push(Routes.OFFER_REQUESTS);\r\n };\r\n\r\n const deleteOrganizationImage = (id: string) => {\r\n dispatch(actions.deleteOrganizationImage(id));\r\n setImageData(null);\r\n };\r\n\r\n const createStaticContent = (title: string, content?: string) => (\r\n
\r\n \r\n

{content}

\r\n
\r\n )\r\n\r\n return (\r\n <>\r\n {error && }\r\n \r\n

{t(ETranslation.ORGANIZATION_ME)}

\r\n {loading ? (\r\n \r\n ) : (\r\n <>\r\n {createInput(EOrganization.name)}\r\n {createInput(EOrganization.businessId)}\r\n {createInput(EOrganization.streetAddress)}\r\n \r\n {createInput(EOrganization.zip)}\r\n {createInput(EOrganization.city)}\r\n \r\n {createInput(EOrganization.countryCode)}\r\n {organization?.level === EOrganizationLevel.SERVICE_PROVIDER && (\r\n <>\r\n \r\n {createInput(EOrganization.latitude)}\r\n {createInput(EOrganization.longitude)}\r\n \r\n {createInput(EOrganization.phone)}\r\n {organizationImageLoading || imageLoading ? (\r\n \r\n ) : imageData ? (\r\n
\r\n
\r\n \r\n \r\n
\r\n deleteOrganizationImage(organization.id)}\r\n >\r\n {t(ETranslation.COMMON_REMOVE)}\r\n \r\n
\r\n ) : (\r\n createInput(EOrganization.logoBase64Text)\r\n )}\r\n {createInput(EOrganization.invoicingType)}\r\n {inputs[EOrganization.invoicingType].value ===\r\n EInvoicingType.EINVOICE && (\r\n <>\r\n {createInput(EOrganization.eInvoiceAddress)}\r\n {createInput(EOrganization.eInvoiceOperatorAddress)}\r\n \r\n )}\r\n {createInput(EOrganization.invoicingInfo)} \r\n {createStaticContent(t(ETranslation.SERVICES), organization.services?.map(service => service.name).join(\", \"))}\r\n {createStaticContent(t(ETranslation.LOCATIONS), organization.locations?.map(location => location.name).join(\", \"))}\r\n {createInput(EOrganization.created)}\r\n \r\n \r\n \r\n )}\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n
\r\n \r\n );\r\n};\r\n\r\nexport default Organization;\r\n","import { useDispatch } from 'react-redux';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { ETranslation } from './../translations/translation-keys';\r\nimport { useEffect, useState } from 'react';\r\nimport { useSelector } from 'react-redux';\r\n\r\nimport { IOption } from '../components/UI/Input/Input';\r\nimport { IAppState, IAuthState } from '../interfaces/state';\r\nimport { createOptions } from '../shared/option-utils';\r\nimport { ILocationState } from './../interfaces/state';\r\n\r\nimport * as actions from '../store/actions';\r\n\r\ninterface IParams {\r\n withPlaceholder?: boolean;\r\n operatorId?: string;\r\n filterByOperatorId?: boolean;\r\n}\r\n\r\nconst defaultParams: IParams = {\r\n withPlaceholder: false,\r\n operatorId: '',\r\n filterByOperatorId: false\r\n}\r\n\r\nexport const useLocationOptions = ({ withPlaceholder, operatorId, filterByOperatorId } = defaultParams) => {\r\n const { t } = useTranslation();\r\n const dispatch = useDispatch();\r\n const [locationOptions, setLocationOptions] = useState([])\r\n const [tryFetch, setTryFetch] = useState(false);\r\n \r\n const { authUser } = useSelector(state => state.auth);\r\n const { locations, loading } = useSelector((state) => state.locations);\r\n\r\n useEffect(() => {\r\n if (authUser) {\r\n setTryFetch(authUser.isPrimary || authUser.isOperator);\r\n }\r\n }, [authUser]);\r\n\r\n useEffect(() => {\r\n if(tryFetch && !locations && !loading) {\r\n dispatch(actions.listLocations());\r\n setTryFetch(false);\r\n }\r\n }, [dispatch, locations, tryFetch, loading]);\r\n\r\n useEffect(() => {\r\n let placeholder;\r\n if(withPlaceholder) {\r\n placeholder = t(ETranslation.SELECT_LOCATIONS_PLACEHOLDER);\r\n }\r\n if(locations) {\r\n let optionLocations = [...locations];\r\n if (filterByOperatorId) {\r\n optionLocations = optionLocations.filter(s => s.operator?.id === operatorId);\r\n }\r\n setLocationOptions(createOptions(optionLocations, (l) => l.name || l.id, placeholder));\r\n\r\n } else {\r\n setLocationOptions([]);\r\n }\r\n }, [locations, withPlaceholder, operatorId, t, filterByOperatorId]);\r\n\r\n return { locationOptions, locationsLoading: loading };\r\n}\r\n","import { faExternalLinkAlt, faFileExport } from '@fortawesome/free-solid-svg-icons';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport React, { useCallback, useContext, useEffect, useState } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { Link, RouteComponentProps } from 'react-router-dom';\r\n\r\nimport { Routes } from '../../../classes/Routes';\r\nimport Alert from '../../../components/UI/Alert/Alert';\r\nimport Button, { EButtonColor, EButtonSize } from '../../../components/UI/Button/Button';\r\nimport ConfirmDialog from '../../../components/UI/ConfirmDialog/ConfirmDialog';\r\nimport Container from '../../../components/UI/Container/Container';\r\nimport Input, { EInputType, IInputField, IInputOptions } from '../../../components/UI/Input/Input';\r\nimport InputGroup from '../../../components/UI/InputGroup/InputGroup';\r\nimport ModalContext, { defaultModal, EModalSize } from '../../../components/UI/Modal/ModalContext';\r\nimport Spinner from '../../../components/UI/Spinner/Spinner';\r\nimport { invoicingTypes, paymentMethods, subscriptionLevels } from '../../../data/select-data';\r\nimport { EInvoicingType, EPaymentMethod, ESubscriptionLevel } from '../../../enums';\r\nimport { useAuthUser } from '../../../hooks/useAuthUser';\r\nimport { useLocationOptions } from '../../../hooks/useLocationOptions';\r\nimport { useOrganizationOptions } from '../../../hooks/useOrganizationOptions';\r\nimport { useServiceOptions } from '../../../hooks/useServiceOptions';\r\nimport { IAppState, IGeoLocationState, IOrganization, IServiceProviderState } from '../../../interfaces';\r\nimport { exportBilling, exportServiceProviders } from '../../../services/organizationService';\r\nimport { countries } from '../../../shared/countries';\r\nimport { createCSV, dateToString, getInputData, initForm, updateInputHandler, validateInputs } from '../../../shared/utility';\r\nimport * as actions from '../../../store/actions';\r\nimport { ETranslation } from '../../../translations/translation-keys';\r\nimport Users from '../../Users/Users';\r\nimport classes from './ServiceProvider.module.scss';\r\n\r\ninterface IMatch {\r\n id: string;\r\n}\r\n\r\ninterface IProps extends RouteComponentProps {}\r\n\r\nexport enum EUser {\r\n firstName = \"firstName\",\r\n lastName = \"lastName\",\r\n phoneNumber = \"phoneNumber\",\r\n email = \"email\",\r\n password = \"password\",\r\n}\r\n\r\nexport enum EServiceProvider {\r\n parent = \"parent\",\r\n name = \"name\",\r\n businessId = \"businessId\",\r\n streetAddress = \"streetAddress\",\r\n linkWWW = \"linkWWW\",\r\n linkFacebook = \"linkFacebook\",\r\n linkTwitter = \"linkTwitter\",\r\n linkInstagram = \"linkInstagram\",\r\n linkLinkedin = \"linkLinkedin\",\r\n zip = \"zip\",\r\n city = \"city\",\r\n countryCode = \"countryCode\",\r\n archived = \"archived\",\r\n services = \"services\",\r\n locations = \"locations\",\r\n invoicingType = \"invoicingType\",\r\n eInvoiceAddress = \"eInvoiceAddress\",\r\n eInvoiceOperatorAddress = \"eInvoiceOperatorAddress\",\r\n invoicingInfo = \"invoicingInfo\",\r\n subscriptionLevel = \"subscriptionLevel\",\r\n phone = \"phone\",\r\n latitude = \"latitude\",\r\n longitude = \"longitude\",\r\n paymentMethod = \"paymentMethod\"\r\n}\r\n\r\nconst ServiceProvider: React.FC = ({ match, history, location }) => {\r\n const dispatch = useDispatch();\r\n const [disableGeoLocationFetch, setDisableGeoLocationFetch] = useState(true);\r\n const { geoLocation, loading: geoLocationLoading, error: geoLocationError} = useSelector(state => state.geoLocation);\r\n\r\n const { setModal } = useContext(ModalContext);\r\n\r\n const authUser = useAuthUser();\r\n const { loading, error, serviceProvider, loadingForm, errorForm, serviceProviderForm, saveOrUpdateOk } = useSelector(state => state.serviceProvider);\r\n\r\n\r\n const { t } = useTranslation();\r\n const { id } = match.params;\r\n\r\n const [userInputs, setUserInputs] = useState({\r\n [EUser.firstName]: {\r\n type: EInputType.text,\r\n labelTranslation: ETranslation.SERVICEPROVIDER_FIRSTNAME,\r\n placeholderTranslation: ETranslation.SERVICEPROVIDER_FIRSTNAME,\r\n value: \"\",\r\n },\r\n [EUser.lastName]: {\r\n type: EInputType.text,\r\n labelTranslation: ETranslation.SERVICEPROVIDER_LASTNAME,\r\n placeholderTranslation: ETranslation.SERVICEPROVIDER_LASTNAME,\r\n value: \"\",\r\n },\r\n [EUser.phoneNumber]: {\r\n type: EInputType.text,\r\n labelTranslation: ETranslation.SERVICEPROVIDER_USER_PHONE,\r\n placeholderTranslation: ETranslation.SERVICEPROVIDER_USER_PHONE,\r\n value: \"\",\r\n },\r\n [EUser.email]: {\r\n type: EInputType.text,\r\n labelTranslation: ETranslation.COMMON_EMAIL,\r\n placeholderTranslation: ETranslation.COMMON_EMAIL,\r\n value: \"\",\r\n },\r\n [EUser.password]: {\r\n type: EInputType.password,\r\n labelTranslation: ETranslation.USER_PASSWORD,\r\n placeholderTranslation: ETranslation.USER_PASSWORD,\r\n value: \"\",\r\n readOnly: true,\r\n },\r\n });\r\n\r\n const [serviceProviderInputs, setServiceProviderInputs] =\r\n useState({\r\n [EServiceProvider.parent]: {\r\n type: EInputType.select,\r\n labelTranslation: ETranslation.COMMON_OPERATOR_NAME,\r\n placeholderTranslation: ETranslation.COMMON_OPERATOR_NAME,\r\n value: \"\",\r\n options: [],\r\n validation: {\r\n required: authUser?.isPrimary,\r\n },\r\n },\r\n [EServiceProvider.linkWWW]: {\r\n type: EInputType.text,\r\n labelTranslation: ETranslation.COMMON_WWW,\r\n placeholderTranslation: ETranslation.COMMON_WWW,\r\n value: \"\",\r\n },\r\n [EServiceProvider.linkFacebook]: {\r\n type: EInputType.text,\r\n labelTranslation: ETranslation.COMMON_FACEBOOK,\r\n placeholderTranslation: ETranslation.COMMON_FACEBOOK,\r\n value: \"\",\r\n },\r\n [EServiceProvider.linkTwitter]: {\r\n type: EInputType.text,\r\n labelTranslation: ETranslation.COMMON_TWITTER,\r\n placeholderTranslation: ETranslation.COMMON_TWITTER,\r\n value: \"\",\r\n },\r\n [EServiceProvider.linkInstagram]: {\r\n type: EInputType.text,\r\n labelTranslation: ETranslation.COMMON_INSTAGRAM,\r\n placeholderTranslation: ETranslation.COMMON_INSTAGRAM,\r\n value: \"\",\r\n },\r\n [EServiceProvider.linkLinkedin]: {\r\n type: EInputType.text,\r\n labelTranslation: ETranslation.COMMON_LINKEDIN,\r\n placeholderTranslation: ETranslation.COMMON_LINKEDIN,\r\n value: \"\",\r\n },\r\n [EServiceProvider.name]: {\r\n type: EInputType.text,\r\n labelTranslation: ETranslation.SERVICEPROVIDER_COMPANY,\r\n placeholderTranslation: ETranslation.SERVICEPROVIDER_COMPANY,\r\n value: \"\",\r\n },\r\n [EServiceProvider.businessId]: {\r\n type: EInputType.text,\r\n labelTranslation: ETranslation.OPERATOR_BUSINESS_ID,\r\n placeholderTranslation: ETranslation.OPERATOR_BUSINESS_ID,\r\n value: \"\",\r\n },\r\n [EServiceProvider.streetAddress]: {\r\n type: EInputType.text,\r\n labelTranslation: ETranslation.COMMON_STREET_ADDRESS,\r\n placeholderTranslation: ETranslation.COMMON_STREET_ADDRESS,\r\n value: \"\",\r\n },\r\n [EServiceProvider.zip]: {\r\n type: EInputType.text,\r\n labelTranslation: ETranslation.COMMON_ZIP,\r\n placeholderTranslation: ETranslation.COMMON_ZIP,\r\n value: \"\",\r\n },\r\n [EServiceProvider.city]: {\r\n type: EInputType.text,\r\n labelTranslation: ETranslation.COMMON_CITY,\r\n placeholderTranslation: ETranslation.COMMON_CITY,\r\n value: \"\",\r\n },\r\n [EServiceProvider.countryCode]: {\r\n type: EInputType.select,\r\n labelTranslation: ETranslation.COMMON_COUNTRY,\r\n placeholderTranslation: ETranslation.COMMON_COUNTRY,\r\n value: countries[0].value,\r\n options: countries,\r\n },\r\n [EServiceProvider.archived]: {\r\n type: EInputType.checkbox,\r\n labelTranslation: ETranslation.COMMON_ARCHIVED,\r\n placeholderTranslation: ETranslation.COMMON_ARCHIVED,\r\n value: \"\",\r\n },\r\n [EServiceProvider.services]: {\r\n type: EInputType.searchSelect,\r\n labelTranslation: ETranslation.SERVICES,\r\n placeholderTranslation: ETranslation.SERVICES,\r\n value: [],\r\n multiple: true,\r\n },\r\n [EServiceProvider.locations]: {\r\n type: EInputType.searchSelect,\r\n labelTranslation: ETranslation.LOCATIONS,\r\n placeholderTranslation: ETranslation.LOCATIONS,\r\n value: [],\r\n multiple: true,\r\n },\r\n [EServiceProvider.invoicingType]: {\r\n type: EInputType.select,\r\n labelTranslation: ETranslation.SERVICEPROVIDER_INVOICING_TYPE,\r\n placeholderTranslation: ETranslation.SERVICEPROVIDER_INVOICING_TYPE,\r\n value: EInvoicingType.EINVOICE,\r\n options: invoicingTypes,\r\n validation: {\r\n required: true,\r\n },\r\n },\r\n [EServiceProvider.eInvoiceAddress]: {\r\n type: EInputType.text,\r\n labelTranslation: ETranslation.SERVICEPROVIDER_EINVOICE_ADDRESS,\r\n placeholderTranslation: ETranslation.SERVICEPROVIDER_EINVOICE_ADDRESS,\r\n value: \"\",\r\n },\r\n [EServiceProvider.eInvoiceOperatorAddress]: {\r\n type: EInputType.text,\r\n labelTranslation: ETranslation.SERVICEPROVIDER_EINVOICEOPERATOR_ADDRESS,\r\n placeholderTranslation:\r\n ETranslation.SERVICEPROVIDER_EINVOICEOPERATOR_ADDRESS,\r\n value: \"\",\r\n },\r\n [EServiceProvider.invoicingInfo]: {\r\n type: EInputType.textarea,\r\n labelTranslation: ETranslation.SERVICEPROVIDER_INVOICEINFO,\r\n placeholderTranslation: ETranslation.SERVICEPROVIDER_INVOICEINFO,\r\n value: \"\",\r\n },\r\n [EServiceProvider.subscriptionLevel]: {\r\n type: EInputType.select,\r\n labelTranslation: ETranslation.SERVICEPROVIDER_SUBSCRIPTION_LEVEL,\r\n placeholderTranslation: ETranslation.SERVICEPROVIDER_SUBSCRIPTION_LEVEL,\r\n options: subscriptionLevels,\r\n value: ESubscriptionLevel.FREE,\r\n },\r\n [EServiceProvider.phone]: {\r\n type: EInputType.text,\r\n labelTranslation: ETranslation.SERVICEPROVIDER_ORGANIZATION_PHONE,\r\n placeholderTranslation: ETranslation.SERVICEPROVIDER_ORGANIZATION_PHONE,\r\n value: \"\",\r\n },\r\n [EServiceProvider.latitude]: {\r\n type: EInputType.number,\r\n labelTranslation: ETranslation.LOCATION_LATITUDE,\r\n placeholderTranslation: ETranslation.LOCATION_LATITUDE,\r\n value: \"\",\r\n },\r\n [EServiceProvider.longitude]: {\r\n type: EInputType.number,\r\n labelTranslation: ETranslation.LOCATION_LONGITUDE,\r\n placeholderTranslation: ETranslation.LOCATION_LONGITUDE,\r\n value: \"\",\r\n },\r\n [EServiceProvider.paymentMethod]: {\r\n type: EInputType.select,\r\n labelTranslation: ETranslation.SERVICEPROVIDER_PAYMENT_METHOD,\r\n placeholderTranslation: ETranslation.SERVICEPROVIDER_PAYMENT_METHOD,\r\n options: paymentMethods,\r\n value: EPaymentMethod.MONTH,\r\n },\r\n });\r\n\r\n const { organizationOptions, organizationsLoading } = useOrganizationOptions({\r\n withBusinessId: true,\r\n withPlaceholder: true,\r\n });\r\n\r\n let operatorId;\r\n if (authUser?.isOperator) {\r\n operatorId = authUser.organization.id;\r\n } else {\r\n operatorId = serviceProviderInputs[EServiceProvider.parent].value as string;\r\n }\r\n\r\n const { locationOptions, locationsLoading } = useLocationOptions({\r\n operatorId,\r\n filterByOperatorId: true\r\n });\r\n const { serviceOptions, servicesLoading } = useServiceOptions({\r\n operatorId,\r\n filterByOperatorId: true\r\n });\r\n\r\n const [serviceProviderValid, setServiceProviderValid] = useState(false);\r\n const [userValid, setUserValid] = useState(false);\r\n\r\n const isForm = location.pathname.startsWith(Routes.SERVICE_PROVIDER_FORM(\"\"));\r\n\r\n useEffect(() => {\r\n if (Routes.isNotNew(id)) {\r\n if (isForm) {\r\n dispatch(actions.getServiceProviderForm(id));\r\n } else {\r\n dispatch(actions.getServiceProvider(id));\r\n }\r\n }\r\n }, [id, dispatch, isForm]);\r\n\r\n useEffect(() => {\r\n if (serviceProvider) {\r\n initForm(setServiceProviderInputs, serviceProvider);\r\n }\r\n }, [serviceProvider]);\r\n\r\n useEffect(() => {\r\n if (serviceProviderForm) {\r\n initForm(setUserInputs, serviceProviderForm)\r\n initForm(setServiceProviderInputs, serviceProviderForm);\r\n }\r\n }, [serviceProviderForm]);\r\n\r\n useEffect(() => {\r\n if (saveOrUpdateOk) {\r\n history.push(Routes.SERVICE_PROVIDERS);\r\n }\r\n return () => {\r\n dispatch(actions.clearServiceProvider());\r\n }\r\n }, [saveOrUpdateOk, history, dispatch]);\r\n\r\n useEffect(() => {\r\n /* TODO\r\n if (!isForm || !serviceproviderForm || serviceproviderFormsLoading || servicesLoading || organizationsLoading) return;\r\n if (serviceproviderForm.organizationId) {\r\n history.push(Routes.SERVICE_PROVIDER(serviceproviderForm.organizationId));\r\n return;\r\n }\r\n if (serviceproviderForm.converted || serviceproviderForm.deleted) {\r\n history.push(Routes.SERVICE_PROVIDERS);\r\n return;\r\n }\r\n let newInputs = initForm(inputs, serviceproviderForm);\r\n newInputs[EServiceProvider.NAME].value = serviceproviderForm.company;\r\n }\r\n newInputs[EServiceProvider.USER_PHONE].value = serviceproviderForm.phone;\r\n newInputs[EServiceProvider.ORGANIZATION_PHONE].value = \"\";\r\n setInputs(newInputs);\r\n */\r\n // eslint-disable-next-line\r\n }, [serviceProviderForm, isForm]);\r\n\r\n useEffect(() => {\r\n setServiceProviderValid(validateInputs(serviceProviderInputs));\r\n }, [serviceProviderInputs]);\r\n\r\n useEffect(() => {\r\n setUserValid(validateInputs(userInputs));\r\n }, [userInputs]);\r\n\r\n const createInput = useCallback(\r\n (\r\n inputs: IInputField,\r\n setInputs: React.Dispatch>,\r\n inputName: string,\r\n showValidation: boolean,\r\n options?: IInputOptions\r\n ) => {\r\n const item = inputs[inputName];\r\n return (\r\n updateInputHandler(inputName, value, setInputs)}\r\n inputName={inputName}\r\n showValidation={showValidation}\r\n />\r\n );\r\n },\r\n []\r\n );\r\n\r\n const streetAddress = serviceProviderInputs[EServiceProvider.streetAddress].value as string;\r\n const zip = serviceProviderInputs[EServiceProvider.zip].value as string;\r\n const city = serviceProviderInputs[EServiceProvider.city].value as string;\r\n const countryCode = serviceProviderInputs[EServiceProvider.countryCode].value as string;\r\n const latitude = serviceProviderInputs[EServiceProvider.latitude].value as string;\r\n const longitude = serviceProviderInputs[EServiceProvider.longitude].value as string;\r\n\r\n useEffect(() => {\r\n setDisableGeoLocationFetch(!streetAddress.length || !zip.length || !city.length);\r\n }, [streetAddress, zip, city]);\r\n\r\n\r\n const createServiceProviderInput = (\r\n inputName: EServiceProvider,\r\n options?: IInputOptions\r\n ) =>\r\n createInput(\r\n serviceProviderInputs,\r\n setServiceProviderInputs,\r\n inputName,\r\n !serviceProviderValid,\r\n options\r\n );\r\n const createUserInput = (inputName: EUser, options?: IInputOptions) =>\r\n createInput(userInputs, setUserInputs, inputName, !userValid, options);\r\n\r\n const submitHandler = async (\r\n event: React.MouseEvent\r\n ) => {\r\n event.preventDefault();\r\n\r\n const serviceProvider = getInputData(serviceProviderInputs);\r\n const user = getInputData(userInputs);\r\n\r\n if (Routes.isNew(id) || isForm) {\r\n let formId = isForm ? id : undefined;\r\n dispatch(actions.saveServiceProvider(serviceProvider, user, formId));\r\n } else {\r\n serviceProvider.id = id;\r\n dispatch(actions.updateServiceProvider(serviceProvider));\r\n }\r\n\r\n };\r\n\r\n const addAllLocations = () => {\r\n setServiceProviderInputs((inputs) => {\r\n const newInputs = { ...inputs };\r\n newInputs[EServiceProvider.locations].value = [...locationOptions];\r\n return newInputs;\r\n });\r\n };\r\n\r\n const deleteServiceProvider = (id: string) => {\r\n if (isForm) {\r\n dispatch(actions.deleteServiceProviderForm(id));\r\n } else {\r\n dispatch(actions.deleteServiceProvider(id));\r\n }\r\n history.goBack();\r\n setModal(defaultModal);\r\n };\r\n\r\n const setConfirmDeleteDialog = () =>\r\n setModal({\r\n isOpen: true,\r\n title: t(ETranslation.COMMON_REMOVE),\r\n size: EModalSize.SMALL,\r\n content: (\r\n \r\n {isForm\r\n ? t(ETranslation.CONFIRM_DELETE_SERVICEPROVIDER_FORM)\r\n : t(ETranslation.CONFIRM_DELETE_SERVICEPROVIDER)}\r\n

\r\n }\r\n onConfirm={() => deleteServiceProvider(id)}\r\n onCancel={() => setModal(defaultModal)}\r\n />\r\n ),\r\n });\r\n\r\n const onExportBilling = async (id?: number) => {\r\n const csv = await exportBilling(id);\r\n createCSV(\r\n csv,\r\n `${\r\n serviceProvider?.name ? serviceProvider.name : \"palveluntarjoaja\"\r\n }-${dateToString(new Date())}.csv`\r\n );\r\n };\r\n\r\n const onExportServiceProvider = async (id?: number) => {\r\n const csv = await exportServiceProviders(id);\r\n createCSV(\r\n csv,\r\n `${\r\n serviceProvider?.name ? serviceProvider.name : \"palveluntarjoaja\"\r\n }-${dateToString(new Date())}.csv`\r\n );\r\n };\r\n\r\n const getGeoLocationHandler = async () => {\r\n dispatch(actions.getGeoLocation(streetAddress, zip, city, countryCode))\r\n if (geoLocation) {\r\n updateInputHandler(EServiceProvider.latitude, geoLocation.lat, setServiceProviderInputs);\r\n updateInputHandler(EServiceProvider.longitude, geoLocation.lng, setServiceProviderInputs);\r\n } else if (geoLocationError) {\r\n updateInputHandler(EServiceProvider.latitude, \"\", setServiceProviderInputs);\r\n updateInputHandler(EServiceProvider.longitude, \"\", setServiceProviderInputs);\r\n }\r\n }\r\n\r\n \r\n const errors = error || errorForm;\r\n const loadings = loading || loadingForm;\r\n\r\n return (\r\n \r\n {errors && }\r\n

\r\n {Routes.isNew(id)\r\n ? t(ETranslation.TITLE_SERVICEPROVIDER_NEW)\r\n : t(ETranslation.TITLE_SERVICEPROVIDER)}\r\n

\r\n {loadings ? (\r\n \r\n ) : (\r\n <>\r\n {authUser?.isPrimary &&\r\n createServiceProviderInput(EServiceProvider.parent, {\r\n options: organizationOptions,\r\n loading: organizationsLoading,\r\n })}\r\n {(isForm || Routes.isNew(id)) && (\r\n <>\r\n \r\n {createUserInput(EUser.firstName)}\r\n {createUserInput(EUser.lastName)}\r\n \r\n \r\n {createUserInput(EUser.phoneNumber)}\r\n {createUserInput(EUser.email)}\r\n \r\n {createUserInput(EUser.password)}\r\n \r\n )}\r\n \r\n {createServiceProviderInput(EServiceProvider.name)}\r\n {createServiceProviderInput(EServiceProvider.businessId)}\r\n {createServiceProviderInput(EServiceProvider.phone)}\r\n \r\n \r\n {createServiceProviderInput(EServiceProvider.streetAddress)}\r\n {createServiceProviderInput(EServiceProvider.zip)}\r\n {createServiceProviderInput(EServiceProvider.city)}\r\n {createServiceProviderInput(EServiceProvider.countryCode)}\r\n \r\n \r\n {createServiceProviderInput(EServiceProvider.latitude)}\r\n {createServiceProviderInput(EServiceProvider.longitude)}\r\n \r\n \r\n \r\n \r\n \r\n {geoLocationError && {t(ETranslation.GEO_LOCATION_ERROR)}}\r\n \r\n {createServiceProviderInput(EServiceProvider.linkWWW)}\r\n {createServiceProviderInput(EServiceProvider.linkFacebook)}\r\n {createServiceProviderInput(EServiceProvider.linkTwitter)}\r\n {createServiceProviderInput(EServiceProvider.linkInstagram)}\r\n {createServiceProviderInput(EServiceProvider.linkLinkedin)}\r\n \r\n {createServiceProviderInput(EServiceProvider.services, {\r\n options: serviceOptions,\r\n loading: servicesLoading,\r\n })}\r\n \r\n {createServiceProviderInput(EServiceProvider.locations, {\r\n options: locationOptions,\r\n loading: locationsLoading,\r\n })}\r\n {locationOptions && (\r\n \r\n {t(ETranslation.COMMON_ADD_ALL)}\r\n \r\n )}\r\n \r\n\r\n {createServiceProviderInput(EServiceProvider.invoicingType)}\r\n {serviceProviderInputs[EServiceProvider.invoicingType].value ===\r\n EInvoicingType.EINVOICE && (\r\n <>\r\n \r\n {createServiceProviderInput(EServiceProvider.eInvoiceAddress)}\r\n {createServiceProviderInput(\r\n EServiceProvider.eInvoiceOperatorAddress\r\n )}\r\n \r\n \r\n )}\r\n {createServiceProviderInput(EServiceProvider.invoicingInfo)}\r\n {createServiceProviderInput(EServiceProvider.subscriptionLevel)}\r\n {createServiceProviderInput(EServiceProvider.paymentMethod)}\r\n {createServiceProviderInput(EServiceProvider.archived)}\r\n \r\n )}\r\n \r\n \r\n {t(ETranslation.COMMON_SAVE)}\r\n \r\n \r\n {Routes.isNotNew(id) && (\r\n \r\n )}\r\n {!isForm && Routes.isNotNew(id) && (\r\n <>\r\n \r\n onExportServiceProvider(+id)}\r\n icon={faFileExport}\r\n >\r\n {t(ETranslation.SERVICEPROVIDER_EXPORT)}\r\n \r\n \r\n )}\r\n \r\n {authUser &&\r\n (authUser.isPrimary || authUser.isOperator) &&\r\n serviceProvider?.activeCampaignId && (\r\n
\r\n \r\n window.open(\r\n \"https://positiveproductions.activehosted.com/app/contacts/\" +\r\n serviceProvider?.activeCampaignId,\r\n \"_blank\"\r\n )\r\n }\r\n >\r\n ActiveCampaign contact: {serviceProvider?.activeCampaignId}\r\n \r\n
\r\n )}\r\n {!isForm && Routes.isNotNew(id) && (\r\n \r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default ServiceProvider;\r\n","import React, { useEffect } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\n\r\nimport { TDispatch } from '../..';\r\nimport { IAppState, IServiceProvider, IServiceProviderState } from '../../interfaces';\r\nimport { formatDateString } from '../../shared/utility';\r\nimport * as actions from '../../store/actions';\r\nimport { ETranslation } from '../../translations/translation-keys';\r\nimport Alert from '../UI/Alert/Alert';\r\nimport Spinner from '../UI/Spinner/Spinner';\r\nimport Table from '../UI/Table/Table';\r\n\r\ninterface IProps {\r\n // valmiiksi tehty operator id:llä haku jos pitää adminien saada etsittyä\r\n operatorId?: string;\r\n onClick: (event: React.MouseEvent, id: string) => void;\r\n}\r\n\r\nconst ServiceProviderForms: React.FC = ({ operatorId, onClick }) => {\r\n const dispatch = useDispatch();\r\n const { t } = useTranslation();\r\n\r\n const { loadingForm, errorForm, serviceProviderForms } = useSelector(state => state.serviceProvider);\r\n\r\n\r\n useEffect(() => {\r\n dispatch(actions.listServiceProviderForms(operatorId));\r\n }, [dispatch, operatorId]);\r\n\r\n const createFormTable = (serviceProviderForms: IServiceProvider[]) => {\r\n serviceProviderForms.sort((a, b) => (a.created || 0) > (b.created || 0) ? -1 : 1);\r\n return serviceProviderForms.map(serviceProvider => (\r\n onClick(e, serviceProvider.id)}>\r\n {serviceProvider.created && formatDateString(serviceProvider.created)}\r\n {serviceProvider.company}\r\n {serviceProvider.firstName}\r\n {serviceProvider.lastName}\r\n {serviceProvider.services?.map(s => s.name).join(\", \")}\r\n \r\n ));\r\n }\r\n return (\r\n
\r\n {errorForm && {errorForm}}\r\n

{t(ETranslation.SERVICEPROVIDER_FORMS)}

\r\n {loadingForm ? \r\n : serviceProviderForms\r\n ? (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {createFormTable(serviceProviderForms)}\r\n \r\n
{t(ETranslation.COMMON_CREATED)}{t(ETranslation.SERVICEPROVIDER_COMPANY)}{t(ETranslation.SERVICEPROVIDER_FIRSTNAME)}{t(ETranslation.SERVICEPROVIDER_LASTNAME)}{t(ETranslation.SERVICES)}
\r\n )\r\n : t(ETranslation.NO_SERVICEPROVIDER_FORMS)}\r\n
\r\n );\r\n};\r\n\r\nexport default ServiceProviderForms;\r\n","import React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport { useLocationOptions } from '../../../hooks/useLocationOptions';\r\nimport { ETranslation } from '../../../translations/translation-keys';\r\nimport Select from '../../UI/Select/Select';\r\n\r\n\r\ninterface IProps {\r\n setLocationId: React.Dispatch>;\r\n locationId: string;\r\n}\r\n\r\nconst LocationSearch: React.FC = ({ setLocationId, locationId}) => {\r\n\r\n const { locationOptions, locationsLoading } = useLocationOptions();\r\n const { t } = useTranslation();\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n )\r\n\r\n}\r\n\r\nexport default LocationSearch;","import React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport { subscriptionLevels } from '../../../data/select-data';\r\nimport { ETranslation } from '../../../translations/translation-keys';\r\nimport Select from '../../UI/Select/Select';\r\n\r\n\r\ninterface IProps {\r\n setSubscriptionLevel: React.Dispatch>;\r\n subscriptionLevel: string;\r\n}\r\n\r\nconst SubscriptionSearch: React.FC = ({ setSubscriptionLevel, subscriptionLevel}) => {\r\n\r\n const { t } = useTranslation();\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n )\r\n\r\n}\r\n\r\nexport default SubscriptionSearch;","import React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport { paymentMethods } from '../../../data/select-data';\r\nimport { ETranslation } from '../../../translations/translation-keys';\r\nimport Select from '../../UI/Select/Select';\r\n\r\n\r\ninterface IProps {\r\n setPaymentMethod: React.Dispatch>;\r\n paymentMethod: string;\r\n}\r\n\r\nconst PaymentMethodSearch: React.FC = ({ setPaymentMethod, paymentMethod}) => {\r\n\r\n const { t } = useTranslation();\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n )\r\n\r\n}\r\n\r\nexport default PaymentMethodSearch;","import React, { useEffect, useState } from 'react';\r\n\r\nimport { ESearchStorageKey } from '../../../enums';\r\nimport { IServiceProvidersSearchOptions } from '../../../store/actions/serviceProviderActions';\r\nimport LocationSearch from '../../Searches/LocationSearch/LocationSearch';\r\nimport OperatorSearch from '../../Searches/OperatorSearch/OperatorSearch';\r\nimport SearchContainer from '../../Searches/SearchContainer/SearchContainer';\r\nimport ServiceSearch from '../../Searches/ServiceSearch/ServiceSearch';\r\nimport SubscriptionSearch from '../../Searches/SubscriptionSearch/SubscriptionSearch';\r\nimport PaymentMethodSearch from '../../Searches/PaymentMethodSearch/PaymentMethodSearch';\r\n\r\ninterface IProps {\r\n onSearch: (search: IServiceProvidersSearchOptions) => void\r\n};\r\n\r\nconst ServiceProvidersSearch: React.FC = ({ onSearch }) => {\r\n const [isInit, setInit] = useState(false);\r\n const [operatorId, setOperatorId] = useState(\"\");\r\n const [locationId, setLocationId] = useState(\"\");\r\n const [serviceId, setServiceId] = useState(\"\");\r\n const [subscriptionLevel, setSubscriptionLevel] = useState(\"\");\r\n const [paymentMethod, setPaymentMethod] = useState(\"\");\r\n\r\n useEffect(() => {\r\n setOperatorId(localStorage.getItem(ESearchStorageKey.SERVICE_PROVIDERS_OPERATOR_ID) || '');\r\n setLocationId(localStorage.getItem(ESearchStorageKey.SERVICE_PROVIDERS_LOCATION_ID) || '');\r\n setServiceId(localStorage.getItem(ESearchStorageKey.SERVICE_PROVIDERS_SERVICE_ID) || '');\r\n setSubscriptionLevel(localStorage.getItem(ESearchStorageKey.SERVICE_PROVIDERS_SUBSCRIPTION_LEVEL) || '');\r\n setPaymentMethod(localStorage.getItem(ESearchStorageKey.SERVICE_PROVIDERS_PAYMENT_METHOD) || '');\r\n setInit(true);\r\n }, []);\r\n\r\n useEffect(() => {\r\n if(isInit) {\r\n onSearch({ operatorId, locationId, serviceId, subscriptionLevel, paymentMethod });\r\n localStorage.setItem(ESearchStorageKey.SERVICE_PROVIDERS_OPERATOR_ID, operatorId);\r\n localStorage.setItem(ESearchStorageKey.SERVICE_PROVIDERS_LOCATION_ID, locationId);\r\n localStorage.setItem(ESearchStorageKey.SERVICE_PROVIDERS_SERVICE_ID, serviceId);\r\n localStorage.setItem(ESearchStorageKey.SERVICE_PROVIDERS_SUBSCRIPTION_LEVEL, subscriptionLevel);\r\n localStorage.setItem(ESearchStorageKey.SERVICE_PROVIDERS_PAYMENT_METHOD, paymentMethod);\r\n }\r\n }, [onSearch, operatorId, locationId, serviceId, subscriptionLevel, paymentMethod, isInit]);\r\n\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default ServiceProvidersSearch;\r\n\r\n","import { faCheck, faChevronDown, faChevronUp } from '@fortawesome/free-solid-svg-icons';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport React, { CSSProperties, useEffect, useState } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport { IOrganization } from '../../../interfaces';\r\nimport { ETranslation } from '../../../translations/translation-keys';\r\nimport Table from '../../UI/Table/Table';\r\nimport classes from './ServiceProvidersTable.module.scss';\r\n\r\ninterface IProps {\r\n serviceproviders: Array\r\n statusProp?: string;\r\n onClick: (event: React.MouseEvent, id: string) => void;\r\n sortable?: boolean;\r\n containerClassName?: string;\r\n containerStyle?: CSSProperties;\r\n isPrimary?: boolean;\r\n}\r\n\r\nenum EServiceProvidersTableSortBy {\r\n\r\n CREATED = \"created\",\r\n NAME = \"name\",\r\n BUSINESSID = \"businessId\",\r\n ZIP = \"zip\",\r\n CITY = \"city\",\r\n}\r\n\r\nconst ServiceProviderTable: React.FC = ({ serviceproviders, statusProp, onClick, sortable, containerClassName, containerStyle, isPrimary }) => {\r\n const { t } = useTranslation();\r\n\r\n const [sortedServiceProviders, setSortedServiceProviders] = useState(serviceproviders);\r\n const [sort, setSort] = useState(EServiceProvidersTableSortBy.CREATED);\r\n // true = up, false = down\r\n const [sortDirection, setSortDirection] = useState(false);\r\n\r\n useEffect(() => {\r\n if (!sortable) return;\r\n // console.log(\"sort options changed to:\", sort, sortDirection);\r\n\r\n const newOffers = [...sortedServiceProviders];\r\n\r\n if (sort && newOffers) {\r\n if (sortDirection) {\r\n newOffers.reverse();\r\n setSortedServiceProviders(newOffers);\r\n return;\r\n }\r\n\r\n newOffers.sort((a, b) => {\r\n if (a[sort] === \"\" || a[sort] === null || a[sort] === undefined) return 1;\r\n if (b[sort] === \"\" || b[sort] === null || b[sort] === undefined) return -1;\r\n if (a[sort] === b[sort]) return 0;\r\n if (sort === EServiceProvidersTableSortBy.CREATED) return (a[sort] || \"\") < (b[sort] || \"\") ? 1 : -1;\r\n return (a[sort] || \"\") > (b[sort] || \"\") ? 1 : -1;\r\n });\r\n setSortedServiceProviders(newOffers);\r\n }\r\n\r\n // eslint-disable-next-line\r\n }, [sort, sortDirection, sortable]);\r\n\r\n const getChevron = () => {\r\n // console.log(sortDirection);\r\n return \r\n };\r\n\r\n const changeSortOrDirection = (sortBy: EServiceProvidersTableSortBy) => {\r\n if (sortBy === sort) {\r\n setSortDirection(!sortDirection);\r\n } else {\r\n setSort(sortBy);\r\n setSortDirection(false);\r\n }\r\n }\r\n\r\n const mapHeaders = () => {\r\n if (sortable) {\r\n return (\r\n <>\r\n changeSortOrDirection(EServiceProvidersTableSortBy.NAME)}>\r\n {t(ETranslation.OPERATOR_NAME)}\r\n {sort === EServiceProvidersTableSortBy.NAME && getChevron()}\r\n \r\n changeSortOrDirection(EServiceProvidersTableSortBy.BUSINESSID)}>\r\n {t(ETranslation.OPERATOR_BUSINESS_ID)}\r\n {sort === EServiceProvidersTableSortBy.BUSINESSID && getChevron()}\r\n \r\n < th >\r\n {t(ETranslation.OFFERREQUEST_ADDRESS)}\r\n \r\n < th onClick={() => changeSortOrDirection(EServiceProvidersTableSortBy.ZIP)} >\r\n {t(ETranslation.COMMON_ZIP)}\r\n {sort === EServiceProvidersTableSortBy.ZIP && getChevron()}\r\n \r\n {t(ETranslation.COMMON_CITY)}\r\n {t(ETranslation.COMMON_COUNTRY)}\r\n {t(ETranslation.SERVICES)}\r\n {t(ETranslation.LOCATIONS)}\r\n {isPrimary\r\n ? {t(ETranslation.COMMON_OPERATOR_NAME)}\r\n : null\r\n }\r\n {t(ETranslation.COMMON_ARCHIVED)}\r\n \r\n )\r\n }\r\n return (\r\n <>\r\n {t(ETranslation.OPERATOR_NAME)}\r\n {t(ETranslation.OPERATOR_BUSINESS_ID)}\r\n {t(ETranslation.COMMON_STREET_ADDRESS)}\r\n {t(ETranslation.COMMON_ZIP)}\r\n {t(ETranslation.COMMON_CITY)}\r\n {t(ETranslation.COMMON_COUNTRY)}\r\n {t(ETranslation.SERVICES)}\r\n {t(ETranslation.LOCATIONS)}\r\n {isPrimary\r\n ? {t(ETranslation.COMMON_OPERATOR_NAME)}\r\n : null\r\n }\r\n {t(ETranslation.COMMON_ARCHIVED)}\r\n \r\n )\r\n }\r\n\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n {statusProp}\r\n {mapHeaders()}\r\n \r\n \r\n \r\n {sortedServiceProviders.map(serviceProvider => (\r\n onClick(e, serviceProvider.id)}>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {isPrimary\r\n ? \r\n : null\r\n }\r\n \r\n \r\n ))}\r\n \r\n
{serviceProvider.name}{serviceProvider.businessId}{serviceProvider.streetAddress}{serviceProvider.zip}{serviceProvider.city}{serviceProvider.countryCode}{serviceProvider.services?.map(s => s.name).join(\", \")}{serviceProvider.locations?.map(l => l.name).join(\", \")}{serviceProvider.parent?.name}{serviceProvider.archived ? : null}
\r\n
\r\n );\r\n};\r\n\r\nexport default ServiceProviderTable;\r\n","import { faFileExport, faPlus } from \"@fortawesome/free-solid-svg-icons\";\r\nimport React, { useCallback, useEffect } from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { RouteComponentProps } from \"react-router-dom\";\r\nimport { TDispatch } from \"../..\";\r\nimport { ERouteStaticParams, Routes } from \"../../classes/Routes\";\r\nimport ServiceProviderForms from \"../../components/ServiceProviderForms/ServiceProviderForms\";\r\nimport ServiceProvidersSearch from \"../../components/ServiceProviders/ServiceProvidersSearch/ServiceProvidersSearch\";\r\nimport ServiceProvidersTable from \"../../components/ServiceProviders/ServiceProvidersTable/ServiceProvidersTable\";\r\nimport Alert from \"../../components/UI/Alert/Alert\";\r\nimport Button from \"../../components/UI/Button/Button\";\r\nimport Container from \"../../components/UI/Container/Container\";\r\nimport InputGroup from \"../../components/UI/InputGroup/InputGroup\";\r\nimport Spinner from \"../../components/UI/Spinner/Spinner\";\r\nimport { useAuthUser } from \"../../hooks/useAuthUser\";\r\nimport { IAppState, IServiceProviderState } from \"../../interfaces\";\r\nimport { exportBilling, exportServiceProviders } from \"../../services/organizationService\";\r\nimport { createCSV, dateToString, linkHandler } from \"../../shared/utility\";\r\nimport * as actions from \"../../store/actions\";\r\nimport { IServiceProvidersSearchOptions } from \"../../store/actions/serviceProviderActions\";\r\nimport { ETranslation } from \"../../translations/translation-keys\";\r\n\r\n\r\ninterface IProps extends RouteComponentProps {\r\n serviceProviderId?: number;\r\n}\r\n\r\nconst ServiceProviders: React.FC = ({ history }) => {\r\n const dispatch = useDispatch();\r\n\r\n\r\n const authUser = useAuthUser();\r\n const { loading, error, serviceProviders } = useSelector(state => state.serviceProvider);\r\n\r\n const { t } = useTranslation();\r\n\r\n const searchHandler = useCallback((search?: IServiceProvidersSearchOptions) => {\r\n dispatch(actions.listServiceProviders(search));\r\n }, [dispatch]);\r\n\r\n useEffect(() => {\r\n if(!authUser?.isPrimary) searchHandler();\r\n }, [authUser, searchHandler]);\r\n \r\n\r\n const showProviders = (event: React.MouseEvent, id: string) => {\r\n linkHandler(event, Routes.SERVICE_PROVIDER(id), history);\r\n }\r\n\r\n const onServiceProviderFormClick = (event: React.MouseEvent, id: string) => {\r\n linkHandler(event, Routes.SERVICE_PROVIDER_FORM(id), history);\r\n }\r\n\r\n const exportBillingAll = async () => {\r\n const csv = await exportBilling();\r\n createCSV(csv, `palveluntarjoajat-${dateToString(new Date())}.csv`);\r\n }\r\n\r\n const exportServiceProvidersAll = async () => {\r\n const csv = await exportServiceProviders();\r\n createCSV(csv, `palveluntarjoajayhteystiedot-${dateToString(new Date())}.csv`);\r\n }\r\n\r\n \r\n\r\n return (\r\n <>\r\n {error && {t(error)}}\r\n \r\n \r\n

{t(ETranslation.TITLE_SERVICEPROVIDERS)}

\r\n \r\n \r\n \r\n \r\n \r\n {authUser?.isPrimary && () }\r\n {loading\r\n ? \r\n : serviceProviders\r\n ? \r\n :

{t(ETranslation.NO_SERVICEPROVIDERS)}

\r\n }\r\n
\r\n \r\n )\r\n};\r\n\r\nexport default ServiceProviders;\r\n\r\n","import React, { useContext, useEffect, useState } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { RouteComponentProps } from 'react-router-dom';\r\n\r\nimport { Routes } from '../../../classes/Routes';\r\nimport Alert from '../../../components/UI/Alert/Alert';\r\nimport Button from '../../../components/UI/Button/Button';\r\nimport ConfirmDialog from '../../../components/UI/ConfirmDialog/ConfirmDialog';\r\nimport Container from '../../../components/UI/Container/Container';\r\nimport Input, { EInputType, IInputField, IInputOptions } from '../../../components/UI/Input/Input';\r\nimport InputGroup from '../../../components/UI/InputGroup/InputGroup';\r\nimport ModalContext, { defaultModal, EModalSize } from '../../../components/UI/Modal/ModalContext';\r\nimport Spinner from '../../../components/UI/Spinner/Spinner';\r\nimport { EInputUpdateAction } from '../../../context/InputContext';\r\nimport { EOfferRequestType } from '../../../enums';\r\nimport { useAuthUser } from '../../../hooks/useAuthUser';\r\nimport { useLocationOptions } from '../../../hooks/useLocationOptions';\r\nimport { useOrganizationOptions } from '../../../hooks/useOrganizationOptions';\r\nimport { IAppState, IService, IServiceState } from '../../../interfaces';\r\nimport { getInputData, initForm, updateInputHandler, validateInputs } from '../../../shared/utility';\r\nimport * as actions from '../../../store/actions';\r\nimport { ETranslation } from '../../../translations/translation-keys';\r\n\r\ninterface IMatch {\r\n id: string;\r\n}\r\n\r\ninterface IProps extends RouteComponentProps {}\r\n\r\nexport enum EService {\r\n operator = \"operator\",\r\n name = \"name\",\r\n url = \"url\",\r\n archived = \"archived\",\r\n serviceToken = \"serviceToken\",\r\n locations = \"locations\",\r\n type = \"type\",\r\n}\r\n\r\nconst Service: React.FC = ({ match, history, location }) => {\r\n const dispatch = useDispatch();\r\n\r\n const { setModal } = useContext(ModalContext);\r\n\r\n const { organizationOptions, organizationsLoading } = useOrganizationOptions({\r\n withPlaceholder: true,\r\n withBusinessId: true,\r\n });\r\n\r\n const { loading, error, service, saveOrUpdateOk } = useSelector(state => state.services);\r\n const authUser = useAuthUser();\r\n\r\n const { t } = useTranslation();\r\n const { id } = match.params;\r\n\r\n const [inputs, setInputs] = useState({\r\n [EService.operator]: {\r\n type: EInputType.select,\r\n labelTranslation: ETranslation.COMMON_OPERATOR_NAME,\r\n placeholderTranslation: ETranslation.COMMON_OPERATOR_NAME,\r\n value: \"\",\r\n options: [],\r\n validation: {\r\n required: authUser?.isPrimary,\r\n },\r\n },\r\n [EService.name]: {\r\n type: EInputType.text,\r\n labelTranslation: ETranslation.SERVICE_NAME,\r\n placeholderTranslation: ETranslation.SERVICE_NAME,\r\n value: \"\",\r\n validation: {\r\n required: true,\r\n },\r\n },\r\n [EService.url]: {\r\n type: EInputType.text,\r\n labelTranslation: ETranslation.SERVICE_URL,\r\n placeholderTranslation: ETranslation.SERVICE_URL,\r\n value: \"\",\r\n },\r\n [EService.archived]: {\r\n type: EInputType.checkbox,\r\n labelTranslation: ETranslation.COMMON_ARCHIVED,\r\n placeholderTranslation: ETranslation.COMMON_ARCHIVED,\r\n value: \"\",\r\n },\r\n [EService.serviceToken]: {\r\n type: EInputType.static,\r\n labelTranslation: ETranslation.COMMON_TOKEN,\r\n value: \"\",\r\n },\r\n [EService.locations]: {\r\n type: EInputType.searchSelect,\r\n labelTranslation: ETranslation.LOCATIONS,\r\n placeholderTranslation: ETranslation.SELECT_LOCATIONS_PLACEHOLDER,\r\n value: \"\",\r\n multiple: true,\r\n },\r\n [EService.type]: {\r\n type: EInputType.radio,\r\n options: [\r\n {\r\n labelTranslation: ETranslation.OFFER_REQUEST_TYPE_SIMPLE,\r\n value: EOfferRequestType.SIMPLE,\r\n },\r\n {\r\n labelTranslation: ETranslation.OFFER_REQUEST_TYPE_CONSTRUCTION,\r\n value: EOfferRequestType.CONSTRUCTION,\r\n },\r\n {\r\n labelTranslation: ETranslation.OFFER_REQUEST_TYPE_WELLNESS,\r\n value: EOfferRequestType.WELLNESS,\r\n },\r\n ],\r\n value: EOfferRequestType.SIMPLE,\r\n },\r\n });\r\n\r\n\r\n let operatorId;\r\n if (authUser?.isOperator) {\r\n operatorId = authUser.organization.id;\r\n } else {\r\n operatorId = inputs[EService.operator].value as string;\r\n }\r\n\r\n const { locationOptions, locationsLoading } = useLocationOptions({\r\n operatorId,\r\n filterByOperatorId: true\r\n });\r\n\r\n const [isValid, setIsValid] = useState(false);\r\n\r\n\r\n useEffect(() => {\r\n\r\n if(saveOrUpdateOk) {\r\n history.push(Routes.SERVICES)\r\n }\r\n return () => {\r\n dispatch(actions.clearService());\r\n }\r\n }, [saveOrUpdateOk, history, dispatch]);\r\n\r\n useEffect(() => {\r\n if (Routes.isNotNew(id)) {\r\n dispatch(actions.getService(id));\r\n }\r\n }, [id, dispatch]);\r\n\r\n useEffect(() => {\r\n if (service) {\r\n initForm(setInputs, service);\r\n }\r\n }, [service]);\r\n\r\n useEffect(() => {\r\n setIsValid(validateInputs(inputs));\r\n }, [inputs]);\r\n\r\n const createInput = (inputName: EService, options?: IInputOptions) => {\r\n const item = inputs[inputName];\r\n return (\r\n updateInputHandler(inputName, value, setInputs)}\r\n inputName={inputName}\r\n showValidation={!isValid}\r\n />\r\n );\r\n };\r\n\r\n const submitHandler = async (\r\n event: React.MouseEvent\r\n ) => {\r\n event.preventDefault();\r\n\r\n const service = getInputData(inputs);\r\n\r\n if (Routes.isNew(id)) {\r\n dispatch(actions.saveService(service));\r\n } else {\r\n service.id = id;\r\n dispatch(actions.updateService(service));\r\n }\r\n };\r\n\r\n const addAllLocationsHandler = () => {\r\n setInputs((inputs) => {\r\n const newInputs = { ...inputs };\r\n newInputs[EService.locations].value = [...locationOptions];\r\n return newInputs;\r\n });\r\n };\r\n\r\n const setConfirmDeleteDialog = () =>\r\n setModal({\r\n isOpen: true,\r\n title: t(ETranslation.COMMON_REMOVE),\r\n size: EModalSize.SMALL,\r\n content: (\r\n {t(ETranslation.CONFIRM_DELETE_SERVICE)}

}\r\n onConfirm={() => {\r\n // TODO should wait for result and then goBack\r\n dispatch(actions.deleteService(id));\r\n history.goBack();\r\n setModal(defaultModal);\r\n }}\r\n onCancel={() => setModal(defaultModal)}\r\n />\r\n ),\r\n });\r\n\r\n return (\r\n \r\n {error && }\r\n

\r\n {Routes.isNew(id)\r\n ? t(ETranslation.TITLE_SERVICE_NEW)\r\n : t(ETranslation.TITLE_SERVICE)}\r\n

\r\n {loading ? (\r\n \r\n ) : (\r\n <>\r\n {createInput(EService.type)}\r\n {authUser?.isPrimary &&\r\n createInput(EService.operator, {\r\n options: organizationOptions,\r\n loading: organizationsLoading,\r\n })}\r\n {createInput(EService.name)}\r\n {createInput(EService.url)}\r\n \r\n {createInput(EService.locations, {\r\n options: locationOptions,\r\n loading: locationsLoading,\r\n })}\r\n {locationOptions && (\r\n \r\n )}\r\n \r\n\r\n {createInput(EService.archived)}\r\n {Routes.isNotNew(id) && createInput(EService.serviceToken)}\r\n \r\n )}\r\n \r\n \r\n \r\n {Routes.isNotNew(id) && (\r\n \r\n )}\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default Service;\r\n","import React, { useEffect, useState } from 'react';\r\nimport { ESearchStorageKey } from '../../../enums';\r\n\r\nimport { IServicesSearchOptions } from '../../../store/actions/serviceActions';\r\nimport OperatorSearch from '../../Searches/OperatorSearch/OperatorSearch';\r\nimport SearchContainer from '../../Searches/SearchContainer/SearchContainer';\r\n\r\ninterface IProps {\r\n onSearch: (search: IServicesSearchOptions) => void;\r\n};\r\n\r\nconst ServicesSearch: React.FC = ({ onSearch }) => {\r\n const [isInit, setInit] = useState(false);\r\n const [operatorId, setOperatorId] = useState(\"\");\r\n\r\n useEffect(() => {\r\n setOperatorId(localStorage.getItem(ESearchStorageKey.OFFER_REQUEST_OPERATOR_ID) || '');\r\n setInit(true);\r\n }, [operatorId, isInit]);\r\n\r\n useEffect(() => {\r\n if(isInit) {\r\n onSearch({ operatorId, includeArchived: true });\r\n localStorage.setItem(ESearchStorageKey.OFFER_REQUEST_OPERATOR_ID, operatorId);\r\n }\r\n }, [onSearch, operatorId, isInit]);\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default ServicesSearch;\r\n","import { HIDDEN_VALUE } from './common-values';\r\nimport * as dateFns from \"date-fns\";\r\nimport { TFunction } from \"i18next\";\r\nimport { EBuildingType, EOfferRequestType, EOfferStatus } from \"../enums\";\r\nimport { IOfferRequest, IOfferRequestConstruction } from \"../interfaces\";\r\nimport { ETranslation } from \"../translations/translation-keys\";\r\n\r\nexport const getTypeString = (t: TFunction, type?: EOfferRequestType) => {\r\n if (!type) return null;\r\n switch (type) {\r\n case EOfferRequestType.SIMPLE:\r\n return t(ETranslation.OFFER_REQUEST_TYPE_SIMPLE);\r\n case EOfferRequestType.CONSTRUCTION:\r\n return t(ETranslation.OFFER_REQUEST_TYPE_CONSTRUCTION);\r\n case EOfferRequestType.WELLNESS:\r\n return t(ETranslation.OFFER_REQUEST_TYPE_WELLNESS);\r\n }\r\n};\r\n\r\nexport const getBuildingTypeString = (\r\n t: TFunction,\r\n offerRequest: IOfferRequestConstruction\r\n) => {\r\n const buildingType = offerRequest.buildingType;\r\n if (!buildingType) return null;\r\n if (buildingType === HIDDEN_VALUE) return buildingType;\r\n switch (buildingType) {\r\n case EBuildingType.TOWN_HOUSE:\r\n return t(ETranslation.BUILDING_TYPE_TOWN_HOUSE);\r\n case EBuildingType.SEMI_DETACHED_HOUSE:\r\n return t(ETranslation.BUILDING_TYPE_SEMI_DETACHED_HOUSE);\r\n case EBuildingType.ROW_HOUSE:\r\n return t(ETranslation.BUILDING_TYPE_ROW_HOUSE);\r\n case EBuildingType.DETACHED_HOUSE:\r\n return t(ETranslation.BUILDING_TYPE_DETACHED_HOUSE);\r\n case EBuildingType.APARTMENT_HOUSE:\r\n return t(ETranslation.BUILDING_TYPE_APARTMENT_HOUSE);\r\n case EBuildingType.OTHER:\r\n if (!offerRequest.buildingTypeOther) {\r\n return t(ETranslation.BUILDING_TYPE_OTHER);\r\n }\r\n return offerRequest.buildingTypeOther;\r\n }\r\n};\r\n\r\nexport const hasOfferStatus = (\r\n status: EOfferStatus,\r\n ...statuses: Array\r\n) => {\r\n if (!status || !statuses) return false;\r\n return statuses.indexOf(status) !== -1;\r\n};\r\n\r\nexport const sortOffersByDate = (offerrequests: IOfferRequest[]) => {\r\n // Sort item arrays by dateOfTest\r\n return offerrequests.sort((a, b) => {\r\n if (!a.created || !b.created) return 0;\r\n const aDate = dateFns.parseISO(a.created.toString());\r\n const bDate = dateFns.parseISO(b.created.toString());\r\n if (aDate > bDate) return 1;\r\n if (bDate > aDate) return -1;\r\n return 0;\r\n });\r\n};\r\n\r\nexport const getOfferStatus = (status: EOfferStatus) => {\r\n switch (status) {\r\n case EOfferStatus.OFFER:\r\n return ETranslation.OFFERREQUEST_STATUS_OFFER;\r\n case EOfferStatus.OFFERED:\r\n return ETranslation.OFFERREQUEST_STATUS_OFFERED;\r\n case EOfferStatus.COMPLETE:\r\n return ETranslation.OFFERREQUEST_STATUS_COMPLETE;\r\n }\r\n};\r\n","import { faCheck, faPlus } from '@fortawesome/free-solid-svg-icons';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport React, { useCallback, useEffect } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { RouteComponentProps } from 'react-router-dom';\r\n\r\nimport { ERouteStaticParams, Routes } from '../../classes/Routes';\r\nimport ServicesSearch from '../../components/Services/ServicesSearch/ServicesSearch';\r\nimport Alert from '../../components/UI/Alert/Alert';\r\nimport Button from '../../components/UI/Button/Button';\r\nimport Container from '../../components/UI/Container/Container';\r\nimport Spinner from '../../components/UI/Spinner/Spinner';\r\nimport Table from '../../components/UI/Table/Table';\r\nimport { useAuthUser } from '../../hooks/useAuthUser';\r\nimport { IAppState, IServiceState } from '../../interfaces';\r\nimport { getTypeString } from '../../shared/offerrequest-utils';\r\nimport { linkHandler } from '../../shared/utility';\r\nimport * as actions from '../../store/actions';\r\nimport { IServicesSearchOptions } from '../../store/actions/serviceActions';\r\nimport { ETranslation } from '../../translations/translation-keys';\r\n\r\ninterface IProps extends RouteComponentProps {\r\n serviceId?: number;\r\n}\r\n\r\nconst Services: React.FC = ({ history }) => {\r\n const dispatch = useDispatch();\r\n\r\n const authUser = useAuthUser();\r\n const { loading, error, services } = useSelector(state => state.services);\r\n\r\n const { t } = useTranslation();\r\n\r\n const searchHandler = useCallback((search?: IServicesSearchOptions) => {\r\n dispatch(actions.listServices(search));\r\n }, [dispatch]);\r\n\r\n useEffect(() => {\r\n if(!authUser?.isPrimary) {\r\n searchHandler()\r\n }\r\n }, [authUser, searchHandler]);\r\n\r\n const showService = (event: React.MouseEvent, id: string) => {\r\n linkHandler(event, Routes.SERVICE(id), history);\r\n };\r\n\r\n return (\r\n <>\r\n {error && }\r\n \r\n

{t(ETranslation.TITLE_SERVICE)}

\r\n \r\n {authUser?.isPrimary && }\r\n {loading ? (\r\n \r\n ) : services ? (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {authUser?.isPrimary && (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n {services.map((service) => (\r\n showService(e, service.id)}\r\n >\r\n \r\n \r\n \r\n \r\n {authUser?.isPrimary && }\r\n \r\n \r\n \r\n ))}\r\n \r\n
{t(ETranslation.SERVICE_NAME)}{t(ETranslation.COMMON_TOKEN)}{t(ETranslation.SERVICE_URL)}{t(ETranslation.LOCATIONS)}{t(ETranslation.COMMON_OPERATOR_NAME)}{t(ETranslation.OFFERREQUEST_TYPE)}{t(ETranslation.COMMON_ARCHIVED)}
{service.name}{service.serviceToken}{service.url}{service.locations?.map((l) => l.name).join(\", \")}{service.operator?.name}{getTypeString(t, service?.type)}\r\n {service.archived ? : \"\"}\r\n
\r\n ) : (\r\n

{t(ETranslation.NO_SERVICES)}

\r\n )}\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default Services;\r\n","import React, { useContext, useEffect, useState } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch } from 'react-redux';\r\nimport { RouteComponentProps } from 'react-router-dom';\r\n\r\nimport Button from '../../components/UI/Button/Button';\r\nimport Container from '../../components/UI/Container/Container';\r\nimport Input, { EInputType } from '../../components/UI/Input/Input';\r\nimport InputGroup from '../../components/UI/InputGroup/InputGroup';\r\nimport ModalContext, { defaultModal, EModalSize } from '../../components/UI/Modal/ModalContext';\r\nimport firebase from '../../firebase';\r\nimport { useAuthUser } from '../../hooks/useAuthUser';\r\nimport i18n, { ELanguage } from '../../i18n';\r\nimport * as actions from '../../store/actions';\r\nimport { ETranslation } from '../../translations/translation-keys';\r\nimport classes from './Settings.module.scss';\r\n\r\ninterface IProps extends RouteComponentProps { }\r\n\r\nexport enum ESettings {\r\n preferredLanguage = \"preferredLanguage\",\r\n}\r\n\r\nconst languageOptions = [\r\n {\r\n labelTranslation: ETranslation.LANGUAGE_ENGLISH,\r\n value: ELanguage.EN,\r\n },\r\n {\r\n labelTranslation: ETranslation.LANGUAGE_FINNISH,\r\n value: ELanguage.FI,\r\n },\r\n];\r\n\r\nconst Settings: React.FC = ({ history }) => {\r\n\r\n const { setModal } = useContext(ModalContext);\r\n const dispatch = useDispatch();\r\n const authUser = useAuthUser();\r\n const { t } = useTranslation();\r\n\r\n const [language, setLanguage] = useState(ELanguage.FI);\r\n\r\n\r\n const userLanguage = authUser?.preferredLanguage;\r\n\r\n useEffect(() => {\r\n if (userLanguage) {\r\n setLanguage(userLanguage);\r\n }\r\n }, [userLanguage]);\r\n\r\n const setPasswordResetDialog = () => setModal({\r\n isOpen: true,\r\n title: t(ETranslation.SEND_PASSWORD_RESET_LINK),\r\n size: EModalSize.SMALL,\r\n content: (\r\n
\r\n

{t(ETranslation.PASSWORD_RESET_TEXT)}

\r\n \r\n \r\n \r\n \r\n
\r\n ),\r\n })\r\n\r\n\r\n const sendPasswordResetEmail = () => {\r\n if (authUser && authUser.email) {\r\n firebase.auth().sendPasswordResetEmail(authUser.email);\r\n }\r\n setModal(defaultModal);\r\n }\r\n\r\n const submitHandler = async (value: ELanguage) => {\r\n const preferredLanguage = value;\r\n i18n.changeLanguage(preferredLanguage);\r\n dispatch(actions.changeUserLanguage(preferredLanguage));\r\n setLanguage(value);\r\n };\r\n\r\n return (\r\n \r\n

{t(ETranslation.TITLE_SETTINGS)}

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

{t(ETranslation.LANGUAGE_TITLE)}

\r\n
\r\n submitHandler(value as ELanguage)}\r\n inputName=\"language\"\r\n options={languageOptions}\r\n />\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default Settings;\r\n","import React, { useEffect, useState } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { RouteComponentProps } from 'react-router-dom';\r\n\r\nimport { TDispatch } from '../../..';\r\nimport { Routes } from '../../../classes/Routes';\r\nimport Alert from '../../../components/UI/Alert/Alert';\r\nimport Button from '../../../components/UI/Button/Button';\r\nimport Container from '../../../components/UI/Container/Container';\r\nimport Input, { EInputType, IInputField, IInputOptions } from '../../../components/UI/Input/Input';\r\nimport InputGroup from '../../../components/UI/InputGroup/InputGroup';\r\nimport Spinner from '../../../components/UI/Spinner/Spinner';\r\nimport { EInputUpdateAction } from '../../../context/InputContext';\r\nimport { EOrganizationLevel } from '../../../enums';\r\nimport { IAppState, IOrganizationState, IUser, IUserState } from '../../../interfaces';\r\nimport { getInputData, initForm, updateInputHandler, validateInputs } from '../../../shared/utility';\r\nimport * as actions from '../../../store/actions';\r\nimport { ETranslation } from '../../../translations/translation-keys';\r\n\r\ninterface IMatch {\r\n id: string;\r\n organizationId?: string;\r\n}\r\n\r\ninterface IProps extends RouteComponentProps { }\r\n\r\nexport enum EUser {\r\n firstName = \"firstName\",\r\n lastName = \"lastName\",\r\n email = \"email\",\r\n phoneNumber = \"phoneNumber\",\r\n title = \"title\",\r\n allowLogin = \"allowLogin\",\r\n streetAddress = \"streetAddress\",\r\n zip = \"zip\",\r\n city = \"city\",\r\n password = \"password\",\r\n sendNewOfferRequestSummary = \"sendNewOfferRequestSummary\",\r\n}\r\n\r\nconst User: React.FC = ({ match, history }) => {\r\n const dispatch = useDispatch();\r\n const [isValid, setValid] = useState(false);\r\n const [isServiceProviderUser, setIsServiceProviderUser] = useState(false);\r\n\r\n const { loading, error, user, saveOrUpdateOk } = useSelector(state => state.users);\r\n const { organization } = useSelector(state => state.organization);\r\n\r\n const { t } = useTranslation();\r\n const { id, organizationId } = match.params;\r\n\r\n const initialInputs: IInputField = {\r\n [EUser.firstName]: {\r\n type: EInputType.text,\r\n labelTranslation: ETranslation.USER_FIRST_NAME,\r\n placeholderTranslation: ETranslation.USER_FIRST_NAME,\r\n value: \"\",\r\n validation: {\r\n required: true,\r\n }\r\n },\r\n [EUser.lastName]: {\r\n type: EInputType.text,\r\n labelTranslation: ETranslation.USER_LAST_NAME,\r\n placeholderTranslation: ETranslation.USER_LAST_NAME,\r\n value: \"\",\r\n validation: {\r\n required: true,\r\n }\r\n },\r\n [EUser.email]: {\r\n type: EInputType.email,\r\n labelTranslation: ETranslation.USER_EMAIL,\r\n placeholderTranslation: ETranslation.USER_EMAIL,\r\n value: \"\",\r\n validation: {\r\n required: true\r\n }\r\n },\r\n [EUser.phoneNumber]: {\r\n type: EInputType.text,\r\n labelTranslation: ETranslation.USER_PHONE_NUMBER,\r\n placeholderTranslation: ETranslation.USER_PHONE_NUMBER,\r\n value: \"\",\r\n },\r\n [EUser.title]: {\r\n type: EInputType.text,\r\n labelTranslation: ETranslation.USER_TITLE,\r\n placeholderTranslation: ETranslation.USER_TITLE,\r\n value: \"\",\r\n },\r\n [EUser.streetAddress]: {\r\n type: EInputType.text,\r\n labelTranslation: ETranslation.COMMON_STREET_ADDRESS,\r\n placeholderTranslation: ETranslation.COMMON_STREET_ADDRESS,\r\n value: \"\",\r\n },\r\n [EUser.zip]: {\r\n type: EInputType.text,\r\n labelTranslation: ETranslation.COMMON_ZIP,\r\n placeholderTranslation: ETranslation.COMMON_ZIP,\r\n value: \"\",\r\n },\r\n [EUser.city]: {\r\n type: EInputType.text,\r\n labelTranslation: ETranslation.COMMON_CITY,\r\n placeholderTranslation: ETranslation.COMMON_CITY,\r\n value: \"\",\r\n },\r\n [EUser.allowLogin]: {\r\n type: EInputType.checkbox,\r\n labelTranslation: ETranslation.USER_ALLOW_LOGIN,\r\n value: true,\r\n },\r\n [EUser.password]: {\r\n type: EInputType.password,\r\n labelTranslation: ETranslation.USER_PASSWORD,\r\n placeholderTranslation: ETranslation.USER_PASSWORD,\r\n value: \"\",\r\n validation: {\r\n required: Routes.isNew(id),\r\n minLength: 6,\r\n minLengthMessage: ETranslation.PASSWORD_MIN_LENGTH_MESSAGE,\r\n },\r\n readOnly: true,\r\n },\r\n [EUser.sendNewOfferRequestSummary]: {\r\n type: EInputType.checkbox,\r\n labelTranslation: ETranslation.USER_SEND_NEW_OFFER_REQUEST_SUMMARY,\r\n value: \"\",\r\n },\r\n };\r\n\r\n const [inputs, setInputs] = useState({ ...initialInputs });\r\n\r\n useEffect(() => {\r\n if(saveOrUpdateOk) {\r\n history.goBack();\r\n }\r\n\r\n return () => {\r\n dispatch(actions.clearUser());\r\n }\r\n\r\n }, [dispatch, history, saveOrUpdateOk]);\r\n\r\n useEffect(() => {\r\n if (Routes.isNotNew(id)) {\r\n if (organizationId) {\r\n dispatch(actions.getUser(id, organizationId));\r\n } else {\r\n dispatch(actions.getUser(id));\r\n }\r\n }\r\n }, [id, dispatch, organizationId]);\r\n\r\n useEffect(() => {\r\n if (organizationId) {\r\n dispatch(actions.getOrganization(organizationId));\r\n }\r\n }, [organizationId, dispatch]);\r\n\r\n useEffect(() => {\r\n if (organization) {\r\n setIsServiceProviderUser(organization.level === EOrganizationLevel.SERVICE_PROVIDER);\r\n }\r\n }, [organization]);\r\n\r\n useEffect(() => {\r\n if (user) {\r\n initForm(setInputs, user);\r\n } \r\n }, [user]);\r\n\r\n useEffect(() => {\r\n setValid(validateInputs(inputs));\r\n }, [inputs]);\r\n\r\n const createInput = (inputName: EUser, options?: IInputOptions) => {\r\n const item = inputs[inputName];\r\n return updateInputHandler(inputName, value, setInputs)}\r\n inputName={inputName}\r\n showValidation={!isValid}\r\n />\r\n };\r\n\r\n const submitHandler = async (event: React.MouseEvent) => {\r\n event.preventDefault();\r\n const user = getInputData(inputs);\r\n\r\n if (Routes.isNew(id)) {\r\n await dispatch(actions.saveUser(user, organizationId));\r\n } else {\r\n user.id = id;\r\n await dispatch(actions.updateUser(user, organizationId));\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n {error && {t(error)}}\r\n \r\n

{Routes.isNew(id) ? t(ETranslation.TITLE_USER_NEW) : t(ETranslation.TITLE_USER)}

\r\n {loading\r\n ? \r\n : (\r\n <>\r\n \r\n {createInput(EUser.firstName)}\r\n {createInput(EUser.lastName)}\r\n \r\n {createInput(EUser.title)}\r\n {createInput(EUser.email, {\r\n disabled: Routes.isNotNew(id)\r\n })}\r\n {Routes.isNew(id) && createInput(EUser.password)}\r\n {createInput(EUser.phoneNumber)}\r\n {createInput(EUser.streetAddress)}\r\n \r\n {createInput(EUser.zip)}\r\n {createInput(EUser.city)}\r\n \r\n\r\n {createInput(EUser.allowLogin)}\r\n {isServiceProviderUser && createInput(EUser.sendNewOfferRequestSummary)}\r\n \r\n )\r\n }\r\n \r\n \r\n \r\n \r\n
\r\n \r\n );\r\n};\r\n\r\nexport default User;\r\n","import React from 'react';\r\nimport { Redirect, Route, RouteComponentProps, RouteProps } from 'react-router-dom';\r\nimport { ERoute } from './classes/Routes';\r\n\r\nimport { AuthUser } from './classes/AuthUser';\r\n\r\ninterface IProps extends RouteProps {\r\n user: AuthUser;\r\n component:\r\n | React.ComponentType>\r\n | React.ComponentType;\r\n}\r\n\r\nconst GuardedRoute: React.FC = ({ component, user, ...rest }) => (\r\n \r\n user.routes.includes(rest.path as ERoute) ? (\r\n React.createElement(component, props)\r\n ) : (\r\n \r\n )\r\n }\r\n />\r\n);\r\n\r\nexport default GuardedRoute;\r\n","import { format } from 'date-fns';\r\nimport React, { useContext, useEffect, useState } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { RouteComponentProps } from 'react-router-dom';\r\n\r\nimport { Routes } from '../../../classes/Routes';\r\nimport Alert from '../../../components/UI/Alert/Alert';\r\nimport Button, { EButtonColor, EButtonSize } from '../../../components/UI/Button/Button';\r\nimport ConfirmDialog from '../../../components/UI/ConfirmDialog/ConfirmDialog';\r\nimport Container from '../../../components/UI/Container/Container';\r\nimport Input, { EInputType, IInputField, IInputOptions } from '../../../components/UI/Input/Input';\r\nimport InputGroup from '../../../components/UI/InputGroup/InputGroup';\r\nimport ModalContext, { defaultModal, EModalSize } from '../../../components/UI/Modal/ModalContext';\r\nimport Spinner from '../../../components/UI/Spinner/Spinner';\r\nimport { EInputUpdateAction } from '../../../context/InputContext';\r\nimport { tagTypes } from '../../../data/select-data';\r\nimport { ETags } from '../../../enums';\r\nimport { useAuthUser } from '../../../hooks/useAuthUser';\r\nimport { useOrganizationOptions } from '../../../hooks/useOrganizationOptions';\r\nimport { useServiceOptions } from '../../../hooks/useServiceOptions';\r\nimport { IAppState, IContent, IContentState } from '../../../interfaces';\r\nimport { getInputData, initForm, updateInputHandler, validateInputs } from '../../../shared/utility';\r\nimport * as actions from '../../../store/actions';\r\nimport { ETranslation } from '../../../translations/translation-keys';\r\n\r\n\r\n\r\ninterface IMatch {\r\n id: string;\r\n}\r\n\r\ninterface IProps extends RouteComponentProps { }\r\n\r\nexport enum EContent {\r\n title = \"title\",\r\n shortContent = \"shortContent\",\r\n contentText = \"contentText\",\r\n publishDate = \"publishDate\",\r\n showPublishDate = \"showPublishDate\",\r\n tags = \"tags\",\r\n url = \"url\",\r\n operator = \"operator\",\r\n services = \"services\",\r\n}\r\n\r\nconst Content: React.FC = ({ match, history }) => {\r\n const dispatch = useDispatch();\r\n const { setModal } = useContext(ModalContext);\r\n \r\n const authUser = useAuthUser();\r\n const { loading, error, content, saveOrUpdateOk } = useSelector(state => state.content);\r\n const { t } = useTranslation();\r\n const { id } = match.params;\r\n\r\n const [inputs, setContentInputs] = useState({\r\n [EContent.operator]: {\r\n type: EInputType.select,\r\n labelTranslation: ETranslation.COMMON_OPERATOR_NAME,\r\n placeholderTranslation: ETranslation.COMMON_OPERATOR_NAME,\r\n value: \"\",\r\n options: [],\r\n validation: {\r\n required: authUser?.isPrimary,\r\n },\r\n },\r\n [EContent.services]: {\r\n type: EInputType.searchSelect,\r\n labelTranslation: ETranslation.COMMON_SERVICE,\r\n placeholderTranslation: ETranslation.COMMON_SERVICE,\r\n value: [],\r\n multiple: true,\r\n },\r\n [EContent.title]: {\r\n type: EInputType.text,\r\n labelTranslation: ETranslation.CONTENT_NAME,\r\n placeholderTranslation: ETranslation.CONTENT_NAME,\r\n value: \"\",\r\n validation: {\r\n required: true\r\n }\r\n },\r\n [EContent.shortContent]: {\r\n type: EInputType.text,\r\n labelTranslation: ETranslation.CONTENT_SHORTCONTENT,\r\n placeholderTranslation: ETranslation.CONTENT_SHORTCONTENT,\r\n value: \"\",\r\n validation: {\r\n required: true\r\n }\r\n },\r\n [EContent.contentText]: {\r\n type: EInputType.textarea,\r\n labelTranslation: ETranslation.CONTENT_CONTENTTEXT,\r\n placeholderTranslation: ETranslation.CONTENT_CONTENTTEXT,\r\n value: \"\",\r\n \r\n },\r\n [EContent.url]: {\r\n type: EInputType.text,\r\n labelTranslation: ETranslation.COMMON_WWW,\r\n placeholderTranslation: ETranslation.COMMON_WWW,\r\n value: \"\",\r\n validation: {\r\n required: true\r\n }\r\n },\r\n [EContent.tags]: {\r\n type: EInputType.searchSelect,\r\n labelTranslation: ETranslation.CONTENT_TAGS,\r\n placeholderTranslation: ETranslation.CONTENT_TAGS,\r\n value: [],\r\n options: tagTypes,\r\n multiple: true,\r\n },\r\n [EContent.publishDate]: {\r\n type: EInputType.date,\r\n labelTranslation: ETranslation.CONTENT_DATE,\r\n value: format(new Date(), \"yyyy-MM-dd\"),\r\n },\r\n [EContent.showPublishDate]: {\r\n type: EInputType.checkbox,\r\n labelTranslation: ETranslation.CONTENT_SHOWDATE,\r\n value: \"\",\r\n },\r\n \r\n });\r\n\r\n const { organizationOptions, organizationsLoading } = useOrganizationOptions({\r\n withBusinessId: true,\r\n withPlaceholder: true,\r\n });\r\n\r\n const [isValid, setIsValid] = useState(false);\r\n\r\n let operatorId;\r\n if (authUser?.isOperator) {\r\n operatorId = authUser.organization.id;\r\n } else {\r\n operatorId = inputs[EContent.operator].value as string;\r\n }\r\n\r\n const { serviceOptions, servicesLoading } = useServiceOptions({\r\n filterByOperatorId: true,\r\n operatorId\r\n });\r\n\r\n useEffect(() => {\r\n if (saveOrUpdateOk) {\r\n history.push(Routes.CONTENTS);\r\n }\r\n return () => {\r\n dispatch(actions.clearContent());\r\n };\r\n }, [dispatch, history, saveOrUpdateOk]);\r\n\r\n useEffect(() => {\r\n if (Routes.isNotNew(id)) {\r\n dispatch(actions.getContent(id));\r\n }\r\n }, [id, dispatch]);\r\n\r\n useEffect(() => {\r\n if (content) {\r\n let contentTags = content.tags;\r\n if ( contentTags ) {\r\n content.tags = contentTags.map(tag => {\r\n const tagType = tagTypes.find(t => t.value === tag);\r\n return { id: tagType?.value, name: tagType?.label };\r\n }) as unknown as ETags[];\r\n }\r\n initForm(setContentInputs, content);\r\n }\r\n }, [content]);\r\n\r\n useEffect(() => {\r\n setIsValid(validateInputs(inputs));\r\n }, [inputs]);\r\n\r\n const createInput = (inputName: EContent, options?: IInputOptions) => {\r\n const item = inputs[inputName];\r\n return (\r\n updateInputHandler(inputName, value, setContentInputs)}\r\n inputName={inputName}\r\n showValidation={!isValid}\r\n />\r\n );\r\n };\r\n\r\n const submitHandler = async (\r\n event: React.MouseEvent\r\n ) => {\r\n event.preventDefault();\r\n\r\n const content = getInputData(inputs);\r\n\r\n if (Routes.isNew(id)) {\r\n dispatch(actions.saveContent(content));\r\n } else {\r\n content.id = id;\r\n dispatch(actions.updateContent(content));\r\n }\r\n };\r\n\r\n const addAllServices = () => {\r\n setContentInputs((inputs) => {\r\n const newInputs = { ...inputs };\r\n newInputs[EContent.services].value = [...serviceOptions];\r\n return newInputs;\r\n });\r\n };\r\n\r\n const deleteContent = () =>\r\n setModal({\r\n isOpen: true,\r\n title: t(ETranslation.COMMON_REMOVE),\r\n size: EModalSize.SMALL,\r\n content: (\r\n {t(ETranslation.CONFIRM_DELETE_OFFER_REQUEST)}

}\r\n onConfirm={() => {\r\n dispatch(actions.deleteContent(id));\r\n history.goBack();\r\n setModal(defaultModal);\r\n }}\r\n onCancel={() => setModal(defaultModal)}\r\n />\r\n ),\r\n });\r\n\r\n\r\n return (\r\n <>\r\n {error && }\r\n \r\n

\r\n {Routes.isNew(id)\r\n ? t(ETranslation.TITLE_CONTENT_NEW)\r\n : t(ETranslation.TITLE_CONTENT)}\r\n

\r\n {loading ? (\r\n \r\n ) : content?.deleted ? (\r\n

{t(ETranslation.OFFER_REQUEST_DELETED)}

\r\n ) : (\r\n <>\r\n {authUser?.isPrimary &&\r\n createInput(EContent.operator, {\r\n options: organizationOptions,\r\n loading: organizationsLoading,\r\n })\r\n }\r\n \r\n {createInput(EContent.services, {\r\n options: serviceOptions,\r\n loading: servicesLoading,\r\n })}\r\n {serviceOptions && (\r\n \r\n {t(ETranslation.COMMON_ADD_ALL)}\r\n \r\n )}\r\n \r\n {createInput(EContent.title)}\r\n {createInput(EContent.shortContent)}\r\n {createInput(EContent.contentText)}\r\n {createInput(EContent.url)}\r\n {createInput(EContent.tags)}\r\n {createInput(EContent.publishDate)}\r\n {createInput(EContent.showPublishDate)}\r\n \r\n )}\r\n \r\n {!authUser?.isBasic && !content?.deleted && (\r\n \r\n )}\r\n \r\n {(authUser?.isPrimary || authUser?.isOperator) &&\r\n Routes.isNotNew(id) &&\r\n !content?.deleted && (\r\n \r\n )}\r\n \r\n
\r\n \r\n );\r\n};\r\n\r\nexport default Content;","import { faCheck, faChevronDown, faChevronUp } from '@fortawesome/free-solid-svg-icons';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport React, { CSSProperties, useEffect, useState } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport { useAuthUser } from '../../../hooks/useAuthUser';\r\nimport { IContent } from '../../../interfaces';\r\nimport { formatDateString } from '../../../shared/utility';\r\nimport { ETranslation } from '../../../translations/translation-keys';\r\nimport Table from '../../UI/Table/Table';\r\nimport classes from './ContentsTable.module.scss';\r\n\r\ninterface IProps {\r\n contents: Array\r\n statusProp?: string;\r\n onClick: (event: React.MouseEvent, id: string) => void;\r\n sortable?: boolean;\r\n containerClassName?: string;\r\n containerStyle?: CSSProperties;\r\n isPrimary?: boolean;\r\n}\r\n\r\nenum EContentsTableSortBy {\r\n CREATED = \"created\",\r\n TITLE = \"title\",\r\n}\r\n\r\nconst ContentTable: React.FC = ({ contents, statusProp, onClick, sortable, containerClassName, containerStyle, isPrimary }) => {\r\n const { t } = useTranslation();\r\n const authUser = useAuthUser();\r\n const [sortedContents, setSortedContents] = useState(contents);\r\n const [sort, setSort] = useState(EContentsTableSortBy.CREATED);\r\n // true = up, false = down\r\n const [sortDirection, setSortDirection] = useState(false);\r\n\r\n\r\n useEffect(() => {\r\n if (!sortable) return;\r\n // console.log(\"sort options changed to:\", sort, sortDirection);\r\n\r\n const newContents = [...sortedContents];\r\n\r\n if (sort && newContents) {\r\n if (sortDirection) {\r\n newContents.reverse();\r\n setSortedContents(newContents);\r\n return;\r\n }\r\n\r\n newContents.sort((a, b) => {\r\n if (a[sort] === \"\" || a[sort] === null || a[sort] === undefined) return 1;\r\n if (b[sort] === \"\" || b[sort] === null || b[sort] === undefined) return -1;\r\n if (a[sort] === b[sort]) return 0;\r\n if (sort === EContentsTableSortBy.CREATED) return (a[sort] || \"\") < (b[sort] || \"\") ? 1 : -1;\r\n return (a[sort] || \"\") > (b[sort] || \"\") ? 1 : -1;\r\n });\r\n setSortedContents(newContents);\r\n }\r\n\r\n // eslint-disable-next-line\r\n }, [sort, sortDirection, sortable]);\r\n\r\n\r\n const getChevron = () => {\r\n // console.log(sortDirection);\r\n return \r\n };\r\n\r\n const changeSortOrDirection = (sortBy: EContentsTableSortBy) => {\r\n if (sortBy === sort) {\r\n setSortDirection(!sortDirection);\r\n } else {\r\n setSort(sortBy);\r\n setSortDirection(false);\r\n }\r\n }\r\n\r\n const mapHeaders = () => {\r\n if (sortable) {\r\n return (\r\n <>\r\n {isPrimary ? {t(ETranslation.COMMON_OPERATOR_NAME)} : null}\r\n changeSortOrDirection(EContentsTableSortBy.CREATED)}>\r\n {t(ETranslation.COMMON_CREATED)}\r\n {sort === EContentsTableSortBy.CREATED && getChevron()}\r\n \r\n {t(ETranslation.COMMON_SERVICE)}\r\n changeSortOrDirection(EContentsTableSortBy.TITLE)}>\r\n {t(ETranslation.CONTENT_NAME)}\r\n {sort === EContentsTableSortBy.TITLE && getChevron()}\r\n \r\n {t(ETranslation.CONTENT_SHORTCONTENT)}\r\n {t(ETranslation.COMMON_WWW)}\r\n {t(ETranslation.CONTENT_TAGS)}\r\n {t(ETranslation.CONTENT_DATE)}\r\n {t(ETranslation.CONTENT_SHOWDATE)}\r\n \r\n )\r\n }\r\n return (\r\n <>\r\n {isPrimary ? {t(ETranslation.COMMON_OPERATOR_NAME)} : null}\r\n {t(ETranslation.COMMON_CREATED)}\r\n {t(ETranslation.COMMON_SERVICE)}\r\n {t(ETranslation.CONTENT_NAME)}\r\n {t(ETranslation.CONTENT_SHORTCONTENT)}\r\n {t(ETranslation.COMMON_WWW)}\r\n {t(ETranslation.CONTENT_TAGS)}\r\n {t(ETranslation.CONTENT_DATE)}\r\n {t(ETranslation.CONTENT_SHOWDATE)}\r\n \r\n \r\n )\r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n {statusProp}\r\n {mapHeaders()}\r\n \r\n \r\n \r\n {sortedContents.map(contents => (\r\n onClick(e, contents.id)}>\r\n {authUser?.isPrimary && }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n
{contents.operator?.name}{contents.created && formatDateString(contents.created)}{contents.services?.map(s => s.name).join(\", \")}{contents.title}{contents.shortContent}{contents.url}{contents.tags?.map(c => c).join(\", \")}{contents.publishDate && formatDateString(contents.publishDate)}{contents.showPublishDate ? : null}
\r\n
\r\n );\r\n};\r\n\r\nexport default ContentTable;\r\n","import { faPlus } from \"@fortawesome/free-solid-svg-icons\";\r\nimport React, { useEffect } from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { RouteComponentProps } from \"react-router-dom\";\r\nimport Alert from \"../../components/UI/Alert/Alert\";\r\nimport Button from \"../../components/UI/Button/Button\";\r\nimport Container from \"../../components/UI/Container/Container\";\r\nimport Spinner from \"../../components/UI/Spinner/Spinner\";\r\nimport { IAppState, IContentState } from \"../../interfaces\";\r\nimport { ETranslation } from \"../../translations/translation-keys\";\r\nimport { linkHandler } from \"../../shared/utility\";\r\nimport { useAuthUser } from \"../../hooks/useAuthUser\";\r\nimport { Routes, ERouteStaticParams } from \"../../classes/Routes\";\r\nimport * as actions from '../../store/actions';\r\nimport ContentTable from \"../../components/Content/ContentTable/ContentsTable\";\r\n\r\ninterface IProps extends RouteComponentProps {\r\n contentId?: number;\r\n}\r\n\r\nconst Contents: React.FC = ({ history }) => {\r\n const dispatch = useDispatch();\r\n const { t } = useTranslation();\r\n const authUser = useAuthUser();\r\n const { loading, error, contents } = useSelector(state => state.content);\r\n\r\n useEffect(() => {\r\n dispatch(actions.listContents());\r\n }, [dispatch]);\r\n\r\n const showContent = (event: React.MouseEvent, id: string) => {\r\n linkHandler(event, Routes.CONTENT(id), history);\r\n };\r\n\r\n return (\r\n \r\n {error && {t(error)}}\r\n

{t(ETranslation.TITLE_CONTENT)}

\r\n {(authUser?.isPrimary || authUser?.isOperator) && (\r\n \r\n history.push(Routes.CONTENT(ERouteStaticParams.new))\r\n }\r\n icon={faPlus}\r\n style={{ marginBottom: \"1rem\" }}\r\n >\r\n {t(ETranslation.CONTENTS_ADD_NEW)}\r\n \r\n )}\r\n {loading ? (\r\n \r\n ) : contents ? (\r\n \r\n ) : (\r\n

\r\n
\r\n {t(ETranslation.NO_CONTENTS)}\r\n

\r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default Contents;","import { useDispatch } from 'react-redux';\r\nimport { IOrganization } from './../interfaces/domain';\r\nimport { useCallback } from 'react';\r\nimport { ETranslation } from './../translations/translation-keys';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { IAppState, IServiceProviderState, IAuthState } from './../interfaces/state';\r\nimport { useSelector } from 'react-redux';\r\nimport { IOption } from '../components/UI/Input/Input';\r\nimport { useEffect, useState } from 'react';\r\nimport { createOptions } from '../shared/option-utils';\r\n\r\nimport * as actions from '../store/actions';\r\n\r\nconst defaultParams = {\r\n withPlaceholder: false,\r\n}\r\n\r\nexport const useServiceProviderOptions = ({ withPlaceholder } = defaultParams) => {\r\n const { authUser } = useSelector(state => state.auth);\r\n const { t } = useTranslation()\r\n const [serviceProviderOptions, setServiceProviderOptions] = useState([])\r\n const dispatch = useDispatch();\r\n\r\n const [tryFetch, setTryFetch] = useState(false);\r\n\r\n const { serviceProviders, loading } = useSelector((state) => state.serviceProvider);\r\n\r\n useEffect(() => {\r\n if (authUser) {\r\n setTryFetch(authUser.isPrimary || authUser.isOperator);\r\n }\r\n }, [authUser]);\r\n\r\n useEffect(() => {\r\n if (tryFetch && !serviceProviders) {\r\n dispatch(actions.listServiceProviders());\r\n setTryFetch(false);\r\n }\r\n }, [dispatch, serviceProviders, tryFetch]);\r\n\r\n const createLabel = useCallback((serviceProvider: IOrganization) => {\r\n let labelArray = [serviceProvider.name || serviceProvider.id];\r\n return labelArray.join(' ');\r\n }, []);\r\n\r\n useEffect(() => {\r\n let placeholder;\r\n if(withPlaceholder) {\r\n placeholder = t(ETranslation.SELECT_SERVICE_PROVIDER_PLACEHOLDER);\r\n }\r\n setServiceProviderOptions(serviceProviders ? createOptions(serviceProviders, createLabel, placeholder) : []);\r\n }, [serviceProviders, t, withPlaceholder, createLabel]);\r\n\r\n return { serviceProviderOptions, serviceProvidersLoading: loading };\r\n\r\n}","import React, { useEffect, useState } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useSelector } from 'react-redux';\r\nimport { useServiceProviderOptions } from '../../../hooks/useServiceProviderOptions';\r\n\r\nimport { IAppState, IAuthState } from '../../../interfaces';\r\nimport { getInputData, initForm, updateInputHandler } from '../../../shared/utility';\r\nimport { IOfferRequestAccessSearchOptions } from '../../../store/actions/offerRequestActions';\r\nimport { ETranslation } from '../../../translations/translation-keys';\r\nimport Button from '../../UI/Button/Button';\r\nimport Input, { EInputType, IInputField, IInputOptions } from '../../UI/Input/Input';\r\nimport InputGroup from '../../UI/InputGroup/InputGroup';\r\nimport * as dateFns from 'date-fns';\r\nimport { ESearchStorageKey } from '../../../enums';\r\n\r\ninterface IProps {\r\n onSearch: (search: IOfferRequestAccessSearchOptions) => void;\r\n};\r\n\r\nenum EInputs {\r\n organizationId = 'organizationId',\r\n createdStart = 'createdStart',\r\n createdEnd = 'createdEnd'\r\n}\r\n\r\nconst defaultCreatedStartDate = dateFns.format(new Date(new Date().getFullYear(), new Date().getMonth() - 1, 1), 'yyyy-MM-dd');\r\n\r\nconst OfferRequestAccessSearch: React.FC = ({ onSearch }) => {\r\n \r\n const { t } = useTranslation();\r\n\r\n const [inputs, setInputs] = useState({\r\n [EInputs.organizationId]: {\r\n type: EInputType.select,\r\n labelTranslation: ETranslation.COMMON_SERVICE_PROVIDER_NAME,\r\n placeholderTranslation: ETranslation.COMMON_SERVICE_PROVIDER_NAME,\r\n value: \"\",\r\n options: []\r\n },\r\n [EInputs.createdStart]: {\r\n type: EInputType.date,\r\n labelTranslation: ETranslation.OFFER_REQUEST_ACCESS_CREATED_START,\r\n value: \"\",\r\n },\r\n [EInputs.createdEnd]: {\r\n type: EInputType.date,\r\n labelTranslation: ETranslation.OFFER_REQUEST_ACCESS_CREATED_END,\r\n value: \"\",\r\n },\r\n });\r\n\r\n const { serviceProviderOptions } = useServiceProviderOptions({ withPlaceholder: true });\r\n\r\n const { authUser } = useSelector((state) => state.auth);\r\n\r\n useEffect(() => {\r\n const storageData = localStorage.getItem(ESearchStorageKey.OFFER_REQUEST_ACCESS_SEARCH);\r\n let inputsData: IOfferRequestAccessSearchOptions = { \r\n organizationId: '', \r\n createdStart: defaultCreatedStartDate,\r\n createdEnd: ''\r\n };\r\n if (storageData) {\r\n inputsData = JSON.parse(storageData);\r\n }\r\n initForm(setInputs, inputsData);\r\n onSearch(inputsData);\r\n }, [onSearch]);\r\n\r\n const createInput = (inputName: EInputs, options?: IInputOptions) => {\r\n const item = inputs[inputName];\r\n return (\r\n updateInputHandler(inputName, value, setInputs)}\r\n inputName={inputName}\r\n />\r\n );\r\n };\r\n\r\n const searchHandler = () => {\r\n const data = getInputData(inputs);\r\n localStorage.setItem(ESearchStorageKey.OFFER_REQUEST_ACCESS_SEARCH, JSON.stringify(data));\r\n onSearch(data);\r\n }\r\n\r\n return (\r\n \r\n {createInput(EInputs.organizationId, {\r\n options: serviceProviderOptions\r\n })}\r\n {createInput(EInputs.createdStart)}\r\n {createInput(EInputs.createdEnd)}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default OfferRequestAccessSearch;","import { faChevronDown, faChevronUp } from '@fortawesome/free-solid-svg-icons';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport React, { CSSProperties, useEffect, useState } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport { IOfferRequestAccess } from '../../../interfaces';\r\nimport { formatDateString } from '../../../shared/utility';\r\nimport { ETranslation } from '../../../translations/translation-keys';\r\nimport Table from '../../UI/Table/Table';\r\nimport classes from './OfferRequestAccessTable.module.scss';\r\n\r\ninterface IProps {\r\n offerRequestAccess: Array\r\n statusProp?: string;\r\n onClick: (event: React.MouseEvent, id: string) => void;\r\n sortable?: boolean;\r\n containerClassName?: string;\r\n containerStyle?: CSSProperties;\r\n isPrimary?: boolean;\r\n}\r\n\r\nenum EOfferRequestAccessTableSortBy {\r\n CREATED = \"created\",\r\n OFFERREQUESTCREATED = \"offerRequestCreated\",\r\n SERVICENAME = \"serviceName\",\r\n USERNAME = \"userName\",\r\n ORGANIZATIONNAME = \"organizationName\"\r\n}\r\n\r\nconst OfferRequestAccessTable: React.FC = ({ offerRequestAccess, statusProp, onClick, sortable, containerClassName, containerStyle, isPrimary }) => {\r\n const { t } = useTranslation();\r\n\r\n const [sortedOfferRequestAccess, setSortedOfferRequestAccess] = useState(offerRequestAccess);\r\n const [sort, setSort] = useState(EOfferRequestAccessTableSortBy.CREATED);\r\n // true = up, false = down\r\n const [sortDirection, setSortDirection] = useState(false);\r\n\r\n\r\n useEffect(() => {\r\n if (!sortable) return;\r\n\r\n const newAccess = [...sortedOfferRequestAccess];\r\n\r\n if (sort && newAccess) {\r\n if (sortDirection) {\r\n newAccess.reverse();\r\n setSortedOfferRequestAccess(newAccess);\r\n return;\r\n }\r\n\r\n newAccess.sort((a, b) => {\r\n if (a[sort] === \"\" || a[sort] === null || a[sort] === undefined) return 1;\r\n if (b[sort] === \"\" || b[sort] === null || b[sort] === undefined) return -1;\r\n if (a[sort] === b[sort]) return 0;\r\n if (sort === EOfferRequestAccessTableSortBy.CREATED) return (a[sort] || \"\") < (b[sort] || \"\") ? 1 : -1;\r\n return (a[sort] || \"\") > (b[sort] || \"\") ? 1 : -1;\r\n });\r\n setSortedOfferRequestAccess(newAccess);\r\n }\r\n\r\n // eslint-disable-next-line\r\n }, [sort, sortDirection, sortable]);\r\n\r\n\r\n const getChevron = () => {\r\n return \r\n };\r\n\r\n const changeSortOrDirection = (sortBy: EOfferRequestAccessTableSortBy) => {\r\n if (sortBy === sort) {\r\n setSortDirection(!sortDirection);\r\n } else {\r\n setSort(sortBy);\r\n setSortDirection(false);\r\n }\r\n }\r\n\r\n const mapHeaders = () => {\r\n if (sortable) {\r\n return (\r\n <>\r\n changeSortOrDirection(EOfferRequestAccessTableSortBy.CREATED)}>\r\n {t(ETranslation.OFFER_REQUEST_ACCESS_CREATED)}\r\n {sort === EOfferRequestAccessTableSortBy.CREATED && getChevron()}\r\n \r\n \r\n {t(ETranslation.OFFER_REQUEST_ACCESS_OFFER_REQUEST)}\r\n \r\n changeSortOrDirection(EOfferRequestAccessTableSortBy.OFFERREQUESTCREATED)}>\r\n {t(ETranslation.OFFER_REQUEST_ACCESS_OFFER_REQUEST_CREATED)}\r\n {sort === EOfferRequestAccessTableSortBy.OFFERREQUESTCREATED && getChevron()}\r\n \r\n changeSortOrDirection(EOfferRequestAccessTableSortBy.SERVICENAME)} >\r\n {t(ETranslation.SERVICE_NAME)}\r\n {sort === EOfferRequestAccessTableSortBy.SERVICENAME && getChevron()}\r\n \r\n changeSortOrDirection(EOfferRequestAccessTableSortBy.USERNAME)} >\r\n {t(ETranslation.OFFER_REQUEST_ACCESS_USERNAME)}\r\n {sort === EOfferRequestAccessTableSortBy.USERNAME && getChevron()}\r\n \r\n changeSortOrDirection(EOfferRequestAccessTableSortBy.ORGANIZATIONNAME)} >\r\n {t(ETranslation.SERVICEPROVIDER_COMPANY)}\r\n {sort === EOfferRequestAccessTableSortBy.ORGANIZATIONNAME && getChevron()}\r\n \r\n \r\n )\r\n }\r\n return (\r\n <>\r\n {t(ETranslation.OFFER_REQUEST_ACCESS_CREATED)}\r\n {t(ETranslation.OFFER_REQUEST_ACCESS_OFFER_REQUEST)}\r\n {t(ETranslation.OFFER_REQUEST_ACCESS_OFFER_REQUEST_CREATED)}\r\n {t(ETranslation.SERVICE_NAME)}\r\n {t(ETranslation.OFFER_REQUEST_ACCESS_USERNAME)}\r\n {t(ETranslation.SERVICEPROVIDER_COMPANY)}\r\n \r\n )\r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n {statusProp}\r\n {mapHeaders()}\r\n \r\n \r\n \r\n {sortedOfferRequestAccess.map(access => {\r\n return (\r\n onClick(e, access.offerRequestId)}>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n })}\r\n \r\n
{access.created && formatDateString(access.created)}{access.offerRequestUserName}{access.offerRequestCreated && formatDateString(access.offerRequestCreated)}{access.serviceName}{access.user?.name}{access.user?.organization?.name}
\r\n
\r\n );\r\n};\r\n\r\nexport default OfferRequestAccessTable;","import React, { useCallback } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { RouteComponentProps } from 'react-router-dom';\r\n\r\nimport { Routes } from '../../classes/Routes';\r\nimport OfferRequestAccessSearch from '../../components/OfferRequestAccess/OfferRequestAccessSearch/OfferRequestAccessSearch';\r\nimport OfferRequestAccessTable from '../../components/OfferRequestAccess/OfferRequestAccessTable/OfferRequestAccessTable';\r\nimport Alert from '../../components/UI/Alert/Alert';\r\nimport Container from '../../components/UI/Container/Container';\r\nimport Spinner from '../../components/UI/Spinner/Spinner';\r\nimport { useAuthUser } from '../../hooks/useAuthUser';\r\nimport { IAppState, IOfferRequestState } from '../../interfaces';\r\nimport { linkHandler } from '../../shared/utility';\r\nimport * as actions from '../../store/actions';\r\nimport { ETranslation } from '../../translations/translation-keys';\r\n\r\ninterface IProps extends RouteComponentProps {\r\n offerRequestAccessId?: number;\r\n}\r\n\r\nconst OfferRequestAccess: React.FC = ({ history }) => {\r\n const dispatch = useDispatch();\r\n const { t } = useTranslation();\r\n\r\n const authUser = useAuthUser();\r\n const { loading, error, offerRequestAccess} = useSelector(state => state.offerRequest);\r\n\r\n const showOffer = (event: React.MouseEvent, id: string) => {\r\n linkHandler(event, Routes.OFFER_REQUEST(id), history);\r\n }\r\n\r\n const searchHandler = useCallback((search) => {\r\n dispatch(actions.listOfferRequestAccess(search));\r\n }, [dispatch]);\r\n\r\n return (\r\n \r\n {error && {t(error)}}\r\n

{t(ETranslation.OFFER_REQUEST_ACCESS)}

\r\n \r\n {loading ? (\r\n \r\n ) : offerRequestAccess ? (\r\n \r\n ) : (\r\n

\r\n
\r\n {t(ETranslation.OFFER_REQUEST_ACCESS_NO_OFFER_REQUESTS)}\r\n

\r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default OfferRequestAccess;","import React, { useEffect, useState } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { getInputData, initForm, updateInputHandler } from '../../../shared/utility';\r\nimport { ILogItemSearchOptions } from '../../../store/actions/logItemActions';\r\nimport { ETranslation } from '../../../translations/translation-keys';\r\nimport Button from '../../UI/Button/Button';\r\nimport Input, { EInputType, IInputField, IInputOptions } from '../../UI/Input/Input';\r\nimport InputGroup from '../../UI/InputGroup/InputGroup';\r\nimport { ESearchStorageKey } from '../../../enums';\r\nimport { events } from '../../../data/select-data';\r\nimport * as dateFns from 'date-fns';\r\nimport { useServiceProviderOptions } from '../../../hooks/useServiceProviderOptions';\r\nimport { useOrganizationOptions } from '../../../hooks/useOrganizationOptions';\r\nimport './LogItemsSearch.scss';\r\n\r\n\r\ninterface IProps {\r\n onSearch: (search: ILogItemSearchOptions) => void;\r\n};\r\n\r\nenum EInputs {\r\n operatorId = \"operatorId\",\r\n serviceProviderId = \"serviceProviderId\",\r\n event = \"event\",\r\n createdStart = \"createdStart\",\r\n createdEnd = \"createdEnd\"\r\n}\r\n\r\nconst defaultCreatedStartDate = dateFns.format(dateFns.addDays(new Date(), -7), 'yyyy-MM-dd');\r\n\r\nconst LogItemsSearch: React.FC = ({ onSearch }) => {\r\n\r\n const { t } = useTranslation();\r\n\r\n const { organizationOptions } = useOrganizationOptions({ withPlaceholder: true, withBusinessId: false });\r\n const { serviceProviderOptions } = useServiceProviderOptions({ withPlaceholder: true });\r\n\r\n const [inputs, setInputs] = useState({\r\n [EInputs.operatorId]: {\r\n type: EInputType.select,\r\n labelTranslation: ETranslation.COMMON_OPERATOR_NAME,\r\n placeholderTranslation: ETranslation.COMMON_OPERATOR_NAME,\r\n value: \"\",\r\n options: []\r\n },\r\n [EInputs.serviceProviderId]: {\r\n type: EInputType.select,\r\n labelTranslation: ETranslation.COMMON_SERVICE_PROVIDER_NAME,\r\n placeholderTranslation: ETranslation.COMMON_SERVICE_PROVIDER_NAME,\r\n value: \"\",\r\n options: []\r\n },\r\n [EInputs.event]: {\r\n type: EInputType.select,\r\n labelTranslation: ETranslation.LOG_ITEM_EVENT,\r\n placeholderTranslation: ETranslation.LOG_ITEM_EVENT,\r\n options: events,\r\n value: \"\",\r\n },\r\n [EInputs.createdStart]: {\r\n type: EInputType.datepicker,\r\n labelTranslation: ETranslation.LOG_ITEM_EVENT_CREATED_START,\r\n value: ''\r\n },\r\n [EInputs.createdEnd]: {\r\n type: EInputType.datepicker,\r\n labelTranslation: ETranslation.LOG_ITEM_EVENT_CREATED_END,\r\n value: \"\",\r\n },\r\n });\r\n\r\n useEffect(() => {\r\n const storageData = localStorage.getItem(ESearchStorageKey.LOG_ITEMS_SEARCH);\r\n let inputsData: ILogItemSearchOptions = { \r\n operatorId: '', \r\n serviceProviderId: '', \r\n event: '',\r\n createdStart: defaultCreatedStartDate,\r\n createdEnd: ''\r\n };\r\n if (storageData) {\r\n inputsData = JSON.parse(storageData);\r\n }\r\n initForm(setInputs, inputsData);\r\n onSearch(inputsData);\r\n }, [onSearch]);\r\n\r\n const createInput = (inputName: EInputs, options?: IInputOptions) => {\r\n const item = inputs[inputName];\r\n return (\r\n updateInputHandler(inputName, value, setInputs)}\r\n inputName={inputName}\r\n />\r\n );\r\n };\r\n\r\n const searchHandler = () => {\r\n const data = getInputData(inputs);\r\n localStorage.setItem(ESearchStorageKey.LOG_ITEMS_SEARCH, JSON.stringify(data));\r\n onSearch(data);\r\n }\r\n\r\n return (\r\n \r\n {createInput(EInputs.operatorId, {\r\n options: organizationOptions\r\n })}\r\n {createInput(EInputs.serviceProviderId, {\r\n options: serviceProviderOptions\r\n })}\r\n {createInput(EInputs.event)}\r\n {createInput(EInputs.createdStart)}\r\n {createInput(EInputs.createdEnd)}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default LogItemsSearch;","import { faChevronDown, faChevronUp } from '@fortawesome/free-solid-svg-icons';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport React, { CSSProperties, useEffect, useState } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport { ILogItem } from '../../../interfaces';\r\nimport { formatDateString } from '../../../shared/utility';\r\nimport { ETranslation } from '../../../translations/translation-keys';\r\nimport Table from '../../UI/Table/Table';\r\nimport classes from './LogItemsTable.module.scss';\r\n\r\ninterface IProps {\r\n logItems: Array\r\n statusProp?: string;\r\n sortable?: boolean;\r\n containerClassName?: string;\r\n containerStyle?: CSSProperties;\r\n}\r\n\r\nenum ELogItemAccessTableSortBy {\r\n CREATED = \"created\",\r\n EVENT = \"event\",\r\n USERAGENT = \"userAgent\"\r\n}\r\n\r\nconst LogItemTable: React.FC = ({ logItems, statusProp, sortable, containerClassName, containerStyle }) => {\r\n const { t } = useTranslation();\r\n\r\n const [sortedLogItems, setSortedLogItems] = useState(logItems);\r\n const [sort, setSort] = useState(ELogItemAccessTableSortBy.CREATED);\r\n // true = up, false = down\r\n const [sortDirection, setSortDirection] = useState(false);\r\n\r\n\r\n useEffect(() => {\r\n if (!sortable) return;\r\n\r\n const newLogItem = [...sortedLogItems];\r\n\r\n if (sort && newLogItem) {\r\n if (sortDirection) {\r\n newLogItem.reverse();\r\n setSortedLogItems(newLogItem);\r\n return;\r\n }\r\n\r\n newLogItem.sort((a, b) => {\r\n if (a[sort] === \"\" || a[sort] === null || a[sort] === undefined) return 1;\r\n if (b[sort] === \"\" || b[sort] === null || b[sort] === undefined) return -1;\r\n if (a[sort] === b[sort]) return 0;\r\n if (sort === ELogItemAccessTableSortBy.CREATED) return (a[sort] || \"\") < (b[sort] || \"\") ? 1 : -1;\r\n return (a[sort] || \"\") > (b[sort] || \"\") ? 1 : -1;\r\n });\r\n setSortedLogItems(newLogItem);\r\n }\r\n\r\n // eslint-disable-next-line\r\n }, [sort, sortDirection, sortable]);\r\n\r\n\r\n const getChevron = () => {\r\n return \r\n };\r\n\r\n const changeSortOrDirection = (sortBy: ELogItemAccessTableSortBy) => {\r\n if (sortBy === sort) {\r\n setSortDirection(!sortDirection);\r\n } else {\r\n setSort(sortBy);\r\n setSortDirection(false);\r\n }\r\n }\r\n\r\n const mapHeaders = () => {\r\n if (sortable) {\r\n return (\r\n <>\r\n changeSortOrDirection(ELogItemAccessTableSortBy.CREATED)}>\r\n {t(ETranslation.COMMON_CREATED)}\r\n {sort === ELogItemAccessTableSortBy.CREATED && getChevron()}\r\n \r\n {t(ETranslation.COMMON_OPERATOR_NAME)}\r\n {t(ETranslation.COMMON_SERVICE_PROVIDER_NAME)}\r\n \r\n {t(ETranslation.OFFER_REQUEST_ACCESS_USERNAME)}\r\n \r\n changeSortOrDirection(ELogItemAccessTableSortBy.EVENT)} >\r\n {t(ETranslation.LOG_ITEM_EVENT)}\r\n {sort === ELogItemAccessTableSortBy.EVENT && getChevron()}\r\n \r\n changeSortOrDirection(ELogItemAccessTableSortBy.USERAGENT)}>\r\n {t(ETranslation.LOG_ITEM_USER_AGENT)}\r\n {sort === ELogItemAccessTableSortBy.EVENT && getChevron()}\r\n \r\n \r\n )\r\n }\r\n return (\r\n <>\r\n {t(ETranslation.COMMON_CREATED)}\r\n {t(ETranslation.COMMON_OPERATOR_NAME)}\r\n {t(ETranslation.COMMON_SERVICE_PROVIDER_NAME)}\r\n {t(ETranslation.OFFER_REQUEST_ACCESS_USERNAME)}\r\n {t(ETranslation.LOG_ITEM_EVENT)}\r\n {t(ETranslation.LOG_ITEM_USER_AGENT)}\r\n \r\n )\r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n {statusProp}\r\n {mapHeaders()}\r\n \r\n \r\n \r\n {sortedLogItems.map(logItem => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n })}\r\n \r\n
{logItem.created && formatDateString(logItem.created)}{logItem.user?.organization?.parent?.name}{logItem.user?.organization?.name}{logItem.user?.name}{logItem.event}{logItem.userAgent}
\r\n
\r\n );\r\n};\r\n\r\nexport default LogItemTable;","import React, { useCallback } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { RouteComponentProps } from 'react-router-dom';\r\n\r\nimport LogItemsSearch from '../../components/LogItems/LogItemsSearch/LogItemsSearch';\r\nimport LogItemsTable from '../../components/LogItems/LogItemsTable/LogItemsTable';\r\nimport Alert from '../../components/UI/Alert/Alert';\r\nimport Container from '../../components/UI/Container/Container';\r\nimport Spinner from '../../components/UI/Spinner/Spinner';\r\nimport { IAppState, ILogItemState } from '../../interfaces';\r\nimport * as actions from '../../store/actions';\r\nimport { ETranslation } from '../../translations/translation-keys';\r\n\r\ninterface IProps extends RouteComponentProps {\r\n}\r\n\r\nconst LogItems: React.FC = () => {\r\n const dispatch = useDispatch();\r\n const { t } = useTranslation();\r\n\r\n const { loading, error, logItems } = useSelector(state => state.logItem);\r\n\r\n const searchHandler = useCallback((search) => {\r\n dispatch(actions.listLogItems(search));\r\n }, [dispatch]);\r\n\r\n return (\r\n \r\n {error && {t(error)}}\r\n

{t(ETranslation.LOG_ITEMS)}

\r\n \r\n {loading ? (\r\n \r\n ) : logItems ? (\r\n \r\n ) : (\r\n

\r\n
\r\n {t(ETranslation.LOG_ITEM_NO_LOG_ITEMS)}\r\n

\r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default LogItems;","import React, { useContext, useEffect, useState } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\n\r\nimport { IAppState, IUserState } from '../../interfaces';\r\nimport * as actions from '../../store/actions';\r\nimport { ETranslation } from '../../translations/translation-keys';\r\nimport Alert from '../UI/Alert/Alert';\r\nimport Button from '../UI/Button/Button';\r\nimport ModalBody from '../UI/Modal/ModalBody/ModalBody';\r\nimport ModalContext from '../UI/Modal/ModalContext';\r\nimport ModalFooter from '../UI/Modal/ModalFooter/ModalFooter';\r\nimport SingleCheckbox from '../UI/SingleCheckbox/SingleCheckbox';\r\nimport Spinner from '../UI/Spinner/Spinner';\r\n\r\ninterface IProps {}\r\n\r\nconst TermsOfUseModal: React.FC = () => {\r\n const [isTermsOfUseAccepted, setIsTermsOfUseAccapted] = useState(false);\r\n\r\n const { closeModal } = useContext(ModalContext);\r\n\r\n const { t } = useTranslation();\r\n\r\n const { termsOfUseAccepted, termsOfUseError, termsOfUseLoading } =\r\n useSelector((state) => state.users);\r\n\r\n useEffect(() => {\r\n if (termsOfUseAccepted) {\r\n closeModal();\r\n }\r\n }, [termsOfUseAccepted, closeModal]);\r\n\r\n const dispatch = useDispatch();\r\n\r\n const acceptHandler = () => {\r\n dispatch(actions.acceptTermsOfUse());\r\n };\r\n\r\n return (\r\n <>\r\n \r\n {termsOfUseLoading ? (\r\n \r\n ) : (\r\n <>\r\n

{t(ETranslation.TERMS_BINDING)}

\r\n
  • {t(ETranslation.TERMS_LIST_1)}
  • \r\n
  • {t(ETranslation.TERMS_LIST_2)}
  • \r\n
  • {t(ETranslation.TERMS_LIST_3)}
\r\n

{t(ETranslation.TERMS_READ_MORE)} {t(ETranslation.TERMS_TERMS)}

\r\n {termsOfUseError && {termsOfUseError}}\r\n \r\n \r\n )}\r\n
\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default TermsOfUseModal;\r\n","import React, { useEffect, useState } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { Redirect, Route, Switch } from 'react-router';\r\n\r\nimport { ERoute } from './classes/Routes';\r\nimport Layout from './components/Layout/Layout';\r\nimport SplashScreen from './components/SplashScreen/SplashScreen';\r\nimport Modal from './components/UI/Modal/Modal';\r\nimport ModalContext, { defaultModal, EModalSize, IModal } from './components/UI/Modal/ModalContext';\r\nimport Admin from './containers/Admin/Admin';\r\nimport SubscriptionExpired from './containers/SubscriptionExpired/SubscriptionExpired';\r\nimport Auth from './containers/Auth/Auth';\r\nimport Feedback from './containers/Feedbacks/Feedback/Feedback';\r\nimport Feedbacks from './containers/Feedbacks/Feedbacks';\r\nimport Location from './containers/Locations/Location/Location';\r\nimport Locations from './containers/Locations/Locations';\r\nimport CustomerOfferRequest from './containers/OfferRequests/OfferRequest/CustomerOfferRequest';\r\nimport OfferRequest from './containers/OfferRequests/OfferRequest/OfferRequest';\r\nimport OfferRequests from './containers/OfferRequests/OfferRequests';\r\nimport Operator from './containers/Operators/Operator/Operator';\r\nimport Operators from './containers/Operators/Operators';\r\nimport Organization from './containers/Organization/Organization';\r\nimport ServiceProvider from './containers/ServiceProviders/ServiceProvider/ServiceProvider';\r\nimport ServiceProviders from './containers/ServiceProviders/ServiceProviders';\r\nimport Service from './containers/Services/Service/Service';\r\nimport Services from './containers/Services/Services';\r\nimport Settings from './containers/Settings/Settings';\r\nimport User from './containers/Users/User/User';\r\nimport Users from './containers/Users/Users';\r\nimport firebase from './firebase';\r\nimport GuardedRoute from './GuardedRoute';\r\nimport { IAppState, IAuthState } from './interfaces';\r\nimport * as actions from './store/actions';\r\nimport Content from './containers/Contents/Content/Content';\r\nimport Contents from './containers/Contents/Contents';\r\nimport OfferRequestAccess from './containers/OfferRequestAccess/OfferRequestAccess';\r\nimport LogItems from './containers/LogItem/LogItems';\r\nimport TermsOfUseModal from './components/TermsOfUseModal/TermsOfUseModal';\r\nimport i18n from './i18n';\r\nimport { ETranslation } from './translations/translation-keys';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nconst App: React.FC = () => {\r\n const [modal, setModal] = useState(defaultModal);\r\n const [loading, setLoading] = useState(true);\r\n const [showSplash, setShowSplash] = useState(true);\r\n\r\n const { t } = useTranslation();\r\n\r\n const dispatch = useDispatch();\r\n\r\n const { authUser, error } = useSelector((state) => state.auth);\r\n\r\n useEffect(() => {\r\n if (authUser && loading) { // When loading is true it's first time this is run, this should be done only once.\r\n setLoading(false);\r\n if(authUser.isPrimary) dispatch(actions.listOrganizations());\r\n if(authUser.isPrimary || authUser.isOperator) dispatch(actions.listLocations());\r\n if(authUser.isPrimary || authUser.isOperator || authUser.isBasic) dispatch(actions.listServices());\r\n if(authUser?.preferredLanguage != null) {\r\n i18n.changeLanguage(authUser?.preferredLanguage)\r\n }\r\n }\r\n }, [dispatch, authUser, loading]); \r\n\r\n useEffect(() => {\r\n if (authUser && authUser.isServiceProvider && !authUser.isTermsOfUseAccepted) {\r\n setModal({\r\n isOpen: true,\r\n content: ,\r\n size: EModalSize.MEDIUM,\r\n disabled: true,\r\n title: t(ETranslation.TERMS_TITLE)\r\n });\r\n }\r\n }, [t, authUser]);\r\n\r\n useEffect(() => {\r\n if (error) {\r\n setLoading(false);\r\n }\r\n }, [error])\r\n\r\n useEffect(() => {\r\n if(!loading) {\r\n setTimeout(() => {\r\n setShowSplash(false);\r\n }, 200);\r\n }\r\n }, [loading])\r\n\r\n useEffect(() => {\r\n firebase.auth().onIdTokenChanged(fbUser => {\r\n if (fbUser) {\r\n dispatch(actions.getCurrentUser());\r\n } else {\r\n setLoading(false);\r\n }\r\n });\r\n }, [dispatch]);\r\n\r\n return (\r\n <>\r\n {showSplash && }\r\n dispatch(actions.logout())}>\r\n setModal(defaultModal),\r\n }}\r\n >\r\n \r\n\r\n {loading ? null : authUser ? (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n \r\n \r\n \r\n ) \r\n};\r\n\r\nexport default App;\r\n","import { IAuthAction, IAuthState } from '../../interfaces';\r\nimport { updateObject } from '../../shared/utility';\r\nimport { ActionTypes } from '../actions/actionTypes';\r\n\r\nconst initialState: IAuthState = {\r\n authUser: null,\r\n loading: false,\r\n error: null,\r\n customToken: null\r\n};\r\n\r\nconst authStart = (state: IAuthState, action: IAuthAction): IAuthState => {\r\n return updateObject(state, {\r\n error: null,\r\n loading: true,\r\n authUser: null,\r\n });\r\n};\r\n\r\nconst authSuccess = (state: IAuthState, action: IAuthAction): IAuthState => {\r\n return updateObject(state, {\r\n authUser: action.user,\r\n error: null,\r\n loading: false,\r\n });\r\n};\r\n\r\nconst authFail = (state: IAuthState, action: IAuthAction): IAuthState => {\r\n return updateObject(state, {\r\n error: action.error,\r\n loading: false,\r\n });\r\n};\r\n\r\nconst logoutStart = (state: IAuthState, action: IAuthAction): IAuthState => {\r\n return updateObject(state, { error: null, loading: true });\r\n};\r\n\r\nconst logoutSuccess = (state: IAuthState, action: IAuthAction): IAuthState => {\r\n return updateObject(state, {\r\n authUser: null,\r\n error: null,\r\n loading: false,\r\n });\r\n};\r\n\r\nconst logoutFail = (state: IAuthState, action: IAuthAction): IAuthState => {\r\n return updateObject(state, {\r\n error: action.error,\r\n loading: false,\r\n });\r\n};\r\n\r\nconst getCustomTokenStart = (state: IAuthState, action: IAuthAction): IAuthState => {\r\n return updateObject(state, { error: null, loading: true });\r\n};\r\n\r\nconst getCustomTokenSuccess = (state: IAuthState, action: IAuthAction): IAuthState => {\r\n return updateObject(state, {\r\n error: null,\r\n loading: false,\r\n customToken: action.customToken\r\n });\r\n};\r\n\r\nconst getCustomTokenFail = (state: IAuthState, action: IAuthAction): IAuthState => {\r\n return updateObject(state, {\r\n error: action.error,\r\n loading: false,\r\n });\r\n};\r\n\r\nconst getCurrentUserStart = (\r\n state: IAuthState,\r\n action: IAuthAction\r\n): IAuthState => {\r\n return updateObject(state, {\r\n loading: true,\r\n error: null,\r\n });\r\n};\r\n\r\nconst getCurrentUserSuccess = (\r\n state: IAuthState,\r\n action: IAuthAction\r\n): IAuthState => {\r\n return updateObject(state, {\r\n authUser: action.user,\r\n loading: false,\r\n error: null,\r\n });\r\n};\r\n\r\nconst getCurrentUserFail = (\r\n state: IAuthState,\r\n action: IAuthAction\r\n): IAuthState => {\r\n return updateObject(state, {\r\n error: action.error,\r\n authUser: null,\r\n loading: false,\r\n });\r\n};\r\n\r\nconst addAuthUserOfferRequestAccess = (\r\n state: IAuthState,\r\n action: IAuthAction\r\n): IAuthState => {\r\n const authUser = state.authUser;\r\n const offerRequestId = action.offerRequestId;\r\n if (authUser && offerRequestId) {\r\n authUser.addOfferRequestAccess(offerRequestId);\r\n }\r\n return updateObject(state, {\r\n authUser,\r\n });\r\n};\r\n\r\nconst setAuthUserBillingConfirmed = (\r\n state: IAuthState,\r\n action: IAuthAction\r\n): IAuthState => {\r\n const authUser = state.authUser;\r\n if (authUser) {\r\n authUser.isBillingConfirmed = true;\r\n }\r\n return updateObject(state, {\r\n authUser,\r\n });\r\n};\r\n\r\nconst setAuthUserOrganization = (\r\n state: IAuthState,\r\n action: IAuthAction\r\n): IAuthState => {\r\n const authUser = state.authUser;\r\n const organization = action.organization;\r\n if (authUser && organization) {\r\n authUser.organization = organization;\r\n }\r\n return updateObject(state, {\r\n authUser,\r\n });\r\n};\r\n\r\nconst reducer = (\r\n state: IAuthState = initialState,\r\n action: IAuthAction\r\n): IAuthState => {\r\n switch (action.type) {\r\n case ActionTypes.AUTH_START:\r\n return authStart(state, action);\r\n case ActionTypes.AUTH_SUCCESS:\r\n return authSuccess(state, action);\r\n case ActionTypes.AUTH_FAIL:\r\n return authFail(state, action);\r\n case ActionTypes.AUTH_LOGOUT_START:\r\n return logoutStart(state, action);\r\n case ActionTypes.AUTH_LOGOUT_SUCCESS:\r\n return logoutSuccess(state, action);\r\n case ActionTypes.AUTH_LOGOUT_FAIL:\r\n return logoutFail(state, action);\r\n case ActionTypes.AUTH_GET_START:\r\n return getCurrentUserStart(state, action);\r\n case ActionTypes.AUTH_GET_SUCCESS:\r\n return getCurrentUserSuccess(state, action);\r\n case ActionTypes.AUTH_GET_FAIL:\r\n return getCurrentUserFail(state, action);\r\n case ActionTypes.AUTH_GET_CUSTOM_TOKEN_START:\r\n return getCustomTokenStart(state, action);\r\n case ActionTypes.AUTH_GET_CUSTOM_TOKEN_SUCCESS:\r\n return getCustomTokenSuccess(state, action);\r\n case ActionTypes.AUTH_GET_CUSTOM_TOKEN_FAIL:\r\n return getCustomTokenFail(state, action);\r\n case ActionTypes.AUTH_ADD_OFFER_REQUEST_ACCESS:\r\n return addAuthUserOfferRequestAccess(state, action);\r\n case ActionTypes.AUTH_SET_BILLING_CONFIRMED:\r\n return setAuthUserBillingConfirmed(state, action);\r\n case ActionTypes.AUTH_SET_ORGANIZATION:\r\n return setAuthUserOrganization(state, action);\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default reducer;\r\n","import { ActionTypes } from \"../actions/actionTypes\";\r\nimport { updateObject } from \"../../shared/utility\";\r\nimport { IUserState, IUserAction } from \"../../interfaces\";\r\n\r\nconst initialState: IUserState = {\r\n loading: false,\r\n users: null,\r\n user: null,\r\n error: null,\r\n saveOrUpdateOk: false,\r\n termsOfUseLoading: false,\r\n termsOfUseError: null,\r\n termsOfUseAccepted: false\r\n};\r\n\r\nconst getUserStart = (\r\n state: IUserState,\r\n action: IUserAction\r\n): IUserState => {\r\n return updateObject(state, {\r\n user: null,\r\n loading: true,\r\n error: null,\r\n });\r\n};\r\n\r\nconst getUserSuccess = (\r\n state: IUserState,\r\n action: IUserAction\r\n): IUserState => {\r\n return updateObject(state, {\r\n user: action.user,\r\n loading: false,\r\n error: null,\r\n });\r\n};\r\n\r\nconst getUserFail = (\r\n state: IUserState,\r\n action: IUserAction\r\n): IUserState => {\r\n return updateObject(state, {\r\n loading: false,\r\n error: action.error,\r\n });\r\n};\r\n\r\nconst listUsersStart = (\r\n state: IUserState,\r\n action: IUserAction\r\n): IUserState => {\r\n return updateObject(state, {\r\n loading: true,\r\n error: null,\r\n });\r\n};\r\n\r\nconst listUsersSuccess = (\r\n state: IUserState,\r\n action: IUserAction\r\n): IUserState => {\r\n return updateObject(state, {\r\n users: action.users,\r\n loading: false,\r\n error: null,\r\n });\r\n};\r\n\r\nconst listUsersFail = (\r\n state: IUserState,\r\n action: IUserAction\r\n): IUserState => {\r\n return updateObject(state, {\r\n loading: false,\r\n error: action.error,\r\n });\r\n};\r\n\r\nconst saveUserStart = (\r\n state: IUserState,\r\n action: IUserAction\r\n): IUserState => {\r\n return updateObject(state, {\r\n loading: true,\r\n error: null,\r\n });\r\n};\r\n\r\nconst saveUserSuccess = (\r\n state: IUserState,\r\n action: IUserAction\r\n): IUserState => {\r\n return updateObject(state, {\r\n user: action.user,\r\n loading: false,\r\n error: null,\r\n saveOrUpdateOk: true,\r\n });\r\n};\r\n\r\nconst saveUserFail = (\r\n state: IUserState,\r\n action: IUserAction\r\n): IUserState => {\r\n return updateObject(state, {\r\n loading: false,\r\n error: action.error,\r\n });\r\n};\r\n\r\nconst updateUserStart = (\r\n state: IUserState,\r\n action: IUserAction\r\n): IUserState => {\r\n return updateObject(state, {\r\n loading: true,\r\n error: null,\r\n });\r\n};\r\n\r\nconst updateUserSuccess = (\r\n state: IUserState,\r\n action: IUserAction\r\n): IUserState => {\r\n return updateObject(state, {\r\n user: action.user,\r\n loading: false,\r\n error: null,\r\n saveOrUpdateOk: true\r\n });\r\n};\r\n\r\nconst updateUserFail = (\r\n state: IUserState,\r\n action: IUserAction\r\n): IUserState => {\r\n return updateObject(state, {\r\n loading: false,\r\n error: action.error,\r\n });\r\n};\r\n\r\n\r\nconst acceptTermsOfUseStart = (\r\n state: IUserState,\r\n action: IUserAction\r\n): IUserState => {\r\n return updateObject(state, {\r\n termsOfUseLoading: true,\r\n termsOfUseError: null,\r\n });\r\n};\r\n\r\nconst acceptTermsOfUseSuccess = (\r\n state: IUserState,\r\n action: IUserAction\r\n): IUserState => {\r\n return updateObject(state, {\r\n termsOfUseLoading: false,\r\n termsOfUseError: null,\r\n termsOfUseAccepted: true\r\n });\r\n};\r\n\r\nconst acceptTermsOfUseFail = (\r\n state: IUserState,\r\n action: IUserAction\r\n): IUserState => {\r\n return updateObject(state, {\r\n termsOfUseLoading: false,\r\n termsOfUseError: action.error,\r\n });\r\n};\r\n\r\nconst changeUserLanguageStart = (\r\n state: IUserState,\r\n action: IUserAction\r\n): IUserState => {\r\n return updateObject(state, {\r\n loading: true,\r\n error: null,\r\n });\r\n};\r\n\r\nconst changeUserLanguageSuccess = (\r\n state: IUserState,\r\n action: IUserAction\r\n): IUserState => {\r\n return updateObject(state, {\r\n user: action.user,\r\n loading: false,\r\n error: null,\r\n saveOrUpdateOk: true\r\n });\r\n};\r\n\r\nconst changeUserLanguageFail = (\r\n state: IUserState,\r\n action: IUserAction\r\n): IUserState => {\r\n return updateObject(state, {\r\n loading: false,\r\n error: action.error,\r\n });\r\n};\r\n\r\nconst clearUser = (\r\n state: IUserState,\r\n action: IUserAction\r\n): IUserState => {\r\n return { ...initialState };\r\n};\r\n\r\nconst reducer = (\r\n state: IUserState = initialState,\r\n action: IUserAction\r\n): IUserState => {\r\n switch (action.type) {\r\n case ActionTypes.USER_GET_START:\r\n return getUserStart(state, action);\r\n case ActionTypes.USER_GET_SUCCESS:\r\n return getUserSuccess(state, action);\r\n case ActionTypes.USER_GET_FAIL:\r\n return getUserFail(state, action);\r\n case ActionTypes.USER_LIST_START:\r\n return listUsersStart(state, action);\r\n case ActionTypes.USER_LIST_SUCCESS:\r\n return listUsersSuccess(state, action);\r\n case ActionTypes.USER_LIST_FAIL:\r\n return listUsersFail(state, action);\r\n case ActionTypes.USER_SAVE_START:\r\n return saveUserStart(state, action);\r\n case ActionTypes.USER_SAVE_SUCCESS:\r\n return saveUserSuccess(state, action);\r\n case ActionTypes.USER_SAVE_FAIL:\r\n return saveUserFail(state, action);\r\n case ActionTypes.USER_UPDATE_START:\r\n return updateUserStart(state, action);\r\n case ActionTypes.USER_UPDATE_SUCCESS:\r\n return updateUserSuccess(state, action);\r\n case ActionTypes.USER_UPDATE_FAIL:\r\n return updateUserFail(state, action);\r\n case ActionTypes.USER_ACCEPT_TERMS_OF_USE_START:\r\n return acceptTermsOfUseStart(state, action);\r\n case ActionTypes.USER_ACCEPT_TERMS_OF_USE_SUCCESS:\r\n return acceptTermsOfUseSuccess(state, action);\r\n case ActionTypes.USER_ACCEPT_TERMS_OF_USE_FAIL:\r\n return acceptTermsOfUseFail(state, action);\r\n case ActionTypes.USER_CHANGE_LANGUAGE_START:\r\n return changeUserLanguageStart(state, action);\r\n case ActionTypes.USER_CHANGE_LANGUAGE_SUCCESS:\r\n return changeUserLanguageSuccess(state, action);\r\n case ActionTypes.USER_CHANGE_LANGUAGE_FAIL:\r\n return changeUserLanguageFail(state, action);\r\n case ActionTypes.USER_CLEAR:\r\n return clearUser(state, action);\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default reducer;\r\n","import { IOfferRequestAction, IOfferRequestState } from \"../../interfaces\";\r\nimport { updateObject } from \"../../shared/utility\";\r\nimport { ActionTypes } from \"../actions/actionTypes\";\r\n\r\ntype TState = IOfferRequestState;\r\ntype TAction = IOfferRequestAction;\r\n\r\nconst initialState: TState = {\r\n loading: false,\r\n offerRequests: null,\r\n offerRequest: null,\r\n error: null,\r\n saveOrUpdateOk: false,\r\n addAccessLoading: false,\r\n addAccessSuccessId: null,\r\n addAccessError: null,\r\n offerRequestAccess: null\r\n};\r\n\r\nconst getOfferRequestStart = (state: TState, action: TAction): TState => {\r\n return updateObject(state, {\r\n offerRequest: null,\r\n loading: true,\r\n error: null,\r\n });\r\n};\r\n\r\nconst getOfferRequestSuccess = (state: TState, action: TAction): TState => {\r\n return updateObject(state, {\r\n offerRequest: action.offerRequest,\r\n loading: false,\r\n error: null,\r\n });\r\n};\r\n\r\nconst getOfferRequestFail = (state: TState, action: TAction): TState => {\r\n return updateObject(state, {\r\n loading: false,\r\n error: action.error,\r\n });\r\n};\r\n\r\nconst deleteOfferRequestStart = (state: TState, action: TAction): TState => {\r\n return updateObject(state, {\r\n offerRequest: null,\r\n loading: true,\r\n error: null,\r\n });\r\n};\r\n\r\nconst deleteOfferRequestSuccess = (state: TState, action: TAction): TState => {\r\n return updateObject(state, {\r\n offerRequest: action.offerRequest,\r\n loading: false,\r\n error: null,\r\n });\r\n};\r\n\r\nconst deleteOfferRequestFail = (state: TState, action: TAction): TState => {\r\n return updateObject(state, {\r\n loading: false,\r\n error: action.error,\r\n });\r\n};\r\n\r\nconst listOfferRequestsStart = (state: TState, action: TAction): TState => {\r\n return updateObject(state, {\r\n offerRequests: null,\r\n offerRequest: null,\r\n loading: true,\r\n error: null,\r\n });\r\n};\r\n\r\nconst listOfferRequestsSuccess = (\r\n state: TState,\r\n action: TAction\r\n): TState => {\r\n return updateObject(state, {\r\n offerRequests: action.offerrequests,\r\n loading: false,\r\n error: null,\r\n });\r\n};\r\n\r\nconst listOfferRequestsFail = (state: TState, action: TAction): TState => {\r\n return updateObject(state, {\r\n loading: false,\r\n error: action.error,\r\n });\r\n};\r\n\r\nconst saveOfferRequestStart = (state: TState, action: TAction): TState => {\r\n return updateObject(state, {\r\n loading: true,\r\n error: null,\r\n });\r\n};\r\n\r\nconst saveOfferRequestSuccess = (\r\n state: TState,\r\n action: TAction\r\n): TState => {\r\n return updateObject(state, {\r\n offerRequest: action.offerRequest,\r\n loading: false,\r\n error: null,\r\n saveOrUpdateOk: true,\r\n });\r\n};\r\n\r\nconst saveOfferRequestFail = (state: TState, action: TAction): TState => {\r\n return updateObject(state, {\r\n loading: false,\r\n error: action.error,\r\n });\r\n};\r\n\r\nconst updateOfferRequestStart = (\r\n state: TState,\r\n action: TAction\r\n): TState => {\r\n return updateObject(state, {\r\n loading: true,\r\n error: null,\r\n });\r\n};\r\n\r\nconst updateOfferRequestSuccess = (\r\n state: TState,\r\n action: TAction\r\n): TState => {\r\n return updateObject(state, {\r\n offerRequest: action.offerRequest,\r\n loading: false,\r\n error: null,\r\n saveOrUpdateOk: true\r\n });\r\n};\r\n\r\nconst updateOfferRequestFail = (state: TState, action: TAction): TState => {\r\n return updateObject(state, {\r\n loading: false,\r\n error: action.error,\r\n });\r\n};\r\n\r\nconst getCustomerOfferRequestStart = (\r\n state: TState,\r\n action: TAction\r\n): TState => {\r\n return updateObject(state, {\r\n offerRequest: null,\r\n loading: true,\r\n error: null,\r\n });\r\n};\r\n\r\nconst getCustomerOfferRequestSuccess = (\r\n state: TState,\r\n action: TAction\r\n): TState => {\r\n return updateObject(state, {\r\n offerRequest: action.offerRequest,\r\n loading: false,\r\n error: null,\r\n });\r\n};\r\n\r\nconst getCustomerOfferRequestFail = (\r\n state: TState,\r\n action: TAction\r\n): TState => {\r\n return updateObject(state, {\r\n loading: false,\r\n error: action.error,\r\n });\r\n};\r\n\r\nconst updateCustomerOfferRequestStart = (\r\n state: TState,\r\n action: TAction\r\n): TState => {\r\n return updateObject(state, {\r\n loading: true,\r\n error: null,\r\n });\r\n};\r\n\r\nconst updateCustomerOfferRequestSuccess = (\r\n state: TState,\r\n action: TAction\r\n): TState => {\r\n return updateObject(state, {\r\n offerRequest: action.offerRequest,\r\n loading: false,\r\n error: null,\r\n });\r\n};\r\n\r\nconst updateCustomerOfferRequestFail = (\r\n state: TState,\r\n action: TAction\r\n): TState => {\r\n return updateObject(state, {\r\n loading: false,\r\n error: action.error,\r\n });\r\n};\r\n\r\nconst archiveCustomerOfferRequestStart = (\r\n state: TState,\r\n action: TAction\r\n): TState => {\r\n return updateObject(state, {\r\n loading: true,\r\n error: null,\r\n });\r\n};\r\n\r\nconst archiveCustomerOfferRequestSuccess = (\r\n state: TState,\r\n action: TAction\r\n): TState => {\r\n return updateObject(state, {\r\n offerRequest: action.offerRequest,\r\n loading: false,\r\n error: null,\r\n });\r\n};\r\n\r\nconst archiveCustomerOfferRequestFail = (\r\n state: TState,\r\n action: TAction\r\n): TState => {\r\n return updateObject(state, {\r\n loading: false,\r\n error: action.error,\r\n });\r\n};\r\n\r\nconst addAccessOfferRequestStart = (state: TState, action: TAction): TState => {\r\n return updateObject(state, {\r\n addAccessLoading: true,\r\n addAccessSuccessId: null,\r\n addAccessError: null,\r\n });\r\n};\r\n\r\nconst addAccessOfferRequestSuccess = (state: TState, action: TAction): TState => {\r\n return updateObject(state, {\r\n addAccessLoading: false,\r\n addAccessSuccessId: action.offerRequest?.id,\r\n });\r\n};\r\n\r\nconst addAccessOfferRequestFail = (state: TState, action: TAction): TState => {\r\n return updateObject(state, {\r\n addAccessLoading: false,\r\n addAccessSuccessId: null,\r\n addAccessError: action.error,\r\n });\r\n};\r\n\r\nconst addAccessOfferRequestClear = (state: TState, action: TAction): TState => {\r\n return updateObject(state, {\r\n addAccessLoading: false,\r\n addAccessSuccessId: null,\r\n addAccessError: null,\r\n });\r\n};\r\n\r\nconst listOfferRequestAccessStart = (state: TState, action: TAction): TState => {\r\n return updateObject(state, {\r\n offerRequestAccess: null,\r\n loading: true,\r\n error: null,\r\n });\r\n};\r\n\r\nconst listOfferRequestAccessSuccess = (\r\n state: TState,\r\n action: TAction\r\n): TState => {\r\n return updateObject(state, {\r\n offerRequestAccess: action.offerRequestAccess,\r\n loading: false,\r\n error: null,\r\n });\r\n};\r\n\r\nconst listOfferRequestAccessFail = (state: TState, action: TAction): TState => {\r\n return updateObject(state, {\r\n loading: false,\r\n error: action.error,\r\n });\r\n}\r\n\r\nconst clearOfferRequest = (state: TState, action: TAction): TState => {\r\n return { ...initialState };\r\n};\r\n\r\nconst reducer = (\r\n state: TState = initialState,\r\n action: TAction\r\n): TState => {\r\n switch (action.type) {\r\n case ActionTypes.OFFER_REQUEST_GET_START:\r\n return getOfferRequestStart(state, action);\r\n case ActionTypes.OFFER_REQUEST_GET_SUCCESS:\r\n return getOfferRequestSuccess(state, action);\r\n case ActionTypes.OFFER_REQUEST_GET_FAIL:\r\n return getOfferRequestFail(state, action);\r\n case ActionTypes.OFFER_REQUEST_DELETE_START:\r\n return deleteOfferRequestStart(state, action);\r\n case ActionTypes.OFFER_REQUEST_DELETE_SUCCESS:\r\n return deleteOfferRequestSuccess(state, action);\r\n case ActionTypes.OFFER_REQUEST_DELETE_FAIL:\r\n return deleteOfferRequestFail(state, action);\r\n case ActionTypes.OFFER_REQUEST_LIST_START:\r\n return listOfferRequestsStart(state, action);\r\n case ActionTypes.OFFER_REQUEST_LIST_SUCCESS:\r\n return listOfferRequestsSuccess(state, action);\r\n case ActionTypes.OFFER_REQUEST_LIST_FAIL:\r\n return listOfferRequestsFail(state, action);\r\n case ActionTypes.OFFER_REQUEST_SAVE_START:\r\n return saveOfferRequestStart(state, action);\r\n case ActionTypes.OFFER_REQUEST_SAVE_SUCCESS:\r\n return saveOfferRequestSuccess(state, action);\r\n case ActionTypes.OFFER_REQUEST_SAVE_FAIL:\r\n return saveOfferRequestFail(state, action);\r\n case ActionTypes.OFFER_REQUEST_UPDATE_START:\r\n return updateOfferRequestStart(state, action);\r\n case ActionTypes.OFFER_REQUEST_UPDATE_SUCCESS:\r\n return updateOfferRequestSuccess(state, action);\r\n case ActionTypes.OFFER_REQUEST_UPDATE_FAIL:\r\n return updateOfferRequestFail(state, action);\r\n case ActionTypes.OFFER_REQUEST_CUSTOMER_GET_START:\r\n return getCustomerOfferRequestStart(state, action);\r\n case ActionTypes.OFFER_REQUEST_CUSTOMER_GET_SUCCESS:\r\n return getCustomerOfferRequestSuccess(state, action);\r\n case ActionTypes.OFFER_REQUEST_CUSTOMER_GET_FAIL:\r\n return getCustomerOfferRequestFail(state, action);\r\n case ActionTypes.OFFER_REQUEST_CUSTOMER_UPDATE_START:\r\n return updateCustomerOfferRequestStart(state, action);\r\n case ActionTypes.OFFER_REQUEST_CUSTOMER_UPDATE_SUCCESS:\r\n return updateCustomerOfferRequestSuccess(state, action);\r\n case ActionTypes.OFFER_REQUEST_CUSTOMER_UPDATE_FAIL:\r\n return updateCustomerOfferRequestFail(state, action);\r\n case ActionTypes.OFFER_REQUEST_CUSTOMER_ARCHIVE_START:\r\n return archiveCustomerOfferRequestStart(state, action);\r\n case ActionTypes.OFFER_REQUEST_CUSTOMER_ARCHIVE_SUCCESS:\r\n return archiveCustomerOfferRequestSuccess(state, action);\r\n case ActionTypes.OFFER_REQUEST_CUSTOMER_ARCHIVE_FAIL:\r\n return archiveCustomerOfferRequestFail(state, action);\r\n case ActionTypes.OFFER_REQUEST_ADD_ACCESS_START:\r\n return addAccessOfferRequestStart(state, action);\r\n case ActionTypes.OFFER_REQUEST_ADD_ACCESS_SUCCESS:\r\n return addAccessOfferRequestSuccess(state, action);\r\n case ActionTypes.OFFER_REQUEST_ADD_ACCESS_FAIL:\r\n return addAccessOfferRequestFail(state, action);\r\n case ActionTypes.OFFER_REQUEST_ADD_ACCESS_CLEAR:\r\n return addAccessOfferRequestClear(state, action);\r\n case ActionTypes.OFFER_REQUEST_ACCESS_LIST_START:\r\n return listOfferRequestAccessStart(state, action);\r\n case ActionTypes.OFFER_REQUEST_ACCESS_LIST_SUCCESS:\r\n return listOfferRequestAccessSuccess(state, action);\r\n case ActionTypes.OFFER_REQUEST_ACCESS_LIST_FAIL:\r\n return listOfferRequestAccessFail(state, action);\r\n case ActionTypes.OFFER_REQUEST_CLEAR:\r\n return clearOfferRequest(state, action);\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default reducer;\r\n","import { updateObject } from '../../shared/utility';\r\nimport { ActionTypes } from '../actions/actionTypes';\r\nimport { IServiceProviderAction, IServiceProviderState } from './../../interfaces/state';\r\n\r\ntype TAction = IServiceProviderAction;\r\ntype TState = IServiceProviderState;\r\n\r\nconst initialState: TState = {\r\n loading: false,\r\n loadingForm: false,\r\n serviceProviders: null,\r\n serviceProvider: null,\r\n serviceProviderForm: null,\r\n serviceProviderForms: null,\r\n errorForm: null,\r\n error: null,\r\n saveOrUpdateOk: false\r\n};\r\n\r\nconst getServiceProviderStart = (state: TState, action: TAction): TState => {\r\n return updateObject(state, {\r\n serviceProvider: null,\r\n loading: true,\r\n error: null,\r\n });\r\n};\r\n\r\nconst getServiceProviderSuccess = (state: TState, action: TAction): TState => {\r\n return updateObject(state, {\r\n serviceProvider: action.serviceprovider,\r\n loading: false,\r\n error: null,\r\n });\r\n};\r\n\r\nconst getServiceProviderFail = (state: TState, action: TAction): TState => {\r\n return updateObject(state, {\r\n loading: false,\r\n error: action.error,\r\n });\r\n};\r\n\r\nconst deleteServiceProviderStart = (state: TState, action: TAction): TState => {\r\n return updateObject(state, {\r\n serviceProvider: null,\r\n loading: true,\r\n error: null,\r\n });\r\n};\r\n\r\nconst deleteServiceProviderSuccess = (\r\n state: TState,\r\n action: TAction\r\n): TState => {\r\n return updateObject(state, {\r\n serviceProvider: action.serviceprovider,\r\n loading: false,\r\n error: null,\r\n });\r\n};\r\nconst deleteServiceProviderFail = (state: TState, action: TAction): TState => {\r\n return updateObject(state, {\r\n loading: false,\r\n error: action.error,\r\n });\r\n};\r\n\r\nconst listServiceProvidersStart = (state: TState, action: TAction): TState => {\r\n return updateObject(state, {\r\n serviceProviders: null,\r\n serviceProvider: null,\r\n loading: true,\r\n error: null,\r\n });\r\n};\r\n\r\nconst listServiceProvidersSuccess = (\r\n state: TState,\r\n action: TAction\r\n): TState => {\r\n return updateObject(state, {\r\n serviceProviders: action.serviceproviders,\r\n loading: false,\r\n error: null,\r\n });\r\n};\r\n\r\nconst listServiceProvidersFail = (state: TState, action: TAction): TState => {\r\n return updateObject(state, {\r\n loading: false,\r\n error: action.error,\r\n });\r\n};\r\n\r\nconst saveServiceProviderStart = (state: TState, action: TAction): TState => {\r\n return updateObject(state, {\r\n loading: true,\r\n error: null,\r\n });\r\n};\r\n\r\nconst saveServiceProviderSuccess = (state: TState, action: TAction): TState => {\r\n return updateObject(state, {\r\n serviceProvider: action.serviceprovider,\r\n loading: false,\r\n error: null,\r\n saveOrUpdateOk: true,\r\n });\r\n};\r\n\r\nconst saveServiceProviderFail = (state: TState, action: TAction): TState => {\r\n return updateObject(state, {\r\n loading: false,\r\n error: action.error,\r\n });\r\n};\r\n\r\nconst updateServiceProviderStart = (state: TState, action: TAction): TState => {\r\n return updateObject(state, {\r\n loading: true,\r\n error: null,\r\n });\r\n};\r\n\r\nconst updateServiceProviderSuccess = (\r\n state: TState,\r\n action: TAction\r\n): TState => {\r\n return updateObject(state, {\r\n serviceProvider: action.serviceprovider,\r\n loading: false,\r\n error: null,\r\n saveOrUpdateOk: true\r\n });\r\n};\r\n\r\nconst updateServiceProviderFail = (state: TState, action: TAction): TState => {\r\n return updateObject(state, {\r\n loading: false,\r\n error: action.error,\r\n });\r\n};\r\n\r\nconst getServiceProviderFormStart = (\r\n state: TState,\r\n action: TAction\r\n): TState => {\r\n return updateObject(state, {\r\n serviceProviderForm: null,\r\n loadingForm: true,\r\n errorForm: null,\r\n });\r\n};\r\n\r\nconst getServiceProviderFormSuccess = (\r\n state: TState,\r\n action: TAction\r\n): TState => {\r\n return updateObject(state, {\r\n serviceProviderForm: action.serviceProviderForm,\r\n loadingForm: false,\r\n errorForm: null,\r\n });\r\n};\r\n\r\nconst getServiceProviderFormFail = (state: TState, action: TAction): TState => {\r\n return updateObject(state, {\r\n loadingForm: false,\r\n errorForm: action.error,\r\n });\r\n};\r\n\r\nconst listServiceProviderFormsStart = (\r\n state: TState,\r\n action: TAction\r\n): TState => {\r\n return updateObject(state, {\r\n serviceProviderForms: null,\r\n serviceProviderForm: null,\r\n loadingForm: true,\r\n errorForm: null,\r\n });\r\n};\r\n\r\nconst listServiceProviderFormsSuccess = (\r\n state: TState,\r\n action: TAction\r\n): TState => {\r\n return updateObject(state, {\r\n serviceProviderForms: action.serviceProviderForms,\r\n loadingForm: false,\r\n errorForm: null,\r\n });\r\n};\r\n\r\nconst listServiceProviderFormsFail = (\r\n state: TState,\r\n action: TAction\r\n): TState => {\r\n return updateObject(state, {\r\n loadingForm: false,\r\n errorForm: action.error,\r\n });\r\n};\r\n\r\nconst deleteServiceProviderFormStart = (\r\n state: TState,\r\n action: TAction\r\n): TState => {\r\n return updateObject(state, {\r\n serviceProvider: null,\r\n loadingForm: true,\r\n errorForm: null,\r\n });\r\n};\r\n\r\nconst deleteServiceProviderFormSuccess = (\r\n state: TState,\r\n action: TAction\r\n): TState => {\r\n return updateObject(state, {\r\n serviceProvider: action.serviceprovider,\r\n loadingForm: false,\r\n errorForm: null,\r\n });\r\n};\r\nconst deleteServiceProviderFormFail = (\r\n state: TState,\r\n action: TAction\r\n): TState => {\r\n return updateObject(state, {\r\n loadingForm: false,\r\n errorForm: action.error,\r\n });\r\n};\r\n\r\nconst clearServiceProvider = (state: TState, action: TAction): TState => {\r\n return { ...initialState };\r\n};\r\n\r\nconst reducer = (state: TState = initialState, action: TAction): TState => {\r\n switch (action.type) {\r\n case ActionTypes.SERVICE_PROVIDER_GET_START:\r\n return getServiceProviderStart(state, action);\r\n case ActionTypes.SERVICE_PROVIDER_GET_SUCCESS:\r\n return getServiceProviderSuccess(state, action);\r\n case ActionTypes.SERVICE_PROVIDER_GET_FAIL:\r\n return getServiceProviderFail(state, action);\r\n case ActionTypes.SERVICE_PROVIDER_DELETE_START:\r\n return deleteServiceProviderStart(state, action);\r\n case ActionTypes.SERVICE_PROVIDER_DELETE_SUCCESS:\r\n return deleteServiceProviderSuccess(state, action);\r\n case ActionTypes.SERVICE_PROVIDER_DELETE_FAIL:\r\n return deleteServiceProviderFail(state, action);\r\n case ActionTypes.SERVICE_PROVIDER_LIST_START:\r\n return listServiceProvidersStart(state, action);\r\n case ActionTypes.SERVICE_PROVIDER_LIST_SUCCESS:\r\n return listServiceProvidersSuccess(state, action);\r\n case ActionTypes.SERVICE_PROVIDER_LIST_FAIL:\r\n return listServiceProvidersFail(state, action);\r\n case ActionTypes.SERVICE_PROVIDER_SAVE_START:\r\n return saveServiceProviderStart(state, action);\r\n case ActionTypes.SERVICE_PROVIDER_SAVE_SUCCESS:\r\n return saveServiceProviderSuccess(state, action);\r\n case ActionTypes.SERVICE_PROVIDER_SAVE_FAIL:\r\n return saveServiceProviderFail(state, action);\r\n case ActionTypes.SERVICE_PROVIDER_UPDATE_START:\r\n return updateServiceProviderStart(state, action);\r\n case ActionTypes.SERVICE_PROVIDER_UPDATE_SUCCESS:\r\n return updateServiceProviderSuccess(state, action);\r\n case ActionTypes.SERVICE_PROVIDER_UPDATE_FAIL:\r\n return updateServiceProviderFail(state, action);\r\n case ActionTypes.SERVICE_PROVIDER_FORM_GET_START:\r\n return getServiceProviderFormStart(state, action);\r\n case ActionTypes.SERVICE_PROVIDER_FORM_GET_SUCCESS:\r\n return getServiceProviderFormSuccess(state, action);\r\n case ActionTypes.SERIVCE_PROVIDER_FORM_GET_FAIL:\r\n return getServiceProviderFormFail(state, action);\r\n case ActionTypes.SERVICE_PROVIDER_FORM_LIST_START:\r\n return listServiceProviderFormsStart(state, action);\r\n case ActionTypes.SERVICE_PROVIDER_FORM_LIST_SUCCESS:\r\n return listServiceProviderFormsSuccess(state, action);\r\n case ActionTypes.SERVICE_PROVIDER_FORM_LIST_FAIL:\r\n return listServiceProviderFormsFail(state, action);\r\n case ActionTypes.SERVICE_PROVIDER_FORM_DELETE_START:\r\n return deleteServiceProviderFormStart(state, action);\r\n case ActionTypes.SERVICE_PROVIDER_FORM_DELETE_SUCCESS:\r\n return deleteServiceProviderFormSuccess(state, action);\r\n case ActionTypes.SERVICE_PROVIDER_FORM_DELETE_FAIL:\r\n return deleteServiceProviderFormFail(state, action);\r\n case ActionTypes.CLEAR_SERVICEPROVIDER:\r\n return clearServiceProvider(state, action);\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default reducer;\r\n","import { IServiceAction, IServiceState } from \"../../interfaces\";\r\nimport { updateObject } from \"../../shared/utility\";\r\nimport { ActionTypes } from \"../actions/actionTypes\";\r\n\r\nconst initialState: IServiceState = {\r\n loading: false,\r\n services: null,\r\n service: null,\r\n error: null,\r\n saveOrUpdateOk: false\r\n};\r\n\r\nconst getServiceStart = (state: IServiceState, action: IServiceAction): IServiceState => {\r\n return updateObject(state, {\r\n service: null,\r\n loading: true,\r\n error: null,\r\n });\r\n};\r\n\r\nconst getServiceSuccess = (state: IServiceState, action: IServiceAction): IServiceState => {\r\n return updateObject(state, {\r\n service: action.service,\r\n loading: false,\r\n error: null,\r\n });\r\n};\r\n\r\nconst getServiceFail = (state: IServiceState, action: IServiceAction): IServiceState => {\r\n return updateObject(state, {\r\n loading: false,\r\n error: action.error,\r\n });\r\n};\r\n\r\nconst deleteServiceStart = (state: IServiceState, action: IServiceAction): IServiceState => {\r\n return updateObject(state, {\r\n service: null,\r\n loading: true,\r\n error: null,\r\n });\r\n};\r\n\r\nconst deleteServiceSuccess = (state: IServiceState, action: IServiceAction): IServiceState => {\r\n return updateObject(state, {\r\n service: action.service,\r\n loading: false,\r\n error: null,\r\n });\r\n};\r\n\r\nconst deleteServiceFail = (state: IServiceState, action: IServiceAction): IServiceState => {\r\n return updateObject(state, {\r\n loading: false,\r\n error: action.error,\r\n });\r\n};\r\n\r\nconst listServicesStart = (state: IServiceState, action: IServiceAction): IServiceState => {\r\n return updateObject(state, {\r\n services: null,\r\n service: null,\r\n loading: true,\r\n error: null,\r\n });\r\n};\r\n\r\nconst listServicesSuccess = (\r\n state: IServiceState,\r\n action: IServiceAction\r\n): IServiceState => {\r\n return updateObject(state, {\r\n services: action.services,\r\n loading: false,\r\n error: null,\r\n });\r\n};\r\n\r\nconst listServicesFail = (state: IServiceState, action: IServiceAction): IServiceState => {\r\n return updateObject(state, {\r\n loading: false,\r\n error: action.error,\r\n });\r\n};\r\n\r\nconst saveServiceStart = (state: IServiceState, action: IServiceAction): IServiceState => {\r\n return updateObject(state, {\r\n loading: true,\r\n error: null,\r\n });\r\n};\r\n\r\nconst saveServiceSuccess = (\r\n state: IServiceState,\r\n action: IServiceAction\r\n): IServiceState => {\r\n return updateObject(state, {\r\n service: action.service,\r\n loading: false,\r\n error: null,\r\n saveOrUpdateOk: true,\r\n });\r\n};\r\n\r\nconst saveServiceFail = (state: IServiceState, action: IServiceAction): IServiceState => {\r\n return updateObject(state, {\r\n loading: false,\r\n error: action.error,\r\n });\r\n};\r\n\r\nconst updateServiceStart = (\r\n state: IServiceState,\r\n action: IServiceAction\r\n): IServiceState => {\r\n return updateObject(state, {\r\n loading: true,\r\n error: null,\r\n });\r\n};\r\n\r\nconst updateServiceSuccess = (\r\n state: IServiceState,\r\n action: IServiceAction\r\n): IServiceState => {\r\n return updateObject(state, {\r\n service: action.service,\r\n loading: false,\r\n error: null,\r\n saveOrUpdateOk: true,\r\n });\r\n};\r\n\r\nconst updateServiceFail = (state: IServiceState, action: IServiceAction): IServiceState => {\r\n return updateObject(state, {\r\n loading: false,\r\n error: action.error,\r\n });\r\n};\r\n\r\nconst clearService = (state: IServiceState, action: IServiceAction): IServiceState => {\r\n return { ...initialState };\r\n};\r\n\r\nconst reducer = (\r\n state: IServiceState = initialState,\r\n action: IServiceAction\r\n): IServiceState => {\r\n switch (action.type) {\r\n case ActionTypes.SERVICE_GET_START:\r\n return getServiceStart(state, action);\r\n case ActionTypes.SERVICE_GET_SUCCESS:\r\n return getServiceSuccess(state, action);\r\n case ActionTypes.SERVICE_GET_FAIL:\r\n return getServiceFail(state, action);\r\n case ActionTypes.SERVICE_DELETE_START:\r\n return deleteServiceStart(state, action);\r\n case ActionTypes.SERVICE_DELETE_SUCCESS:\r\n return deleteServiceSuccess(state, action);\r\n case ActionTypes.SERVICE_DELETE_FAIL:\r\n return deleteServiceFail(state, action);\r\n case ActionTypes.SERVICE_LIST_START:\r\n return listServicesStart(state, action);\r\n case ActionTypes.SERVICE_LIST_SUCCESS:\r\n return listServicesSuccess(state, action);\r\n case ActionTypes.SERVICE_LIST_FAIL:\r\n return listServicesFail(state, action);\r\n case ActionTypes.SERVICE_SAVE_START:\r\n return saveServiceStart(state, action);\r\n case ActionTypes.SERVICE_SAVE_SUCCESS:\r\n return saveServiceSuccess(state, action);\r\n case ActionTypes.SERVICE_SAVE_FAIL:\r\n return saveServiceFail(state, action);\r\n case ActionTypes.SERVICE_UPDATE_START:\r\n return updateServiceStart(state, action);\r\n case ActionTypes.SERVICE_UPDATE_SUCCESS:\r\n return updateServiceSuccess(state, action);\r\n case ActionTypes.SERVICE_UPDATE_FAIL:\r\n return updateServiceFail(state, action);\r\n case ActionTypes.SERVICE_CLEAR:\r\n return clearService(state, action);\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default reducer;\r\n","import { IOrganizationState, IOrganizationAction } from './../../interfaces/state';\r\nimport { updateObject } from \"../../shared/utility\";\r\nimport { ActionTypes } from \"../actions/actionTypes\";\r\n\r\n\r\ntype TState = IOrganizationState;\r\ntype TAction = IOrganizationAction;\r\n\r\nconst initialState: TState = {\r\n loading: false,\r\n organization: null,\r\n organizations: null,\r\n error: null,\r\n saveOrUpdateOk: false,\r\n confirmBillingError: null,\r\n confirmBillingLoading: false,\r\n confirmBillingSuccess: false,\r\n imageLoading: false,\r\n imageError: null,\r\n updateImage: null,\r\n};\r\n\r\nconst clearOrganization = (\r\n state: TState,\r\n action: TAction\r\n): TState => {\r\n return { ...initialState };\r\n};\r\n\r\nconst getMyOrganizationStart = (\r\n state: TState,\r\n action: TAction\r\n): TState => {\r\n return updateObject(state, {\r\n organization: null,\r\n loading: true,\r\n error: null,\r\n });\r\n};\r\n\r\nconst getMyOrganizationSuccess = (\r\n state: TState,\r\n action: TAction\r\n): TState => {\r\n return updateObject(state, {\r\n organization: action.organization,\r\n loading: false,\r\n error: null,\r\n });\r\n};\r\n\r\nconst getMyOrganizationFail = (\r\n state: TState,\r\n action: TAction\r\n): TState => {\r\n return updateObject(state, {\r\n loading: false,\r\n error: action.error,\r\n });\r\n};\r\n\r\nconst updateMyOrganizationStart = (\r\n state: TState,\r\n action: TAction\r\n): TState => {\r\n return updateObject(state, {\r\n loading: true,\r\n error: null,\r\n });\r\n};\r\n\r\nconst updateMyOrganizationSuccess = (\r\n state: TState,\r\n action: TAction\r\n): TState => {\r\n return updateObject(state, {\r\n organization: action.organization,\r\n loading: false,\r\n error: null,\r\n });\r\n};\r\n\r\nconst updateMyOrganizationFail = (\r\n state: TState,\r\n action: TAction\r\n): TState => {\r\n return updateObject(state, {\r\n loading: false,\r\n error: action.error,\r\n });\r\n};\r\n\r\nconst updateOrganizationImageStart = (\r\n state: TState,\r\n action: TAction\r\n): TState => {\r\n return updateObject(state, { imageLoading: true, error: null });\r\n};\r\n\r\nconst updateOrganizationImageSuccess = (\r\n state: TState,\r\n action: TAction\r\n): TState => {\r\n return updateObject(state, {\r\n imageLoading: false,\r\n updateImage: action.image || null,\r\n imageError: null,\r\n });\r\n};\r\n\r\nconst updateOrganizationImageFail = (\r\n state: TState,\r\n action: TAction\r\n): TState => {\r\n return updateObject(state, {\r\n imageError: action.error,\r\n imageLoading: false,\r\n });\r\n};\r\n\r\nconst deleteOrganizationImageStart = (\r\n state: TState,\r\n action: TAction\r\n): TState => {\r\n return updateObject(state, { imageLoading: true, imageError: null });\r\n};\r\n\r\nconst deleteOrganizationImageSuccess = (\r\n state: TState,\r\n action: TAction\r\n): TState => {\r\n return updateObject(state, {\r\n imageLoading: false,\r\n imageError: null,\r\n updateImage: null\r\n });\r\n};\r\n\r\nconst deleteOrganizationImageFail = (\r\n state: TState,\r\n action: TAction\r\n): TState => {\r\n return updateObject(state, {\r\n imageError: action.error,\r\n imageLoading: false,\r\n });\r\n};\r\n\r\nconst exportOrganizationStart = (\r\n state: TState,\r\n action: TAction\r\n): TState => {\r\n return updateObject(state, {\r\n organization: null,\r\n loading: true,\r\n error: null,\r\n });\r\n};\r\n\r\nconst exportOrganizationSuccess = (\r\n state: TState,\r\n action: TAction\r\n): TState => {\r\n return updateObject(state, {\r\n organization: action.organization,\r\n loading: false,\r\n error: null,\r\n });\r\n};\r\n\r\nconst exportOrganizationFail = (\r\n state: TState,\r\n action: TAction\r\n): TState => {\r\n return updateObject(state, {\r\n loading: false,\r\n error: action.error,\r\n });\r\n};\r\n\r\nconst getOrganizationStart = (\r\n state: TState,\r\n action: TAction\r\n): TState => {\r\n return updateObject(state, {\r\n organization: null,\r\n loading: true,\r\n error: null,\r\n });\r\n};\r\n\r\nconst getOrganizationSuccess = (\r\n state: TState,\r\n action: TAction\r\n): TState => {\r\n return updateObject(state, {\r\n organization: action.organization,\r\n loading: false,\r\n error: null,\r\n });\r\n};\r\n\r\nconst getOrganizationFail = (\r\n state: TState,\r\n action: TAction\r\n): TState => {\r\n return updateObject(state, {\r\n loading: false,\r\n error: action.error,\r\n });\r\n};\r\n\r\nconst listOrganizationsStart = (\r\n state: TState,\r\n action: TAction\r\n): TState => {\r\n return updateObject(state, {\r\n loading: true,\r\n error: null,\r\n });\r\n};\r\n\r\nconst listOrganizationsSuccess = (\r\n state: TState,\r\n action: TAction\r\n): TState => {\r\n return updateObject(state, {\r\n organizations: action.organizations,\r\n loading: false,\r\n error: null,\r\n });\r\n};\r\n\r\nconst listOrganizationsFail = (\r\n state: TState,\r\n action: TAction\r\n): TState => {\r\n return updateObject(state, {\r\n loading: false,\r\n error: action.error,\r\n });\r\n};\r\n\r\nconst saveOrganizationStart = (\r\n state: TState,\r\n action: TAction\r\n): TState => {\r\n return updateObject(state, {\r\n loading: true,\r\n error: null,\r\n });\r\n};\r\n\r\nconst saveOrganizationSuccess = (\r\n state: TState,\r\n action: TAction\r\n): TState => {\r\n return updateObject(state, {\r\n organization: action.organization,\r\n loading: false,\r\n error: null,\r\n saveOrUpdateOk: true,\r\n });\r\n};\r\n\r\nconst saveOrganizationFail = (\r\n state: TState,\r\n action: TAction\r\n): TState => {\r\n return updateObject(state, {\r\n loading: false,\r\n error: action.error,\r\n });\r\n};\r\n\r\nconst updateOrganizationStart = (\r\n state: TState,\r\n action: TAction\r\n): TState => {\r\n return updateObject(state, {\r\n loading: true,\r\n error: null,\r\n });\r\n};\r\n\r\nconst updateOrganizationSuccess = (\r\n state: TState,\r\n action: TAction\r\n): TState => {\r\n return updateObject(state, {\r\n organization: action.organization,\r\n loading: false,\r\n error: null,\r\n saveOrUpdateOk: true\r\n });\r\n};\r\n\r\nconst updateOrganizationFail = (\r\n state: TState,\r\n action: TAction\r\n): TState => {\r\n return updateObject(state, {\r\n loading: false,\r\n error: action.error,\r\n });\r\n};\r\n\r\nconst confirmBillingStart = (\r\n state: TState,\r\n action: TAction\r\n): TState => {\r\n return updateObject(state, {\r\n confirmBillingLoading: true,\r\n confirmBillingError: null,\r\n });\r\n};\r\n\r\nconst confirmBillingSuccess = (\r\n state: TState,\r\n action: TAction\r\n): TState => {\r\n return updateObject(state, {\r\n confirmBillingLoading: false,\r\n confirmBillingError: null,\r\n confirmBillingSuccess: true\r\n });\r\n};\r\n\r\nconst confirmBillingFail = (\r\n state: TState,\r\n action: TAction\r\n): TState => {\r\n return updateObject(state, {\r\n confirmBillingLoading: false,\r\n confirmBillingError: action.error,\r\n });\r\n};\r\n\r\nconst reducer = (\r\n state: TState = initialState,\r\n action: TAction\r\n): TState => {\r\n switch (action.type) {\r\n case ActionTypes.ORGANIZATION_CLEAR:\r\n return clearOrganization(state, action);\r\n case ActionTypes.ORGANIZATION_GET_MY_START:\r\n return getMyOrganizationStart(state, action);\r\n case ActionTypes.ORGANIZATION_GET_MY_SUCCESS:\r\n return getMyOrganizationSuccess(state, action);\r\n case ActionTypes.ORGANIZATION_GET_MY_FAIL:\r\n return getMyOrganizationFail(state, action);\r\n case ActionTypes.ORGANIZATION_UPDATE_MY_START:\r\n return updateMyOrganizationStart(state, action);\r\n case ActionTypes.ORGANIZATION_UPDATE_MY_SUCCESS:\r\n return updateMyOrganizationSuccess(state, action);\r\n case ActionTypes.ORGANIZATION_UPDATE_MY_FAIL:\r\n return updateMyOrganizationFail(state, action);\r\n case ActionTypes.ORGANIZATION_EXPORT_START:\r\n return exportOrganizationStart(state, action);\r\n case ActionTypes.ORGANIZATION_EXPORT_SUCCESS:\r\n return exportOrganizationSuccess(state, action);\r\n case ActionTypes.ORGANIZATION_EXPORT_FAIL:\r\n return exportOrganizationFail(state, action);\r\n case ActionTypes.ORGANIZATION_UPDATE_IMAGE_START:\r\n return updateOrganizationImageStart(state, action);\r\n case ActionTypes.ORGANIZATION_UPDATE_IMAGE_SUCCESS:\r\n return updateOrganizationImageSuccess(state, action);\r\n case ActionTypes.ORGANIZATION_UPDATE_IMAGE_FAIL:\r\n return updateOrganizationImageFail(state, action);\r\n case ActionTypes.ORGANIZATION_DELETE_IMAGE_START:\r\n return deleteOrganizationImageStart(state, action);\r\n case ActionTypes.ORGANIZATION_DELETE_IMAGE_SUCCESS:\r\n return deleteOrganizationImageSuccess(state, action);\r\n case ActionTypes.ORGANIZATION_DELETE_IMAGE_FAIL:\r\n return deleteOrganizationImageFail(state, action);\r\n case ActionTypes.ORGANIZATION_GET_START:\r\n return getOrganizationStart(state, action);\r\n case ActionTypes.ORGANIZATION_GET_SUCCESS:\r\n return getOrganizationSuccess(state, action);\r\n case ActionTypes.ORGANIZATION_GET_FAIL:\r\n return getOrganizationFail(state, action);\r\n case ActionTypes.ORGANIZATION_LIST_START:\r\n return listOrganizationsStart(state, action);\r\n case ActionTypes.ORGANIZATION_LIST_SUCCESS:\r\n return listOrganizationsSuccess(state, action);\r\n case ActionTypes.ORGANIZATION_LIST_FAIL:\r\n return listOrganizationsFail(state, action);\r\n case ActionTypes.ORGANIZATION_SAVE_START:\r\n return saveOrganizationStart(state, action);\r\n case ActionTypes.ORGANIZATION_SAVE_SUCCESS:\r\n return saveOrganizationSuccess(state, action);\r\n case ActionTypes.ORGANIZATION_SAVE_FAIL:\r\n return saveOrganizationFail(state, action);\r\n case ActionTypes.ORGANIZATION_UPDATE_START:\r\n return updateOrganizationStart(state, action);\r\n case ActionTypes.ORGANIZATION_UPDATE_SUCCESS:\r\n return updateOrganizationSuccess(state, action);\r\n case ActionTypes.ORGANIZATION_UPDATE_FAIL:\r\n return updateOrganizationFail(state, action);\r\n case ActionTypes.ORGANIZATION_CONFIRM_BILLING_START:\r\n return confirmBillingStart(state, action);\r\n case ActionTypes.ORGANIZATION_CONFIRM_BILLING_SUCCESS:\r\n return confirmBillingSuccess(state, action);\r\n case ActionTypes.ORGANIZATION_CONFIRM_BILLING_FAIL:\r\n return confirmBillingFail(state, action);\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default reducer;\r\n","import { ILocationAction, ILocationState } from \"../../interfaces\";\r\nimport { updateObject } from \"../../shared/utility\";\r\nimport { ActionTypes } from \"../actions/actionTypes\";\r\n\r\nconst initialState: ILocationState = {\r\n loading: false,\r\n locations: null,\r\n location: null,\r\n error: null,\r\n saveOrUpdateOk: false\r\n};\r\n\r\nconst getLocationStart = (\r\n state: ILocationState,\r\n action: ILocationAction\r\n): ILocationState => {\r\n return updateObject(state, {\r\n location: null,\r\n loading: true,\r\n error: null,\r\n });\r\n};\r\n\r\nconst getLocationSuccess = (\r\n state: ILocationState,\r\n action: ILocationAction\r\n): ILocationState => {\r\n return updateObject(state, {\r\n location: action.location,\r\n loading: false,\r\n error: null,\r\n });\r\n};\r\n\r\nconst getLocationFail = (\r\n state: ILocationState,\r\n action: ILocationAction\r\n): ILocationState => {\r\n return updateObject(state, {\r\n loading: false,\r\n error: action.error,\r\n });\r\n};\r\n\r\nconst deleteLocationStart = (\r\n state: ILocationState,\r\n action: ILocationAction\r\n): ILocationState => {\r\n return updateObject(state, {\r\n location: null,\r\n loading: true,\r\n error: null,\r\n });\r\n};\r\n\r\nconst deleteLocationSuccess = (\r\n state: ILocationState,\r\n action: ILocationAction\r\n): ILocationState => {\r\n return updateObject(state, {\r\n location: action.location,\r\n loading: false,\r\n error: null,\r\n });\r\n};\r\n\r\nconst deleteLocationFail = (\r\n state: ILocationState,\r\n action: ILocationAction\r\n): ILocationState => {\r\n return updateObject(state, {\r\n loading: false,\r\n error: action.error,\r\n });\r\n};\r\n\r\nconst listLocationsStart = (\r\n state: ILocationState,\r\n action: ILocationAction\r\n): ILocationState => {\r\n return updateObject(state, {\r\n locations: null,\r\n location: null,\r\n loading: true,\r\n error: null,\r\n });\r\n};\r\n\r\nconst listLocationsSuccess = (\r\n state: ILocationState,\r\n action: ILocationAction\r\n): ILocationState => {\r\n return updateObject(state, {\r\n locations: action.locations,\r\n loading: false,\r\n error: null,\r\n });\r\n};\r\n\r\nconst listLocationsFail = (\r\n state: ILocationState,\r\n action: ILocationAction\r\n): ILocationState => {\r\n return updateObject(state, {\r\n loading: false,\r\n error: action.error,\r\n });\r\n};\r\n\r\nconst saveLocationStart = (\r\n state: ILocationState,\r\n action: ILocationAction\r\n): ILocationState => {\r\n return updateObject(state, {\r\n loading: true,\r\n error: null,\r\n });\r\n};\r\n\r\nconst saveLocationSuccess = (\r\n state: ILocationState,\r\n action: ILocationAction\r\n): ILocationState => {\r\n return updateObject(state, {\r\n location: action.location,\r\n loading: false,\r\n error: null,\r\n saveOrUpdateOk: true\r\n });\r\n};\r\n\r\nconst saveLocationFail = (\r\n state: ILocationState,\r\n action: ILocationAction\r\n): ILocationState => {\r\n return updateObject(state, {\r\n loading: false,\r\n error: action.error,\r\n });\r\n};\r\n\r\nconst updateLocationStart = (\r\n state: ILocationState,\r\n action: ILocationAction\r\n): ILocationState => {\r\n return updateObject(state, {\r\n loading: true,\r\n error: null,\r\n });\r\n};\r\n\r\nconst updateLocationSuccess = (\r\n state: ILocationState,\r\n action: ILocationAction\r\n): ILocationState => {\r\n return updateObject(state, {\r\n location: action.location,\r\n loading: false,\r\n error: null,\r\n saveOrUpdateOk: true\r\n });\r\n};\r\n\r\nconst updateLocationFail = (\r\n state: ILocationState,\r\n action: ILocationAction\r\n): ILocationState => {\r\n return updateObject(state, {\r\n loading: false,\r\n error: action.error,\r\n });\r\n};\r\n\r\nconst clearLocation = (\r\n state: ILocationState,\r\n action: ILocationAction\r\n): ILocationState => {\r\n return { ...initialState };\r\n};\r\n\r\nconst reducer = (\r\n state: ILocationState = initialState,\r\n action: ILocationAction\r\n): ILocationState => {\r\n switch (action.type) {\r\n case ActionTypes.LOCATION_GET_START:\r\n return getLocationStart(state, action);\r\n case ActionTypes.LOCATION_GET_SUCCESS:\r\n return getLocationSuccess(state, action);\r\n case ActionTypes.LOCATION_GET_FAIL:\r\n return getLocationFail(state, action);\r\n case ActionTypes.LOCATION_DELETE_START:\r\n return deleteLocationStart(state, action);\r\n case ActionTypes.LOCATION_DELETE_SUCCESS:\r\n return deleteLocationSuccess(state, action);\r\n case ActionTypes.LOCATION_DELETE_FAIL:\r\n return deleteLocationFail(state, action);\r\n case ActionTypes.LOCATION_LIST_START:\r\n return listLocationsStart(state, action);\r\n case ActionTypes.LOCATION_LIST_SUCCESS:\r\n return listLocationsSuccess(state, action);\r\n case ActionTypes.LOCATION_LIST_FAIL:\r\n return listLocationsFail(state, action);\r\n case ActionTypes.LOCATION_SAVE_START:\r\n return saveLocationStart(state, action);\r\n case ActionTypes.LOCATION_SAVE_SUCCESS:\r\n return saveLocationSuccess(state, action);\r\n case ActionTypes.LOCATION_SAVE_FAIL:\r\n return saveLocationFail(state, action);\r\n case ActionTypes.LOCATION_UPDATE_START:\r\n return updateLocationStart(state, action);\r\n case ActionTypes.LOCATION_UPDATE_SUCCESS:\r\n return updateLocationSuccess(state, action);\r\n case ActionTypes.LOCATION_UPDATE_FAIL:\r\n return updateLocationFail(state, action);\r\n case ActionTypes.LOCATION_CLEAR:\r\n return clearLocation(state, action);\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default reducer;\r\n","import { IFeedbackState, IFeedbackAction } from \"./../../interfaces/state\";\r\nimport { updateObject } from \"../../shared/utility\";\r\nimport { ActionTypes } from \"../actions/actionTypes\";\r\n\r\ntype TState = IFeedbackState;\r\ntype TAction = IFeedbackAction;\r\n\r\nconst initialState: TState = {\r\n loading: false,\r\n feedbacks: null,\r\n feedback: null,\r\n offerRequest: null,\r\n serviceProviders: null,\r\n error: null,\r\n saveOk: false\r\n};\r\n\r\nconst getFeedbackStart = (state: TState, action: TAction): TState => {\r\n return updateObject(state, {\r\n feedback: null,\r\n loading: true,\r\n error: null,\r\n });\r\n};\r\n\r\nconst getFeedbackSuccess = (state: TState, action: TAction): TState => {\r\n return updateObject(state, {\r\n feedback: action.feedback,\r\n loading: false,\r\n error: null,\r\n });\r\n};\r\n\r\nconst getFeedbackFail = (state: TState, action: TAction): TState => {\r\n return updateObject(state, {\r\n loading: false,\r\n error: action.error,\r\n });\r\n};\r\n\r\nconst deleteFeedbackStart = (state: TState, action: TAction): TState => {\r\n return updateObject(state, {\r\n feedback: null,\r\n loading: true,\r\n error: null,\r\n });\r\n};\r\n\r\nconst deleteFeedbackSuccess = (state: TState, action: TAction): TState => {\r\n return updateObject(state, {\r\n feedback: action.feedback,\r\n loading: false,\r\n error: null,\r\n });\r\n};\r\n\r\nconst deleteFeedbackFail = (state: TState, action: TAction): TState => {\r\n return updateObject(state, {\r\n loading: false,\r\n error: action.error,\r\n });\r\n};\r\n\r\nconst listFeedbacksStart = (state: TState, action: TAction): TState => {\r\n return updateObject(state, {\r\n feedbacks: null,\r\n feedback: null,\r\n loading: true,\r\n error: null,\r\n });\r\n};\r\n\r\nconst listFeedbacksSuccess = (state: TState, action: TAction): TState => {\r\n return updateObject(state, {\r\n feedbacks: action.feedbacks,\r\n loading: false,\r\n error: null,\r\n });\r\n};\r\n\r\nconst listFeedbacksFail = (state: TState, action: TAction): TState => {\r\n return updateObject(state, {\r\n loading: false,\r\n error: action.error,\r\n });\r\n};\r\n\r\nconst saveFeedbackStart = (state: TState, action: TAction): TState => {\r\n return updateObject(state, {\r\n loading: true,\r\n error: null,\r\n });\r\n};\r\n\r\nconst saveFeedbackSuccess = (state: TState, action: TAction): TState => {\r\n return updateObject(state, {\r\n feedback: action.feedback,\r\n loading: false,\r\n saveOk: true,\r\n error: null,\r\n });\r\n};\r\n\r\nconst saveFeedbackFail = (state: TState, action: TAction): TState => {\r\n return updateObject(state, {\r\n loading: false,\r\n error: action.error,\r\n });\r\n};\r\n\r\nconst updateFeedbackStart = (state: TState, action: TAction): TState => {\r\n return updateObject(state, {\r\n loading: true,\r\n error: null,\r\n });\r\n};\r\n\r\nconst updateFeedbackSuccess = (state: TState, action: TAction): TState => {\r\n return updateObject(state, {\r\n feedback: action.feedback,\r\n loading: false,\r\n error: null,\r\n });\r\n};\r\n\r\nconst updateFeedbackFail = (state: TState, action: TAction): TState => {\r\n return updateObject(state, {\r\n loading: false,\r\n error: action.error,\r\n });\r\n};\r\n\r\nconst getFeedbackFormDataStart = (state: TState, action: TAction): TState => {\r\n return updateObject(state, {\r\n offerRequest: null,\r\n serviceProviders: null,\r\n loading: true,\r\n error: null,\r\n });\r\n};\r\n\r\nconst getFeedbackFormDataSuccess = (state: TState, action: TAction): TState => {\r\n return updateObject(state, {\r\n offerRequest: action.offerRequest,\r\n serviceProviders: action.serviceProviders,\r\n loading: false,\r\n error: null,\r\n });\r\n};\r\n\r\nconst getFeedbackFormDataFail = (state: TState, action: TAction): TState => {\r\n return updateObject(state, {\r\n loading: false,\r\n error: action.error,\r\n });\r\n};\r\n\r\nconst clearFeedback = (state: TState, action: TAction): TState => {\r\n return updateObject(state, {\r\n feedback: null,\r\n });\r\n};\r\n\r\nconst reducer = (state: TState = initialState, action: TAction): TState => {\r\n switch (action.type) {\r\n case ActionTypes.FEEDBACK_GET_START:\r\n return getFeedbackStart(state, action);\r\n case ActionTypes.FEEDBACK_GET_SUCCESS:\r\n return getFeedbackSuccess(state, action);\r\n case ActionTypes.FEEDBACK_GET_FAIL:\r\n return getFeedbackFail(state, action);\r\n case ActionTypes.FEEDBACK_DELETE_START:\r\n return deleteFeedbackStart(state, action);\r\n case ActionTypes.FEEDBACK_DELETE_SUCCESS:\r\n return deleteFeedbackSuccess(state, action);\r\n case ActionTypes.FEEDBACK_DELETE_FAIL:\r\n return deleteFeedbackFail(state, action);\r\n case ActionTypes.FEEDBACK_LIST_START:\r\n return listFeedbacksStart(state, action);\r\n case ActionTypes.FEEDBACK_LIST_SUCCESS:\r\n return listFeedbacksSuccess(state, action);\r\n case ActionTypes.FEEDBACK_LIST_FAIL:\r\n return listFeedbacksFail(state, action);\r\n case ActionTypes.FEEDBACK_SAVE_START:\r\n return saveFeedbackStart(state, action);\r\n case ActionTypes.FEEDBACK_SAVE_SUCCESS:\r\n return saveFeedbackSuccess(state, action);\r\n case ActionTypes.FEEDBACK_SAVE_FAIL:\r\n return saveFeedbackFail(state, action);\r\n case ActionTypes.FEEDBACK_UPDATE_START:\r\n return updateFeedbackStart(state, action);\r\n case ActionTypes.FEEDBACK_UPDATE_SUCCESS:\r\n return updateFeedbackSuccess(state, action);\r\n case ActionTypes.FEEDBACK_UPDATE_FAIL:\r\n return updateFeedbackFail(state, action);\r\n case ActionTypes.FEEDBACK_GET_FORM_DATA_START:\r\n return getFeedbackFormDataStart(state, action);\r\n case ActionTypes.FEEDBACK_GET_FORM_DATA_SUCCESS:\r\n return getFeedbackFormDataSuccess(state, action);\r\n case ActionTypes.FEEDBACK_GET_FORM_DATA_FAIL:\r\n return getFeedbackFormDataFail(state, action);\r\n case ActionTypes.FEEDBACK_CLEAR:\r\n return clearFeedback(state, action);\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default reducer;\r\n","import { IContentAction, IContentState } from \"../../interfaces\";\r\nimport { updateObject } from \"../../shared/utility\";\r\nimport { ActionTypes } from \"../actions/actionTypes\";\r\n\r\ntype TState = IContentState;\r\ntype TAction = IContentAction;\r\n\r\nconst initialState: TState = {\r\n loading: false,\r\n contents: null,\r\n content: null,\r\n error: null,\r\n saveOrUpdateOk: false\r\n};\r\n\r\nconst getContentStart = (state: TState, action: TAction): TState => {\r\n return updateObject(state, {\r\n content: null,\r\n loading: true,\r\n error: null,\r\n });\r\n};\r\n\r\nconst getContentSuccess = (state: TState, action: TAction): TState => {\r\n return updateObject(state, {\r\n content: action.content,\r\n loading: false,\r\n error: null,\r\n });\r\n};\r\n\r\nconst getContentFail = (state: TState, action: TAction): TState => {\r\n return updateObject(state, {\r\n loading: false,\r\n error: action.error,\r\n });\r\n};\r\n\r\nconst deleteContentStart = (state: TState, action: TAction): TState => {\r\n return updateObject(state, {\r\n content: null,\r\n loading: true,\r\n error: null,\r\n });\r\n};\r\n\r\nconst deleteContentSuccess = (state: TState, action: TAction): TState => {\r\n return updateObject(state, {\r\n content: action.content,\r\n loading: false,\r\n error: null,\r\n });\r\n};\r\n\r\nconst deleteContentFail = (state: TState, action: TAction): TState => {\r\n return updateObject(state, {\r\n loading: false,\r\n error: action.error,\r\n });\r\n};\r\n\r\nconst listContentsStart = (state: TState, action: TAction): TState => {\r\n return updateObject(state, {\r\n contents: null,\r\n content: null,\r\n loading: true,\r\n error: null,\r\n });\r\n};\r\n\r\nconst listContentsSuccess = (\r\n state: TState,\r\n action: TAction\r\n): TState => {\r\n return updateObject(state, {\r\n contents: action.contents,\r\n loading: false,\r\n error: null,\r\n });\r\n};\r\n\r\nconst listContentsFail = (state: TState, action: TAction): TState => {\r\n return updateObject(state, {\r\n loading: false,\r\n error: action.error,\r\n });\r\n};\r\n\r\n\r\nconst saveContentStart = (state: TState, action: TAction): TState => {\r\n return updateObject(state, {\r\n loading: true,\r\n error: null,\r\n });\r\n};\r\n\r\nconst saveContentSuccess = (\r\n state: TState,\r\n action: TAction\r\n): TState => {\r\n return updateObject(state, {\r\n content: action.content,\r\n loading: false,\r\n error: null,\r\n saveOrUpdateOk: true,\r\n });\r\n};\r\n\r\nconst saveContentFail = (state: TState, action: TAction): TState => {\r\n return updateObject(state, {\r\n loading: false,\r\n error: action.error,\r\n });\r\n};\r\n\r\nconst updateContentStart = (\r\n state: TState,\r\n action: TAction\r\n): TState => {\r\n return updateObject(state, {\r\n loading: true,\r\n error: null,\r\n });\r\n};\r\n\r\nconst updateContentSuccess = (\r\n state: TState,\r\n action: TAction\r\n): TState => {\r\n return updateObject(state, {\r\n content: action.content,\r\n loading: false,\r\n error: null,\r\n saveOrUpdateOk: true\r\n });\r\n};\r\n\r\nconst updateContentFail = (state: TState, action: TAction): TState => {\r\n return updateObject(state, {\r\n loading: false,\r\n error: action.error,\r\n });\r\n};\r\n\r\nconst clearContent = (state: TState, action: TAction): TState => {\r\n return { ...initialState };\r\n};\r\n\r\nconst reducer = (\r\n state: TState = initialState,\r\n action: TAction\r\n): TState => {\r\n switch (action.type) {\r\n case ActionTypes.CONTENT_GET_START:\r\n return getContentStart(state, action);\r\n case ActionTypes.CONTENT_GET_SUCCESS:\r\n return getContentSuccess(state, action);\r\n case ActionTypes.CONTENT_GET_FAIL:\r\n return getContentFail(state, action);\r\n case ActionTypes.CONTENT_DELETE_START:\r\n return deleteContentStart(state, action);\r\n case ActionTypes.CONTENT_DELETE_SUCCESS:\r\n return deleteContentSuccess(state, action);\r\n case ActionTypes.CONTENT_DELETE_FAIL:\r\n return deleteContentFail(state, action);\r\n case ActionTypes.CONTENT_LIST_START:\r\n return listContentsStart(state, action);\r\n case ActionTypes.CONTENT_LIST_SUCCESS:\r\n return listContentsSuccess(state, action);\r\n case ActionTypes.CONTENT_LIST_FAIL:\r\n return listContentsFail(state, action);\r\n case ActionTypes.CONTENT_SAVE_START:\r\n return saveContentStart(state, action);\r\n case ActionTypes.CONTENT_SAVE_SUCCESS:\r\n return saveContentSuccess(state, action);\r\n case ActionTypes.CONTENT_SAVE_FAIL:\r\n return saveContentFail(state, action);\r\n case ActionTypes.CONTENT_UPDATE_START:\r\n return updateContentStart(state, action);\r\n case ActionTypes.CONTENT_UPDATE_SUCCESS:\r\n return updateContentSuccess(state, action);\r\n case ActionTypes.CONTENT_UPDATE_FAIL:\r\n return updateContentFail(state, action);\r\n case ActionTypes.CONTENT_CLEAR:\r\n return clearContent(state, action);\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default reducer;","import { IGeoLocationAction, IGeoLocationState } from \"../../interfaces\";\r\nimport { updateObject } from \"../../shared/utility\";\r\nimport { ActionTypes } from \"../actions/actionTypes\";\r\n\r\nconst initialState: IGeoLocationState = {\r\n loading: false,\r\n geoLocation: null,\r\n error: null,\r\n};\r\n\r\nconst getGeoLocationStart = (state: IGeoLocationState, action: IGeoLocationAction): IGeoLocationState => {\r\n return updateObject(state, {\r\n geoLocation: null,\r\n loading: true,\r\n error: null,\r\n });\r\n};\r\n\r\nconst getGeoLocationSuccess = (state: IGeoLocationState, action: IGeoLocationAction): IGeoLocationState => {\r\n return updateObject(state, {\r\n geoLocation: action.geoLocation,\r\n loading: false,\r\n error: null,\r\n });\r\n};\r\n\r\nconst getGeoLocationFail = (state: IGeoLocationState, action: IGeoLocationAction): IGeoLocationState => {\r\n return updateObject(state, {\r\n loading: false,\r\n error: action.error,\r\n });\r\n};\r\n\r\nconst reducer = (\r\n state: IGeoLocationState = initialState,\r\n action: IGeoLocationAction\r\n): IGeoLocationState => {\r\n switch (action.type) {\r\n case ActionTypes.GEOLOCATION_GET_START:\r\n return getGeoLocationStart(state, action);\r\n case ActionTypes.GEOLOCATION_GET_SUCCESS:\r\n return getGeoLocationSuccess(state, action);\r\n case ActionTypes.GEOLOCATION_GET_FAIL:\r\n return getGeoLocationFail(state, action);\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default reducer;","import { ILogItemAction, ILogItemState } from \"../../interfaces\";\r\nimport { updateObject } from \"../../shared/utility\";\r\nimport { ActionTypes } from \"../actions/actionTypes\";\r\n\r\ntype TState = ILogItemState;\r\ntype TAction = ILogItemAction;\r\n\r\nconst initialState: TState = {\r\n loading: false,\r\n logItems: null,\r\n error: null,\r\n};\r\n\r\nconst listLogItemsStart = (state: TState, action: TAction): TState => {\r\n return updateObject(state, {\r\n logItems: null,\r\n loading: true,\r\n error: null,\r\n });\r\n};\r\n\r\nconst listLogItemsSuccess = (\r\n state: TState,\r\n action: TAction\r\n): TState => {\r\n return updateObject(state, {\r\n logItems: action.logItems,\r\n loading: false,\r\n error: null,\r\n });\r\n};\r\n\r\nconst listLogItemsFail = (state: TState, action: TAction): TState => {\r\n return updateObject(state, {\r\n loading: false,\r\n error: action.error,\r\n });\r\n}\r\n\r\nconst clearLogItem = (state: TState, action: TAction): TState => {\r\n return { ...initialState };\r\n};\r\n\r\nconst reducer = (\r\n state: TState = initialState,\r\n action: TAction\r\n): TState => {\r\n switch (action.type) {\r\n case ActionTypes.LOG_ITEM_LIST_START:\r\n return listLogItemsStart(state, action);\r\n case ActionTypes.LOG_ITEM_LIST_SUCCESS:\r\n return listLogItemsSuccess(state, action);\r\n case ActionTypes.LOG_ITEM_LIST_FAIL:\r\n return listLogItemsFail(state, action);\r\n case ActionTypes.LOG_ITEM_LIST_CLEAR:\r\n return clearLogItem(state, action);\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default reducer;","import React, { Suspense } from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\nimport { Provider } from \"react-redux\";\r\nimport { BrowserRouter } from \"react-router-dom\";\r\nimport {\r\n AnyAction,\r\n applyMiddleware,\r\n combineReducers,\r\n compose,\r\n createStore,\r\n Reducer,\r\n} from \"redux\";\r\nimport thunk, { ThunkDispatch } from \"redux-thunk\";\r\nimport App from \"./App\";\r\nimport \"./i18n\";\r\nimport \"./index.scss\";\r\nimport { IAppState } from \"./interfaces\";\r\nimport { ActionTypes } from \"./store/actions/actionTypes\";\r\nimport {\r\n authReducer,\r\n offerRequestReducer,\r\n organizationReducer,\r\n serviceProviderReducer,\r\n serviceReducer,\r\n usersReducer,\r\n locationsReducer,\r\n feedbackReducer,\r\n contentReducer,\r\n geoLocationReducer,\r\n logItemReducer\r\n} from \"./store/reducers\";\r\nimport ReactGA from 'react-ga4';\r\n\r\ndeclare global {\r\n interface Window {\r\n __REDUX_DEVTOOLS_EXTENSION_COMPOSE__?: any;\r\n }\r\n}\r\n\r\nconst composeEnhancers =\r\n process.env.NODE_ENV === \"development\"\r\n ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose\r\n : compose;\r\n\r\nconst appReducer: Reducer = combineReducers({\r\n auth: authReducer,\r\n users: usersReducer,\r\n offerRequest: offerRequestReducer,\r\n serviceProvider: serviceProviderReducer,\r\n services: serviceReducer,\r\n organization: organizationReducer,\r\n locations: locationsReducer,\r\n feedbacks: feedbackReducer,\r\n content: contentReducer,\r\n geoLocation: geoLocationReducer,\r\n logItem: logItemReducer\r\n});\r\n\r\nconst rootReducer = (state: IAppState | undefined, action: { type: ActionTypes }) => {\r\n if (action.type === ActionTypes.AUTH_LOGOUT_SUCCESS) {\r\n return appReducer(undefined, action);\r\n } \r\n return appReducer(state, action);\r\n}\r\n\r\nexport type TDispatch = ThunkDispatch;\r\n\r\nconst store = createStore(\r\n rootReducer,\r\n composeEnhancers(applyMiddleware(thunk))\r\n);\r\n\r\nconst root = (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n);\r\n\r\nReactGA.initialize(\"G-1K886T9PEB\")\r\n\r\nReactDOM.render(root, document.getElementById(\"root\"));\r\n\r\n// If you want your app to work offline and load faster, you can change\r\n// unregister() to register() below. Note this comes with some pitfalls.\r\n// Learn more about service workers: https://bit.ly/CRA-PWA\r\n// serviceWorker.unregister();\r\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Title\":\"Modal_Title__10rPU\",\"Container\":\"Modal_Container__2R34C\",\"CloseModal\":\"Modal_CloseModal__3sIx-\",\"ContainerSmall\":\"Modal_ContainerSmall__1N0bB\",\"ContainerMedium\":\"Modal_ContainerMedium__27ZjT\",\"ContainerFull\":\"Modal_ContainerFull__26B9e\",\"Content\":\"Modal_Content__V2oRI\",\"ContainerOpen\":\"Modal_ContainerOpen__wrZzl\",\"NoScroll\":\"Modal_NoScroll__1grUF\",\"Header\":\"Modal_Header__1J61r\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Button\":\"Button_Button__3YAjc\",\"Link\":\"Button_Link__3hui6\",\"Disabled\":\"Button_Disabled__3xxxI\",\"Small\":\"Button_Small__2y3AL\",\"Large\":\"Button_Large__1Rs5e\",\"Secondary\":\"Button_Secondary__1DQOu\",\"Danger\":\"Button_Danger__3zqHb\",\"Success\":\"Button_Success__3hNaD\",\"None\":\"Button_None__2OZGa\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Background\":\"Auth_Background__2ENnQ\",\"ErrorMessage\":\"Auth_ErrorMessage__3f4uT\",\"Container\":\"Auth_Container__1evkq\",\"LoginBox\":\"Auth_LoginBox__1_GFl\",\"Title\":\"Auth_Title__3iA53\",\"Inputs\":\"Auth_Inputs__2M4p-\",\"ButtonContainer\":\"Auth_ButtonContainer__WzuEa\",\"Button\":\"Auth_Button__2L6yx\",\"LinksContainer\":\"Auth_LinksContainer__2cZq7\",\"Border\":\"Auth_Border__1fTFJ\",\"LogoContainer\":\"Auth_LogoContainer__1sm9A\",\"Logo\":\"Auth_Logo__2A4wc\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"SizeLarge\":\"Spinner_SizeLarge__3VEnp\",\"SizeMedium\":\"Spinner_SizeMedium__1Mh0r\",\"SizeSmall\":\"Spinner_SizeSmall__2TE8X\",\"ColorContent\":\"Spinner_ColorContent__NmI5y\",\"ColorPrimary\":\"Spinner_ColorPrimary__383iA\",\"Center\":\"Spinner_Center__2X5ez\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Container\":\"Header_Container__3Lcia\",\"Wrapper\":\"Header_Wrapper__IE11_\",\"ToggleMenu\":\"Header_ToggleMenu__1AmCp\",\"Icon\":\"Header_Icon__FGS21\",\"Logo\":\"Header_Logo__2dbNf\",\"Title\":\"Header_Title__ZVWnz\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Container\":\"Alert_Container__3OkyN\",\"Success\":\"Alert_Success__2oH9f\",\"Danger\":\"Alert_Danger__irxM7\",\"Primary\":\"Alert_Primary__3v2R3\",\"Warning\":\"Alert_Warning__Rdf-v\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"ImageContainer\":\"Organization_ImageContainer__2yBe2\",\"Image\":\"Organization_Image__1mqgi\",\"Label\":\"Organization_Label__1IPTz\",\"StaticContent\":\"Organization_StaticContent__3Fjvz\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Dropzone\":\"OrganizationImageDropzone_Dropzone__1zQq-\",\"Container\":\"OrganizationImageDropzone_Container__sBE_p\",\"Text\":\"OrganizationImageDropzone_Text__3_QbW\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Button\":\"StarOption_Button__1SKZi\",\"InActive\":\"StarOption_InActive__37Pj5\",\"Invalid\":\"StarOption_Invalid__3vOeq\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Container\":\"SplashScreen_Container__1XfqU\",\"Inner\":\"SplashScreen_Inner__9KOpW\",\"Hide\":\"SplashScreen_Hide__3Yy_0\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Container\":\"Table_Container__2bESy\",\"Table\":\"Table_Table__1kgbH\",\"Hover\":\"Table_Hover__v0KBX\",\"NoHover\":\"Table_NoHover__1mM5T\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"HelpText\":\"CustomerOfferRequest_HelpText__sjAYw\",\"Error\":\"CustomerOfferRequest_Error__2q7bI\",\"ErrorIcon\":\"CustomerOfferRequest_ErrorIcon__1OBL-\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"DetailRow\":\"ConfirmBillingModal_DetailRow__36bY2\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Box\":\"OfferRequestsInfo_Box__3_kBH\"};"],"sourceRoot":""}