{"version":3,"sources":["hooks/userInvitation/useUserInvitation.ts","theme/navigation.ts","theme/header.ts","theme/index.ts","components/atoms/button/index.ts","theme/borderRadius.ts","components/templates/AccountForm/styles.ts","components/templates/AccountForm/index.tsx","components/atoms/button/Button/index.tsx","components/atoms/form/WysiwygEditor/index.tsx","utils/constants/prospectmodulesignrequestconstants.ts","components/atoms/form/FormControl/styles.ts","components/atoms/form/FormControl/index.tsx","components/atoms/form/FormCurrency/styles.ts","components/atoms/form/FormCurrency/index.tsx","components/atoms/form/FormCheck/styles.ts","components/atoms/form/FormCheck/index.tsx","static/no-photo.svg","utils/areaHelper/index.ts","components/molecules/dropdown/Dropdown/styles.ts","components/molecules/dropdown/Dropdown/index.tsx","components/atoms/item/DropdownItem/styles.ts","components/atoms/item/DropdownItem/index.tsx","components/atoms/item/NestedDropdownItem/index.tsx","components/molecules/dropdown/DropdownMenu/styles.ts","components/molecules/dropdown/DropdownMenu/index.tsx","static/icons/chevron-down.svg","components/atoms/form/FormGroup/styles.ts","components/atoms/form/FormGroup/index.tsx","components/atoms/form/FormTextarea/styles.ts","components/atoms/form/FormTextarea/index.tsx","components/atoms/form/FormSelect/styles.ts","components/atoms/form/FormSelect/index.tsx","components/atoms/form/FormSwitch/styles.ts","components/atoms/form/FormSwitch/index.tsx","components/atoms/form/FormRow/styles.ts","components/atoms/form/FormRow/index.tsx","components/atoms/form/FormYesNo/styles.ts","components/atoms/form/FormYesNo/index.tsx","components/atoms/form/FormImage/styles.ts","components/atoms/form/FormImage/index.tsx","components/atoms/form/FormFile/styles.ts","components/atoms/form/FormFile/index.tsx","components/atoms/form/FormMultipleFile/styles.ts","components/atoms/form/FormMultipleFile/index.tsx","components/atoms/form/FormAttachmentFiles/styles.ts","components/atoms/form/FormSection/styles.ts","components/atoms/form/FormSwitchList/styles.ts","components/atoms/form/FormDate/styles.ts","components/atoms/form/FormDate/index.tsx","components/atoms/form/FormDate/formik/index.tsx","components/atoms/form/FormTextarea/formik/index.tsx","components/atoms/form/FormSelect/formik/index.tsx","components/atoms/form/FormSwitch/formik/index.tsx","components/atoms/form/FormYesNo/formik/index.tsx","components/atoms/form/FormImage/formik/index.tsx","components/atoms/form/FormFile/formik/index.tsx","components/atoms/form/FormMultipleFile/formik/index.tsx","components/molecules/Group/styles.ts","components/molecules/Group/index.tsx","utils/errorhelper/index.ts","hooks/api/index.ts","utils/objectAppender/index.ts","static/icons sync /^/.*/.svg$","static/icons/about.svg","components/atoms/Icon/index.tsx","static/icons/add.svg","static/icons/agreement.svg","static/icons/arrow-left.svg","static/icons/arrow-right.svg","static/icons/check-bold.svg","static/icons/check.svg","static/icons/chevron-right.svg","static/icons/collapse.svg","static/icons/copy.svg","static/icons/courthouse.svg","contexts/sessionContext/index.tsx","static/icons/customer.svg","static/icons/dashboard.svg","static/icons/delete.svg","static/icons/document.svg","static/icons/download.svg","static/icons/edit.svg","static/icons/info.svg","static/icons/loading.svg","static/icons/mail.svg","static/icons/message.svg","static/icons/person.svg","static/icons/plus.svg","static/icons/print.svg","static/icons/profile.svg","static/icons/questionnaire.svg","static/icons/remove.svg","static/icons/right.svg","static/icons/scales.svg","static/icons/settings.svg","static/icons/sign-out.svg","static/icons/stamp.svg","static/icons/terms-and-conditions.svg","static/icons/wrench.svg","utils/constants/claimconstants.ts","utils/constants/roleconstants.ts","utils/constants/edituserinforequestconstants.ts","components/atoms/form/FormControl/formik/index.tsx","components/atoms/form/InvalidFeedback/index.ts","components/atoms/button/Button/styles.ts","utils/constants/calculatortypeconstants.ts","utils/constants/calculatorinteresttypeconstants.ts","theme/grid.ts","components/atoms/Tab/styles.ts","components/atoms/Tab/index.tsx","components/molecules/Tabs/styles.ts","components/molecules/Tabs/index.tsx","components/templates/Tabs/index.tsx","components/pages/ForgotPassword/index.tsx","components/pages/ResetPassword/index.tsx","components/pages/TwoFactorAuthentication/index.tsx","components/atoms/card/Card/index.ts","components/atoms/card/CardBody/index.ts","components/atoms/card/CardHeader/index.ts","utils/cdnHelper/index.ts","components/atoms/card/CardImage/styles.ts","components/atoms/card/CardImage/index.tsx","components/atoms/card/CardContent/index.ts","components/atoms/card/CardActions/index.ts","hooks/profile/useProfile.ts","contexts/headerContext/index.tsx","components/pages/Extras/index.tsx","components/atoms/Margin/index.ts","components/pages/Calculators/index.tsx","utils/urihelper/index.ts","hooks/templateLetter/useAllTemplateLetters.ts","components/molecules/table/Table/styles.ts","components/molecules/table/Table/components/Search/index.tsx","components/molecules/table/Table/components/Footer/styles.ts","components/molecules/table/Table/components/Pagination/styles.ts","components/molecules/table/Table/components/Pagination/index.tsx","components/molecules/table/Table/components/Footer/index.tsx","components/molecules/table/TableLoading/styles.ts","components/molecules/table/TableLoading/index.tsx","components/atoms/Action/styles.ts","components/atoms/Action/index.tsx","components/molecules/table/Table/hooks/useActions.tsx","components/molecules/table/Table/index.tsx","hooks/language/types.ts","components/organisms/accordion/styles.ts","components/organisms/accordion/index.tsx","hooks/templateLetter/useSendTemplateLetterMail.ts","components/organisms/Modal/styles.ts","components/organisms/Modal/index.tsx","components/pages/TemplateLetters/index.tsx","hooks/templateLetter/useDeleteAdminTemplateLetter.ts","hooks/modal/index.ts","components/pages/TemplateLetters/Manage/index.tsx","hooks/stamp/index.ts","hooks/stampOrder/useStampOrder.ts","components/molecules/card/ShopCard/styles.ts","components/molecules/card/ShopCard/index.tsx","utils/constants/paymentmethodconstants.ts","components/pages/Tools/index.tsx","hooks/banner/useAllBanners.ts","hooks/banner/useSendBannerMail.ts","components/pages/Banners/styles.ts","components/pages/Banners/index.tsx","components/atoms/Step/styles.ts","components/atoms/Step/index.tsx","components/molecules/Stepper/styles.ts","components/molecules/Stepper/index.tsx","components/organisms/Wizard/styles.ts","components/organisms/Wizard/index.tsx","utils/constants/moduleconstants.ts","components/pages/Banners/Manage/components/BannerData/index.tsx","components/pages/Banners/Manage/components/BannerFile/index.tsx","hooks/banner/useAddAdminBanner.ts","hooks/banner/useEditAdminBanner.ts","hooks/banner/useDeleteAdminBanner.ts","components/pages/Banners/Manage/index.tsx","components/templates/Account/styles.ts","static/juresta-login-part-left.svg","static/juresta-login-part-right.svg","static/logo.svg","components/templates/Account/index.tsx","components/templates/Default/styles.ts","components/atoms/MenuItem/styles.ts","components/molecules/Submenu/styles.ts","components/atoms/SubmenuItem/styles.ts","components/atoms/SubmenuItem/index.tsx","components/molecules/Submenu/index.tsx","components/atoms/MenuItem/index.tsx","components/molecules/Menu/styles.ts","components/molecules/Menu/index.tsx","components/organisms/Navigation/styles.ts","components/organisms/Navigation/index.tsx","components/organisms/header/Default/styles.ts","components/organisms/header/Default/index.tsx","components/atoms/Image/styles.ts","components/atoms/Image/index.tsx","components/molecules/User/styles.ts","components/molecules/User/index.tsx","utils/constants/localstrorageconstants.ts","components/templates/Default/index.tsx","hooks/area/index.ts","components/atoms/ActiveInactive/styles.ts","components/atoms/ActiveInactive/index.tsx","components/atoms/DateTitleCell/styles.ts","components/atoms/DateTitleCell/index.tsx","hooks/knowledgebaseitem/index.ts","hooks/newsitem/index.ts","components/pages/Dashboard/index.tsx","components/pages/About/index.tsx","components/atoms/Label/styles.ts","components/atoms/Label/index.tsx","hooks/modules/useModules.ts","hooks/legalAssistance/useLegalAssistance.ts","utils/constants/legalformconstants.ts","components/pages/LegalAid/index.tsx","components/pages/AdminDashboard/index.tsx","components/atoms/HeaderAction/styles.ts","components/atoms/HeaderAction/index.tsx","components/atoms/Alert/styles.ts","components/atoms/Alert/index.tsx","components/atoms/KeyValue/styles.ts","components/atoms/KeyValue/index.tsx","hooks/edituserinforequest/useEditUserInfoRequest.ts","components/atoms/UserImage/styles.ts","components/atoms/UserImage/index.tsx","utils/constants/personconstants.ts","components/pages/Profile/index.tsx","components/pages/Customers/components/Step2/index.tsx","hooks/kvk/useKvk.ts","components/organisms/KvkSearch/index.tsx","utils/kvkHelper/index.ts","components/pages/Customers/components/Step1/index.tsx","hooks/customer/useAllCustomers.ts","utils/constants/documentConstants.ts","components/pages/Customers/index.tsx","hooks/customer/useCustomer.ts","hooks/right/index.ts","components/pages/CustomerDetail/components/modules/index.tsx","hooks/document/index.ts","components/pages/CustomerDetail/components/documents/index.tsx","components/pages/CustomerDetail/components/files/index.tsx","components/pages/CustomerDetail/index.tsx","components/atoms/form/FormCheck/formik/index.tsx","components/pages/Collection/components/Step2/index.tsx","components/pages/Collection/components/Step1/index.tsx","components/pages/Collection/components/Step3/index.tsx","components/atoms/ButtonWrapper/index.tsx","hooks/collection/useAllCollections.ts","utils/constants/collectionconstants.ts","utils/constants/address.ts","hooks/collection/useCollection.ts","components/pages/Collection/components/Step4/index.tsx","components/pages/Collection/index.tsx","components/pages/CollectionForeign/components/Step2/index.tsx","components/pages/CollectionForeign/components/Step1/index.tsx","components/pages/CollectionForeign/components/Step3/index.tsx","hooks/collectionforeign/useAllCollectionForeigns.ts","hooks/collectionforeign/useCollectionForeign.ts","components/pages/CollectionForeign/components/Step4/index.tsx","components/pages/CollectionForeign/index.tsx","hooks/correspondence/useAllCorrespondence.ts","hooks/correspondence/useDeleteAdminCorrespondence.ts","components/pages/Correspondence/index.tsx","hooks/correspondenceTemplate/useAllCorrespondenceTemplates.ts","hooks/correspondenceTemplate/useDeleteAdminCorrespondenceTemplate.ts","components/pages/CorrespondenceTemplates/index.tsx","components/pages/AddCorrespondenceTemplate/styles.ts","components/atoms/AddFieldButton/styles.ts","components/atoms/AddFieldButton/index.tsx","hooks/correspondenceTemplate/useAddAdminCorrespondenceTemplate.ts","hooks/correspondenceTemplate/useEditAdminCorrespondenceTemplate.ts","components/atoms/form/WysiwygEditor/formik/index.tsx","components/pages/AddCorrespondenceTemplate/index.tsx","components/pages/SendCorrespondence/styles.ts","hooks/correspondence/useAddAdminCorrespondence.ts","hooks/correspondence/useEditAdminCorrespondence.ts","components/pages/SendCorrespondence/index.tsx","components/pages/Collections/index.tsx","utils/stringHelpers/index.ts","components/pages/Collections/manage/index.tsx","components/pages/Collections/overview/index.tsx","components/pages/CollectionForeigns/index.tsx","components/pages/CollectionForeigns/manage/index.tsx","components/pages/CollectionForeigns/overview/index.tsx","hooks/termsAndConditions/useAllTermsAndConditions.ts","hooks/termsAndConditions/useTermsAndConditions.ts","hooks/maintenancecontract/types.ts","components/pages/AdminTermsAndConditions/index.tsx","hooks/agreement/index.ts","components/pages/Agreements/index.tsx","hooks/maintenancecontract/index.ts","components/pages/AdminMaintenanceContracts/index.tsx","hooks/termsAndConditions/types.ts","components/pages/TacMain/index.tsx","components/pages/TacReview/index.tsx","hooks/userInvitation/types.ts","components/pages/TacTranslation/index.tsx","components/pages/TacUpdate/index.tsx","components/pages/TacMaintenanceContracts/index.tsx","components/pages/Empty/index.tsx","hooks/templateLetter/useAddAdminTemplateLetter.ts","hooks/templateLetter/useEditAdminTemplateLetter.ts","hooks/templateLetter/usePurgeTemplateLetterCache.ts","components/pages/TemplateLetters/Manage/components/ManageTemplate/index.tsx","hooks/language/index.ts","components/pages/ClientAgreements/index.tsx","components/pages/Messages/index.tsx","hooks/knowledgebasecategory/index.ts","components/pages/KnowledgeBase/index.tsx","components/pages/KnowledgeBaseDetail/index.tsx","components/pages/KnowledgeBase/Manage/index.tsx","components/pages/KnowledgeBaseSettings/Manage/index.tsx","components/pages/AddKnowledgeBaseItem/index.tsx","components/pages/NewsItems/Manage/index.tsx","components/pages/AddNewsItem/index.tsx","components/pages/NewsItems/index.tsx","hooks/user/index.ts","components/pages/Users/index.tsx","hooks/agreement/types.ts","components/pages/TacTools/index.tsx","components/pages/CaUpdate/index.tsx","components/pages/CaTranslation/index.tsx","components/pages/NewsItemDetail/index.tsx","components/pages/Stamps/Manage/components/StampData/index.tsx","components/pages/Stamps/Manage/index.tsx","components/pages/CollectionFileDownload/index.tsx","components/pages/MessagesDetail/index.tsx","hooks/prospect/useProspect.ts","components/pages/Prospects/index.tsx","App.tsx","index.tsx","components/atoms/text/H5/styles.ts","components/atoms/text/H5/index.tsx","components/atoms/text/H4/styles.ts","components/atoms/text/H4/index.tsx","components/atoms/text/H3/styles.ts","components/atoms/text/H3/index.tsx","components/atoms/text/H2/styles.ts","components/atoms/text/H2/index.tsx","components/atoms/text/H1/styles.ts","components/atoms/text/H1/index.tsx","components/atoms/text/Paragraph/styles.ts","components/atoms/text/Paragraph/index.tsx","utils/constants/rightconstants.ts","theme/colors.ts","components/atoms/form/FormCurrency/formik/index.tsx","theme/greys.ts","components/atoms/Tooltip/styles.ts","components/atoms/Tooltip/index.tsx","hooks/account/useAccount.ts","components/atoms/form/FormRadio/styles.ts","components/atoms/form/FormRadio/index.tsx"],"names":["useUserInvitation","useApi","get","post","baseUrl","getUserInvitation","code","a","response","inviteAdmin","values","inviteCustomer","fd","FormData","appendObject","completeRegistration","resendInvitation","userId","navigation","width","offset","padding","horizontal","header","bottom","height","theme","colors","greys","borderRadius","small","normal","large","Form","styled","FormikForm","Content","div","AccountForm","button","children","isValid","isSubmitting","type","alignSelf","size","disabled","loading","variant","rounded","Button","full","onClick","startIcon","endIcon","iconColor","title","props","icon","color","event","readableColor","name","noMargin","WysiwygEditor","error","initialValue","undefined","scriptLoading","async","apiKey","init","plugins","ProspectModuleSignRequest","getProspectModuleSignRequestDisplay","Collections","CollectionsForeign","LegalAid","TermsAndConditions","FormControl","input","grey","white","dark","primary","InvalidFeedback","CurrencyWrapper","CurrencyInput","FormCurrency","decimals","useField","field","helpers","value","toString","replace","prefix","onValueChange","setValue","decimalSeparator","groupSeparator","Checkbox","checked","css","lighten","HiddenCheckbox","Label","span","isWhite","Wrapper","label","FormCheck","Icon","defaultAreaRoute","role","Role","Admin","Sales","Dropdown","Header","Toggle","items","onSubItemClick","hideArrow","useState","isOpen","setIsOpen","ref","useRef","document","createElement","toggle","useCallback","stopPropagation","open","close","useLayer","onOutsideClick","onDisappear","overflowContainer","placement","auto","triggerOffset","containerOffset","arrowOffset","renderLayer","triggerProps","layerProps","arrowProps","AnimatePresence","style","current","offsetWidth","DropdownItem","li","DropdownIcon","NestedIcon","Title","forwardRef","to","nested","useTheme","navigate","NestedDropdownItem","onSubSubItemClick","useHover","delayEnter","delayLeave","hoverProps","snap","possiblePlacements","onParentClose","DropdownMenu","motion","ul","rgba","initialItems","filter","item","access","map","length","FormGroup","alignRight","required","secondary","Text","text","noMarginHeader","tooltip","Tooltip","FormTextarea","textarea","darkBorder","rows","FormSelect","isFocused","ValueContainer","Option","isSelected","Menu","MenuList","captureMenuScroll","components","Control","innerProps","innerRef","styles","singleValue","provided","placeholder","noOptionsMessage","FormSwitch","className","Row","Paragraph","FormRow","FormYesNo","ErrorWrapper","onChange","handleOnChange","target","group","useMemo","uniqueId","flex","FormRadio","lightenAmount","Inner","black","hasError","heightPercentage","NoImage","UploadIcon","darken","Image","image","Input","FormImage","hasImage","url","setUrl","useEffect","File","URL","createObjectURL","multiple","file","files","accept","src","noImage","alt","Files","whiteBackground","light","Remove","FormFile","setIsFocused","fileError","setFileError","onFocus","onBlur","preventDefault","FormFileWrapper","FormFileRemove","FormFileAdd","FormMultipleFile","setFiles","index","newFiles","splice","onFileChange","handleOnRemoveClick","f","reduce","c","handleOnAddClick","push","noRemoveIcon","form","border","FormDate","dateFormat","showYearDropdown","showMonthDropdown","FormikFormDate","meta","touched","selected","moment","toDate","date","FormikFormTextarea","FormikFormSelect","options","isMulti","option","indexOf","find","Array","o","FormikFormSwitch","FormikFormYesNo","FormikFormImage","FormikFormFile","FormikFormMultipleFile","Group","spaceBetween","center","right","toFormikErrors","errors","result","key","includes","split","v","i","match","toLowerCase","toUpperCase","forEach","message","refreshing","setSession","useSession","redirectToLogin","getFullUrl","getHeaders","headers","Headers","set","body","baseCallApi","finalUrl","finalOptions","fetch","json","data","ok","slice","refreshSession","React","method","claims","callApiFn","status","refreshResponse","dummyResponse","Response","statusText","callApi","JSON","stringify","put","deleteCall","object","formData","Date","x","keyString","append","toDateString","array","webpackContext","req","id","webpackContextResolve","__webpack_require__","e","Error","keys","Object","resolve","module","exports","wrapper","classnames","beforeInjection","svg","setAttribute","require","default","convertToSession","claimValues","claimName","claim","claimFirstValue","Claim","UserId","customerId","CustomerId","Roles","rights","Rights","username","UserName","insertion","Insertion","lastName","LastName","fullName","FullName","gender","Gender","SessionContext","createContext","session","clearSession","hasRight","hasRole","SessionProvider","updateSession","newSession","context","Provider","useContext","EditUserInfoRequestStatus","FormControlFormik","isBorder","Loading","StartIcon","EndIcon","CalculatorType","CalculatorInterestType","grid","gutterWidth","Tab","Link","active","Tabs","titles","path","paths","Children","tab","validationSchema","Yup","shape","mail","email","ForgotPassword","location","state","send","setSend","forgotPassword","useAccount","onSubmit","setSubmitting","setErrors","initialValues","userName","params","queryString","parse","search","created","setCreated","resetPassword","password","confirmPassword","rememberVerification","TwoFactorAuthentication","redirectUrl","resendTfaCode","verifyTfaCode","isLoadingNewCode","setIsLoadingNewCode","newCode","toast","success","submit","actions","handleSubmit","onLoad","as","tabIndex","Card","flexDirection","fill","overflow","noShadow","CardBody","borderBottom","CardHeader","isDark","withBody","cdnFileUrl","filename","args","k","b","resolvedCdn","imageHash","resize","extent","crop","quality","optimize","progressive","cdnString","background","Logo","img","CardImage","isLogo","CardContent","CardActions","align","useProfile","getProfile","edit","HeaderContext","headerTitle","setHeaderTitle","headerProfile","setHeaderProfile","HeaderProvider","profileCall","loadProfile","Promise","all","useHeader","Extras","getSize","Margin","vertical","top","left","amount","fromDate","format","ConsumerTransaction","interestType","Combined","interestPercentage","isTaxesRequired","Calculators","interestPercentageVisisble","setInterestPercentageVisisble","legalInterest","setLegalInterest","costs","setCosts","totalAmount","setTotalAmount","formValues","setFormValues","ContractTransaction","interestCost","calculateLegalInterest","collectionCosts","calculateCosts","totalCosts","Math","round","Number","EPSILON","interestPeriods","TradeTransaction","interest","Singular","isNaN","typeOptions","interestTypeOptions","replaceAll","setFieldValue","sm","toFixed","buildUriWithParams","uri","p","total","templateLetterQueryKey","useAllTemplateLetters","getAllTemplateLetters","useQuery","Table","table","Th","th","Td","td","fullWidth","Tr","tr","Sort","Search","setFilter","onAddClick","onAddClickLabel","onSettingsClick","Footer","Pagination","NavButton","pageIndex","pageCount","gotoPage","previousPage","nextPage","canPreviousPage","canNextPage","pages","isMobile","delta","range","rangeWithDots","l","pagination","number","page","cta","ctaText","hidePagination","TableLoading","tbody","columns","from","row","column","Action","isActive","ComponentWrapper","ActionComponent","component","useActions","hooks","visibleColumns","Cell","display","marginLeft","justifyContent","alignItems","action","original","Language","isLoading","noDataMessage","hideTableHeader","hideFooter","sortBy","useTable","initialState","desc","useGlobalFilter","useSortBy","usePagination","getTableProps","getTableBodyProps","headerGroups","prepareRow","setGlobalFilter","globalFilter","currentData","headerGroup","getHeaderGroupProps","getHeaderProps","getSortByToggleProps","render","isSorted","isSortedDesc","getRowProps","cells","cell","getCellProps","colSpan","textAlign","Accordion","AccordionHeader","ChevronDown","isOpened","paddingTop","useSendTemplateLetterMail","sendTemplateLetterMail","Overlay","duration","ENTERING","ENTERED","EXITING","EXITED","Modal","Close","H3","Subtitle","inProp","onExited","onHide","clickOutsideClose","subtitle","Transition","in","timeout","accessor","templateLetter","TemplateLetters","templateLetters","isLoadingTemplateLetters","templateLetterToMail","setTemplateLetterToMail","handleTemplateLetterOnSubmit","hideLetterEmail","letterId","useModal","enableReinitialize","showLetterEmail","languages","groupedTemplateLetters","language","fileHash","constructUrl","download","handleOnDownloadClick","handleOnSendMailClick","useDeleteAdminTemplateLetter","queryClient","useQueryClient","deleteTemplateLetter","deleteTemplateLetterMutation","useMutation","onMutate","cancelQueries","previousData","getQueryData","filteredData","setQueryData","onError","err","variables","onSettled","_","__","invalidateQueries","inputs","isShowing","setIsShowing","useReactModal","show","hide","languageName","ManageTemplateLetters","isLoadingDelete","setIsLoadingDelete","templateLetterToDelete","setTemplateLetterToDelete","handleDelete","mutateAsync","then","catch","closeDeleteModal","hideDeleteModal","showDeleteModal","handleManage","handleDownload","allStampsQueryKey","useStamps","fetchAllStamps","addStamp","editStamp","deleteStamp","useAllStamps","useStampOrder","createStampOrder","Price","numeral","locale","PaymentMethod","ShopCard","description","onOrderClick","price","marginTop","paymentMethodOptions","Invoice","Automatic","getPaymentMethodDisplay","paymentMethod","Tools","stamps","stampToOrder","setStampToOrder","makeStampOrder","resetForm","closeOrderModal","stampId","hideOrderModal","xs","showOrderModal","md","lg","xl","xxl","adminBannersQueryKey","useAllBanners","getAllBanners","useSendBannerMail","sendBanner","newValues","Column","Banners","banners","mailingBanner","setMailingBanner","sendBannerMail","setSendBannerMail","handleMailOnClick","bannerId","handleBannerMailOnSubmit","hideBannerEmail","showBannerEmail","handleOnClick","Step","completed","green","step","optional","Stepper","Space","first","steps","currentStep","Wizard","Module","initialSteps","onSubmitLabel","initialStep","persistKey","setNumber","snapshot","setSnapshot","next","setTouched","handleStepChange","min","totalSteps","getPreviousStep","max","lastStep","firstStep","isValidSync","disableSubmitButton","needsValidation","child","previous","BannerData","hidden","BannerFile","useFormikContext","setImage","bannerImage","reject","reader","FileReader","readAsDataURL","onload","onerror","useAddAdminBanner","addBanner","validateStep1AddBanner","useEditAdminBanner","editBanner","editBannerMutation","newData","bannerToEdit","useDeleteAdminBanner","deleteBanner","deleteBannerMutation","banner","ManageBanners","refetch","isLoadingBanners","setBanner","bannerToDelete","setBannerToDelete","handleOnHide","handleBannerSubmit","validateStep1","handleBannerDelete","handleshow","openDeleteModal","Circles","screenClass","horizontalPadding","Circle","isLeft","isRight","Account","Juresta","PartLeft","fallback","PartRight","MainContent","MenuItem","Notifications","TitleIcon","Bullet","Submenu","useMatch","SubmenuItem","notifications","Navigation","Default","Letter","Avatar","placeholderIcon","placeholderLetter","letter","charAt","User","Name","avatar","hash","persistCollectionKey","persistCollectionForeignKey","logOut","initialized","setInitialized","initializedAuth","setInitializedAuth","areaRoute","window","pathname","startsWith","substring","route","useAreaAuthorization","handleLogOut","localStorage","removeItem","Boolean","ActiveIcon","ActiveInactive","DateTitleCell","formattedDate","toLocaleDateString","day","month","year","useKnowledgeBaseItems","getAllKnowledgeBaseItem","addKnowledgeBaseItem","editKnowledgeBaseItem","deleteKnowledgeBaseItem","useAllKnowledgeBaseItems","queryKey","useNewsItems","getAllNewsItem","addNewsItem","editNewsItem","deleteNewsItem","useAllNewsItems","newsColumns","news","publicationDate","parseISO","articleColumns","article","agreementColumns","collection","Dashboard","agreements","some","ur","Right","Collection","CollectionAbroad","GeneralConditions","newsItems","sortedNewsItems","orderBy","toISOString","getTime","articles","sortedArticles","greeting","hourNow","getHours","About","href","orange","useModules","activateModule","editCustomerModule","LegalForm","useLegalAssistance","sendClientLegalAssistanceMail","hasRights","setHasRights","activateModules","handleMail","activateModuleInitialValues","question","AdminDashboard","HeaderActionComponent","Alert","AlertComponent","KeyValueComponent","include","useEditUserInfoRequests","getEditUserInfoRequests","completeEditUserInfoRequest","legelFormOptions","Proprietorship","Partnership","LimitedPartnerschip","PrivateCompany","LimitedLiabilityCompany","Union","Foundation","Unknown","getLegalFormDisplay","legalForm","genderOptions","Male","Female","getGenderDisplay","Profile","setIsLoading","editMode","setEditMode","profile","setProfile","editUserInfoRequest","setEditUserInfoRequest","loadEditUserInfoRequest","Requested","requestCall","initials","firstName","function","phoneNumber","mobileNumber","companyName","customer","kvkNumber","addressVisit","postalCodeVisit","cityVisit","isMailAddressDifferent","emailInvoice","addressMail","postalCodeMail","cityMail","bankAccount","website","userInfoItems","customerInfoItems","paymentItems","modulesInfoItems","HeaderAction","UserImage","KeyValue","Step2","useKvk","searchKvk","searchValue","getBasicProfile","KvkSearch","onSelectChange","notFoundMessage","onSearchDone","searchString","setSearchString","companies","setCompanies","companyOptions","setCompanyOptions","isLoadingKvk","setIsLoadingKvk","setError","debounced_test","debounce","newValue","actionMeta","searchInKvk","company","onInputChange","loadingMessage","KvkLegalFormStringToLegalForm","Step1","onCompanySelectChange","companyData","addresses","street","houseNumber","houseNumberAddition","postalCode","city","hasResults","allCustomersQueryKey","useAllCustomers","getAllCustomers","DocumentType","relationNumber","lastLogin","Customers","customers","onAddCustomer","hasModuleCollection","hasModuleCollectionAbroad","hasModuleLegalAid","hasModuleGeneralConditions","navigateToCustomerDetailPage","useCustomer","respone","editCustomer","setCustomerBlocked","useRights","getRights","CustomerDetailModules","fetchCustomer","isLoadingModuleEdit","setIsLoadingModuleEdit","moduleToToggle","setModuleToToggle","modules","r","getRightDisplay","enabled","user","closeToggleModal","hideToggleModal","editModule","showToggleModal","rightId","enable","moduleColumns","openToggleModal","useDocuments","getDocuments","addGeneralDocument","deleteDocument","useAllDocuments","getDocumentFile","documentId","sendDocumentMail","getDocumentTypeDisplay","General","MaintenanceContract","Agreement","CustomerDetailDocuments","types","documents","isLoadingDocuments","printRef","createRef","fileToPrint","setFileToPrint","documentToMail","setDocumentToMail","documentColumns","fileName","version","downloadDocument","saveAs","blob","printDocument","closeMailModal","initialValuesSendMail","toEmail","toName","hideMailModal","showMailModal","frames","print","CustomerDetailFiles","isLoadingFiles","refetchFiles","documentToDelete","setDocumentToDelete","handleAddGeneralDocument","hideAddGeneralDocument","showAddGeneralDocument","marginBottom","CustomerDetail","setCustomer","setRights","deniedChangeRequests","setDeniedChangeRequests","acceptedChangeRequests","setAcceptedChangeRequests","fetchEditUserInfoRequest","fetchRights","customerCall","userInfoRequestCall","rightsCall","genderField","initialsField","firstNameField","insertionField","lastNameField","functionField","phoneNumberField","mobileNumberField","emailAddressField","companyNameField","kvkNumberField","legalFormField","addressVisitField","postalCodeVisitField","cityVisitField","isMailAddressDifferentField","addressMailField","postalCodeMailField","cityMailField","bankAccountField","paymentMethodField","emailInvoiceField","websiteField","changeRequests","requests","valueString","showChangeRequests","d","resendInvitationHandler","onEditCustomer","registeredOn","blocked","cr","FormCheckFormik","showCompanyNameField","setShowCompanyNameField","clearPostAddress","clearVisitAddress","getCompanyBasicProfile","visitAddress","address","postAddress","debtor","isCompany","setCompany","Step3","showWrittenDocumentsExplanation","hasSignedAgreements","hasQuotation","hasAssignmentLetter","hasSignedDeliveryNote","historyWithDebtorWantToComment","debtorDefenceWantToComment","hasDebtorDefence","areTermsApplied","termsAppliedWantToComment","hasInvoices","hasReminders","hasExhortation","hasPlan","hasConversationNotes","hasPhoneNotes","hasAppOrSms","hasOtherCorrespondence","ButtonWrapper","CollectionAllQueryKey","useAllCollections","getAllCollections","CollectionStatus","Country","collectionStatusOptions","NeedsSigning","InProgress","Finished","getCollectionStatusDisplay","useCollection","addCollection","editCollection","validateStep1AddCollection","validateStep3AddCollection","collectionMutation","uuid","formatISO","contactPersonInitials","contactPersonLastName","customerName","caseNumber","getExampleCollectionOverview","downloadCollectionFile","collectionId","fileId","uploadSignedCollectionOverview","getCollectionSignRequestUrl","deleteCollection","Step4","valuesChanged","setValuesChanged","isLoadingDownload","setIsLoadingDownload","isLoadingPreview","setIsLoadingPreview","pdf","setPdf","showPdf","setShowPdf","numPages","setNumPages","pageNumber","setPageNumber","downloadExampleCollectionOverview","previewExampleCollectionOverview","onLoadSuccess","onDocumentLoadSuccess","AddCollection","handleOnSubmit","validateStep3","comments","dateOfBirth","iban","hasHistoryWithDebtor","historyWithDebtorComments","debtorDefenceFiles","debtorDefenceComments","termsAppliedComments","termsFiles","signedAgreementsFiles","quotationFiles","assignmentLetterFiles","signedDeliveryNoteFiles","writtenDocumentsComments","invoiceFiles","reminderFiles","exhortationFiles","planFiles","conversationNotesFiles","phoneNotesFiles","appOrSmsFiles","otherCorrespondenceFiles","taxesComments","isStoryInformationRequested","hasAgreed","userFunction","country","entries","CollectionForeignAllQueryKey","useAllCollectionForeigns","getAllCollectionForeigns","useCollectionForeign","addCollectionForeign","editCollectionForeign","validateStep1AddCollectionForeign","validateStep3AddCollectionForeign","collectionForeignMutation","getExampleCollectionForeignOverview","downloadCollectionForeignFile","collectionForeignId","uploadSignedCollectionForeignOverview","getCollectionForeignSignRequestUrl","deleteCollectionForeign","downloadExampleCollectionForeignOverview","previewExampleCollectionForeignOverview","AddCollectionForeign","correspondenceQueryKey","useAllCorrespondences","model","getAllCorrespondences","useDeleteAdminCorrespondence","deleteCorrespondence","deleteCorrespondenceMutation","subject","isQuestionnaire","join","Correspondence","correspondenceToDelete","setCorrespondenceToDelete","useAllCorrespondence","correspondence","isLoadingCorrespondence","correspondenceTemplateQueryKey","useAllCorrespondenceTemplates","getAllCorrespondenceTemplates","useDeleteAdminCorrespondenceTemplate","deleteCorrespondenceTemplate","deleteCorrespondenceTemplateMutation","template","changed","CorrespondenceTemplates","correspondenceTemplateToDelete","setCorrespondenceTemplateToDelete","correspondenceTemplates","isLoadingCorrespondenceTemplates","TitleWrapper","AddFieldButton","tag","useAddAdminCorrespondenceTemplate","createCorrespondenceTemplate","addCorrespondenceTemplateMutation","content","useEditAdminCorrespondenceTemplate","editCorrespondenceTemplate","editCorrespondenceTemplateMutation","templateToEdit","WysiwygEditorFormik","onEditorChange","AddCorrespondenceTemplate","editorRef","handleOnTagClick","execCommand","onSuccess","onInit","editor","useAddAdminCorrespondence","createCorrespondence","addCorrespondenceMutation","customersData","customerIds","link","useEditAdminCorrespondence","editCorrespondence","editCorrespondenceMutation","ToEdit","newCustomers","SendCorrespondence","correspondenceTemplateOptions","concat","customerOptions","userFullName","newContent","minHeight","numberToEuroString","Intl","NumberFormat","currency","debtorFullName","ManageCollections","collections","refetchCollections","collectionOverviewUpload","setCollectionOverviewUpload","collectionToEdit","setCollectionToEdit","collectionToDelete","setCollectionToDelete","downloadOverviewFile","overviewFile","initialValuesAddSignedCollectionOverview","closeUploadOverviewModal","uploadSignedOverview","showUploadOverviewModal","hideUploadOverviewModal","initialEditCollectionValues","onSumbitEditCollection","hideEditCollectionModal","closeEditCollectionModal","showEditCollectionModal","useLocation","signed","URLSearchParams","signCollection","CollectionForeigns","ManageCollectionForeigns","collectionForeigns","collectionForeignOverviewUpload","setCollectionForeignOverviewUpload","collectionForeign","initialValuesAddSignedCollectionForeignOverview","allTermsAndConditionsKey","useAllTermsAndConditions","getAllTermsAndConditions","MaintenanceContractType","useTermsAndConditions","addTermsAndConditions","termsAndConditionsMutation","selectedCustomer","deleteTermsAndConditions","deleteTermsAndConditionsMutation","indexOfRemovedTerms","findIndex","t","getTermsAndConditionsFile","termsAndConditionsId","sendTermsAndConditionsMail","sendTermsAndConditionsTaskMail","tac","termsAndConditions","isLoadingTermsAndConditions","isLoadingCustomers","isFetching","termsToDelete","setTermsToDelete","termsToMail","setTermsToMail","downloadFile","printFile","useAgreements","allAgreements","addAgreement","deleteAgreement","getAgreementFile","agreementId","sendAgreementMail","useAllAgreements","sendAgreementTaskMail","agreement","customerRelationNumber","Agreements","refetchAgreements","isLoadingAgreements","agreementToMail","setAgreementToMail","agreementToDelete","setAgreementToDelete","hideAddAgreement","showAddAgreement","useMaintenanceContract","getAllMaintenanceContract","addMaintenanceContract","deleteMaintenanceContract","useAllMaintenanceContracts","getMaintenanceContractFile","maintenanceContractId","sendMaintenanceContractMail","TermsAndConditionsType","BranchOriented","MaintenanceContracts","maintenanceContracts","isLoadingMaintenanceContracts","refetchMaintenanceContracts","maintenanceContractToDelete","setMaintenanceContractToDelete","maintenanceContractToMail","setMaintenanceContractToMail","maintenanceContractAndConditions","CustomWork","TermsAndConditionsMain","openMailModal","AdminType","Review","Translation","Update","MaintenanceRequest","handleTaskMail","hideTaskMailModal","closeTaskMailModal","showTaskMailModal","openTaskMailModal","NoContracts","Empty","useAddAdminTemplateLetter","createTemplateLetter","useEditAdminTemplateLetter","editTemplateLetter","usePurgeTemplateLetterCache","purgeTemplateLetterCache","removeQueries","exact","ManageTemplate","fetchAllLanguages","useAllLanguages","allLanguagesQueryKey","useLanguage","languageOptions","Nederlands","ClientAgreements","Messages","archive","sortedCorrespondence","cor","messages","questionnaires","totalMessages","sortedMessages","parseVariables","defaultValue","lines","htmr","useKnowledgeBaseCategories","getAllKnowledgeBaseCategory","addKnowledgeBaseCategory","editKnowledgeBaseCategory","deleteKnowledgeBaseCategory","useAllKnowledgeBaseCategories","KnowledgeBase","category","setCategory","showMore","setShowMore","categoryId","knowledgeBaseItems","categoryOptions","sortedKnowledgeBaseItems","KnowledgeBaseDetail","knowledgeBaseItem","history","back","maxWidth","KnowledgeBaseItem","isLoadingKnowledgeBaseItems","knowledgeBaseItemToDelete","setKnowledgeBaseItemToDelete","AddKnowledgeBaseCategory","knowledgeBaseCategories","isLoadingKnowledgeBaseCategories","knowledgeBaseCategoryToDelete","setKnowledgeBaseCategoryToDelete","knowledgeBaseCategoryToEdit","setKnowledgeBaseCategoryToEdit","closeAddModal","hideAddModal","handleAdd","showAddModal","AddKnowledgeBaseItem","categories","NewsItem","newsItem","isLoadingNewsItems","newsItemToDelete","setNewsItemToDelete","AddNewsItem","useUsers","getAllUser","deleteUser","useAllUsers","AgreementType","finishedRegistration","Users","users","isLoadingUsers","userToDelete","setUserToDelete","AddUser","handleResendInvitation","TacTools","CaUpdate","CaTranslation","NewsItemDetail","StampData","stamp","ManageStamps","isLoadingStamps","setStamp","stampToDelete","setStampToDelete","stampImage","handleStampSubmit","handleStampDelete","CollectionFileDownload","isForeign","overviewFileId","contentDisposition","exec","setTimeout","MessagesDetail","handlePrint","useProspect","getAllProspects","addProspect","useGetAllProspects","prospect","Prospects","prospects","signRequests","setSignRequests","onAddProspect","prospectModuleSignRequests","showSignRequestsModal","hideSignReuqestsModal","sr","signRequestUrl","rel","setConfiguration","Login","lazy","LoginWithUsername","Register","CompleteRegistration","QueryClient","App","hasCollectionsRights","setHasCollectionsRights","hasCollectionsForeignRights","setHasCollectionsForeignRights","setHasTermsAndConditionsRights","rootComponent","TransitionGroup","QueryClientProvider","client","ResetPassword","TacMain","TacMaintenanceContracts","TacTranslation","TacUpdate","TacReview","AdminTermsAndConditions","AdminMaintenanceContracts","Manage","ReactDOM","transition","Bounce","autoClose","getElementById","H5","h5","H3Icon","H4","h4","H4Icon","h3","H1","h1","H2","FormCurrencyFormik","Trigger","trigger","login","loginWithUsername","Radio","HiddenRadio"],"mappings":"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","file":"static/js/main.914f0414.chunk.js","sourcesContent":["import { useApi } from 'hooks/api';\r\nimport { appendObject } from 'utils/objectAppender';\r\nimport { UserInvitationModel, InviteAdminInputModel, CompleteRegistrationInputModel, InviteCustomerInputModel } from './types';\r\n\r\nconst useUserInvitation = () => {\r\n\r\n const { get, post } = useApi();\r\n\r\n const baseUrl = '/userInvitation';\r\n\r\n const getUserInvitation = async (code: string) => {\r\n const response = await get(`${baseUrl}/invitation/${code}`);\r\n\r\n return response;\r\n };\r\n\r\n const inviteAdmin = async (values: InviteAdminInputModel) => {\r\n const response = await post(\r\n `${baseUrl}/inviteAdmin`, values\r\n );\r\n\r\n return response;\r\n };\r\n\r\n const inviteCustomer = async (values: InviteCustomerInputModel) => {\r\n const fd = new FormData();\r\n appendObject(values, fd);\r\n const response = await post(\r\n `${baseUrl}/inviteCustomer`, fd\r\n );\r\n\r\n return response;\r\n };\r\n\r\n const completeRegistration = async (values: CompleteRegistrationInputModel) => {\r\n const response = await post(\r\n `${baseUrl}/completeRegistration`, values\r\n );\r\n\r\n return response;\r\n };\r\n\r\n const resendInvitation = async (userId: string) => {\r\n const response = await post(\r\n `${baseUrl}/resendInvitation`, userId\r\n );\r\n\r\n return response;\r\n };\r\n\r\n return {\r\n getUserInvitation,\r\n inviteAdmin,\r\n inviteCustomer,\r\n completeRegistration,\r\n resendInvitation\r\n };\r\n};\r\n\r\nexport default useUserInvitation;\r\n","export interface Navigation {\r\n width: number;\r\n offset: number;\r\n padding: {\r\n horizontal: number;\r\n },\r\n header: {\r\n bottom: number;\r\n };\r\n}\r\n\r\nconst navigation: Navigation = {\r\n width: 360,\r\n offset: 32,\r\n padding: {\r\n horizontal: 24\r\n },\r\n header: {\r\n bottom: 8\r\n }\r\n};\r\n\r\nexport default navigation;\r\n","export interface Header {\r\n height: number;\r\n}\r\n\r\nconst header: Header = {\r\n height: 6,\r\n};\r\n\r\nexport default header;\r\n","import colors from './colors';\r\nimport borderRadius from './borderRadius';\r\nimport navigation from './navigation';\r\nimport header from './header';\r\nimport greys from './greys';\r\n\r\nconst theme = {\r\n colors,\r\n greys,\r\n borderRadius,\r\n navigation,\r\n header\r\n};\r\n\r\nexport default theme;\r\n","export { default as Button } from './Button';\r\n","export interface BorderRadius {\r\n small: number;\r\n normal: number;\r\n large: number;\r\n}\r\n\r\nconst borderRadius: BorderRadius = {\r\n small: 4,\r\n normal: 8,\r\n large: 12,\r\n};\r\n\r\nexport default borderRadius;","import styled from '@emotion/styled';\r\nimport { Form as FormikForm } from 'formik';\r\n\r\nexport const Form = styled(FormikForm)`\r\n display: flex;\r\n flex-direction: column;\r\n`;\r\n\r\nexport const Content = styled.div`\r\n flex: 1;\r\n flex-direction: column;\r\n display: flex;\r\n justify-content: center;\r\n`;\r\n","import React, { FC } from 'react';\r\nimport { Form, Content } from './styles';\r\nimport { RouteComponentProps } from '@reach/router';\r\nimport Button, { ButtonProps } from 'components/atoms/button/Button';\r\n\r\ninterface AccountFormProps extends RouteComponentProps {\r\n button?: ButtonProps;\r\n isSubmitting: boolean;\r\n isValid: boolean;\r\n}\r\n\r\nconst AccountForm: FC = ({ button, children, isValid, isSubmitting }) => {\r\n return (\r\n
\r\n {children}\r\n
: children}\r\n {!hideArrow && }\r\n \r\n {renderLayer(\r\n \r\n {isOpen && (\r\n \r\n \r\n \r\n )}\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default Dropdown;\r\n","import styled from '@emotion/styled';\r\nimport Icon from 'components/atoms/Icon';\r\n\r\nexport const DropdownItem = styled.li`\r\n list-style-type: none;\r\n display: inline-flex;\r\n height: 2.5rem;\r\n width: 100%;\r\n align-items: center;\r\n padding: 0 16px;\r\n border-bottom: 1px solid ${({ theme }) => theme.greys[50]};\r\n font-size: 0.875rem;\r\n font-weight: 500;\r\n\r\n &:hover {\r\n background-color: ${({ theme }) => theme.greys[50]};\r\n cursor: pointer;\r\n }\r\n\r\n &:last-of-type {\r\n border-bottom: none;\r\n }\r\n`;\r\n\r\nexport const DropdownIcon = styled(Icon)`\r\n margin-right: 8px;\r\n`;\r\n\r\nexport const NestedIcon = styled(Icon)`\r\n margin-left: 8px;\r\n`;\r\n\r\nexport const Title = styled.span`\r\n flex: 1;\r\n`;","import React, { forwardRef, PropsWithChildren } from 'react';\r\nimport { DropdownIcon, DropdownItem as Wrapper, Title, NestedIcon } from './styles';\r\nimport { navigate } from '@reach/router';\r\nimport { useTheme } from '@emotion/react';\r\n\r\nexport interface DropdownItemProps {\r\n value?: string;\r\n title: string;\r\n onClick?: () => void;\r\n to?: string;\r\n icon?: string;\r\n items?: DropdownItemProps[];\r\n onSubItemClick?: (value: string) => void;\r\n access?: boolean;\r\n nested?: boolean;\r\n}\r\n\r\nconst DropdownItem = forwardRef>(\r\n ({ value, title, onClick, to, icon, children, onSubItemClick, nested, ...props }, ref) => {\r\n const theme = useTheme();\r\n\r\n // DropdownItem's methods.\r\n const handleOnClick = (event: React.MouseEvent) => {\r\n if (to) {\r\n navigate(to);\r\n } else if (onClick) {\r\n onClick();\r\n }\r\n\r\n if (value && onSubItemClick) {\r\n onSubItemClick(value);\r\n }\r\n };\r\n\r\n // Render.\r\n return (\r\n \r\n {icon && }\r\n {title}\r\n {nested && }\r\n {children}\r\n \r\n );\r\n }\r\n);\r\n\r\nexport default DropdownItem;\r\n","import React, { FC } from 'react';\r\nimport DropdownItem, { DropdownItemProps } from '../DropdownItem';\r\nimport { useHover, useLayer } from 'react-laag';\r\nimport DropdownMenu from '../../../molecules/dropdown/DropdownMenu';\r\nimport { AnimatePresence } from 'framer-motion';\r\n\r\nexport interface NestedDropdownItemProps extends DropdownItemProps {\r\n onSubItemClick?: (value: string) => void;\r\n onSubSubItemClick?: (value: string) => void;\r\n items: DropdownItemProps[];\r\n}\r\n\r\nconst NestedDropdownItem: FC = ({ items, onSubItemClick, onSubSubItemClick, ...props }) => {\r\n const [isOpen, hoverProps, close] = useHover({\r\n delayEnter: 0,\r\n delayLeave: 100\r\n });\r\n\r\n const { renderLayer, triggerProps, layerProps } = useLayer({\r\n overflowContainer: true,\r\n auto: true,\r\n snap: true,\r\n placement: 'right-start',\r\n possiblePlacements: ['right-start', 'left-start'],\r\n triggerOffset: 0,\r\n containerOffset: 16,\r\n arrowOffset: 8,\r\n isOpen,\r\n\r\n // this is an important one: when the root-menu closes, we want all nested\r\n // menu's to close as well. Therefore, we can utilize this `onParentClose` props\r\n // to instruct `useHover` in this case to force-close possible nested menu's\r\n onParentClose: close\r\n });\r\n\r\n // Render.\r\n return (\r\n \r\n {renderLayer(\r\n \r\n {isOpen && (\r\n \r\n )}\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default NestedDropdownItem;\r\n","import styled from '@emotion/styled';\r\nimport { motion } from 'framer-motion';\r\nimport { rgba } from 'polished';\r\n\r\nexport const DropdownMenu = styled(motion.ul)`\r\n border-radius: ${({ theme }) => theme.borderRadius.normal}px;\r\n background-color: ${({ theme }) => theme.colors.white};\r\n padding: 0.5rem 0;\r\n box-shadow: 0 10px 20px ${({ theme }) => rgba(theme.colors.dark, 0.2)};\r\n margin-top: 0.5rem;\r\n`;\r\n","import DropdownItem, { DropdownItemProps } from 'components/atoms/item/DropdownItem';\r\nimport NestedDropdownItem, { NestedDropdownItemProps } from 'components/atoms/item/NestedDropdownItem';\r\nimport React, { forwardRef, PropsWithChildren } from 'react';\r\nimport { DropdownMenu as Wrapper } from './styles';\r\n\r\nexport interface DropdownMenuProps {\r\n items: ((close?: () => void) => DropdownItemProps[]) | DropdownItemProps[];\r\n onSubItemClick?: (value: string) => void;\r\n access?: boolean;\r\n close?: () => void;\r\n style?: React.CSSProperties;\r\n}\r\n\r\nconst DropdownMenu = forwardRef>(\r\n ({ items: initialItems, children, onSubItemClick, close, style, ...props }, ref) => {\r\n // Render.\r\n const items = (typeof initialItems === 'function' ? initialItems(close) : initialItems).filter((item) => item.access !== false);\r\n return (\r\n \r\n {items.map((item) => {\r\n const isNested = item.items ? item.items.length > 0 : false;\r\n\r\n if (isNested) {\r\n return (\r\n \r\n );\r\n } else {\r\n return ;\r\n }\r\n })}\r\n {children}\r\n \r\n );\r\n }\r\n);\r\n\r\nexport default DropdownMenu;\r\n","export default __webpack_public_path__ + \"static/media/chevron-down.7bdcd639.svg\";","import { css } from '@emotion/react';\r\nimport styled from '@emotion/styled';\r\n\r\nexport const FormGroup = styled.div<{\r\n noMargin?: boolean;\r\n alignRight?: boolean;\r\n}>`\r\n margin-bottom: ${({ noMargin }) => (noMargin ? 0 : '2rem')};\r\n ${({ alignRight }) =>\r\n alignRight &&\r\n css`\r\n display: flex;\r\n justify-content: flex-end;\r\n `};\r\n`;\r\n\r\nexport const Label = styled.label<{\r\n required?: boolean;\r\n isWhite?: boolean;\r\n}>`\r\n display: block;\r\n font-size: 1rem;\r\n font-weight: 500;\r\n line-height: 1rem;\r\n font-weight: normal;\r\n color: ${({ theme, isWhite }) => (isWhite ? theme.colors.white : theme.colors.dark)};\r\n white-space: nowrap;\r\n\r\n ${({ required, theme, isWhite }) =>\r\n required &&\r\n css`\r\n &:after {\r\n content: ' *';\r\n color: ${isWhite ? theme.colors.white : theme.colors.secondary};\r\n font-weight: 600;\r\n }\r\n `};\r\n`;\r\n\r\nexport const Header = styled.div<{\r\n noMargin?: boolean;\r\n}>`\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n margin-bottom: ${({ noMargin }) => (noMargin ? 0 : '.65rem')};\r\n`;\r\n\r\nexport const Text = styled.span`\r\n &,\r\n a {\r\n white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n margin-left: 8px;\r\n color: ${({ theme }) => theme.greys[300]};\r\n font-size: 0.875rem;\r\n line-height: 1rem;\r\n flex: 1;\r\n text-align: right;\r\n }\r\n`;\r\n","import React, { FC, ReactNode } from 'react';\r\nimport { FormGroup as Wrapper, Label, Header, Text } from './styles';\r\nimport Tooltip from 'components/atoms/Tooltip';\r\n\r\ninterface FormGroupProps {\r\n label?: string;\r\n required?: boolean;\r\n alignRight?: boolean;\r\n text?: string | ReactNode;\r\n noMargin?: boolean;\r\n noMarginHeader?: boolean;\r\n tooltip?: string;\r\n isWhite?: boolean;\r\n}\r\n\r\nconst FormGroup: FC = ({ label, text, children, required, noMargin, alignRight, noMarginHeader, tooltip, isWhite }) => {\r\n return (\r\n \r\n {(label || text) && (\r\n
\r\n {label && (\r\n \r\n )}\r\n {text && {text}}\r\n {tooltip && {tooltip}}\r\n
\r\n )}\r\n {children}\r\n
\r\n );\r\n};\r\n\r\nexport default FormGroup;\r\n","import { css } from '@emotion/react';\r\nimport styled from '@emotion/styled';\r\n\r\nexport const FormTextarea = styled.textarea<{ darkBorder?: boolean }>`\r\n width: 100%;\r\n border: 1px solid ${({ theme }) => theme.greys[50]};\r\n border-radius: ${({ theme }) => theme.borderRadius.small}px;\r\n padding: 1rem 16px;\r\n font-size: 1rem;\r\n min-height: 3.5rem;\r\n line-height: 1.5rem;\r\n resize: vertical;\r\n\r\n &:focus {\r\n outline: none;\r\n box-shadow: 0 0 0 0.2rem ${({ theme }) => theme.greys[50]};\r\n }\r\n\r\n &:hover {\r\n border-color: ${({ theme }) => theme.greys[100]};\r\n }\r\n\r\n ::placeholder {\r\n color: ${({ theme }) => theme.colors.primary};\r\n }\r\n\r\n ${({ darkBorder, theme }) =>\r\n darkBorder &&\r\n css`\r\n border: 1px solid ${theme.greys[100]};\r\n\r\n &:hover {\r\n border-color: ${theme.greys[300]};\r\n }\r\n `}\r\n`;\r\n","import React, { FC, InputHTMLAttributes } from 'react';\r\nimport InvalidFeedback from '../InvalidFeedback';\r\nimport { FormTextarea as Wrapper } from './styles';\r\n\r\nexport interface FormTextareaProps extends InputHTMLAttributes {\r\n error?: string;\r\n darkBorder?: boolean;\r\n}\r\n\r\nconst FormTextarea: FC = ({ error, ...props }) => {\r\n return (\r\n <>\r\n \r\n {error && {error}}\r\n \r\n );\r\n};\r\n\r\nexport default FormTextarea;\r\n","import { css } from '@emotion/react';\r\nimport styled from '@emotion/styled';\r\nimport { rgba } from 'polished';\r\n\r\nexport const FormSelect = styled.div<{ isFocused: boolean }>`\r\n display: flex;\r\n flex-wrap: wrap;\r\n justify-content: space-between;\r\n min-height: 3rem;\r\n border: 1px solid ${({ theme }) => theme.colors.grey};\r\n border-radius: ${({ theme }) => theme.borderRadius.small}px;\r\n background-color: ${({ theme }) => theme.colors.white};\r\n\r\n &:hover {\r\n border-color: ${({ theme }) => theme.greys[100]};\r\n }\r\n\r\n ${({ isFocused, theme }) =>\r\n isFocused &&\r\n css`\r\n outline: none;\r\n box-shadow: 0 0 0 0.2rem ${theme.greys[50]};\r\n `}\r\n`;\r\n\r\nexport const ValueContainer = styled.div`\r\n display: flex;\r\n flex: 1 1 0%;\r\n flex-wrap: wrap;\r\n position: relative;\r\n overflow: hidden;\r\n padding: 0 16px;\r\n align-items: center;\r\n color: ${({ theme }) => theme.colors.primary};\r\n`;\r\n\r\nexport const Option = styled.div<{ isSelected: boolean }>`\r\n display: inline-flex;\r\n height: 2.5rem;\r\n width: 100%;\r\n align-items: center;\r\n padding: 0 16px;\r\n border-top: 1px solid ${({ theme }) => theme.greys[50]};\r\n font-size: 0.875rem;\r\n font-weight: 500;\r\n transition: background 0.3s ease;\r\n\r\n &:hover {\r\n background-color: ${({ theme }) => theme.greys[50]};\r\n cursor: pointer;\r\n }\r\n\r\n &:first-of-type {\r\n border-top: none;\r\n }\r\n\r\n ${({ isSelected, theme }) =>\r\n isSelected &&\r\n css`\r\n background-color: ${theme.greys[50]};\r\n border-top-color: transparent;\r\n\r\n + div {\r\n border-top-color: transparent;\r\n }\r\n\r\n &:hover {\r\n background-color: ${theme.greys[100]};\r\n }\r\n `}\r\n`;\r\n\r\nexport const Menu = styled.div`\r\n box-shadow: 0 10px 30px ${({ theme }) => rgba(theme.colors.dark, 0.1)};\r\n border-radius: ${({ theme }) => theme.borderRadius.normal}px;\r\n overflow-y: auto;\r\n margin-top: 0.5rem;\r\n top: 100%;\r\n position: absolute;\r\n width: 100%;\r\n z-index: 3;\r\n background-color: ${({ theme }) => theme.colors.white};\r\n max-height: 200px;\r\n`;\r\n\r\nexport const MenuList = styled.div`\r\n padding: 0.5rem 0;\r\n`;\r\n","import React, { FC } from 'react';\r\nimport { FormSelect as Control, Option, Menu, MenuList, ValueContainer } from './styles';\r\nimport Select, { InputActionMeta, OnChangeValue, ActionMeta } from 'react-select';\r\nimport InvalidFeedback from '../InvalidFeedback';\r\nimport theme from 'theme';\r\n\r\nexport interface IOption {\r\n value: string | number;\r\n label: string;\r\n}\r\n\r\nexport interface FormSelectProps {\r\n value?: readonly IOption[] | IOption | null | undefined;\r\n defaultValue?: readonly IOption[] | IOption | null | undefined;\r\n error?: string;\r\n options?: ReadonlyArray | undefined;\r\n onChange?: ((value: OnChangeValue, actionMeta: ActionMeta) => void) | undefined;\r\n isMulti?: boolean;\r\n onInputChange?: (newValue: string, actionMeta: InputActionMeta) => void;\r\n isLoading?: boolean;\r\n placeholder?: string;\r\n noOptionsMessage?: ((obj: { inputValue: string; }) => string | null) | undefined\r\n loadingMessage?: ((obj: { inputValue: string; }) => string | null) | undefined\r\n isDisabled?: boolean;\r\n}\r\n\r\nconst FormSelect: FC = ({ error, ...props }) => {\r\n return (\r\n <>\r\n (\r\n \r\n {children}\r\n \r\n ),\r\n ValueContainer: ({ children }) => {children},\r\n Option: ({ children, innerProps, innerRef, isSelected }) => (\r\n \r\n ),\r\n Menu: ({ children, innerRef, innerProps }) => (\r\n \r\n {children}\r\n \r\n ),\r\n MenuList: ({ children, innerRef }) => {children}\r\n }}\r\n styles={{\r\n singleValue: (provided) => {\r\n const color = theme.colors.primary;\r\n return { ...provided, color };\r\n },\r\n placeholder: (provided) => {\r\n const color = theme.colors.primary;\r\n return { ...provided, color };\r\n },\r\n noOptionsMessage: (provided) => {\r\n const color = theme.colors.primary;\r\n return { ...provided, color };\r\n }\r\n }}\r\n />\r\n {error && {error}}\r\n \r\n );\r\n};\r\n\r\nexport default FormSelect;\r\n","import styled from '@emotion/styled';\r\nimport { rgba } from 'polished';\r\n\r\nexport const Wrapper = styled.div`\r\n background-color: #f2f2f2;\r\n align-self: flex-start;\r\n align-items: center;\r\n display: inline-flex;\r\n padding: 0.5rem;\r\n border-radius: 1.5rem;\r\n`;\r\n\r\nexport const Label = styled.span`\r\n color: #727272;\r\n margin: 0 0.5rem;\r\n`;\r\n\r\nexport const FormSwitch = styled.label`\r\n display: inline-block;\r\n width: 3rem;\r\n height: 2rem;\r\n position: relative;\r\n\r\n .switch {\r\n width: 3rem;\r\n height: 2rem;\r\n position: absolute;\r\n top: 0;\r\n background-color: ${({ theme }) => theme.greys[50]};\r\n border-radius: 1rem;\r\n transition: background 0.4s ease;\r\n\r\n &:hover {\r\n cursor: pointer;\r\n }\r\n\r\n &:before {\r\n position: absolute;\r\n content: '';\r\n width: 1.5rem;\r\n height: 1.5rem;\r\n background-color: ${({ theme }) => theme.colors.white};\r\n box-shadow: 0 5px 20px ${({ theme }) => rgba(theme.colors.dark, 0.1)};\r\n position: absolute;\r\n top: 0.25rem;\r\n left: 0.25rem;\r\n border-radius: 0.75rem;\r\n transition: left 0.3s ease;\r\n }\r\n }\r\n\r\n input {\r\n opacity: 0;\r\n width: 0;\r\n height: 0;\r\n\r\n &:checked + .switch {\r\n background-color: ${({ theme }) => theme.colors.primary};\r\n\r\n &:before {\r\n left: 1.25rem;\r\n }\r\n }\r\n }\r\n`;\r\n","import React, { FC, InputHTMLAttributes } from 'react';\r\nimport { FormSwitch as Switch, Wrapper, Label } from './styles';\r\n\r\nexport interface FormSwitchProps extends InputHTMLAttributes {\r\n label?: string;\r\n}\r\n\r\nconst FormSwitch: FC = ({ label, ...props }) => {\r\n if (label) {\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 return (\r\n \r\n \r\n
\r\n \r\n );\r\n};\r\n\r\nexport default FormSwitch;\r\n","import styled from '@emotion/styled';\r\nimport { Paragraph } from 'components/atoms/text';\r\n\r\nexport const Row = styled.div`\r\n display: flex;\r\n flex-direction: row;\r\n margin-bottom: 1rem;\r\n align-items: center;\r\n`;\r\n\r\nexport const Title = styled(Paragraph)`\r\n flex: 1;\r\n`;\r\n\r\nexport const Content = styled.div``;\r\n","import React, { FC } from 'react';\r\nimport { Content, Row, Title } from './styles';\r\n\r\nexport interface FormRowProps {\r\n title: string;\r\n}\r\n\r\nconst FormRow: FC = ({ title, children }) => {\r\n return (\r\n \r\n {title}\r\n {children}\r\n \r\n );\r\n};\r\n\r\nexport default FormRow;\r\n","import styled from '@emotion/styled';\r\n\r\nexport const FormYesNo = styled.div`\r\n margin-bottom: 1rem;\r\n display: flex;\r\n`;\r\n\r\nexport const ErrorWrapper = styled.div`\r\n margin-bottom: 1rem;\r\n`;\r\n","import React, { FC, ChangeEvent, useMemo } from 'react';\r\nimport { ErrorWrapper, FormYesNo as Wrapper } from './styles';\r\nimport { uniqueId } from 'lodash';\r\nimport InvalidFeedback from '../InvalidFeedback';\r\nimport FormRadio from '../FormRadio';\r\n\r\nexport interface FormYesNoProps {\r\n value?: boolean;\r\n label?: string;\r\n onChange?: (value: boolean) => void;\r\n error?: string;\r\n disabled?: boolean;\r\n}\r\n\r\nconst YES = 'yes';\r\nconst NO = 'no';\r\n\r\nconst FormYesNo: FC = ({ value, onChange, label, error, disabled }) => {\r\n // methods.\r\n const handleOnChange = (event: ChangeEvent) => {\r\n if (!onChange) {\r\n return;\r\n }\r\n\r\n onChange(event.target.value === YES);\r\n };\r\n\r\n // Render.\r\n const group = useMemo(() => uniqueId(), []);\r\n\r\n return (\r\n <>\r\n \r\n {label && }\r\n \r\n \r\n \r\n\r\n {error && {error}}\r\n \r\n );\r\n};\r\n\r\nexport default FormYesNo;\r\n","import styled from '@emotion/styled';\r\nimport { css } from '@emotion/react';\r\nimport { lighten, darken, rgba } from 'polished';\r\n\r\nconst lightenAmount = {\r\n hover: 0.1,\r\n active: 0.075\r\n};\r\n\r\nexport const Wrapper = styled.label`\r\n display: block;\r\n position: relative;\r\n margin: 0 auto;\r\n max-width: 6rem;\r\n`;\r\n\r\nexport const Inner = styled.div<{ heightPercentage?: number, hasError?: boolean }>`\r\n position: relative;\r\n overflow: hidden;\r\n height: 0;\r\n box-shadow: 0px 1px 4px 0px ${({ theme }) => rgba(theme.colors.black, 0.1)};\r\n width: 100%;\r\n border-radius: 50%;\r\n background-color: ${({ hasError, theme }) => hasError ? lighten(.35, theme.colors.error) : theme.colors.white};\r\n ${({ heightPercentage }) =>\r\n heightPercentage &&\r\n css`\r\n padding-bottom: ${heightPercentage}%;\r\n `}\r\n`;\r\n\r\nexport const NoImage = styled.div`\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: 100%;\r\n height: 100%;\r\n user-select: none;\r\n\r\n img {\r\n width: 100%;\r\n height: auto;\r\n max-width: 4rem;\r\n }\r\n`;\r\n\r\nexport const UploadIcon = styled.a`\r\n position: absolute;\r\n bottom: 0;\r\n right: 0;\r\n z-index: 2;\r\n display: inline-flex;\r\n cursor: pointer;\r\n align-items: center;\r\n justify-content: center;\r\n width: 2rem;\r\n height: 2rem;\r\n border-radius: 50%;\r\n background-color: ${({ theme }) => theme.colors.secondary};\r\n\r\n &:hover {\r\n background-color: ${({ theme }) => lighten(lightenAmount.hover, theme.colors.secondary)};\r\n }\r\n\r\n &:active {\r\n background-color: ${({ theme }) => darken(lightenAmount.active, theme.colors.secondary)};\r\n }\r\n img {\r\n width: 100%;\r\n height: auto;\r\n max-width: 4rem;\r\n }\r\n`;\r\n\r\nexport const Image = styled.div<{ image?: string; }>`\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n background-repeat: no-repeat;\r\n background-position: center center;\r\n background-size: cover;\r\n width: 100%;\r\n height: 100%;\r\n\r\n ${({ image }) =>\r\n image != null &&\r\n css`\r\n background-image: url(${image});\r\n `}\r\n`;\r\n\r\nexport const Input = styled.input`\r\n opacity: 0;\r\n width: 0;\r\n height: 0;\r\n overflow: hidden;\r\n position: absolute;\r\n z-index: -1;\r\n`;\r\n\r\nexport const Label = styled.div`\r\n cursor: pointer;\r\n`;\r\n","import React, { ChangeEvent, FC, useEffect, useState } from 'react';\r\nimport { Wrapper, Inner, NoImage, UploadIcon, Image, Input, Label } from './styles';\r\nimport Icon from 'components/atoms/Icon';\r\nimport { useTheme } from '@emotion/react';\r\nimport noImage from 'static/no-photo.svg';\r\nimport InvalidFeedback from '../InvalidFeedback';\r\n\r\nexport interface FormImageProps {\r\n heightPercentage?: number;\r\n onChange?: (value: File) => void;\r\n value?: File | string;\r\n error?: string;\r\n}\r\n\r\nconst FormImage: FC = ({ heightPercentage = 100, value, onChange, error }) => {\r\n const theme = useTheme();\r\n const hasImage = value !== undefined;\r\n\r\n const [url, setUrl] = useState('');\r\n\r\n useEffect(() => {\r\n if (value === undefined) {\r\n return;\r\n }\r\n\r\n if (value instanceof File) {\r\n setUrl(URL.createObjectURL(value));\r\n } else {\r\n setUrl(value as string);\r\n }\r\n }, [value]);\r\n\r\n const handleOnChange = (event: ChangeEvent) => {\r\n const file = event.target.files && event.target.files[0];\r\n\r\n if (file && onChange) {\r\n onChange(file);\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {error && {error}}\r\n \r\n );\r\n};\r\n\r\nexport default FormImage;\r\n","import styled from '@emotion/styled';\r\nimport { lighten } from 'polished';\r\n\r\nexport const Input = styled.input`\r\n opacity: 0;\r\n width: 0;\r\n height: 0;\r\n`;\r\n\r\nexport const Label = styled.label`\r\n display: flex;\r\n`;\r\n\r\nexport const Wrapper = styled.div<{ isFocused: boolean }>`\r\n display: flex;\r\n justify-content: space-between;\r\n width: 100%;\r\n`;\r\n\r\nexport const Files = styled.div<{ whiteBackground?: boolean }>`\r\n background-color: ${({ theme, whiteBackground }) => (whiteBackground ? theme.colors.white : theme.colors.light)};\r\n border-radius: ${({ theme }) => `${theme.borderRadius.small}px`};\r\n display: flex;\r\n flex-wrap: wrap;\r\n min-height: 3.25rem;\r\n width: 100%;\r\n margin-right: 1rem;\r\n align-items: center;\r\n font-size: 1rem;\r\n padding: 8px 16px;\r\n font-weight: 500;\r\n`;\r\n\r\nexport const Button = styled.div`\r\n height: 100%;\r\n padding: 0 16px;\r\n border-radius: ${({ theme }) => `${theme.borderRadius.small}px`};\r\n font-size: 1rem;\r\n font-weight: 600;\r\n display: inline-flex;\r\n justify-content: center;\r\n white-space: pre;\r\n align-items: center;\r\n background-color: ${({ theme }) => theme.colors.primary};\r\n color: ${({ theme }) => theme.colors.white};\r\n cursor: pointer;\r\n\r\n &:hover {\r\n background-color: ${({ theme }) => lighten(0.05, theme.colors.primary)};\r\n }\r\n`;\r\n\r\nexport const File = styled.span`\r\n color: ${({ theme }) => theme.colors.primary};\r\n border: 1px solid ${({ theme }) => theme.colors.primary};\r\n border-radius: 1rem;\r\n padding: 8px 16px;\r\n line-height: 1;\r\n font-size: .75rem;\r\n margin-right: .5rem;\r\n margin-top: .25rem;\r\n margin-bottom: .25rem;\r\n white-space: pre;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n max-width: 100%;\r\n padding-right: 2rem;\r\n display: inline-block;\r\n position: relative;\r\n`;\r\n\r\n\r\nexport const Remove = styled.button`\r\n position: absolute;\r\n right: 16px;\r\n top: 50%;\r\n transform: translateY(-50%);\r\n outline: 0;\r\n border: 0;\r\n margin-left: 8px;\r\n background: none;\r\n padding: 0;\r\n cursor: pointer;\r\n`;\r\n","import Icon from 'components/atoms/Icon';\r\nimport React, { ChangeEvent, FC, InputHTMLAttributes, useEffect, useState } from 'react';\r\nimport InvalidFeedback from '../InvalidFeedback';\r\nimport { Input, Label, Button, Files, Wrapper, File, Remove } from './styles';\r\nimport { useTheme } from '@emotion/react';\r\n\r\nexport interface FormFileProps extends Omit, 'value' | 'onChange'> {\r\n error?: string;\r\n value?: File;\r\n onChange?: (value: File | null) => void;\r\n whiteBackground?: boolean;\r\n className?: string;\r\n}\r\n\r\nconst FormFile: FC = ({ error, value, onChange, whiteBackground, className, ...props }) => {\r\n const theme = useTheme();\r\n\r\n const [isFocused, setIsFocused] = useState(false);\r\n const [fileError, setFileError] = useState(error);\r\n\r\n const text = value ? value.name : 'Geen bestand gekozen';\r\n\r\n useEffect(() => {\r\n setFileError(error);\r\n }, [error]);\r\n\r\n const handleOnChange = (event: ChangeEvent) => {\r\n const file = event.target.files && event.target.files[0];\r\n\r\n if (!file) {\r\n return;\r\n }\r\n\r\n if (file.size > 20000000) {\r\n setFileError('Bestand mag maximaal 20MB groot zijn');\r\n return;\r\n } else {\r\n setFileError(undefined);\r\n }\r\n\r\n if (onChange) {\r\n onChange(file);\r\n }\r\n };\r\n\r\n const handleDelete = (event: React.MouseEvent) => {\r\n\r\n event.preventDefault();\r\n\r\n if (onChange) {\r\n onChange(null);\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n \r\n {fileError && {fileError}}\r\n \r\n );\r\n};\r\n\r\nexport default FormFile;\r\n","import styled from '@emotion/styled';\r\nimport { Button } from 'components/atoms/button';\r\n\r\nexport const FormFileWrapper = styled.div`\r\n margin-bottom: 1rem;\r\n display: flex;\r\n align-items: center;\r\n`;\r\n\r\nexport const FormFileRemove = styled(Button)`\r\n margin-left: 8px;\r\n align-self: center;\r\n`;\r\n\r\nexport const FormFileAdd = styled(Button)`\r\n margin-left: 8px;\r\n align-self: center;\r\n`;\r\n","import React, { FC, useEffect, useState } from 'react';\r\nimport FormFile, { FormFileProps } from '../FormFile';\r\nimport InvalidFeedback from '../InvalidFeedback';\r\nimport { FormFileRemove, FormFileWrapper, FormFileAdd } from './styles';\r\nimport { useTheme } from '@emotion/react';\r\n\r\nexport interface FormMultipleFileProps {\r\n error?: string;\r\n value?: File[];\r\n onChange?: (value: File[]) => void;\r\n whiteBackground?: boolean;\r\n}\r\n\r\nconst FormMultipleFile: FC = ({ error, value, onChange, whiteBackground }) => {\r\n const [files, setFiles] = useState(value ? value.map((value) => ({ value })) : [{}]);\r\n const [fileError, setFileError] = useState(error);\r\n const theme = useTheme();\r\n\r\n useEffect(() => {\r\n setFileError(error);\r\n }, [error]);\r\n\r\n const handleOnChange = (index: number) => (file: File | null) => {\r\n\r\n if (file == null) {\r\n handleOnRemoveClick(index)();\r\n return;\r\n }\r\n\r\n if (file.size > 20000000) {\r\n setFileError('Bestand mag maximaal 20MB groot zijn');\r\n return;\r\n } else {\r\n setFileError(undefined);\r\n }\r\n\r\n // Make copy of current files.\r\n const newFiles = [...files];\r\n\r\n // Replace the file.\r\n newFiles.splice(index, 1, { value: file });\r\n\r\n // Set new files.\r\n setFiles(newFiles);\r\n\r\n onFileChange(newFiles);\r\n };\r\n\r\n const onFileChange = (files: FormFileProps[]) => {\r\n if (onChange) {\r\n const f = files.reduce((a: File[], c) => {\r\n return c.value ? [...a, c.value] : a;\r\n }, []);\r\n\r\n onChange(f);\r\n }\r\n };\r\n\r\n const handleOnAddClick = () => {\r\n const newFiles = [...files];\r\n\r\n newFiles.push({});\r\n\r\n setFiles(newFiles);\r\n };\r\n\r\n const handleOnRemoveClick = (index: number) => () => {\r\n if (index === 0) {\r\n const newFiles = [...files];\r\n\r\n newFiles[0].value = undefined;\r\n\r\n setFiles(newFiles);\r\n onFileChange(newFiles);\r\n } else {\r\n const newFiles = [...files];\r\n\r\n newFiles.splice(index, 1);\r\n\r\n setFiles(newFiles);\r\n onFileChange(newFiles);\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n {files?.map((file, index) => (\r\n \r\n \r\n {(index !== 0 || (index === 0 && files[0].value)) && (\r\n \r\n )}\r\n {index === files.length - 1 && (\r\n \r\n )}\r\n \r\n ))}\r\n\r\n {fileError && {fileError}}\r\n \r\n );\r\n};\r\n\r\nexport default FormMultipleFile;\r\n","import styled from '@emotion/styled';\r\nimport { css } from '@emotion/react';\r\n\r\nexport const Wrapper = styled.div`\r\n display: flex;\r\n > button {\r\n height: 3rem;\r\n white-space: nowrap;\r\n width: 11rem;\r\n }\r\n`;\r\n\r\nexport const FilesWrapper = styled.div`\r\n display: flex;\r\n align-items: center;\r\n height: 3rem;\r\n background-color: ${({ theme }) => theme.colors.white};\r\n padding: 0 1rem;\r\n margin-right: 1rem;\r\n width: calc(100% - 11rem);\r\n \r\n div:last-of-type {\r\n margin-right: 0;\r\n }\r\n`;\r\n\r\nexport const File = styled.div<{ noRemoveIcon?: boolean }>`\r\n position: relative;\r\n display: inline-block;\r\n background: transparent;\r\n border: 1px solid ${({ theme }) => theme.colors.primary};\r\n color: ${({ theme }) => theme.colors.primary};\r\n margin-right: .75rem;\r\n border-radius: 1rem;\r\n padding: .5rem .75rem;\r\n padding-right: 2rem;\r\n line-height: 1;\r\n font-weight: 500;\r\n font-size: .75rem;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n flex: 1;\r\n ${({ noRemoveIcon }) =>\r\n noRemoveIcon &&\r\n css`\r\n padding-right: .75rem;\r\n `}\r\n`;\r\n\r\nexport const Remove = styled.button`\r\n position: absolute;\r\n right: .75rem;\r\n top: 50%;\r\n transform: translateY(-50%);\r\n display: inline-block;\r\n cursor: pointer;\r\n background: none;\r\n border: 0;\r\n outline: 0;\r\n line-height: 1;\r\n`;\r\n","import styled from '@emotion/styled';\r\n\r\nexport const FormSection = styled.div<{ noMargin?: boolean }>`\r\n background-color: ${({ theme }) => theme.colors.light};\r\n border-radius: ${({ theme }) => theme.borderRadius.small}px;\r\n margin-bottom: ${({ noMargin }) => (noMargin ? 0 : '1rem')};\r\n padding: 24px;\r\n`;\r\n","import styled from '@emotion/styled';\r\n\r\nexport const List = styled.form`\r\n background-color: ${({ theme }) => theme.colors.white};\r\n border-radius: ${({ theme }) => theme.borderRadius.normal}px;\r\n font-weight: 500;\r\n`;\r\n\r\nexport const ListItem = styled.div`\r\n padding: .75rem 1rem;\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n p {\r\n margin-bottom: 0;\r\n }\r\n\r\n &:not(:last-of-type) {\r\n border-bottom: 1px solid ${({ theme }) => theme.colors.border};\r\n }\r\n`;\r\n\r\nexport const Label = styled.label`\r\n display: inline-block;\r\n width: 2.5rem;\r\n height: 1.5rem;\r\n position: relative;\r\n\r\n input {\r\n opacity: 0;\r\n width: 0;\r\n height: 0;\r\n\r\n &:checked + div {\r\n background-color: ${({ theme }) => theme.colors.primary};\r\n\r\n &:before {\r\n left: 1.25rem;\r\n }\r\n }\r\n }\r\n`;\r\n\r\nexport const Switch = styled.div`\r\n width: 2.5rem;\r\n height: 1.5rem;\r\n position: absolute;\r\n top: 0;\r\n background-color: ${({ theme }) => theme.colors.light};\r\n border-radius: 1rem;\r\n transition: background 0.4s ease;\r\n\r\n &:hover {\r\n cursor: pointer;\r\n }\r\n\r\n &:before {\r\n position: absolute;\r\n content: '';\r\n width: 1rem;\r\n height: 1rem;\r\n background-color: ${({ theme }) => theme.colors.white};\r\n position: absolute;\r\n top: .25rem;\r\n left: .25rem;\r\n border-radius: 0.75rem;\r\n transition: left 0.3s ease;\r\n }\r\n`;","import styled from '@emotion/styled';\r\n\r\nexport const Wrapper = styled.div`\r\n .react-datepicker-popper {\r\n z-index: 999;\r\n }\r\n\r\n input {\r\n width: 100%;\r\n height: 3rem;\r\n border: 1px solid ${({ theme }) => theme.colors.grey};\r\n border-radius: ${({ theme }) => theme.borderRadius.small}px;\r\n padding: 0 16px;\r\n font-size: 1rem;\r\n color: ${({ theme }) => theme.colors.primary};\r\n\r\n &:focus {\r\n outline: none;\r\n box-shadow: 0 0 0 0.2rem ${({ theme }) => theme.greys[50]};\r\n }\r\n\r\n &:hover {\r\n border-color: ${({ theme }) => theme.greys[100]};\r\n }\r\n\r\n ::placeholder {\r\n color: ${({ theme }) => theme.colors.primary};\r\n }\r\n }\r\n`;\r\n","import React, { FC } from 'react';\r\nimport InvalidFeedback from '../InvalidFeedback';\r\nimport DatePicker, { ReactDatePickerProps } from 'react-datepicker';\r\nimport 'react-datepicker/dist/react-datepicker.css';\r\nimport { Wrapper } from './styles';\r\n\r\nexport interface FormDateProps extends ReactDatePickerProps {\r\n error?: string;\r\n}\r\n\r\nconst FormDate: FC = ({ error, ...props }) => {\r\n return (\r\n \r\n \r\n {error && {error}}\r\n \r\n );\r\n};\r\n\r\nexport default FormDate;\r\n","import { useField } from 'formik';\r\nimport React, { FC } from 'react';\r\nimport FormDate from '..';\r\nimport moment from 'moment';\r\n\r\ninterface FormikFormDateProps {\r\n name: string;\r\n}\r\n\r\nconst FormikFormDate: FC = ({ name, ...props }) => {\r\n const [field, meta, helpers] = useField(name);\r\n\r\n // Methods.\r\n const handleOnChange = (date: Date) => {\r\n if (date)\r\n helpers.setValue(date);\r\n };\r\n\r\n // Render.\r\n const error = !!(meta.touched && meta.error) ? meta.error : undefined;\r\n\r\n return ;\r\n};\r\n\r\nexport default FormikFormDate;\r\n","import { useField } from 'formik';\r\nimport React, { FC } from 'react';\r\nimport FormTextarea, { FormTextareaProps } from '..';\r\n\r\ninterface FormikFormTextareaProps extends FormTextareaProps {\r\n name: string;\r\n}\r\n\r\nconst FormikFormTextarea: FC = (props) => {\r\n const [field, meta] = useField(props);\r\n const error = !!(meta.touched && meta.error) ? meta.error : undefined;\r\n\r\n return ;\r\n};\r\n\r\nexport default FormikFormTextarea;\r\n","import { useField } from 'formik';\r\nimport React, { FC } from 'react';\r\nimport { Options } from 'react-select';\r\nimport FormSelect, { FormSelectProps, IOption } from '..';\r\n\r\ninterface FormikFormSelectProps extends FormSelectProps {\r\n name: string;\r\n}\r\n\r\nconst FormikFormSelect: FC = ({ name, options, ...props }) => {\r\n const [field, meta, helpers] = useField(name);\r\n\r\n // FormikFormSelect's methods.\r\n const handleOnChange = (option: IOption | Options | null) => {\r\n const value = option instanceof Array ? option.map((o) => o.value) : option?.value;\r\n helpers.setValue(value);\r\n };\r\n\r\n // Render.\r\n const error = !!(meta.touched && meta.error) ? meta.error : undefined;\r\n const value = props.isMulti\r\n ? options?.filter(option => field.value.indexOf(option.value) >= 0)\r\n : options?.find(option => option.value === field.value);\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default FormikFormSelect;\r\n","import { useField } from 'formik';\r\nimport React, { FC } from 'react';\r\nimport { FormSwitchProps } from '..';\r\nimport { FormSwitch } from '../..';\r\n\r\nexport interface FormikFormSwitchProps extends FormSwitchProps {\r\n name: string;\r\n}\r\n\r\nconst FormikFormSwitch: FC = ({ name, ...props }) => {\r\n const [field, , helpers] = useField(name);\r\n\r\n // Methods.\r\n const handleOnChange = (event: React.ChangeEvent) => {\r\n const checked = event.target.checked;\r\n helpers.setValue(checked);\r\n };\r\n\r\n return ;\r\n};\r\n\r\nexport default FormikFormSwitch;\r\n","import { useField } from 'formik';\r\nimport React, { FC } from 'react';\r\nimport FormYesNo, { FormYesNoProps } from '..';\r\n\r\nexport interface FormikFormYesNoProps extends FormYesNoProps {\r\n name: string;\r\n}\r\n\r\nconst FormikFormYesNo: FC = ({ name, ...props }) => {\r\n const [field, meta, helpers] = useField(name);\r\n\r\n const error = !!(meta.touched && meta.error) ? meta.error : undefined;\r\n return ;\r\n};\r\n\r\nexport default FormikFormYesNo;\r\n","import { useField } from 'formik';\r\nimport React, { FC } from 'react';\r\nimport FormImage, { FormImageProps } from '..';\r\n\r\nexport interface FormikFormImageProps extends FormImageProps {\r\n name: string;\r\n}\r\n\r\nconst FormikFormImage: FC = ({ name, ...props }) => {\r\n const [field, meta, helpers] = useField(name);\r\n\r\n // Render.\r\n const error = !!(meta.touched && meta.error) ? meta.error : undefined;\r\n\r\n return ;\r\n};\r\n\r\nexport default FormikFormImage;\r\n","import { useField } from 'formik';\r\nimport React, { FC } from 'react';\r\nimport FormFile, { FormFileProps } from '..';\r\n\r\nexport interface FormikFormFileProps extends FormFileProps {\r\n name: string;\r\n}\r\n\r\nconst FormikFormFile: FC = ({ name, ...props }) => {\r\n const [field, meta, helpers] = useField(name);\r\n\r\n // Render.\r\n const error = !!(meta.touched && meta.error) ? meta.error : undefined;\r\n\r\n return ;\r\n};\r\n\r\nexport default FormikFormFile;\r\n","import { useField } from 'formik';\r\nimport React, { FC } from 'react';\r\nimport FormMultipleFile, { FormMultipleFileProps } from '..';\r\n\r\nexport interface FormikFormMultipleFileProps extends FormMultipleFileProps {\r\n name: string;\r\n}\r\n\r\nconst FormikFormMultipleFile: FC = ({ name, ...props }) => {\r\n const [field, meta, helpers] = useField(name);\r\n\r\n // Render.\r\n const error = !!(meta.touched && meta.error) ? meta.error : undefined;\r\n\r\n return ;\r\n};\r\n\r\nexport default FormikFormMultipleFile;\r\n","import { css } from '@emotion/react';\r\nimport styled from '@emotion/styled';\r\n\r\nexport const Group = styled.div<{ spaceBetween?: boolean; right?: boolean; center?: boolean }>`\r\n display: flex;\r\n justify-content: ${({ spaceBetween, center, right }) =>\r\n spaceBetween ? 'space-between' : center ? 'space-around' : right ? 'flex-end' : 'flex-start'};\r\n\r\n > * {\r\n margin-right: 8px;\r\n\r\n ${({ spaceBetween, right }) =>\r\n spaceBetween &&\r\n right &&\r\n css`\r\n :only-child {\r\n margin-left: auto;\r\n }\r\n `};\r\n\r\n &:last-child {\r\n margin-right: 0;\r\n }\r\n }\r\n`;\r\n","import React, { FC } from 'react';\r\nimport { Group as Wrapper } from './styles';\r\n\r\nexport interface GroupProps {\r\n spaceBetween?: boolean;\r\n right?: boolean;\r\n center?: boolean;\r\n\r\n}\r\n\r\nconst Group: FC = ({ children, spaceBetween, right, center }) => {\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\nexport default Group;\r\n","import { FormikErrors, FormikTouched } from 'formik';\r\nimport { CustomError } from 'hooks/api/types';\r\n\r\nexport function toFormikErrors(errors: CustomError[]): FormikErrors {\r\n return errors.reduce((result: any, error) => {\r\n if (error.key.includes('.')) {\r\n let values = error.key.split('.');\r\n values = values.map((v, i) => {\r\n if (i === 0) {\r\n return v;\r\n }\r\n\r\n return v.replace(/(?:^\\w|[A-Z]|\\b\\w|\\s+)/g, function (match, index) {\r\n if (+match === 0) return ''; // or if (/\\s+/.test(match)) for white spaces\r\n return index === 0 ? match.toLowerCase() : match.toUpperCase();\r\n });\r\n });\r\n\r\n values.forEach((v, i) => {\r\n if (i === 0 && result[values[0]] === undefined) {\r\n result[values[0]] = {};\r\n } else if (i > 0 && i < values.length - 1 && result[values[i - 1]][values[i]] === undefined) {\r\n result[values[i - 1]][values[i]] = {};\r\n } else if (i === values.length - 1) {\r\n result[values[i - 1]][values[i]] = error.message;\r\n }\r\n });\r\n } else {\r\n result[error.key] = error.message;\r\n }\r\n return result;\r\n }, {});\r\n}\r\n\r\nexport function isTouched(touched: FormikTouched, name: string) {\r\n if (name.includes('[') && name.includes(']') && name.includes('.')) {\r\n // looking up array name\r\n const indexArrayOpen = name.indexOf('[');\r\n const arrayName = name.substr(0, indexArrayOpen);\r\n\r\n // looking up array index\r\n const indexArrayClose = name.indexOf(']');\r\n const indexArrayLength = indexArrayClose - indexArrayOpen - 1;\r\n const arrayIndex = Number(name.substr(indexArrayOpen + 1, indexArrayLength));\r\n\r\n // looking up variable name\r\n const indexDot = name.indexOf('.');\r\n const variableLength = name.length - (indexDot + 1);\r\n const variableName = name.substr(indexDot + 1, variableLength);\r\n\r\n const array = touched[arrayName] as Array;\r\n\r\n if (!array) {\r\n return undefined;\r\n }\r\n\r\n if (!array[arrayIndex]) {\r\n return undefined;\r\n }\r\n\r\n if (!array[arrayIndex][variableName]) {\r\n return undefined;\r\n }\r\n\r\n return array[arrayIndex][variableName];\r\n } else {\r\n return touched[name];\r\n }\r\n}\r\n","import { navigate } from '@reach/router';\r\nimport { useSession } from 'contexts/sessionContext';\r\nimport React from 'react';\r\nimport { SessionModel } from './types';\r\n\r\nexport interface CustomError {\r\n key: string;\r\n message: string;\r\n}\r\n\r\nexport interface CustomResponse extends Response {\r\n data?: T;\r\n errors?: CustomError[];\r\n}\r\n\r\ntype CallApiFn = (url: string, options?: RequestInit | undefined) => Promise>;\r\n\r\nlet refreshing: Promise> | undefined;\r\n\r\nexport const useApi = () => {\r\n const { setSession } = useSession();\r\n\r\n const redirectToLogin = () => {\r\n navigate('/account/login');\r\n };\r\n\r\n const getFullUrl = (url: string) => {\r\n return `/api${url}`;\r\n };\r\n\r\n const getHeaders = (options: RequestInit) => {\r\n const headers = options.headers ? new Headers(options.headers) : new Headers();\r\n headers.set('Accept', 'application/json');\r\n\r\n // If body is not form data, then it should be json\r\n if (!(options.body instanceof FormData)) {\r\n headers.set('Content-Type', 'application/json');\r\n }\r\n\r\n return headers;\r\n };\r\n\r\n const baseCallApi = async (\r\n url: string,\r\n options?: RequestInit\r\n ) => {\r\n const finalUrl = getFullUrl(url);\r\n const finalOptions = {\r\n headers: getHeaders(options || {}),\r\n ...options\r\n };\r\n\r\n const response: CustomResponse = await fetch(finalUrl, finalOptions);\r\n const contentType = response.headers.get('Content-Type') || '';\r\n if (contentType.includes('application/json')) {\r\n const data: T & { errors: CustomError[] } = await response.json();\r\n if (response.ok) {\r\n response.data = data as T;\r\n } else {\r\n response.errors = data.errors.map((error) => ({\r\n ...error,\r\n key: !!error.key && error.key.length > 0\r\n ? error.key[0].toLowerCase() + error.key.slice(1)\r\n : error.key\r\n }));\r\n }\r\n }\r\n\r\n return response;\r\n };\r\n\r\n const refreshSession = React.useCallback(async () => {\r\n const response = await baseCallApi('/account/cookierefresh', {\r\n method: 'POST'\r\n });\r\n\r\n if (response.ok && response.data) {\r\n const { claims } = response.data;\r\n setSession(claims);\r\n } else {\r\n redirectToLogin();\r\n }\r\n\r\n return response;\r\n }, [setSession]);\r\n\r\n const callApiFn: CallApiFn = React.useCallback(async (\r\n url: string,\r\n options?: RequestInit) => {\r\n // If we are already refreshing, wait for that to finish before making the api call\r\n if (!refreshing) {\r\n const response: CustomResponse = await baseCallApi(url, options);\r\n if (response.status === 401\r\n && !!response.headers.get('Token-Expired')) {\r\n\r\n // If we are already refreshing, no need to refresh again\r\n if (!refreshing) {\r\n refreshing = refreshSession();\r\n }\r\n } else {\r\n return response;\r\n }\r\n }\r\n\r\n const refreshResponse = await refreshing;\r\n refreshing = undefined;\r\n\r\n if (refreshResponse.ok) {\r\n return callApiFn(url, options);\r\n } else {\r\n redirectToLogin();\r\n }\r\n\r\n const dummyResponse: CustomResponse = new Response(\r\n null, { status: 400, statusText: 'Refresh failed' });\r\n return dummyResponse;\r\n }, [refreshSession]);\r\n\r\n const callApi = React.useRef(callApiFn);\r\n callApi.current = callApiFn;\r\n\r\n const get = React.useCallback(async (url: string) => {\r\n const response = await callApi.current(url);\r\n\r\n return response;\r\n }, [callApi]);\r\n\r\n const post = React.useCallback(async (url: string, data?: any) => {\r\n const body = data !== undefined\r\n ? data instanceof FormData\r\n ? data\r\n : JSON.stringify(data)\r\n : undefined;\r\n\r\n const response = await callApi.current(url, {\r\n method: 'POST',\r\n body\r\n });\r\n\r\n return response;\r\n }, [callApi]);\r\n\r\n const put = React.useCallback(async (url: string, data?: any) => {\r\n const body = data !== undefined\r\n ? data instanceof FormData\r\n ? data\r\n : JSON.stringify(data)\r\n : undefined;\r\n\r\n const response = await callApi.current(url, {\r\n method: 'PUT',\r\n body\r\n });\r\n\r\n return response;\r\n }, [callApi]);\r\n\r\n const deleteCall = React.useCallback(async (url: string) => {\r\n const response = await callApi.current(url, {\r\n method: 'DELETE'\r\n });\r\n\r\n return response;\r\n }, [callApi]);\r\n\r\n return React.useMemo(() => ({\r\n callApi,\r\n get,\r\n post,\r\n put,\r\n deleteCall,\r\n refreshSession\r\n }), [callApi, get, post, put, deleteCall, refreshSession]);\r\n};\r\n","export function appendObject(object: any, formData?: FormData, prefix?: string) {\r\n prefix = prefix ?? '';\r\n formData = formData ?? new FormData();\r\n for (const key in object) {\r\n if (object[key] !== undefined) {\r\n if (object[key] instanceof Date) {\r\n const x = object[key] as Date;\r\n\r\n const keyString = prefix + key;\r\n formData.append(keyString, x.toDateString());\r\n\r\n continue;\r\n }\r\n\r\n if (object[key] instanceof Array && (object[key] as Array).length > 0) {\r\n //if ((object[key] as Array)[0] instanceof File) {\r\n const array = object[key] as Array;\r\n const keyString = prefix + key;\r\n array.forEach((f, i) => formData?.append(`${keyString}`, f));\r\n\r\n continue;\r\n //}\r\n }\r\n\r\n if (object[key] instanceof File) {\r\n const keyString = prefix + key;\r\n formData.append(keyString, object[key]);\r\n\r\n continue;\r\n }\r\n\r\n if (typeof object[key] === 'object') {\r\n appendObject(object[key], formData, `${key}.`);\r\n continue;\r\n }\r\n\r\n const keyString = prefix + key;\r\n switch (typeof (object[key])) {\r\n case 'number':\r\n formData.append(keyString, object[key].toString());\r\n break;\r\n case 'string':\r\n formData.append(keyString, object[key]);\r\n break;\r\n case 'boolean':\r\n formData.append(keyString, object[key]);\r\n break;\r\n case 'object':\r\n break;\r\n default:\r\n formData.append(keyString, object[key]);\r\n break;\r\n }\r\n }\r\n }\r\n}\r\n","var map = {\n\t\"./about.svg\": 289,\n\t\"./add.svg\": 290,\n\t\"./agreement.svg\": 291,\n\t\"./arrow-left.svg\": 292,\n\t\"./arrow-right.svg\": 293,\n\t\"./check-bold.svg\": 294,\n\t\"./check.svg\": 295,\n\t\"./chevron-down.svg\": 190,\n\t\"./chevron-right.svg\": 296,\n\t\"./collapse.svg\": 297,\n\t\"./copy.svg\": 298,\n\t\"./courthouse.svg\": 299,\n\t\"./customer.svg\": 300,\n\t\"./dashboard.svg\": 301,\n\t\"./delete.svg\": 302,\n\t\"./document.svg\": 303,\n\t\"./download.svg\": 304,\n\t\"./edit.svg\": 305,\n\t\"./info.svg\": 306,\n\t\"./loading.svg\": 307,\n\t\"./mail.svg\": 308,\n\t\"./message.svg\": 309,\n\t\"./person.svg\": 310,\n\t\"./plus.svg\": 311,\n\t\"./print.svg\": 312,\n\t\"./profile.svg\": 313,\n\t\"./questionnaire.svg\": 314,\n\t\"./remove.svg\": 315,\n\t\"./right.svg\": 316,\n\t\"./scales.svg\": 317,\n\t\"./settings.svg\": 318,\n\t\"./sign-out.svg\": 319,\n\t\"./stamp.svg\": 320,\n\t\"./terms-and-conditions.svg\": 321,\n\t\"./wrench.svg\": 322\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 288;","export default __webpack_public_path__ + \"static/media/about.70309690.svg\";","import React, { FC } from 'react';\r\nimport { ReactSVG } from 'react-svg';\r\nimport colors from 'theme/colors';\r\nimport classnames from 'classnames';\r\n\r\ninterface IconProps {\r\n size?: number;\r\n color?: string;\r\n name: string;\r\n className?: string;\r\n}\r\n\r\nconst Icon: FC = ({ size = 1.5, color = colors.dark, name, className }) => {\r\n return (\r\n {\r\n svg.setAttribute('style', `width: ${size}rem; height: ${size}rem;`);\r\n color && svg.setAttribute('fill', color);\r\n }}\r\n // eslint-disable-next-line @typescript-eslint/no-var-requires\r\n src={require(`static/icons/${name}.svg`).default}\r\n />\r\n );\r\n};\r\n\r\nexport default Icon;\r\n","export default __webpack_public_path__ + \"static/media/add.bbef6fe8.svg\";","export default __webpack_public_path__ + \"static/media/agreement.36218c6b.svg\";","export default __webpack_public_path__ + \"static/media/arrow-left.68feed25.svg\";","export default __webpack_public_path__ + \"static/media/arrow-right.2f8c1ba5.svg\";","export default __webpack_public_path__ + \"static/media/check-bold.64c8fc49.svg\";","export default __webpack_public_path__ + \"static/media/check.ba73a04a.svg\";","export default __webpack_public_path__ + \"static/media/chevron-right.f4884e73.svg\";","export default __webpack_public_path__ + \"static/media/collapse.120dcd7b.svg\";","export default __webpack_public_path__ + \"static/media/copy.045a0836.svg\";","export default __webpack_public_path__ + \"static/media/courthouse.d6b9bb08.svg\";","import React, { FC } from 'react';\r\nimport { Claim, Right, Role } from 'utils/constants';\r\nimport { ClaimModel } from 'hooks/api/types';\r\n\r\nexport interface Session {\r\n userId?: string;\r\n customerId?: string;\r\n role?: Role;\r\n rights: Right[];\r\n username?: string;\r\n insertion?: string;\r\n lastName?: string;\r\n fullName?: string;\r\n gender?: string;\r\n}\r\n\r\nexport interface SessionContextValue {\r\n session?: Session;\r\n setSession: (claims: ClaimModel[]) => Session;\r\n clearSession: () => void;\r\n hasRight: (right: Right) => boolean;\r\n hasRole: (role: Role) => boolean;\r\n}\r\n\r\nconst convertToSession = (claims: ClaimModel[]) => {\r\n function claimValues(claimName: Claim) {\r\n const claim = claims.find((c) => c.type === claimName);\r\n return claim\r\n ? claim.values\r\n : undefined;\r\n }\r\n\r\n function claimFirstValue(claimName: Claim) {\r\n const values = claimValues(claimName);\r\n return values\r\n ? values[0]\r\n : undefined;\r\n }\r\n\r\n const userId = claimFirstValue(Claim.UserId);\r\n const customerId = claimFirstValue(Claim.CustomerId);\r\n const role = claimFirstValue(Claim.Roles) as Role;\r\n const rights = claimValues(Claim.Rights) as Right[];\r\n const username = claimFirstValue(Claim.UserName);\r\n const insertion = claimFirstValue(Claim.Insertion);\r\n const lastName = claimFirstValue(Claim.LastName);\r\n const fullName = claimFirstValue(Claim.FullName);\r\n const gender = claimFirstValue(Claim.Gender);\r\n\r\n const newSession: Session = {\r\n userId,\r\n customerId,\r\n role,\r\n rights,\r\n username,\r\n fullName,\r\n insertion,\r\n lastName,\r\n gender\r\n };\r\n\r\n return newSession;\r\n};\r\n\r\nconst SessionContext = React.createContext({\r\n session: undefined,\r\n setSession: (claims: ClaimModel[]) => {\r\n return convertToSession(claims);\r\n },\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n clearSession: () => { },\r\n hasRight: (right: Right) => false,\r\n hasRole: (role: Role) => false,\r\n});\r\n\r\ninterface SessionProviderProps {\r\n\r\n}\r\n\r\nexport const SessionProvider: FC = (props) => {\r\n const [session, setSession] = React.useState();\r\n\r\n const updateSession = React.useCallback((claims: ClaimModel[]) => {\r\n const newSession = convertToSession(claims);\r\n setSession(newSession);\r\n\r\n return newSession;\r\n }, [setSession]);\r\n\r\n const clearSession = React.useCallback(() => {\r\n setSession(undefined);\r\n }, [setSession]);\r\n\r\n const hasRight = React.useCallback((right: Right) => {\r\n return session?.rights?.includes(right) ?? false;\r\n }, [session]);\r\n\r\n const hasRole = React.useCallback((role: Role) => {\r\n return session?.role === role ?? false;\r\n }, [session]);\r\n\r\n const context: SessionContextValue = React.useMemo(() => ({\r\n session,\r\n setSession: updateSession,\r\n clearSession,\r\n hasRight,\r\n hasRole,\r\n }), [session, updateSession, clearSession, hasRight, hasRole]);\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport const useSession = () => {\r\n const context = React.useContext(SessionContext);\r\n if (!context) {\r\n throw new Error('useSession must be used within a SessionProvider');\r\n }\r\n\r\n return context;\r\n};\r\n","export default __webpack_public_path__ + \"static/media/customer.475788eb.svg\";","export default __webpack_public_path__ + \"static/media/dashboard.58b305e3.svg\";","export default __webpack_public_path__ + \"static/media/delete.60baf523.svg\";","export default __webpack_public_path__ + \"static/media/document.04b1ee2a.svg\";","export default __webpack_public_path__ + \"static/media/download.a019a325.svg\";","export default __webpack_public_path__ + \"static/media/edit.3f1da29b.svg\";","export default __webpack_public_path__ + \"static/media/info.b2dafb9c.svg\";","export default __webpack_public_path__ + \"static/media/loading.7b6697ab.svg\";","export default __webpack_public_path__ + \"static/media/mail.3ec3948b.svg\";","export default __webpack_public_path__ + \"static/media/message.bf24c5b6.svg\";","export default __webpack_public_path__ + \"static/media/person.11807604.svg\";","export default __webpack_public_path__ + \"static/media/plus.eb7c2a88.svg\";","export default __webpack_public_path__ + \"static/media/print.3331f201.svg\";","export default __webpack_public_path__ + \"static/media/profile.2b86651a.svg\";","export default __webpack_public_path__ + \"static/media/questionnaire.eb755e4d.svg\";","export default __webpack_public_path__ + \"static/media/remove.d6b11406.svg\";","export default __webpack_public_path__ + \"static/media/right.15aef9ba.svg\";","export default __webpack_public_path__ + \"static/media/scales.240e3e92.svg\";","export default __webpack_public_path__ + \"static/media/settings.bbdfe84e.svg\";","export default __webpack_public_path__ + \"static/media/sign-out.d69fdb6d.svg\";","export default __webpack_public_path__ + \"static/media/stamp.633a8302.svg\";","export default __webpack_public_path__ + \"static/media/terms-and-conditions.ce187e80.svg\";","export default __webpack_public_path__ + \"static/media/wrench.d0a1b7e0.svg\";","export enum Claim {\r\n UserId = 'api.juresta.userId',\r\n UserName = 'api.juresta.userName',\r\n Roles = 'api.juresta.role',\r\n Rights = 'api.juresta.right',\r\n CustomerId = 'api.juresta.customerId',\r\n FullName = 'api.juresta.fullName',\r\n Insertion = 'api.juresta.insertion',\r\n LastName = 'api.juresta.lastName',\r\n Gender = 'api.juresta.gender'\r\n}\r\n","export enum Role {\r\n Admin = 'Admin',\r\n Sales = 'Sales'\r\n}\r\n","export enum EditUserInfoRequestStatus {\r\n Requested = 0,\r\n Cancelled = 1,\r\n Rejected = 2,\r\n Processed = 3\r\n}\r\n","import { useField } from 'formik';\r\nimport React, { FC } from 'react';\r\nimport FormControl, { FormControlProps } from '..';\r\n\r\nconst FormControlFormik: FC = (props) => {\r\n const [field, meta] = useField(props);\r\n\r\n const error = !!(meta.touched && meta.error) ? meta.error : undefined;\r\n return ;\r\n};\r\n\r\nexport default FormControlFormik;\r\n","import styled from '@emotion/styled';\r\n\r\nconst InvalidFeedback = styled.span`\r\n display: block;\r\n font-size: 0.875rem;\r\n line-height: 0.875rem;\r\n color: ${({ theme }) => theme.colors.error};\r\n margin-top: 0.5rem;\r\n`;\r\n\r\nexport default InvalidFeedback;\r\n","import styled from '@emotion/styled';\r\nimport { css } from '@emotion/react';\r\nimport { readableColor, lighten, rgba, darken } from 'polished';\r\nimport { ButtonProps } from './';\r\nimport Icon from 'components/atoms/Icon';\r\n\r\nconst lightenAmount = {\r\n hover: 0.05\r\n};\r\n\r\nexport const Button = styled.button`\r\n border: none;\r\n height: 2.5rem;\r\n padding: 0 ${({ rounded }) => (rounded ? 24 : 16)}px;\r\n border-radius: ${({ theme, rounded }) => (rounded ? '1.25rem' : `${theme.borderRadius.small}px`)};\r\n font-size: 0.9rem;\r\n font-weight: 500;\r\n display: flex;\r\n justify-content: center;\r\n line-height: 1;\r\n align-items: center;\r\n align-self: flex-start;\r\n width: ${({ full }) => (full ? '100%' : 'auto')};\r\n cursor: pointer;\r\n ${({ theme, border }) => border && `border: 2px solid ${theme.colors.primary};`}\r\n\r\n ${({ theme, variant, disabled }) => {\r\n const color = theme.colors[variant || 'primary'];\r\n const isBorder = variant === 'border';\r\n const isWhite = color === theme.colors.white;\r\n\r\n return css`\r\n color: ${disabled || variant === 'grey' ? theme.colors.white : readableColor(color)};\r\n background-color: ${disabled ? theme.colors.grey : color};\r\n border: ${isBorder ? `3px solid ${theme.colors.primary}` : ''};\r\n\r\n &:focus {\r\n outline: none;\r\n box-shadow: 0 0 0 0.2rem ${rgba(color, 0.5)};\r\n }\r\n\r\n &:hover {\r\n background-color: ${disabled ? theme.colors.grey : isWhite ? darken(lightenAmount.hover, color) : lighten(lightenAmount.hover, color)};\r\n }\r\n `;\r\n }}\r\n\r\n ${({ size, loading, startIcon, endIcon }) =>\r\n size === 'lg' &&\r\n css`\r\n font-size: 1rem;\r\n height: 3rem;\r\n padding: 0 25px 0 ${!(startIcon || endIcon) && loading ? 12 : 25}px;\r\n `}\r\n\r\n ${({ size, rounded }) =>\r\n size === 'lg' &&\r\n rounded &&\r\n css`\r\n border-radius: 1.75rem;\r\n `}\r\n\r\n ${({ alignSelf }) =>\r\n alignSelf &&\r\n css`\r\n align-self: ${alignSelf};\r\n `}\r\n`;\r\n\r\nexport const Loading = styled.div<{\r\n color?: string;\r\n icon?: boolean;\r\n}>`\r\n position: absolute;\r\n top: 50%;\r\n left: 50%;\r\n transform: translateX(-50%) translateY(-50%);\r\n width: 1rem;\r\n height: 1rem;\r\n margin-right: ${({ icon }) => (icon ? 'calc(16px + 0.25rem)' : '12px')};\r\n margin-left: ${({ icon }) => (icon ? 0.25 : 0)}rem;\r\n border: 2px solid ${({ color }) => color};\r\n animation: rotate 1s linear infinite;\r\n border-left-color: transparent;\r\n border-radius: 50%;\r\n`;\r\n\r\nexport const StartIcon = styled(Icon) <{ noMargin?: boolean }>`\r\n margin-right: ${({ noMargin }) => (noMargin ? 0 : '16px')};\r\n`;\r\n\r\nexport const EndIcon = styled(Icon) <{ noMargin?: boolean }>`\r\n margin-left: ${({ noMargin }) => (noMargin ? 0 : '16px')};\r\n`;\r\n","export enum CalculatorType {\r\n ConsumerTransaction, // Consumententransactie\r\n TradeTransaction, // Handelstransactie\r\n ContractTransaction // Contractueletransactie\r\n}\r\n","export enum CalculatorInterestType {\r\n Combined, // Samengesteld\r\n Singular // Enkelvoudig\r\n}\r\n","export const gutterWidth = 32;\r\n\r\nconst grid = {\r\n gutterWidth\r\n};\r\n\r\nexport default grid;\r\n","import { css } from '@emotion/react';\r\nimport styled from '@emotion/styled';\r\nimport { Link } from '@reach/router';\r\n\r\nexport const Tab = styled(Link) <{ active?: boolean }>`\r\n height: 3rem;\r\n display: inline-flex;\r\n padding: 0 24px;\r\n align-items: center;\r\n position: relative;\r\n text-decoration: none;\r\n\r\n ${({ active, theme }) =>\r\n active &&\r\n css`\r\n border-radius: ${theme.borderRadius.normal}px;\r\n background-color: ${theme.colors.primary};\r\n `}\r\n\r\n &:hover {\r\n cursor: pointer;\r\n }\r\n`;\r\n\r\nexport const Title = styled.span<{ active?: boolean }>`\r\n color: ${({ theme }) => theme.colors.primary};\r\n transition: color 0.4s ease;\r\n\r\n ${({ active, theme }) =>\r\n active &&\r\n css`\r\n color: ${theme.colors.white};\r\n `};\r\n`;\r\n","import React, { FC } from 'react';\r\nimport { Tab as Wrapper, Title } from './styles';\r\n\r\nexport interface TabProps {\r\n title: string;\r\n active?: boolean;\r\n onClick?: () => void;\r\n to: string;\r\n}\r\n\r\nconst Tab: FC = ({ title, active, onClick, to }) => {\r\n return (\r\n \r\n {title}\r\n \r\n );\r\n};\r\n\r\nexport default Tab;\r\n","import styled from '@emotion/styled';\r\nimport { rgba } from 'polished';\r\n\r\nexport const Tabs = styled.div`\r\n height: 3rem;\r\n margin-bottom: 1rem;\r\n border-radius: ${({ theme }) => theme.borderRadius.normal}px;\r\n display: inline-flex;\r\n background-color: ${({ theme }) => theme.colors.white};\r\n overflow: hidden;\r\n box-shadow: 0 10px 30px ${({ theme }) => rgba(theme.colors.dark, 0.07)};\r\n`;\r\n","import React, { FC } from 'react';\r\nimport { Tabs as Wrapper } from './styles';\r\n\r\nconst Tabs: FC = ({ children }) => {\r\n return {children};\r\n};\r\n\r\nexport default Tabs;\r\n","import React, { FC, ReactElement } from 'react';\r\nimport { Match, RouteComponentProps } from '@reach/router';\r\nimport Tab from 'components/atoms/Tab';\r\nimport TabsMolecule from 'components/molecules/Tabs';\r\n\r\ninterface DefaultProps extends RouteComponentProps {\r\n titles: string[];\r\n}\r\n\r\nconst Tabs: FC = ({ titles, children, navigate, path }) => {\r\n const paths = React.Children.map((children as ReactElement)?.props.children, ({ props }) => (props.default ? path : props.path));\r\n\r\n return (\r\n <>\r\n \r\n {titles.map((tab, index) => (\r\n \r\n {({ match }) => }\r\n \r\n ))}\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\nexport default Tabs;\r\n","import React, { FC, useState } from 'react';\r\nimport { Formik, FormikHelpers } from 'formik';\r\nimport { FormGroup } from 'components/atoms/form';\r\nimport { RouteComponentProps } from '@reach/router';\r\nimport * as Yup from 'yup';\r\nimport FormControlFormik from 'components/atoms/form/FormControl/formik';\r\nimport { ForgotPasswordInputModel } from 'hooks/account/types';\r\nimport useAccount from 'hooks/account/useAccount';\r\nimport { toFormikErrors } from 'utils/errorhelper';\r\nimport { H2 } from 'components/atoms/text';\r\nimport AccountForm from 'components/templates/AccountForm';\r\n\r\nconst validationSchema = Yup.object().shape({\r\n mail: Yup.string().email('Ongeldig e-mailadres')\r\n});\r\n\r\nconst ForgotPassword: FC = ({ location }) => {\r\n const state = location?.state;\r\n const [send, setSend] = useState(false);\r\n\r\n const { forgotPassword } = useAccount();\r\n\r\n // ForgotPassword's methods.\r\n const onSubmit = async (values: ForgotPasswordInputModel, { setSubmitting, setErrors }: FormikHelpers) => {\r\n const response = await forgotPassword(values);\r\n\r\n if (response.ok) {\r\n setSend(true);\r\n } else if (response.errors) {\r\n const errors = toFormikErrors(response.errors);\r\n setErrors(errors);\r\n }\r\n\r\n setSubmitting(false);\r\n };\r\n\r\n // Formik.\r\n const initialValues: ForgotPasswordInputModel = {\r\n // @ts-ignore no type for state\r\n userName: (state && state.userName) || ''\r\n };\r\n\r\n if (!send) {\r\n return (\r\n <>\r\n

Wachtwoord vergeten

\r\n \r\n {({ isSubmitting, isValid }) => (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n \r\n );\r\n }\r\n\r\n return

Verzonden!

;\r\n};\r\n\r\nexport default ForgotPassword;\r\n","import React, { FC, useState } from 'react';\r\nimport { Formik, FormikHelpers } from 'formik';\r\nimport { FormGroup } from 'components/atoms/form';\r\nimport { Button } from 'components/atoms/button';\r\nimport { RouteComponentProps } from '@reach/router';\r\nimport useAccount from 'hooks/account/useAccount';\r\nimport { toFormikErrors } from 'utils/errorhelper';\r\nimport { ResetPasswordInputModel } from 'hooks/account/types';\r\nimport FormControlFormik from 'components/atoms/form/FormControl/formik';\r\nimport queryString from 'query-string';\r\nimport { H2, Paragraph } from 'components/atoms/text';\r\nimport AccountForm from 'components/templates/AccountForm';\r\n\r\nconst ForgotPassword: FC = ({ navigate, location }) => {\r\n const params = queryString.parse(location?.search ?? '');\r\n const [created, setCreated] = useState(false);\r\n\r\n const { resetPassword } = useAccount();\r\n\r\n // ForgotPassword's methods.\r\n const onSubmit = async (\r\n values: ResetPasswordInputModel,\r\n { setSubmitting, setErrors }: FormikHelpers\r\n ) => {\r\n const response = await resetPassword(values);\r\n\r\n if (response.ok) {\r\n setCreated(true);\r\n } else if (response.errors) {\r\n const errors = toFormikErrors(response.errors);\r\n setErrors(errors);\r\n }\r\n\r\n setSubmitting(false);\r\n };\r\n\r\n // Formik.\r\n const initialValues: ResetPasswordInputModel = {\r\n password: '',\r\n confirmPassword: '',\r\n code: params.code as string ?? '',\r\n userName: params.userName as string ?? ''\r\n };\r\n\r\n if (!created) {\r\n return (\r\n <>\r\n

Nieuw wachtwoord

\r\n Maak een nieuw wachtwoord aan.\r\n \r\n {({ isSubmitting, isValid }) => (\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 return (\r\n <>\r\n

Gelukt!

\r\n U kunt nu met uw nieuwe wachtwoord inloggen in uw Juresta-omgeving.\r\n navigate && navigate('/account')}\r\n >\r\n Inloggen\r\n \r\n \r\n );\r\n};\r\n\r\nexport default ForgotPassword;\r\n","import React, { FC, useState, useEffect } from 'react';\r\nimport { RouteComponentProps } from '@reach/router';\r\nimport { Field, Formik, FormikHelpers } from 'formik';\r\nimport { FormCheck, FormGroup, FormikFormControl } from 'components/atoms/form';\r\nimport { Button } from 'components/atoms/button';\r\nimport { toast } from 'react-toastify';\r\nimport useAccount, { VerifyTfaCodeInputModel } from 'hooks/account/useAccount';\r\nimport Group from 'components/molecules/Group';\r\nimport { Content } from 'components/templates/AccountForm/styles';\r\n\r\ninterface TfaProps extends RouteComponentProps {\r\n redirectUrl?: string;\r\n}\r\n\r\nconst initialValues: VerifyTfaCodeInputModel = {\r\n code: '',\r\n rememberVerification: false\r\n};\r\n\r\nconst TwoFactorAuthentication: FC = (props) => {\r\n const { redirectUrl } = props;\r\n\r\n const { resendTfaCode, verifyTfaCode } = useAccount();\r\n const [isLoadingNewCode, setIsLoadingNewCode] = useState(false);\r\n\r\n useEffect(() => {\r\n newCode();\r\n }, []);\r\n\r\n const newCode = async () => {\r\n if (!isLoadingNewCode) {\r\n setIsLoadingNewCode(true);\r\n try {\r\n const response = await resendTfaCode();\r\n\r\n if (response.status === 200) {\r\n toast.success('Er is een bericht met een verificatiecode verstuurd naar uw apparaat. Vul de code in om door te gaan.');\r\n } else {\r\n toast.error('Code kon niet worden verstuurd');\r\n }\r\n } catch (ex) {\r\n toast.error('Code kon niet worden verstuurd');\r\n }\r\n setIsLoadingNewCode(false);\r\n }\r\n };\r\n\r\n const submit = async (values: VerifyTfaCodeInputModel, actions: FormikHelpers) => {\r\n actions.setSubmitting(true);\r\n try {\r\n await verifyTfaCode(values, redirectUrl);\r\n } catch (ex) {\r\n toast.error('Code kon niet worden geverifiërd');\r\n }\r\n actions.setSubmitting(false);\r\n };\r\n\r\n return (\r\n <>\r\n \r\n {({ handleSubmit, isSubmitting, isValid }) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Nieuwe code aanvragen\r\n \r\n \r\n \r\n \r\n )}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default TwoFactorAuthentication;\r\n","import { rgba } from 'polished';\r\nimport styled from '@emotion/styled';\r\nimport { Colors } from 'theme/colors';\r\nimport { css } from '@emotion/react';\r\n\r\ninterface CardProps {\r\n noMargin?: boolean;\r\n noShadow?: boolean;\r\n variant?: keyof Colors;\r\n fill?: boolean;\r\n overflow?: 'visible' | 'hidden' | 'scroll' | 'auto';\r\n disabled?: boolean;\r\n flexDirection?: 'row';\r\n}\r\n\r\nconst Card = styled.div`\r\n background-color: ${({ theme }) => theme.colors.white};\r\n box-shadow: 0 10px 30px ${({ theme }) => rgba(theme.colors.dark, 0.07)};\r\n border-radius: ${({ theme }) => theme.borderRadius.large}px;\r\n margin-bottom: ${({ noMargin }) => (noMargin ? 0 : '2rem')};\r\n display: flex;\r\n flex-direction: ${({ flexDirection }) => flexDirection ? flexDirection : 'column'};\r\n height: ${({ fill, noMargin }) => (fill ? `calc(100% - ${noMargin ? 0 : '2rem'})` : 'auto')};\r\n position: relative;\r\n overflow: ${({ overflow }) => overflow};\r\n opacity: ${({ disabled }) => (disabled ? 0.5 : 1)};\r\n\r\n ${({ theme, variant }) => {\r\n const color = theme.colors[variant || 'white'];\r\n\r\n return css`\r\n background-color: ${color};\r\n `;\r\n }};\r\n\r\n ${({ noShadow }) =>\r\n noShadow &&\r\n css`\r\n box-shadow: none;\r\n `}\r\n`;\r\n\r\nexport default Card;\r\n","import styled from '@emotion/styled';\r\nimport { css } from '@emotion/react';\r\n\r\ninterface CardBodyProps {\r\n borderBottom?: boolean;\r\n}\r\n\r\nconst CardBody = styled.div`\r\n padding: 24px;\r\n flex: 1;\r\n position: relative;\r\n display: flex;\r\n flex-direction: column;\r\n ${({ theme, borderBottom }) =>\r\n borderBottom &&\r\n css`\r\n border-bottom: 1px solid ${theme.colors.border};\r\n `}\r\n`;\r\n\r\nexport default CardBody;\r\n","import styled from '@emotion/styled';\r\nimport { css } from '@emotion/react';\r\n\r\ninterface CardHeaderProps {\r\n borderBottom?: boolean;\r\n withBody?: boolean;\r\n isDark?: boolean;\r\n flexDirection?: 'column' | 'row';\r\n}\r\n\r\nconst CardHeader = styled.div`\r\n padding-bottom: 24px;\r\n display: flex;\r\n align-items: ${({ flexDirection }) => (flexDirection === 'row' || !flexDirection ? 'center' : 'flex-start')};\r\n flex-direction: ${({ flexDirection }) => flexDirection ?? 'row'};\r\n justify-content: space-between;\r\n background-color: ${({ theme }) => theme.colors.white};\r\n\r\n h3 {\r\n margin-bottom: 0;\r\n overflow-wrap: break-word;\r\n hyphens: auto;\r\n }\r\n\r\n > * {\r\n margin-bottom: 0 !important;\r\n }\r\n\r\n ${({ theme, borderBottom }) => borderBottom && css``}\r\n\r\n ${({ isDark, theme }) =>\r\n isDark &&\r\n css`\r\n background-color: ${theme.colors.primary};\r\n `}\r\n\r\n ${({ withBody }) =>\r\n withBody &&\r\n css`\r\n padding: 24px;\r\n `}\r\n`;\r\n\r\nexport default CardHeader;\r\n","const cdnUrl = 'https://cdn.bluenotion.nl';\r\n\r\nexport const cdnFileUrl = (filename: string, params?: any) => {\r\n const args = params\r\n ? Object.keys(params).map((k: any) => {\r\n return `${k}=${params[k]}`;\r\n }).reduce((a, b) => {\r\n if (a) {\r\n return `${a}&${b}`;\r\n }\r\n\r\n return b;\r\n }, '')\r\n : '';\r\n\r\n let result = `${cdnUrl}/${filename}`;\r\n if (args.length > 0) {\r\n result += `?${args}&auto-orient`;\r\n }\r\n return result;\r\n};\r\n\r\nexport const resolvedCdn = (imageHash: string, width = 64, height = 64) => {\r\n return cdnFileUrl(imageHash, {\r\n resize: `${width}x${height}^`,\r\n extent: `${width}x${height}`,\r\n crop: `${width}x${height}`,\r\n quality: 90,\r\n optimize: true,\r\n progressive: true,\r\n });\r\n};\r\n\r\nexport const cdnUri = (imageHash: string, width = 64, height = 64) => {\r\n return { uri: resolvedCdn(imageHash, width, height) };\r\n};\r\n\r\nexport const cdnString = (imageHash: string, width = 64, height = 64) => {\r\n return resolvedCdn(imageHash, width, height);\r\n};\r\n","import { css } from '@emotion/react';\r\nimport styled from '@emotion/styled';\r\n\r\nexport const Image = styled.div<{ background?: string }>`\r\n background-color: ${({ theme }) => theme.colors.white};\r\n height: 12rem;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n box-shadow: 4px 0 0 ${({ theme }) => theme.colors.light};\r\n\r\n ${({ background, theme }) =>\r\n background &&\r\n css`\r\n background-image: url('${background}');\r\n background-size: contain;\r\n background-position: center center;\r\n background-repeat: no-repeat;\r\n background-color: ${theme.colors.white};\r\n `}\r\n`;\r\n\r\nexport const Logo = styled.img``;\r\n","import React, { FC } from 'react';\r\nimport { cdnString } from 'utils/cdnHelper';\r\nimport { Image, Logo } from './styles';\r\n\r\nexport interface CardImageProps {\r\n imageHash: string;\r\n title: string;\r\n isLogo?: boolean;\r\n style?: React.CSSProperties;\r\n}\r\n\r\nconst IMAGE_WIDTH = 672;\r\nconst IMAGE_HEIGHT = 384;\r\n\r\nconst CardImage: FC = ({ imageHash, title, isLogo, style }) => {\r\n const image = isLogo ? cdnString(imageHash) : cdnString(imageHash, IMAGE_WIDTH, IMAGE_HEIGHT);\r\n\r\n return {isLogo && };\r\n};\r\n\r\nexport default CardImage;\r\n","import styled from '@emotion/styled';\r\n\r\nconst CardContent = styled.div`\r\n flex: 1 1 auto;\r\n`;\r\n\r\nexport default CardContent;\r\n","import { css } from '@emotion/react';\r\nimport styled from '@emotion/styled';\r\n\r\ninterface CardActionsProps {\r\n align?: 'center' | 'left' | 'right';\r\n}\r\n\r\nconst CardActions = styled.div`\r\n display: flex;\r\n flex: 0 0 auto;\r\n justify-content: flex-end;\r\n ${({ align }) =>\r\n align &&\r\n css`\r\n justify-content: ${align === 'center' ? 'center' : (align === 'left' ? 'flex-start' : 'flex-end')};\r\n `}\r\n\r\n`;\r\n\r\nexport default CardActions;\r\n","import { useApi } from 'hooks/api';\r\nimport { EditProfileInputModel, GetProfileModel } from './types';\r\nimport { appendObject } from 'utils/objectAppender';\r\n\r\nconst useProfile = () => {\r\n const { get, put } = useApi();\r\n\r\n const getProfile = async () => {\r\n const response = await get('/profile');\r\n\r\n return response;\r\n };\r\n\r\n const edit = async (values: EditProfileInputModel) => {\r\n const fd = new FormData();\r\n\r\n appendObject(values, fd);\r\n\r\n const response = await put('/profile', fd);\r\n\r\n return response;\r\n };\r\n\r\n return {\r\n edit,\r\n getProfile\r\n };\r\n};\r\n\r\nexport default useProfile;\r\n","import { useSession } from 'contexts/sessionContext';\r\nimport { GetProfileModel } from 'hooks/profile/types';\r\nimport useProfile from 'hooks/profile/useProfile';\r\nimport React, { FC, useState, useEffect } from 'react';\r\n\r\nexport interface HeaderContextValue {\r\n headerTitle?: string;\r\n setHeaderTitle: React.Dispatch>;\r\n headerProfile?: GetProfileModel;\r\n setHeaderProfile: React.Dispatch>;\r\n}\r\n\r\nconst HeaderContext = React.createContext({\r\n headerTitle: undefined,\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n setHeaderTitle: () => { },\r\n headerProfile: undefined,\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n setHeaderProfile: () => { }\r\n});\r\n\r\ninterface HeaderProviderProps {\r\n\r\n}\r\n\r\nexport const HeaderProvider: FC = (props) => {\r\n const { session } = useSession();\r\n\r\n const [headerTitle, setHeaderTitle] = React.useState();\r\n const { getProfile } = useProfile();\r\n const [headerProfile, setHeaderProfile] = useState();\r\n\r\n useEffect(() => {\r\n if (session) {\r\n (async () => {\r\n const profileCall = loadProfile();\r\n await Promise.all([profileCall]);\r\n })();\r\n }\r\n }, [session]);\r\n\r\n const loadProfile = async () => {\r\n const response = await getProfile();\r\n\r\n if (response.ok && response.data) {\r\n setHeaderProfile(response.data);\r\n }\r\n };\r\n\r\n const context: HeaderContextValue = React.useMemo(() => ({\r\n headerTitle,\r\n setHeaderTitle,\r\n headerProfile,\r\n setHeaderProfile\r\n }), [headerTitle, headerProfile]);\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport const useHeader = (title?: string) => {\r\n const context = React.useContext(HeaderContext);\r\n\r\n if (!context) {\r\n throw new Error('useHeader must be used within a HeaderProvider');\r\n }\r\n useEffect(() => {\r\n context.setHeaderTitle(title);\r\n }, []);\r\n\r\n return context;\r\n};\r\n","import React, { FC } from 'react';\r\nimport { Link, RouteComponentProps } from '@reach/router';\r\nimport { Card, CardBody, CardHeader } from 'components/atoms/card';\r\nimport { useHeader } from 'contexts/headerContext';\r\nimport { H3, Paragraph } from 'components/atoms/text';\r\n\r\nconst Extras: FC = () => {\r\n useHeader('Extra\\'s');\r\n\r\n // Render.\r\n return (\r\n \r\n \r\n \r\n

Hulpmiddelen bij uw debiteurenbeheer

\r\n
\r\n \r\n Op basis van uw module(s) met Juresta kunt u gebruik maken van een aantal extra’s.\r\n \r\n \r\n \r\n Voorbeeldbrieven voor het herinneren en aanmanen\r\n
\r\n
\r\n Verstuur direct na het leveren van uw goederen of diensten een factuur en vermeld in uw factuur duidelijk uw betaaltermijn. Blijft de betaling van uw factuur uit? Verstuur dan een herinnering of aanmaning. Meer over herinneren en aanmanen en naar onze voorbeeldbrieven.\r\n
\r\n \r\n \r\n Bereken uw vertragingsrente\r\n
\r\n
\r\n Met onze calculator berekent u eenvoudig de door u debiteur verschuldigde rente of incassokosten. Direct naar de calculator.\r\n
\r\n \r\n \r\n Juresta-stempel\r\n
\r\n
\r\n Met onze Juresta-stempel geeft u een duidelijk signaal af aan uw debiteuren. Veel van onze klanten zien een aanmerkelijke verbetering in het\r\n betaalgedrag van hun debiteuren. Lees meer over onze Juresta-stempel of bestel direct uw eigen exemplaar.\r\n
\r\n\r\n \r\n \r\n Juresta-banner\r\n
\r\n
\r\n Met onze Juresta-banner geeft ook online een duidelijk signaal af aan uw (potentiële) relaties.\r\n U kunt de banner direct downloaden of doorsturen naar uw webdesigner. Direct naar de Juresta-banners.\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Extras;\r\n","import styled from '@emotion/styled';\r\nimport { css } from '@emotion/react';\r\n\r\ntype size = number | 'auto';\r\n\r\ninterface MarginProps {\r\n all?: size;\r\n horizontal?: size;\r\n vertical?: size;\r\n top?: size;\r\n right?: size;\r\n bottom?: size;\r\n left?: size;\r\n}\r\n\r\nconst getSize = (size: size, horizontal?: boolean) => {\r\n if (size === 'auto') {\r\n return 'auto';\r\n }\r\n\r\n if (horizontal) {\r\n return `${size * 16}px`;\r\n }\r\n\r\n return `${size}rem`;\r\n};\r\n\r\nconst Margin = styled.div`\r\n ${({ theme, ...props }) => {\r\n return css`\r\n ${props.all &&\r\n css`\r\n margin-left: ${getSize(props.all, true)};\r\n margin-right: ${getSize(props.all, true)};\r\n margin-bottom: ${getSize(props.all)};\r\n margin-top: ${getSize(props.all)};\r\n `}\r\n\r\n ${props.horizontal &&\r\n css`\r\n margin-left: ${getSize(props.horizontal, true)};\r\n margin-right: ${getSize(props.horizontal, true)};\r\n `}\r\n\r\n ${props.vertical &&\r\n css`\r\n margin-bottom: ${getSize(props.vertical)};\r\n margin-top: ${getSize(props.vertical)};\r\n `}\r\n\r\n ${props.top &&\r\n css`\r\n margin-top: ${getSize(props.top)};\r\n `}\r\n\r\n ${props.right &&\r\n css`\r\n margin-right: ${getSize(props.right, true)};\r\n `}\r\n\r\n ${props.bottom &&\r\n css`\r\n margin-bottom: ${getSize(props.bottom)};\r\n `}\r\n \r\n ${props.left &&\r\n css`\r\n margin-left: ${getSize(props.left, true)};\r\n `}\r\n `;\r\n }}\r\n`;\r\n\r\nexport default Margin;\r\n","import { RouteComponentProps } from '@reach/router';\r\nimport React, { FC, useState, useEffect } from 'react';\r\nimport { Col, Row } from 'react-grid-system';\r\nimport { Card, CardBody, CardHeader } from 'components/atoms/card';\r\nimport { FormGroup, FormikFormControl, FormikFormSelect, FormikFormYesNo } from 'components/atoms/form';\r\nimport FormControlFormik from 'components/atoms/form/FormControl/formik';\r\nimport { CalculatorType } from 'utils/constants/calculatortypeconstants';\r\nimport { CalculatorInterestType } from 'utils/constants/calculatorinteresttypeconstants';\r\nimport { CalculatorInputModel } from 'hooks/calculators/types';\r\nimport { Form, Formik } from 'formik';\r\nimport { H3, Paragraph } from 'components/atoms/text';\r\nimport { useHeader } from 'contexts/headerContext';\r\nimport FormCurrencyFormik from 'components/atoms/form/FormCurrency/formik';\r\nimport Group from 'components/molecules/Group';\r\nimport Tooltip from 'components/atoms/Tooltip';\r\nimport Margin from 'components/atoms/Margin';\r\nimport moment from 'moment';\r\n\r\nexport interface CalculatorsProps extends RouteComponentProps { }\r\n\r\nconst initialValues: CalculatorInputModel = {\r\n amount: 0,\r\n fromDate: moment(new Date()).format('YYYY-MM-DD'),\r\n toDate: moment(new Date()).format('YYYY-MM-DD'),\r\n type: CalculatorType.ConsumerTransaction,\r\n interestType: CalculatorInterestType.Combined,\r\n interestPercentage: 0,\r\n isTaxesRequired: false\r\n};\r\n\r\nconst Calculators: FC = () => {\r\n useHeader('Extra\\'s');\r\n\r\n const [interestPercentageVisisble, setInterestPercentageVisisble] = useState(false);\r\n\r\n const [legalInterest, setLegalInterest] = useState(0);\r\n const [costs, setCosts] = useState(0);\r\n const [totalAmount, setTotalAmount] = useState(0);\r\n const [formValues, setFormValues] = useState(initialValues);\r\n const onSubmit = (values: CalculatorInputModel) => {\r\n setInterestPercentageVisisble(values.type === CalculatorType.ContractTransaction ? true : false);\r\n const interestCost = calculateLegalInterest(values);\r\n const collectionCosts = calculateCosts(values);\r\n const totalCosts = +values.amount + +interestCost + +collectionCosts;\r\n setTotalAmount(Math.round((totalCosts + Number.EPSILON) * 100) / 100);\r\n };\r\n\r\n const calculateLegalInterest = (values: CalculatorInputModel) => {\r\n // To calculate the time difference of two dates\r\n const difference_In_Time = Date.parse(values.toDate.toString()) - Date.parse(values.fromDate.toString());\r\n\r\n // To calculate the no. of days between two dates\r\n const difference_In_Days = difference_In_Time / (1000 * 3600 * 24);\r\n\r\n // calculate number of interest periodes\r\n const interestPeriods = difference_In_Days / 365;\r\n\r\n // Get interestpercentage => ContractTransaction = userinput; TradeTransaction = 8%, ConsumerTransaction = 2%\r\n const interestPercentage = values.type === CalculatorType.ContractTransaction ? values.interestPercentage : values.type === CalculatorType.TradeTransaction ? 8 : 2;\r\n\r\n //Get the interest based on if we need to calculate using compound interest or singular interest?\r\n let interest = values.interestType === CalculatorInterestType.Singular ?\r\n interestPeriods * interestPercentage / 100 * values.amount :\r\n (values.amount * ((1 + (interestPercentage / 100)) ** interestPeriods)) - values.amount;\r\n if (isNaN(interest))\r\n interest = 0;\r\n // Set and round\r\n setLegalInterest(Math.round((interest + Number.EPSILON) * 100) / 100);\r\n return Math.round((interest + Number.EPSILON) * 100) / 100;\r\n };\r\n\r\n const calculateCosts = (values: CalculatorInputModel) => {\r\n let costs = 0;\r\n if (values.amount > 200000) {\r\n // For invoices higher then 200000 use baseValue (2775) + 0.5% for everything above 200000\r\n costs = 2775 + ((values.amount - 200000) / 100 * 0.5);\r\n } else if (values.amount > 10000) {\r\n // For invoices higher then 10000 but lower then 200000 use baseValue (875) + 1% for everything above 10000\r\n costs = 875 + ((values.amount - 10000) / 100 * 1);\r\n } else if (values.amount > 5000) {\r\n // For invoices higher then 5000 but lower then 10000 use baseValue (625) + 5% for everything above 5000\r\n costs = 625 + ((values.amount - 5000) / 100 * 5);\r\n } else if (values.amount > 2500) {\r\n // For invoices higher then 2500 but lower then 5000 use baseValue (375) + 10% for everything above 2500\r\n costs = 375 + ((values.amount - 2500) / 100 * 10);\r\n } else {\r\n // For invoices lower then 2500 use 15% of invoice amount. \r\n costs = values.amount / 100 * 15;\r\n }\r\n\r\n if (costs > 6775) {\r\n // cost may never exceed 6775\r\n costs = 6775;\r\n } else if (costs < 40) {\r\n // there's a minimum of 40\r\n costs = 40;\r\n }\r\n\r\n // If vat is needed add current vat percentage (high) 21%\r\n costs = values.isTaxesRequired ? costs * 1.21 : costs;\r\n\r\n // Set and round\r\n setCosts(Math.round((costs + Number.EPSILON) * 100) / 100);\r\n return Math.round((costs + Number.EPSILON) * 100) / 100;\r\n };\r\n\r\n const typeOptions = [\r\n {\r\n value: CalculatorType.ConsumerTransaction,\r\n label: 'Consumententransactie'\r\n },\r\n {\r\n value: CalculatorType.TradeTransaction,\r\n label: 'Handelstransactie'\r\n },\r\n {\r\n value: CalculatorType.ContractTransaction,\r\n label: 'Contractueel'\r\n }\r\n ];\r\n\r\n const interestTypeOptions = [\r\n {\r\n value: CalculatorInterestType.Combined,\r\n label: 'Samengesteld'\r\n },\r\n {\r\n value: CalculatorInterestType.Singular,\r\n label: 'Enkelvoudig'\r\n }\r\n ];\r\n\r\n useEffect(() => {\r\n // @ts-ignore: amount is door de currencyinput een string die hier omgezet wordt naar een number\r\n if (typeof formValues.amount === 'string' && formValues.amount.indexOf(',') === formValues.amount.length - 3) {\r\n // @ts-ignore: cont.\r\n formValues.amount = formValues.amount.replaceAll(',', '.');\r\n // @ts-ignore: cont.\r\n } else if (typeof formValues.amount === 'string' && (formValues.amount.indexOf(',') === formValues.amount.length - 1 || formValues.amount.indexOf(',') === formValues.amount.length - 2)) {\r\n return;\r\n }\r\n onSubmit(formValues);\r\n }, [formValues]);\r\n\r\n return (\r\n \r\n {({ values, setFieldValue }) => {\r\n\r\n setFormValues(values);\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n Met onderstaande calculator kun u eenvoudig de door uw debiteur verschuldigde incassokosten en rente berekenen.\r\n \r\n \r\n \r\n \r\n \r\n \r\n

Calculator wettelijke rente en incassokosten (WIK)Volgens de Wet Incassokosten zijn de incassokosten een percentage van het factuurbedrag, met een minimum van €40,00 en een maximum van €6.775,00. Het percentage wordt lager als de vordering hoger wordt. De wet hanteert hiervoor een rekenmethode, een zogenoemde staffel.

\r\n
\r\n \r\n \r\n \r\n setFieldValue('amount', value)} />\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 {interestPercentageVisisble &&\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

Uitkomst berekening

\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n Rente\r\n €{legalInterest.toFixed(2).replace('.', ',')}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Incassokosten\r\n €{costs.toFixed(2).replace('.', ',')}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Totaalbedrag\r\n €{totalAmount.toFixed(2).replace('.', ',')}\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 Calculators;\r\n","export function buildUriWithParams(uri: string, params?: { [key: string]: any }) {\r\n if (!params) {\r\n return uri;\r\n }\r\n const args = Object.keys(params)\r\n .map((k) => {\r\n const value = params[k];\r\n\r\n if (value instanceof Array) {\r\n const arrayValue = value\r\n .map((v) => `${k}=${v}`)\r\n .reduce((p, c) => {\r\n if (p) {\r\n return `${p}&${c}`;\r\n }\r\n\r\n return p;\r\n });\r\n return arrayValue;\r\n }\r\n\r\n return `${k}=${value}`;\r\n })\r\n .reduce((total, current) => {\r\n if (total) {\r\n return `${total}&${current}`;\r\n }\r\n\r\n return current;\r\n });\r\n\r\n const uriWithParams = args.length > 0\r\n ? `${uri}?${args}`\r\n : uri;\r\n\r\n return uriWithParams;\r\n}\r\n","import { useApi } from 'hooks/api';\r\nimport { useQuery } from 'react-query';\r\nimport { buildUriWithParams } from 'utils/urihelper';\r\nimport { TemplateLetterPlainModel } from './types';\r\n\r\nexport const templateLetterQueryKey = 'templateLetterKey';\r\n\r\nexport default function useAllTemplateLetters() {\r\n\r\n const { get } = useApi();\r\n\r\n const getAllTemplateLetters = async (params = {}) => {\r\n const baseUrl = '/templateletter';\r\n const url = buildUriWithParams(baseUrl, params);\r\n const { data } = await get(url);\r\n\r\n return data;\r\n };\r\n\r\n return useQuery(templateLetterQueryKey, getAllTemplateLetters);\r\n}\r\n","import { css } from '@emotion/react';\r\nimport styled from '@emotion/styled';\r\n\r\nexport const Wrapper = styled.div`\r\n background-color: white;\r\n /* box-shadow: 10px 10px 20px rgba(0, 0, 0, 0.04);\r\n border-radius: 16px;\r\n overflow: hidden;\r\n margin-bottom: 32px; */\r\n`;\r\n\r\nexport const TableWrapper = styled.table`\r\n display: block;\r\n max-width: 100%;\r\n overflow-x: auto;\r\n overflow-y: hidden;\r\n`;\r\n\r\nexport const Table = styled.table`\r\n width: 100%;\r\n border-collapse: collapse;\r\n`;\r\n\r\nexport const Th = styled.th`\r\n text-align: left;\r\n padding-bottom: 1rem;\r\n padding-top: 1rem;\r\n padding-left: 8px;\r\n padding-right: 8px;\r\n font-weight: 600;\r\n font-size: 0.875rem;\r\n position: relative;\r\n padding-right: 1.5rem;\r\n\r\n &:first-of-kind {\r\n padding-left: 24px;\r\n }\r\n\r\n &:last-of-kind {\r\n padding-right: 24px;\r\n }\r\n`;\r\n\r\nexport const Td = styled.td<{ fullWidth?: boolean }>`\r\n font-size: 0.875rem;\r\n padding: 0.75rem 8px;\r\n word-break: break-all;\r\n\r\n ${({ fullWidth }) =>\r\n fullWidth &&\r\n css`\r\n word-break: break-word;\r\n &:first-of-type {\r\n padding-left: 24px;\r\n align-items: center;\r\n }\r\n\r\n &:last-of-type {\r\n padding-right: 24px;\r\n }\r\n `\r\n }\r\n`;\r\n\r\nexport const Tr = styled.tr`\r\n tbody &:first-of-type {\r\n border-top: 1px solid ${({ theme }) => theme.colors.primary};\r\n }\r\n &:not(:last-of-type) {\r\n border-bottom: 1px solid ${({ theme }) => theme.colors.primary};\r\n }\r\n`;\r\n\r\nexport const Sort = styled.div`\r\n display: inline-block;\r\n margin-left: 0.5rem;\r\n vertical-align: middle;\r\n line-height: 1;\r\n position: absolute;\r\n right: 0;\r\n top: 50%;\r\n transform: translateY(-50%);\r\n`;\r\n","import React, { FC } from 'react';\r\nimport { Button } from 'components/atoms/button';\r\nimport { FormControl } from 'components/atoms/form';\r\nimport Group from 'components/molecules/Group';\r\n\r\nexport interface SearchProps {\r\n filter: string;\r\n setFilter: (filter: string) => void;\r\n onAddClick?: () => void;\r\n onAddClickLabel?: string;\r\n onSettingsClick?: () => void;\r\n}\r\n\r\nconst Search: FC = ({ filter, setFilter, onAddClick, onAddClickLabel, onSettingsClick }) => {\r\n const handleOnChange = (event: React.ChangeEvent) => {\r\n const value = event.target.value;\r\n setFilter(value);\r\n };\r\n\r\n return (\r\n \r\n \r\n {onAddClick && (\r\n \r\n )}\r\n {onSettingsClick && \r\n \r\n\r\n \r\n )}\r\n \r\n \r\n ),\r\n [initialValues]\r\n );\r\n\r\n const languages = Object.values(Language).filter(l => typeof l === 'number') as number[];\r\n\r\n const groupedTemplateLetters = useMemo(() => templateLetters\r\n .reduce((total, templateLetter) => {\r\n total[templateLetter.language] = [...(total[templateLetter.language] || []), templateLetter];\r\n return total;\r\n }, {} as { [keyof: number]: TemplateLetterPlainModel[] }), [templateLetters, languages]);\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n In dit onderdeel vindt u voorbeeldteksten voor het versturen van een herinnering, aanmaning of laatste aanmaning in meerdere talen. U kunt de brieven eenvoudig downloaden of doorsturen naar uw e-mailadres. Het is niet mogelijk om de brief meteen door te sturen naar uw debiteur. In de voorbeeldteksten dient u namelijk nog de gegevens van uw debiteur en factuur of facturen op te nemen.\r\n \r\n \r\n Voorbeeldbrief laatste aanmaning consument
\r\n Wanneer uw debiteur een particulier persoon c.q. consument betreft, gelden er sinds enkele jaren aangescherpte regels. Zo bent u, om uw recht op vergoeding van de buitengerechtelijke incassokosten te verzekeren, wettelijk verplicht tot het verzenden van een laatste schriftelijke aanmaning, ook wel de zogenaamde 14-dagen brief genoemd.\r\n
\r\n \r\n Doel en inhoud van de laatste aanmaning
\r\n Aan de inhoud en wijze van verzenden van deze zogenaamde laatste aanmaning worden door de wetgever strenge eisen gesteld. U dient uw debiteur, als laatste wapenfeit, nog minimaal 14 dagen in de gelegenheid te stellen om tot betaling van uw factuur/ facturen over te gaan. Bovendien moet de debiteur er op worden geattendeerd dat wanneer hij niet binnen de aangegeven termijn alsnog betaalt, de buitengerechtelijke incassokosten en vertragingsrente verschuldigd worden.\r\n Verstuur deze brief per e-mail met verzend- en leesbevestiging en/of per aangetekende post. Dan beschikt u in ieder geval over een verzendbewijs.\r\n
\r\n
\r\n
\r\n {\r\n languages.map((language) => (\r\n \r\n \r\n isLoading={isLoadingTemplateLetters}\r\n data={Object.values(groupedTemplateLetters[language] ?? {})}\r\n columns={columns}\r\n noDataMessage=\"Geen voorbeeld brieven beschikbaar\"\r\n actions={[\r\n {\r\n icon: 'download',\r\n onClick: (item, index) => handleOnDownloadClick(item)\r\n },\r\n {\r\n icon: 'mail',\r\n onClick: (item, index) => handleOnSendMailClick(item)\r\n },\r\n ]}\r\n hideFooter\r\n />\r\n \r\n ))\r\n }\r\n \r\n );\r\n};\r\n\r\nexport default TemplateLetters;\r\n","import { TemplateLetterPlainModel, DeleteTemplateLetterInputModel } from './types';\r\nimport { useMutation, useQueryClient } from 'react-query';\r\nimport { useApi } from 'hooks/api';\r\nimport { templateLetterQueryKey } from './useAllTemplateLetters';\r\n\r\nconst useDeleteAdminTemplateLetter = () => {\r\n\r\n const { deleteCall } = useApi();\r\n\r\n const baseUrl = '/templateletter';\r\n\r\n const queryClient = useQueryClient();\r\n\r\n const deleteTemplateLetter = async (values: DeleteTemplateLetterInputModel) => {\r\n\r\n const response = await deleteCall(`${baseUrl}/${values.id}`);\r\n\r\n if(!response.ok) {\r\n throw response;\r\n }\r\n\r\n return response;\r\n };\r\n\r\n\r\n const deleteTemplateLetterMutation = useMutation((values: DeleteTemplateLetterInputModel) => deleteTemplateLetter(values), {\r\n\r\n onMutate: async (values: DeleteTemplateLetterInputModel) => {\r\n \r\n await queryClient.cancelQueries(templateLetterQueryKey);\r\n\r\n const previousData = queryClient.getQueryData(templateLetterQueryKey);\r\n\r\n const filteredData = previousData?.filter(item => item.id !== values.id);\r\n queryClient.setQueryData(templateLetterQueryKey, filteredData ?? []);\r\n\r\n return { previousData };\r\n },\r\n onError: (err, variables, context) => {\r\n if(context?.previousData) {\r\n queryClient.setQueryData(templateLetterQueryKey, context.previousData);\r\n }\r\n },\r\n onSettled: (_, __, variables) => {\r\n queryClient.invalidateQueries(templateLetterQueryKey);\r\n }\r\n\r\n });\r\n\r\n return { deleteTemplateLetterMutation };\r\n};\r\n\r\nexport default useDeleteAdminTemplateLetter;\r\n","import { useCallback, useState } from 'react';\r\nimport { useModal as useReactModal } from 'react-modal-hook';\r\n\r\nconst useModal = (component: import('react').FunctionComponent, inputs?: any[]): [() => void, () => void, boolean] => {\r\n const [isShowing, setIsShowing] = useState(false);\r\n const [show, hide] = useReactModal(component, inputs);\r\n\r\n // Methods.\r\n const showModal = useCallback(() => {\r\n show();\r\n setIsShowing(true);\r\n }, [show]);\r\n\r\n const hideModal = useCallback(() => {\r\n hide();\r\n setIsShowing(false);\r\n }, [hide]);\r\n\r\n return [showModal, hideModal, isShowing];\r\n};\r\n\r\nexport default useModal;\r\n\r\n","import { navigate, RouteComponentProps } from '@reach/router';\r\nimport React, { FC, useState } from 'react';\r\nimport { Column } from 'react-table';\r\nimport { Card, CardBody } from 'components/atoms/card';\r\nimport Table from 'components/molecules/table';\r\nimport useDeleteAdminTemplateLetter from 'hooks/templateLetter/useDeleteAdminTemplateLetter';\r\nimport { TemplateLetterPlainModel, DeleteTemplateLetterInputModel } from 'hooks/templateLetter/types';\r\nimport useAllTemplateLetters from 'hooks/templateLetter/useAllTemplateLetters';\r\nimport { toast } from 'react-toastify';\r\nimport Modal from 'components/organisms/Modal';\r\nimport useModal from 'hooks/modal';\r\nimport Group from 'components/molecules/Group';\r\nimport { Button } from 'components/atoms/button';\r\nimport { useHeader } from 'contexts/headerContext';\r\nimport { cdnString } from 'utils/cdnHelper';\r\nimport download from 'downloadjs';\r\n\r\nexport interface BannerProps extends RouteComponentProps {\r\n}\r\n\r\nconst columns: Column[] = [\r\n {\r\n Header: 'Naam',\r\n accessor: (templateLetter) => templateLetter.name\r\n },\r\n {\r\n id: 'languageName',\r\n Header: 'Taal',\r\n accessor: (templateLetter) => templateLetter.languageName\r\n }\r\n];\r\n\r\nconst ManageTemplateLetters: FC = () => {\r\n useHeader('Voorbeeldbrieven');\r\n\r\n const { deleteTemplateLetterMutation } = useDeleteAdminTemplateLetter();\r\n const { data: templateLetters = [], isLoading: isLoadingTemplateLetters, } = useAllTemplateLetters();\r\n\r\n const [isLoadingDelete, setIsLoadingDelete] = useState(false);\r\n const [templateLetterToDelete, setTemplateLetterToDelete] = useState();\r\n\r\n const handleDelete = async () => {\r\n\r\n if (!templateLetterToDelete) {\r\n return;\r\n }\r\n\r\n setIsLoadingDelete(true);\r\n\r\n await deleteTemplateLetterMutation.mutateAsync(templateLetterToDelete)\r\n .then(() => {\r\n toast.success('Voorbeeldbrief succesvol verwijderd!');\r\n }).catch(() => {\r\n toast.error('Oeps, er ging iets fout tijdens het verwijderen van de voorbeeldbrief. Probeer het later opnieuw!');\r\n });\r\n\r\n setIsLoadingDelete(false);\r\n closeDeleteModal();\r\n };\r\n\r\n const openDeleteModal = (templateLetter: DeleteTemplateLetterInputModel) => {\r\n setTemplateLetterToDelete(templateLetter);\r\n showDeleteModal();\r\n };\r\n\r\n const closeDeleteModal = () => {\r\n setTemplateLetterToDelete(undefined);\r\n hideDeleteModal();\r\n };\r\n\r\n const [showDeleteModal, hideDeleteModal] = useModal(\r\n ({ in: inProp, onExited }) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n ),\r\n [templateLetterToDelete]\r\n );\r\n\r\n const handleManage = (item: TemplateLetterPlainModel | undefined) => {\r\n navigate('templateletters/manage', { state: { item: item } });\r\n };\r\n\r\n const handleDownload = (item: TemplateLetterPlainModel) => {\r\n if (item == null || item.fileHash == null) {\r\n toast.error('Er is iets fout gegaan bij het downloaden van de brief. Probeer het later opnieuw');\r\n return;\r\n }\r\n\r\n const constructUrl = cdnString(item.fileHash);\r\n download(constructUrl);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n isLoading={isLoadingTemplateLetters}\r\n data={templateLetters}\r\n noDataMessage=\"Geen voorbeeldbrieven beschikbaar\"\r\n columns={columns}\r\n search\r\n onAddClick={() => handleManage(undefined)}\r\n sortBy={[\r\n { id: 'languageName', desc: false },\r\n ]}\r\n actions={[\r\n {\r\n icon: 'edit',\r\n onClick: (item, index) => handleManage(item),\r\n title: 'Pas voorbeeldbrief aan'\r\n },\r\n {\r\n icon: 'delete',\r\n onClick: (item, index) => openDeleteModal(item),\r\n title: 'Verwijder voorbeeldbrief'\r\n },\r\n {\r\n icon: 'download',\r\n onClick: (item) => handleDownload(item),\r\n title: 'Download voorbeeldbrief'\r\n }\r\n ]}\r\n />\r\n \r\n \r\n );\r\n};\r\n\r\nexport default ManageTemplateLetters;\r\n","import { CustomError, useApi } from 'hooks/api';\r\nimport { useQuery } from 'react-query';\r\nimport { EditStampInputModel, StampPlainModel } from './types';\r\nimport { appendObject } from 'utils/objectAppender';\r\n\r\nconst stampQueryKey = 'stamps';\r\nconst allStampsQueryKey = `${stampQueryKey}.all`;\r\n\r\nexport const useStamps = () => {\r\n const { get, post, put, deleteCall } = useApi();\r\n\r\n const fetchAllStamps = async () => await get('/stamp');\r\n\r\n const useAllStamps = () => {\r\n return useQuery(allStampsQueryKey, async () => {\r\n const response = await fetchAllStamps();\r\n\r\n if (!response.ok && response.errors != null) {\r\n throw response.errors;\r\n }\r\n\r\n return response.data ?? [];\r\n });\r\n };\r\n\r\n const addStamp = async (values: EditStampInputModel) => {\r\n const formData = new FormData();\r\n appendObject(values, formData);\r\n\r\n const response = await post('/stamp', formData);\r\n return response;\r\n };\r\n\r\n const editStamp = async (values: EditStampInputModel) => {\r\n const formData = new FormData();\r\n appendObject(values, formData);\r\n\r\n const response = await put('/stamp', formData);\r\n if (!response.ok) {\r\n throw response;\r\n }\r\n\r\n return response;\r\n };\r\n\r\n const deleteStamp = async (id: string) => {\r\n const response = await deleteCall(`/stamp/${id}`);\r\n\r\n if (!response.ok) {\r\n throw response;\r\n }\r\n\r\n return response;\r\n };\r\n\r\n return {\r\n addStamp,\r\n editStamp,\r\n deleteStamp,\r\n useAllStamps,\r\n };\r\n};","import { useApi } from 'hooks/api';\r\nimport { AddStampOrderInputModel, StampOrderResponseModel } from './types';\r\n\r\nconst useStampOrder = () => {\r\n\r\n const { post } = useApi();\r\n\r\n const createStampOrder = async (values: AddStampOrderInputModel) => {\r\n const response = post('/stamporder', values);\r\n\r\n return response;\r\n };\r\n\r\n return {\r\n createStampOrder\r\n };\r\n};\r\n\r\nexport default useStampOrder;\r\n","import styled from '@emotion/styled';\r\n\r\nexport const ShopCard = styled.div`\r\n\r\n`;\r\n\r\nexport const Header = styled.div`\r\n display: flex;\r\n justify-content: space-between;\r\n`;\r\n\r\nexport const Price = styled.span`\r\n font-size: 1.25rem;\r\n line-height: 1.5rem;\r\n font-weight: 400;\r\n color: ${({ theme }) => theme.colors.primary};\r\n white-space: nowrap;\r\n`;\r\n","import { Button } from 'components/atoms/button';\r\nimport { Card, CardBody, CardImage } from 'components/atoms/card';\r\nimport React, { FC } from 'react';\r\nimport { H3, Paragraph } from 'components/atoms/text';\r\nimport { Header, Price } from './styles';\r\nimport numeral from 'numeral';\r\n\r\nimport 'numeral/locales/nl-nl';\r\nimport Group from 'components/molecules/Group';\r\nnumeral.locale('nl-nl');\r\n\r\nexport interface ShopCardProps {\r\n title: string;\r\n price: number;\r\n description: string;\r\n imageHash: string;\r\n onOrderClick?: () => void;\r\n isLoading?: boolean;\r\n}\r\n\r\nconst ShopCard: FC = ({ description, onOrderClick, title, imageHash, price, isLoading }) => {\r\n return (\r\n \r\n \r\n \r\n
\r\n

{title}

\r\n
\r\n {description}\r\n \r\n {numeral(price).format('$0.00')} excl. BTW\r\n \r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default ShopCard;\r\n","export enum PaymentMethod {\r\n Invoice = 0,\r\n Automatic = 1\r\n}\r\n\r\nexport const paymentMethodOptions = [\r\n {\r\n value: PaymentMethod.Invoice,\r\n label: 'Per factuur'\r\n },\r\n {\r\n value: PaymentMethod.Automatic,\r\n label: 'Automatische incasso'\r\n }\r\n];\r\n\r\nexport const getPaymentMethodDisplay = (paymentMethod: PaymentMethod): string => {\r\n switch (paymentMethod) {\r\n case PaymentMethod.Invoice:\r\n return 'Per factuur (betaaltermijn 14 dagen)';\r\n case PaymentMethod.Automatic:\r\n return 'Automatische incasso';\r\n }\r\n};\r\n","import { RouteComponentProps } from '@reach/router';\r\nimport { useStamps } from 'hooks/stamp';\r\nimport React, { FC, useState } from 'react';\r\nimport useStampOrder from 'hooks/stampOrder/useStampOrder';\r\nimport { useSession } from 'contexts/sessionContext';\r\nimport { ShopCard } from 'components/molecules/card';\r\nimport { Col, Row } from 'react-grid-system';\r\nimport { toast } from 'react-toastify';\r\nimport { useHeader } from 'contexts/headerContext';\r\nimport { Card, CardBody } from 'components/atoms/card';\r\nimport { Paragraph } from 'components/atoms/text';\r\nimport useModal from 'hooks/modal';\r\nimport Modal from 'components/organisms/Modal';\r\nimport { StampPlainModel } from 'hooks/stamp/types';\r\nimport Group from 'components/molecules/Group';\r\nimport { Button } from 'components/atoms/button';\r\nimport { getPaymentMethodDisplay, PaymentMethod } from 'utils/constants/paymentmethodconstants';\r\nimport FormRadio from 'components/atoms/form/FormRadio';\r\nimport { Form, Formik, FormikHelpers } from 'formik';\r\nimport { AddStampOrderInputModel } from 'hooks/stampOrder/types';\r\n\r\nexport interface ToolsProps extends RouteComponentProps { }\r\n\r\nconst Tools: FC = () => {\r\n useHeader('Extra\\'s');\r\n\r\n const { createStampOrder } = useStampOrder();\r\n const { useAllStamps } = useStamps();\r\n const { data: stamps = [] } = useAllStamps();\r\n\r\n const { session } = useSession();\r\n\r\n const [stampToOrder, setStampToOrder] = useState(null);\r\n\r\n // const params = new URLSearchParams(window.location.search);\r\n // const orderId = params.get('order_id');\r\n // const status = params.get('status');\r\n // const signature = params.get('signature');\r\n\r\n // useEffect(() => {\r\n // if (orderId != null && status != null && signature != null) {\r\n\r\n // if (status === OmnikassaOrderStatus.Cancelled || status === OmnikassaOrderStatus.Expired) {\r\n // toast.error('De betaling was geannuleerd');\r\n // } else {\r\n // toast.success('We hebben uw bestelling succesvol ontvangen!');\r\n // }\r\n\r\n // handleVerifyPayment();\r\n // }\r\n // }, []);\r\n\r\n const makeStampOrder = async (values: AddStampOrderInputModel, { setSubmitting, resetForm }: FormikHelpers) => {\r\n if (stampToOrder == null) {\r\n return;\r\n }\r\n\r\n setSubmitting(true);\r\n\r\n const response = await createStampOrder(values);\r\n\r\n if (response.ok && response.data) {\r\n toast.success('We hebben uw bestelling succesvol ontvangen en zullen zo snel als mogelijk contact met u opnemen!');\r\n closeOrderModal();\r\n resetForm();\r\n } else {\r\n toast.error('Bestelling kan niet worden geplaatst.');\r\n }\r\n\r\n setSubmitting(false);\r\n };\r\n\r\n const initialValues: AddStampOrderInputModel = {\r\n customerId: session?.customerId ?? '',\r\n stampId: stampToOrder?.id ?? '',\r\n paymentMethod: PaymentMethod.Invoice\r\n };\r\n\r\n // const handleVerifyPayment = async () => {\r\n // if (orderId == null || status == null || signature == null) {\r\n // return;\r\n // }\r\n\r\n // const response = await verifyPayment({\r\n // orderId,\r\n // signature,\r\n // status\r\n // });\r\n\r\n // if (!response.ok) {\r\n // toast.error('Er ging iets mis met de betaling. Neem contact met ons op');\r\n // }\r\n // };\r\n\r\n const [showOrderModal, hideOrderModal] = useModal(\r\n ({ in: inProp, onExited }) => (\r\n \r\n \r\n {({ isSubmitting, values, setFieldValue }) => (\r\n
\r\n

Kies een betaalwijze (in beide gevallen ontvangt u onze factuur na verzending van de stempel).

\r\n \r\n \r\n setFieldValue('paymentMethod', PaymentMethod.Automatic)} />\r\n \r\n \r\n \r\n \r\n setFieldValue('paymentMethod', PaymentMethod.Invoice)} />\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n )}\r\n
\r\n
\r\n ),\r\n [stampToOrder]\r\n );\r\n\r\n const openOrderModal = (stamp: StampPlainModel) => {\r\n setStampToOrder(stamp);\r\n showOrderModal();\r\n };\r\n\r\n const closeOrderModal = () => {\r\n setStampToOrder(null);\r\n hideOrderModal();\r\n };\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n Juresta-stempel
\r\n De Juresta-stempel heeft zich de afgelopen jaren bewezen als een effectief hulpmiddel in het debiteurenbeheer. Onze klanten die gebruik maken van de stempel melden dat hun facturen gemiddeld 43% sneller betaald worden. Uiteraard kunt u de stempel naar eigen inzicht inzetten. Standaard op uw facturen bij trage betalers en alleen op herinneren voor klanten die doorgaans op tijd betalen. Ons advies is om op een aanmaning altijd gebruik te maken van de Juresta-stempel.\r\n
\r\n \r\n Met de stempel geeft u aan dat u uw debiteurenbeheer serieus neemt en tevens gebruik maakt van een deskundige incassopartner. Een vriendelijke, maar duidelijke hint naar uw klanten. De stempel is verkrijgbaar in het Nederlands en/ of Engels.\r\n U ontvangt de stempel zowel als een digitale versie per e-mail en als een fysieke versie per post.\r\n \r\n
\r\n
\r\n \r\n {stamps.map((value) => (\r\n \r\n openOrderModal(value)}\r\n />\r\n \r\n ))}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default Tools;\r\n","import { useApi } from 'hooks/api';\r\nimport { useQuery } from 'react-query';\r\nimport { BannerPlainModel } from './types';\r\n\r\nexport const adminBannersQueryKey = 'adminBanners';\r\n\r\nexport default function useAllBanners() {\r\n\r\n const { get } = useApi();\r\n\r\n const getAllBanners = async () => {\r\n const { data } = await get('/banner');\r\n\r\n return data;\r\n };\r\n\r\n return useQuery(adminBannersQueryKey, getAllBanners);\r\n}\r\n","import { useSession } from 'contexts/sessionContext';\r\nimport { useApi } from 'hooks/api';\r\nimport { BannerSendMailModel } from './types';\r\n\r\nconst useSendBannerMail = () => {\r\n const { session } = useSession();\r\n const { post } = useApi();\r\n\r\n const baseUrl = '/banner/mail';\r\n\r\n const sendBanner = async (values: BannerSendMailModel) => {\r\n const newValues = {\r\n ...values,\r\n customerId: values.customerId ?? session?.customerId\r\n };\r\n\r\n const response = await post(baseUrl, newValues);\r\n return response;\r\n };\r\n\r\n return {\r\n sendBanner\r\n };\r\n};\r\n\r\nexport default useSendBannerMail;\r\n","import styled from '@emotion/styled';\r\n\r\nexport const Column = styled.div`\r\n flex-direction: column;\r\n align-items: center;\r\n justify-content: center;\r\n`;\r\n","import { RouteComponentProps } from '@reach/router';\r\nimport useAllBanners from 'hooks/banner/useAllBanners';\r\nimport useSendBannerMail from 'hooks/banner/useSendBannerMail';\r\nimport React, { FC, useMemo, useState } from 'react';\r\nimport { cdnString } from 'utils/cdnHelper';\r\nimport { Col, Row } from 'react-grid-system';\r\nimport { Button } from 'components/atoms/button';\r\nimport download from 'downloadjs';\r\nimport { toast } from 'react-toastify';\r\nimport { useSession } from 'contexts/sessionContext';\r\nimport { Card, CardBody, CardImage } from 'components/atoms/card';\r\nimport { useHeader } from 'contexts/headerContext';\r\nimport { Column } from './styles';\r\nimport Margin from 'components/atoms/Margin';\r\nimport { Paragraph } from 'components/atoms/text';\r\nimport useModal from 'hooks/modal';\r\nimport Modal from 'components/organisms/Modal';\r\nimport { Form, Formik } from 'formik';\r\nimport { FormGroup, FormikFormControl } from 'components/atoms/form';\r\nimport { BannerSendMailModel } from 'hooks/banner/types';\r\n\r\nexport interface BannerProps extends RouteComponentProps { }\r\n\r\nconst Banners: FC = () => {\r\n useHeader('Extra\\'s');\r\n\r\n const { data: banners = [] } = useAllBanners();\r\n const { sendBanner } = useSendBannerMail();\r\n const { session } = useSession();\r\n\r\n const [mailingBanner, setMailingBanner] = useState(null);\r\n const [sendBannerMail, setSendBannerMail] = useState();\r\n\r\n const handleMailOnClick = async (bannerId: string) => {\r\n const response = await sendBanner({\r\n bannerId,\r\n customerId: session?.customerId ?? ''\r\n });\r\n\r\n if (response.ok) {\r\n toast.success('We hebben u deze banner per mail gestuurd!');\r\n } else {\r\n toast.error('Oeps, er ging iets fout tijdens het versturen van de mail. Probeer het later opnieuw!');\r\n }\r\n\r\n setMailingBanner(null);\r\n };\r\n\r\n const handleSendOnClick = (values: BannerSendMailModel) => {\r\n setSendBannerMail(values);\r\n showBannerEmail();\r\n };\r\n\r\n const handleOnClick = (imageHash: string) => {\r\n const constructUrl = cdnString(imageHash);\r\n download(constructUrl);\r\n };\r\n\r\n const initialValues = useMemo(() => ({\r\n bannerId: sendBannerMail?.bannerId ?? '',\r\n email: ''\r\n }), [sendBannerMail]);\r\n\r\n\r\n const handleBannerMailOnSubmit = async (values: BannerSendMailModel) => {\r\n if (!sendBannerMail)\r\n return;\r\n\r\n const response = await sendBanner(values);\r\n\r\n if (response.ok) {\r\n toast.success('We hebben deze banner naar het opgegeven e-mailadres verstuurd!');\r\n hideBannerEmail();\r\n setMailingBanner(null);\r\n } else {\r\n toast.error('Oeps, er ging iets fout tijdens het versturen van de mail. Probeer het later opnieuw!');\r\n }\r\n };\r\n\r\n const [showBannerEmail, hideBannerEmail] = useModal(\r\n ({ in: inProp, onExited }) => (\r\n \r\n enableReinitialize initialValues={initialValues} onSubmit={handleBannerMailOnSubmit}>\r\n {({ isSubmitting }) => (\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 [initialValues]\r\n );\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n Juresta-banner
\r\n Met de Juresta-banner op uw website geeft u ook online een duidelijk signaal af aan uw (potentiële) klanten. U geeft daarmee aan dat Juresta uw partner is op incasso- of juridisch gebied. U kunt de banner eenvoudig downloaden of direct doorsturen naar uw webdesigner.\r\n
\r\n
\r\n
\r\n \r\n {banners.map((value) => (\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 Banners;\r\n","import { css } from '@emotion/react';\r\nimport styled from '@emotion/styled';\r\n\r\nexport const Step = styled.div<{ disabled?: boolean }>`\r\n display: flex;\r\n align-items: center;\r\n\r\n ${({ disabled }) =>\r\n !disabled &&\r\n css`\r\n &:hover {\r\n cursor: pointer;\r\n }\r\n `}\r\n`;\r\n\r\nexport const Number = styled.div<{ active?: boolean; disabled?: boolean; completed?: boolean }>`\r\n width: 1.5rem;\r\n height: 1.5rem;\r\n background-color: ${({ theme, active, disabled, completed }) => (active\r\n ? theme.colors.primary\r\n : completed\r\n ? theme.colors.green\r\n : disabled\r\n ? theme.colors.grey\r\n : theme.colors.primary)};\r\n transition: background 0.4s ease;\r\n border-radius: 50%;\r\n display: inline-flex;\r\n justify-content: center;\r\n align-items: center;\r\n color: ${({ theme }) => theme.colors.white};\r\n font-size: 0.875rem;\r\n flex: 0 0 1.5rem;\r\n margin-right: 1rem;\r\n`;\r\n\r\nexport const Content = styled.div`\r\n display: inline-flex;\r\n flex-direction: column;\r\n`;\r\n\r\nexport const Title = styled.span<{ active?: boolean }>`\r\n font-size: 1rem;\r\n line-height: 1rem;\r\n margin-bottom: 0.25rem;\r\n color: ${({ theme, active }) => (active ? theme.colors.dark : theme.greys[500])};\r\n`;\r\n\r\nexport const Subtitle = styled.span`\r\n color: ${({ theme }) => theme.greys[300]};\r\n font-size: 0.875rem;\r\n line-height: 0.875rem;\r\n`;\r\n","import React, { FC } from 'react';\r\nimport { Step as Wrapper, Number, Content, Title, Subtitle } from './styles';\r\n\r\nexport interface StepProps {\r\n step: number;\r\n active?: boolean;\r\n optional?: boolean;\r\n title: string;\r\n onClick?: () => void;\r\n disabled?: boolean;\r\n completed?: boolean;\r\n}\r\n\r\nconst Step: FC = ({ step, optional, active, title, onClick, disabled = false, completed = false }) => {\r\n // Step's methods.\r\n const handleOnClick = () => {\r\n onClick && !disabled && onClick();\r\n };\r\n\r\n // Render.\r\n return (\r\n \r\n \r\n {step}\r\n \r\n \r\n {title}\r\n {optional && Optioneel}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default Step;\r\n","import styled from '@emotion/styled';\r\n\r\nexport const Stepper = styled.div`\r\n display: flex;\r\n align-items: center;\r\n margin-bottom: 4rem;\r\n`;\r\n\r\nexport const Space = styled.div`\r\n flex: 1 1 auto;\r\n border-top: 1px solid ${({ theme }) => theme.greys[100]};\r\n margin: 0 16px;\r\n`;\r\n\r\nexport const StepWrapper = styled.div`\r\n flex: 1;\r\n`;\r\n","import Step, { StepProps } from 'components/atoms/Step';\r\nimport React, { FC } from 'react';\r\nimport { Visible } from 'react-grid-system';\r\nimport { Stepper as Wrapper, Space } from './styles';\r\n\r\nexport interface StepperProps {\r\n steps: StepProps[];\r\n currentStep: number;\r\n}\r\n\r\nconst first = (index: number) => {\r\n return index === 0;\r\n};\r\n\r\nconst Stepper: FC = ({ steps, currentStep }) => {\r\n return (\r\n \r\n {steps.map((step, index) => (\r\n \r\n \r\n {!first(index) && }\r\n \r\n \r\n \r\n ))}\r\n \r\n );\r\n};\r\n\r\nexport default Stepper;\r\n","import styled from '@emotion/styled';\r\n\r\nexport const Wizard = styled.div`\r\n margin-top: 2rem;\r\n`;\r\n","import { Button } from 'components/atoms/button';\r\nimport { StepProps } from 'components/atoms/Step';\r\nimport Group from 'components/molecules/Group';\r\nimport Stepper from 'components/molecules/Stepper';\r\nimport { Form, Formik, FormikHelpers, FormikTouched } from 'formik';\r\nimport React, { ReactNode, useState } from 'react';\r\nimport { BaseSchema } from 'yup';\r\nimport { Wizard as Wrapper } from './styles';\r\nimport { Persist } from 'formik-persist';\r\nimport Margin from 'components/atoms/Margin';\r\n\r\ninterface Step extends StepProps {\r\n child: ReactNode;\r\n onSubmit?: (values: T, helpers: FormikHelpers) => Promise;\r\n validationSchema?: BaseSchema;\r\n needsValidation?: boolean\r\n}\r\n\r\nexport interface WizardProps {\r\n steps: Step[];\r\n initialValues: T;\r\n initialStep?: number;\r\n onSubmit: (values: T, helpers: FormikHelpers) => void;\r\n onSubmitLabel?: string;\r\n persistKey?: string;\r\n}\r\n\r\nexport function Wizard({ steps: initialSteps, initialValues, onSubmit, onSubmitLabel, initialStep = 0, persistKey }: WizardProps) {\r\n const [number, setNumber] = useState(initialStep);\r\n const [snapshot, setSnapshot] = useState(initialValues);\r\n\r\n // Wizard's methods.\r\n const next = (values: T, setTouched: (touched: FormikTouched, shouldValidate?: boolean) => void) => {\r\n handleStepChange(values, Math.min(number + 1, totalSteps - 1), setTouched);\r\n };\r\n\r\n const previous = (values: T, setTouched: (touched: FormikTouched, shouldValidate?: boolean) => void) => {\r\n handleStepChange(values, Math.max(number - 1, 0), setTouched);\r\n };\r\n\r\n const handleStepChange = (values: T, number: number, setTouched: (touched: FormikTouched, shouldValidate?: boolean) => void) => {\r\n setTouched({}, false);\r\n setNumber(number);\r\n setSnapshot(values);\r\n };\r\n\r\n const getPreviousStep = (number: number): Step => {\r\n return initialSteps[Math.max(number - 1, 0)];\r\n };\r\n\r\n const handleSubmit = async (values: T, helpers: FormikHelpers) => {\r\n if (step.onSubmit) {\r\n const result = await step.onSubmit(values, helpers);\r\n\r\n if (!result) {\r\n return;\r\n }\r\n }\r\n\r\n if (lastStep) {\r\n return onSubmit(values, helpers);\r\n } else {\r\n next(values, helpers.setTouched);\r\n }\r\n\r\n helpers.setSubmitting(false);\r\n };\r\n\r\n // Render.\r\n const step = initialSteps[number];\r\n const totalSteps = initialSteps.length;\r\n const firstStep = number === 0;\r\n const lastStep = number === totalSteps - 1;\r\n\r\n return (\r\n \r\n enableReinitialize initialValues={snapshot} onSubmit={handleSubmit} validationSchema={step.validationSchema}>\r\n {({ values, setTouched, isValid, isSubmitting }) => {\r\n const steps = initialSteps.map((step, index) => ({\r\n ...step,\r\n active: index === number,\r\n disabled: !getPreviousStep(index).validationSchema?.isValidSync(values),\r\n onClick: () => handleStepChange(values, index, setTouched)\r\n }));\r\n\r\n const disableSubmitButton = (step.needsValidation && !isValid) || isSubmitting;\r\n\r\n return (\r\n
\r\n \r\n {step.child}\r\n \r\n \r\n {!firstStep && (\r\n \r\n )}\r\n \r\n \r\n \r\n {\r\n persistKey &&\r\n \r\n }\r\n \r\n );\r\n }}\r\n \r\n
\r\n );\r\n}\r\n\r\nexport default Wizard;\r\n","export enum Module {\r\n Collections, // Incasso\r\n CollectionsForeign, // Incasso buitenland \r\n LegalAid, // Rechtshulp\r\n TermsAndConditions // Algemene voorwaarden\r\n}\r\n","import React, { FC } from 'react';\r\nimport { FormGroup, FormikFormControl } from 'components/atoms/form';\r\n\r\nexport interface BannerDataProps {}\r\n\r\nconst BannerData: FC = () => {\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default BannerData;\r\n","import React, { FC, useEffect, useState } from 'react';\r\nimport { FormGroup, FormikFormFile } from 'components/atoms/form';\r\nimport { useFormikContext } from 'formik';\r\nimport { EditBannerInputModel } from 'hooks/banner/types';\r\nimport { cdnString } from 'utils/cdnHelper';\r\n\r\nexport interface BannerFileProps {\r\n}\r\n\r\nconst toBase64 = (file: File) => new Promise((resolve, reject) => {\r\n const reader = new FileReader();\r\n reader.readAsDataURL(file);\r\n reader.onload = () => resolve(reader.result as string);\r\n reader.onerror = error => reject(error);\r\n});\r\n\r\nconst BannerFile: FC = () => {\r\n const { values } = useFormikContext();\r\n const [image, setImage] = useState(undefined);\r\n\r\n useEffect(() => {\r\n if (values.bannerImage) {\r\n toBase64(values.bannerImage).then(image => setImage(image));\r\n }\r\n\r\n }, [values.bannerImage]);\r\n\r\n // Render\r\n const src = values.bannerImage ? image : values.imageHash && cdnString(values.imageHash);\r\n\r\n return (\r\n <>\r\n {values.imageHash && \r\n \r\n {values.description}\r\n \r\n }\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default BannerFile;\r\n","import { AddBannerInputModel, BannerFormInputModel } from 'hooks/banner/types';\r\nimport { useApi } from 'hooks/api';\r\nimport { appendObject } from 'utils/objectAppender';\r\n\r\nconst useAddAdminBanner = () => {\r\n\r\n const { post } = useApi();\r\n\r\n const baseUrl = '/banner';\r\n\r\n const addBanner = async (values: AddBannerInputModel) => {\r\n\r\n const formData = new FormData();\r\n\r\n appendObject(values, formData);\r\n\r\n const response = await post(\r\n baseUrl, formData\r\n );\r\n\r\n return response;\r\n };\r\n\r\n const validateStep1AddBanner = async (values: BannerFormInputModel) => {\r\n const fd = new FormData();\r\n\r\n appendObject(values, fd);\r\n\r\n const response = await post(\r\n `${baseUrl}/validate/step1`, fd\r\n );\r\n\r\n return response;\r\n };\r\n\r\n return {\r\n addBanner,\r\n validateStep1AddBanner\r\n };\r\n};\r\n\r\nexport default useAddAdminBanner;\r\n","import { BannerPlainModel, EditBannerInputModel } from 'hooks/banner/types';\r\nimport { useMutation, useQueryClient } from 'react-query';\r\nimport { useApi } from 'hooks/api';\r\nimport { adminBannersQueryKey } from './useAllBanners';\r\nimport { appendObject } from 'utils/objectAppender';\r\n\r\nconst useEditAdminBanner = () => {\r\n\r\n const { put } = useApi();\r\n\r\n const baseUrl = '/banner';\r\n\r\n const queryClient = useQueryClient();\r\n\r\n const editBanner = async (values: EditBannerInputModel) => {\r\n const formData = new FormData();\r\n\r\n appendObject(values, formData);\r\n\r\n const response = await put(\r\n baseUrl, formData\r\n );\r\n\r\n if (!response.ok) {\r\n throw response;\r\n }\r\n\r\n return response;\r\n };\r\n\r\n\r\n const editBannerMutation = useMutation((values: EditBannerInputModel) => editBanner(values), {\r\n\r\n onMutate: async (values: EditBannerInputModel) => {\r\n\r\n await queryClient.cancelQueries(adminBannersQueryKey);\r\n\r\n const previousData = queryClient.getQueryData(adminBannersQueryKey);\r\n const newData = [...previousData ?? []];\r\n\r\n const bannerToEdit = newData.find(item => item.id === values.id);\r\n\r\n if (bannerToEdit != null) {\r\n bannerToEdit.imageHash = values.imageHash;\r\n bannerToEdit.name = values.name;\r\n bannerToEdit.description = values.description;\r\n }\r\n\r\n queryClient.setQueryData(adminBannersQueryKey, newData);\r\n\r\n return { previousData };\r\n },\r\n onError: (err, variables, context) => {\r\n if (context?.previousData) {\r\n queryClient.setQueryData(adminBannersQueryKey, context.previousData);\r\n }\r\n },\r\n onSettled: (_, __, variables) => {\r\n queryClient.invalidateQueries(adminBannersQueryKey);\r\n }\r\n\r\n });\r\n\r\n return { editBannerMutation };\r\n};\r\n\r\nexport default useEditAdminBanner;\r\n","import { BannerPlainModel, DeleteBannerInputModel } from 'hooks/banner/types';\r\nimport { useMutation, useQueryClient } from 'react-query';\r\nimport { useApi } from 'hooks/api';\r\nimport { adminBannersQueryKey } from './useAllBanners';\r\n\r\nconst useDeleteAdminBanner = () => {\r\n\r\n const { deleteCall } = useApi();\r\n\r\n const baseUrl = '/banner';\r\n\r\n const queryClient = useQueryClient();\r\n\r\n const deleteBanner = async (values: DeleteBannerInputModel) => {\r\n\r\n const response = await deleteCall(`${baseUrl}/${values.id}`);\r\n\r\n if (!response.ok) {\r\n throw response;\r\n }\r\n\r\n return response;\r\n };\r\n\r\n\r\n const deleteBannerMutation = useMutation((values: DeleteBannerInputModel) => deleteBanner(values), {\r\n\r\n onMutate: async (values: DeleteBannerInputModel) => {\r\n\r\n await queryClient.cancelQueries(adminBannersQueryKey);\r\n\r\n const previousData = queryClient.getQueryData(adminBannersQueryKey);\r\n\r\n const filteredData = previousData?.filter(item => item.id !== values.id);\r\n queryClient.setQueryData(adminBannersQueryKey, filteredData ?? []);\r\n\r\n return { previousData };\r\n },\r\n onError: (err, variables, context) => {\r\n if (context?.previousData) {\r\n queryClient.setQueryData(adminBannersQueryKey, context.previousData);\r\n }\r\n },\r\n onSettled: (_, __, variables) => {\r\n queryClient.invalidateQueries(adminBannersQueryKey);\r\n }\r\n\r\n });\r\n\r\n return { deleteBannerMutation };\r\n};\r\n\r\nexport default useDeleteAdminBanner;\r\n","import { RouteComponentProps } from '@reach/router';\r\nimport React, { FC, useState } from 'react';\r\nimport useModal from 'hooks/modal';\r\nimport { BannerPlainModel, EditBannerInputModel, BannerFormInputModel, AddBannerInputModel } from 'hooks/banner/types';\r\nimport { Column } from 'react-table';\r\nimport { Card, CardBody } from 'components/atoms/card';\r\nimport Table from 'components/molecules/table';\r\nimport Modal from 'components/organisms/Modal';\r\nimport Wizard from 'components/organisms/Wizard';\r\nimport BannerData from './components/BannerData';\r\nimport BannerFile from './components/BannerFile';\r\nimport { FormikHelpers } from 'formik';\r\nimport useAllBanners from 'hooks/banner/useAllBanners';\r\nimport useAddAdminBanner from 'hooks/banner/useAddAdminBanner';\r\nimport useEditAdminBanner from 'hooks/banner/useEditAdminBanner';\r\nimport useDeleteAdminBanner from 'hooks/banner/useDeleteAdminBanner';\r\nimport { toast } from 'react-toastify';\r\nimport Group from 'components/molecules/Group';\r\nimport { Button } from 'components/atoms/button';\r\nimport { toFormikErrors } from 'utils/errorhelper';\r\nimport { useHeader } from 'contexts/headerContext';\r\n\r\nexport interface BannerProps extends RouteComponentProps { }\r\n\r\nconst columns: Column[] = [\r\n {\r\n Header: 'Naam',\r\n accessor: (banner) => banner.name\r\n },\r\n {\r\n Header: 'Beschrijving',\r\n accessor: (banner) => banner.description\r\n }\r\n];\r\n\r\nconst ManageBanners: FC = () => {\r\n useHeader('Banners');\r\n\r\n const { addBanner, validateStep1AddBanner } = useAddAdminBanner();\r\n const { editBannerMutation } = useEditAdminBanner();\r\n const { deleteBannerMutation } = useDeleteAdminBanner();\r\n const { data: banners = [], refetch, isLoading: isLoadingBanners } = useAllBanners();\r\n\r\n const [banner, setBanner] = useState();\r\n const [bannerToDelete, setBannerToDelete] = useState();\r\n const [isLoadingDelete, setIsLoadingDelete] = useState(false);\r\n\r\n const initialValues: BannerFormInputModel = {\r\n id: banner?.id ?? '',\r\n name: banner?.name ?? '',\r\n description: banner?.description ?? '',\r\n bannerImage: banner?.bannerImage ?? undefined,\r\n imageHash: banner?.imageHash ?? ''\r\n };\r\n\r\n const handleshow = (item: BannerPlainModel) => {\r\n setBanner(item);\r\n show();\r\n };\r\n\r\n const handleOnHide = (hide: () => void) => {\r\n setBanner(undefined);\r\n hide();\r\n };\r\n\r\n const [show, hide] = useModal(\r\n ({ in: inProp, onExited }) => (\r\n handleOnHide(hide)} title=\"Banner toevoegen\">\r\n \r\n initialValues={initialValues}\r\n initialStep={0}\r\n onSubmitLabel=\"Opslaan\"\r\n onSubmit={handleBannerSubmit}\r\n steps={[\r\n {\r\n step: 1,\r\n title: 'Gegevens',\r\n child: ,\r\n onSubmit: validateStep1\r\n },\r\n {\r\n step: 2,\r\n title: 'Bestand uploaden',\r\n child: \r\n }\r\n ]}\r\n />\r\n \r\n ),\r\n [initialValues]\r\n );\r\n\r\n const validateStep1 = async (values: BannerFormInputModel, { setSubmitting, setErrors }: FormikHelpers): Promise => {\r\n setSubmitting(true);\r\n\r\n const response = await validateStep1AddBanner(values);\r\n\r\n if (response.ok) {\r\n return true;\r\n } else if (response.errors) {\r\n const errors = toFormikErrors(response.errors);\r\n setErrors(errors);\r\n toast.error('Niet alle velden zijn ingevuld');\r\n }\r\n\r\n setSubmitting(false);\r\n return false;\r\n };\r\n\r\n const handleBannerSubmit = async (values: EditBannerInputModel, actions: FormikHelpers) => {\r\n if (banner) {\r\n await editBannerMutation\r\n .mutateAsync(values)\r\n .then(() => {\r\n refetch();\r\n toast.success('Banner succesvol aangepast!');\r\n setBanner(undefined);\r\n hide();\r\n })\r\n .catch(() => {\r\n toast.error('Oeps, er ging iets fout tijdens het aanpassen van de banner. Probeer het later opnieuw!');\r\n });\r\n } else {\r\n const response = await addBanner(values);\r\n\r\n if (response.ok) {\r\n toast.success('Banner succesvol aangemaakt!');\r\n hide();\r\n } else if (response.errors) {\r\n toast.error('Niet alle velden zijn ingevuld!');\r\n const errors = toFormikErrors(response.errors);\r\n actions.setErrors(errors);\r\n } else {\r\n toast.error('Oeps, er ging iets fout tijdens het aanmaken van de banner. Probeer het later opnieuw!');\r\n }\r\n }\r\n };\r\n\r\n const handleBannerDelete = async () => {\r\n if (bannerToDelete === undefined) {\r\n return;\r\n }\r\n\r\n setIsLoadingDelete(true);\r\n\r\n await deleteBannerMutation\r\n .mutateAsync({ id: bannerToDelete.id })\r\n .then(() => {\r\n toast.success('Banner succesvol verwijderd!');\r\n })\r\n .catch(() => {\r\n toast.error('Oeps, er ging iets fout tijdens het verwijderen van de banner. Probeer het later opnieuw!');\r\n });\r\n\r\n setIsLoadingDelete(false);\r\n\r\n closeDeleteModal();\r\n };\r\n\r\n const [showDeleteModal, hideDeleteModal] = useModal(\r\n ({ in: inProp, onExited }) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n ),\r\n [bannerToDelete]\r\n );\r\n\r\n const openDeleteModal = (banner: BannerPlainModel) => {\r\n setBannerToDelete(banner);\r\n showDeleteModal();\r\n };\r\n\r\n const closeDeleteModal = () => {\r\n setBannerToDelete(undefined);\r\n hideDeleteModal();\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n data={banners}\r\n isLoading={isLoadingBanners}\r\n noDataMessage=\"Geen banners beschikbaar\"\r\n columns={columns}\r\n search\r\n onAddClick={show}\r\n actions={[\r\n {\r\n icon: 'edit',\r\n onClick: (item) => handleshow(item),\r\n title: 'Pas banner aan'\r\n },\r\n {\r\n icon: 'delete',\r\n onClick: (item) => openDeleteModal(item),\r\n title: 'Verwijder banner'\r\n }\r\n ]}\r\n />\r\n \r\n \r\n );\r\n};\r\n\r\nexport default ManageBanners;\r\n","import { css } from '@emotion/react';\r\nimport styled from '@emotion/styled';\r\nimport { rgba } from 'polished';\r\n\r\nconst horizontalPadding = (screenClass: string): number => {\r\n switch (screenClass) {\r\n case 'xs':\r\n case 'sm':\r\n case 'md':\r\n return 1;\r\n case 'lg':\r\n return 4;\r\n default:\r\n return 6;\r\n }\r\n};\r\n\r\nexport const Wrapper = styled.div`\r\n display: flex;\r\n height: 100vh;\r\n flex-direction: column;\r\n background-color: ${({ theme }) => rgba(theme.colors.border, 0.25)};\r\n`;\r\n\r\nexport const Content = styled.div<{ screenClass: string }>`\r\n padding: 14rem ${({ screenClass }) => horizontalPadding(screenClass)}rem 0;\r\n`;\r\n\r\nexport const Circles = styled.div`\r\n align-items: center;\r\n display: flex;\r\n justify-content: center;\r\n flex: 1;\r\n`;\r\n\r\nexport const Circle = styled.div<{ isLeft?: boolean; isRight?: boolean }>`\r\n width: clamp(40rem, 45vw, calc(100vh - 16rem));\r\n height: clamp(40rem, 45vw, calc(100vh - 16rem));\r\n flex: 0 0 clamp(16rem, 45vw, calc(100vh - 16rem));\r\n background-color: ${({ theme }) => theme.colors.primary};\r\n border-radius: clamp(16rem, 45vw, calc(100vh - 16rem));\r\n padding: 4rem;\r\n display: flex;\r\n flex-direction: column;\r\n aspect-ratio: 1;\r\n margin: 0 auto;\r\n\r\n ${({ isLeft, isRight }) =>\r\n (isLeft || isRight) &&\r\n css`\r\n width: clamp(12rem, 45vw, 24rem);\r\n height: clamp(12rem, 45vw, 24rem);\r\n flex: 0 0 clamp(12rem, 45vw, 12rem);\r\n border-radius: clamp(12rem, 45vw, 12rem);\r\n max-width: 22.5vw;\r\n aspect-ratio: 1 / 2;\r\n padding: 0;\r\n justify-content: center;\r\n margin: unset;\r\n\r\n img {\r\n height: 60%;\r\n width: auto;\r\n }\r\n `}\r\n\r\n ${({ isLeft }) =>\r\n isLeft &&\r\n css`\r\n border-top-left-radius: 0;\r\n border-bottom-left-radius: 0;\r\n align-items: flex-start;\r\n `}\r\n\r\n ${({ isRight }) =>\r\n isRight &&\r\n css`\r\n border-top-right-radius: 0;\r\n border-bottom-right-radius: 0;\r\n align-items: flex-end;\r\n `}\r\n\r\n > div {\r\n flex: 1;\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n }\r\n`;\r\n\r\nexport const Logo = styled.div`\r\n position: absolute;\r\n left: 2rem;\r\n top: 2rem;\r\n\r\n img {\r\n height: 3.5rem;\r\n width: auto;\r\n }\r\n`;\r\n\r\nexport const Text = styled.span`\r\n position: absolute;\r\n bottom: 2rem;\r\n //right: 6rem; terugzetten als chat weer ingeschakeld wordt\r\n right: 2rem;\r\n font-size: 2rem;\r\n line-height: 2rem;\r\n font-weight: 600;\r\n`;\r\n","export default __webpack_public_path__ + \"static/media/juresta-login-part-left.6b989c29.svg\";","export default __webpack_public_path__ + \"static/media/juresta-login-part-right.1408cb17.svg\";","export default __webpack_public_path__ + \"static/media/logo.040f39e0.svg\";","import React, { FC, Suspense } from 'react';\r\nimport { Wrapper, Circle, Circles, Logo, Text } from './styles';\r\nimport { RouteComponentProps } from '@reach/router';\r\nimport PartLeft from 'static/juresta-login-part-left.svg';\r\nimport PartRight from 'static/juresta-login-part-right.svg';\r\nimport Juresta from 'static/logo.svg';\r\n\r\ninterface AccountProps extends RouteComponentProps { }\r\n\r\nconst Account: FC = ({ children }) => {\r\n return (\r\n \r\n \r\n \"Juresta\"\r\n \r\n \r\n \r\n \"React\r\n \r\n \r\n {children}\r\n \r\n \r\n \"React\r\n \r\n \r\n met recht deskundig\r\n \r\n );\r\n};\r\n\r\nexport default Account;\r\n","import styled from '@emotion/styled';\r\n\r\nexport const Wrapper = styled.div`\r\n min-height: calc(100vh -${({ theme }) => theme.header.height}rem);\r\n position: relative;\r\n display: flex;\r\n flex-direction: row nowrap;\r\n`;\r\n\r\nexport const Content = styled.div`\r\n padding-top: 2rem;\r\n position: relative;\r\n padding: 0 2rem 2rem;\r\n max-width: 1200px;\r\n min-height: calc(100vh -${({ theme }) => theme.header.height}rem);\r\n margin: 0 auto;\r\n`;\r\n\r\nexport const MainContent = styled.div`\r\n flex: 1 1 auto;\r\n height: 100vh;\r\n overflow-y: auto;\r\n`;\r\n","import styled from '@emotion/styled';\r\nimport { Link } from '@reach/router';\r\nimport { css } from '@emotion/react';\r\nimport Icon from '../Icon';\r\n\r\nexport const MenuItem = styled(Link)<{ active?: boolean }>`\r\n height: 3rem;\r\n list-style-type: none;\r\n transition: background 0.4s ease;\r\n display: flex;\r\n align-items: center;\r\n user-select: none;\r\n text-decoration: none;\r\n margin-left: 0;\r\n transition: margin 0.3s ease-out, padding 0.3s ease-out;\r\n background-color: ${({ theme }) => theme.colors.white};\r\n color: ${({ theme }) => theme.colors.primary};\r\n padding: 0 24px;\r\n position: relative;\r\n cursor: pointer;\r\n`;\r\n\r\nexport const Notifications = styled.div`\r\n background-color: ${({ theme }) => theme.colors.secondary};\r\n height: 2rem;\r\n padding: 0 16px;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n border-radius: ${({ theme }) => theme.borderRadius.small}px;\r\n color: ${({ theme }) => theme.colors.white};\r\n font-weight: 600;\r\n font-size: 0.875rem;\r\n`;\r\n\r\nexport const Title = styled.span<{ active?: boolean }>`\r\n color: ${({ theme, active }) => (active ? theme.colors.primary : 'inherit')};\r\n line-height: 1;\r\n display: flex;\r\n align-items: center;\r\n flex: 1;\r\n font-size: 1rem;\r\n\r\n ${({ active }) =>\r\n active &&\r\n css`\r\n font-weight: 500;\r\n text-decoration: underline;\r\n `};\r\n`;\r\n\r\nexport const TitleIcon = styled(Icon)<{ isOpen: boolean }>`\r\n margin-left: 8px;\r\n transform: rotate(${({ isOpen }) => (isOpen ? 180 : 0)}deg);\r\n transition: transform 0.3s ease;\r\n`;\r\n\r\nexport const Bullet = styled.div<{ active?: boolean }>`\r\n width: 12px;\r\n height: 12px;\r\n border-radius: 50%;\r\n background-color: ${({ theme, active }) => (active ? theme.colors.error : theme.colors.primary)};\r\n margin-right: 12px;\r\n`;\r\n","import styled from '@emotion/styled';\r\n\r\nexport const Submenu = styled.div`\r\n`;\r\n","import styled from '@emotion/styled';\r\nimport Icon from '../Icon';\r\nimport { Link } from '@reach/router';\r\nimport { css } from '@emotion/react';\r\n\r\nexport const MenuItem = styled(Link)<{ active?: boolean }>`\r\n height: 3rem;\r\n list-style-type: none;\r\n transition: background 0.4s ease;\r\n display: flex;\r\n align-items: center;\r\n user-select: none;\r\n text-decoration: none;\r\n margin-left: 0;\r\n transition: margin 0.3s ease-out, padding 0.3s ease-out;\r\n background-color: ${({ theme }) => theme.colors.white};\r\n color: ${({ theme }) => theme.colors.primary};\r\n padding: 0 24px;\r\n position: relative;\r\n cursor: pointer;\r\n\r\n ${({ active }) =>\r\n active &&\r\n css`\r\n text-decoration: underline;\r\n font-weight: 600;\r\n `};\r\n`;\r\n\r\nexport const Title = styled.span<{ active?: boolean }>`\r\n color: ${({ theme, active }) => (active ? theme.colors.primary : 'inherit')};\r\n line-height: 1;\r\n display: block;\r\n flex: 1;\r\n font-size: 1rem;\r\n`;\r\n\r\nexport const MenuIcon = styled(Icon)`\r\n margin-right: 16px;\r\n`;\r\n\r\nexport const Content = styled.div<{ active?: boolean }>`\r\n display: flex;\r\n align-items: center;\r\n transition: padding 0.3s ease-out;\r\n padding-left: 2.5rem;\r\n`;\r\n","import { useMatch } from '@reach/router';\r\nimport React, { FC } from 'react';\r\nimport { MenuItem as Wrapper, Title, Content } from './styles';\r\nimport Submenu from '../../molecules/Submenu';\r\nimport { MenuItemProps } from '../MenuItem';\r\n\r\nexport interface SubmenuItemProps extends MenuItemProps { }\r\n\r\nconst MenuItem: FC = ({ to, title, items }) => {\r\n const match = useMatch(to);\r\n\r\n // Render.\r\n return (\r\n <>\r\n \r\n \r\n {title}\r\n \r\n \r\n {items && }\r\n \r\n );\r\n};\r\n\r\nexport default MenuItem;\r\n","import React, { FC } from 'react';\r\nimport { Submenu as Wrapper } from './styles';\r\nimport SubmenuItem, { SubmenuItemProps } from 'components/atoms/SubmenuItem';\r\n\r\nexport interface SubmenuProps {\r\n items: SubmenuItemProps[];\r\n}\r\n\r\nconst Submenu: FC = ({ items }) => {\r\n return (\r\n \r\n {items.map((item) => (\r\n \r\n {item.title}\r\n \r\n ))}\r\n \r\n );\r\n};\r\n\r\nexport default Submenu;\r\n","import { useMatch } from '@reach/router';\r\nimport React, { FC, useState } from 'react';\r\nimport { Bullet, MenuItem as Wrapper, Notifications, Title, TitleIcon } from './styles';\r\nimport Submenu from '../../molecules/Submenu';\r\nimport { Collapse } from 'react-collapse';\r\n\r\nexport interface MenuItemProps {\r\n notifications?: number;\r\n to: string;\r\n title?: string;\r\n items?: MenuItemProps[];\r\n onClick?: () => void;\r\n active?: boolean;\r\n}\r\n\r\nconst MenuItem: FC = ({ notifications, to, title, items }) => {\r\n const match = useMatch(to);\r\n const [isOpen, setIsOpen] = useState(false);\r\n\r\n // Render.\r\n return (\r\n <>\r\n setIsOpen(!isOpen)}>\r\n \r\n \r\n {title} {items && <TitleIcon isOpen={isOpen} name=\"collapse\" size={1} />}\r\n \r\n\r\n {notifications && {notifications}}\r\n \r\n\r\n {items && (\r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default MenuItem;\r\n","import styled from '@emotion/styled';\r\n\r\nexport const Menu = styled.div`\r\noverflow-y: auto`;\r\n","import MenuItem, { MenuItemProps } from 'components/atoms/MenuItem';\r\nimport React, { FC } from 'react';\r\nimport { Menu as Wrapper } from './styles';\r\n\r\nexport interface MenuProps {\r\n items: MenuItemProps[];\r\n}\r\n\r\nconst Menu: FC = ({ items }) => {\r\n // Render.\r\n return (\r\n \r\n {items.map((item) => {\r\n return (\r\n \r\n {item.title}\r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\nexport default Menu;\r\n","import styled from '@emotion/styled';\r\nimport Icon from 'components/atoms/Icon';\r\n\r\nexport const Navigation = styled.div`\r\n height: 100vh;\r\n flex: 0 0 ${({ theme }) => theme.navigation.width}px;\r\n`;\r\n\r\nexport const Content = styled.div`\r\n position: relative;\r\n height: 100%;\r\n display: flex;\r\n flex-direction: column;\r\n background-color: ${({ theme }) => theme.colors.white};\r\n`;\r\n\r\nexport const Header = styled.div`\r\n background-color: ${({ theme }) => theme.colors.white};\r\n\r\n img {\r\n margin: 1.75rem ${({ theme }) => theme.navigation.padding.horizontal}px;\r\n height: auto;\r\n width: 100%;\r\n max-width: 12rem;\r\n vertical-align: middle;\r\n }\r\n`;\r\n\r\nexport const Footer = styled.div`\r\n background-color: ${({ theme }) => theme.colors.white};\r\n flex: 1;\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: flex-end;\r\n border-bottom-left-radius: ${({ theme }) => theme.borderRadius.large}px;\r\n border-bottom-right-radius: ${({ theme }) => theme.borderRadius.large}px;\r\n`;\r\n\r\nexport const SignOut = styled.button`\r\n height: 5rem;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n background: transparent;\r\n border: none;\r\n border-top: 1px solid ${({ theme }) => theme.colors.border};\r\n font-size: 1rem;\r\n color: ${({ theme }) => theme.colors.secondary};\r\n\r\n &:hover {\r\n cursor: pointer;\r\n }\r\n`;\r\n\r\nexport const SignOutIcon = styled(Icon)`\r\n margin-left: 8px;\r\n`;\r\n","import Menu, { MenuProps } from 'components/molecules/Menu';\r\nimport React, { FC } from 'react';\r\nimport { Navigation as Wrapper, Content, Header } from './styles';\r\nimport Logo from 'static/logo.svg';\r\n\r\ninterface NavigationProps extends MenuProps { }\r\n\r\nconst Navigation: FC = (props) => {\r\n\r\n return (\r\n \r\n \r\n
\r\n \"Juresta\"\r\n
\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Navigation;\r\n","import styled from '@emotion/styled';\r\n\r\nexport const Header = styled.div`\r\n position: relative;\r\n z-index: 1;\r\n top: 0;\r\n padding: ${({ theme }) => theme.navigation.offset}px 2rem 0;\r\n z-index: 100;\r\n margin: auto;\r\n max-width: 1200px;\r\n\r\n h1, h2 {\r\n margin-bottom: 0;\r\n font-size: 2rem;\r\n font-weight: 500;\r\n }\r\n`;\r\n\r\nexport const Inner = styled.div`\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n padding-bottom: 1rem;\r\n`;\r\n","import React, { FC } from 'react';\r\nimport { Header, Inner } from './styles';\r\nimport { H1 } from 'components/atoms/text';\r\nimport { useHeader } from 'contexts/headerContext';\r\n\r\nexport interface DefaultProps {\r\n}\r\n\r\nconst Default: FC = ({ children }) => {\r\n const { headerTitle } = useHeader();\r\n\r\n return (\r\n
\r\n \r\n

{headerTitle}

\r\n {children}\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Default;\r\n","import styled from '@emotion/styled';\r\nimport { css } from '@emotion/react';\r\nimport { ImageProps } from './';\r\n\r\nexport const Wrapper = styled.div`\r\n width: 2.5rem;\r\n height: 2.5rem;\r\n flex: 0 0 2.5rem;\r\n border-radius: ${({ round, theme }) =>\r\n round ? '1.25rem' : `${theme.borderRadius.small}px`};\r\n background-color: ${({ theme }) => theme.greys[50]};\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n overflow: hidden;\r\n`;\r\n\r\nexport const Letter = styled.span`\r\n color: ${({ theme }) => theme.greys[300]};;\r\n`;\r\n\r\nexport const Avatar = styled.div<{ image?: string }>`\r\n height: 100%;\r\n width: 100%;\r\n\r\n ${({ image }) =>\r\n image &&\r\n css`\r\n background-image: url('${image}');\r\n background-size: cover;\r\n background-position: center center;\r\n `}\r\n`;\r\n","import React, { FC } from 'react';\r\nimport greys from 'theme/greys';\r\nimport Icon from '../Icon';\r\nimport { Wrapper, Letter, Avatar } from './styles';\r\n\r\nexport interface ImageProps {\r\n image?: string;\r\n placeholderIcon?: string;\r\n placeholderLetter?: string;\r\n placeholderColor?: string;\r\n round?: boolean;\r\n}\r\n\r\nconst Image: FC = ({ image, placeholderIcon, placeholderLetter, ...props }) => {\r\n const icon = placeholderIcon || 'person';\r\n const letter = placeholderLetter?.charAt(0);\r\n\r\n return (\r\n \r\n {image\r\n // eslint-disable-next-line jsx-a11y/alt-text\r\n ? \r\n : // render placeholder:\r\n letter\r\n ? {letter}\r\n : \r\n }\r\n \r\n );\r\n};\r\n\r\nexport default Image;\r\n","import styled from '@emotion/styled';\r\n\r\nexport const User = styled.div`\r\n display: flex;\r\n align-items: center;\r\n background-color: ${({ theme }) => theme.colors.white};\r\n padding: 16px;\r\n border-radius: ${({ theme }) => theme.borderRadius.normal}px;\r\n\r\n &:hover {\r\n cursor: pointer;\r\n }\r\n`;\r\n\r\nexport const Name = styled.span`\r\n margin-left: 16px;\r\n font-weight: 600;\r\n font-size: 1rem;\r\n`;\r\n","import Image from 'components/atoms/Image';\r\nimport React, { forwardRef } from 'react';\r\nimport { Visible } from 'react-grid-system';\r\nimport { Name, User as Wrapper } from './styles';\r\nimport { cdnFileUrl } from 'utils/cdnHelper';\r\nimport { useHeader } from 'contexts/headerContext';\r\n\r\ninterface UserProps {\r\n children: string;\r\n}\r\n\r\nconst User = forwardRef(({ children }, ref) => {\r\n const { headerProfile } = useHeader();\r\n\r\n return (\r\n \r\n \r\n \r\n {children}\r\n \r\n \r\n );\r\n});\r\n\r\nexport default User;\r\n","export const persistCollectionKey = 'add-collection';\r\nexport const persistCollectionForeignKey = 'add-collection-foreign';\r\n","import React, { FC, Suspense, useEffect, useState } from 'react';\r\nimport { navigate, RouteComponentProps } from '@reach/router';\r\nimport { Wrapper, Content, MainContent } from './styles';\r\nimport Navigation from 'components/organisms/Navigation';\r\nimport { css, Global } from '@emotion/react';\r\nimport { Default as Header } from 'components/organisms/header';\r\nimport User from 'components/molecules/User';\r\nimport Dropdown from 'components/molecules/dropdown';\r\nimport useAccount from 'hooks/account/useAccount';\r\nimport { useSession } from 'contexts/sessionContext';\r\nimport { useAreaAuthorization } from 'hooks/area';\r\nimport { Loading } from 'components/atoms/button/Button/styles';\r\nimport colors from 'theme/colors';\r\nimport { Role } from 'utils/constants';\r\nimport { MenuItemProps } from 'components/atoms/MenuItem';\r\nimport { useApi } from 'hooks/api';\r\nimport { DropdownItemProps } from 'components/atoms/item/DropdownItem';\r\nimport { persistCollectionForeignKey, persistCollectionKey } from 'utils/constants/localstrorageconstants';\r\n\r\nconst styles = css`\r\n body {\r\n background-color: ${colors.light};\r\n }\r\n`;\r\n\r\ninterface DefaultProps extends RouteComponentProps {\r\n role?: Role;\r\n items: MenuItemProps[];\r\n}\r\n\r\nconst Default: FC = ({ children, role, items }) => {\r\n const { session, hasRole } = useSession();\r\n const { refreshSession } = useApi();\r\n const { logOut } = useAccount();\r\n const [initialized, setInitialized] = useState(false);\r\n const { initializedAuth } = useAreaAuthorization(initialized, role);\r\n\r\n useEffect(() => {\r\n (async () => {\r\n if (session == null) {\r\n await refreshSession();\r\n }\r\n setInitialized(true);\r\n })();\r\n }, []);\r\n\r\n // Methods.\r\n const handleLogOut = async () => {\r\n // Remove local storage of forms\r\n localStorage.removeItem(persistCollectionForeignKey);\r\n localStorage.removeItem(persistCollectionKey);\r\n\r\n logOut().then(() => navigate('/account'));\r\n };\r\n\r\n return session && initialized && initializedAuth ? (\r\n <>\r\n \r\n \r\n \r\n \r\n
\r\n \r\n {session?.fullName ?? 'Onbekend'}\r\n \r\n
\r\n \r\n {children}\r\n \r\n
\r\n
\r\n \r\n ) : (\r\n \r\n );\r\n};\r\n\r\nexport default Default;\r\n","import { useEffect, useState } from 'react';\r\nimport { navigate } from '@reach/router';\r\n\r\nimport { Role } from 'utils/constants';\r\nimport { defaultAreaRoute } from 'utils/areaHelper';\r\nimport { useSession } from 'contexts/sessionContext';\r\n\r\nexport const useAreaAuthorization = (initialized: boolean, role?: Role) => {\r\n const { session } = useSession();\r\n const [initializedAuth, setInitializedAuth] = useState(false);\r\n\r\n useEffect(() => {\r\n if (session != null && initialized) {\r\n if (session.role === role) {\r\n setInitializedAuth(true);\r\n } else {\r\n const areaRoute = defaultAreaRoute(session.role);\r\n let path = window.location.pathname;\r\n\r\n if (session.role !== Role.Admin && path.startsWith('/admin')) {\r\n path = path.substring(7);\r\n }\r\n\r\n const route = `${areaRoute}${path}`;\r\n navigate(route);\r\n }\r\n }\r\n\r\n if (initializedAuth && session == null) {\r\n navigate('/account/');\r\n return;\r\n }\r\n }, [session, initialized, initializedAuth]);\r\n\r\n return { initializedAuth };\r\n};\r\n\r\nexport const useAdminAreaAuthorization = (initialized: boolean) => {\r\n const { session } = useSession();\r\n const [initializedAuth, setInitializedAuth] = useState(false);\r\n\r\n useEffect(() => {\r\n if (session != null && initialized) {\r\n if (session.role === Role.Admin) {\r\n setInitializedAuth(true);\r\n } else {\r\n const route = defaultAreaRoute(session.role);\r\n navigate(route);\r\n }\r\n }\r\n\r\n if (initializedAuth && session == null) {\r\n navigate('/account/');\r\n return;\r\n }\r\n\r\n // TODO: Add checks for ActiveEnvironment etc\r\n }, [session, initialized, initializedAuth]);\r\n\r\n return { initializedAuth };\r\n};\r\n\r\nexport const useDefaultAreaAuthorization = (initialized: boolean) => {\r\n const { session } = useSession();\r\n const [initializedAuth, setInitializedAuth] = useState(false);\r\n\r\n useEffect(() => {\r\n if (session != null && initialized) {\r\n if (!session.role) {\r\n setInitializedAuth(true);\r\n } else {\r\n const route = defaultAreaRoute(session.role);\r\n navigate(route);\r\n }\r\n }\r\n\r\n if (initializedAuth && session == null) {\r\n navigate('/account/');\r\n return;\r\n }\r\n\r\n // TODO: Add checks for ActiveEnvironment etc\r\n }, [session, initialized, initializedAuth]);\r\n\r\n return { initializedAuth };\r\n};\r\n","import styled from '@emotion/styled';\r\nimport Icon from '../Icon';\r\n\r\n// #63b581\r\nexport const Wrapper = styled.div<{ isActive: boolean }>`\r\n color: ${({ theme, isActive }) => (isActive ? theme.colors.green : theme.colors.grey)};\r\n display: flex;\r\n align-items: center;\r\n flex-direction: row;\r\n justify-items: center;\r\n height: 100%;\r\n padding: 0 30px;\r\n margin-right: -24px;\r\n`;\r\n\r\nexport const ActiveIcon = styled(Icon)`\r\n margin-right: 2px;\r\n`;\r\n","import { useTheme } from '@emotion/react';\r\nimport React, { FC } from 'react';\r\nimport { ActiveIcon, Wrapper } from './styles';\r\n\r\ninterface ActiveInactiveProps {\r\n isActive?: boolean;\r\n style?: React.CSSProperties;\r\n}\r\n\r\nconst ActiveInactive: FC = ({ isActive, style }) => {\r\n const title = isActive ? 'Actief' : 'Inactief';\r\n const theme = useTheme();\r\n\r\n return (\r\n \r\n {isActive && }\r\n {title}\r\n \r\n );\r\n};\r\n\r\nexport default ActiveInactive;\r\n","import styled from '@emotion/styled';\r\n\r\nexport const Wrapper = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n`;\r\n\r\nexport const Date = styled.span`\r\n font-size: 0.875rem;\r\n line-height: 1.5;\r\n`;\r\n\r\nexport const Title = styled.span`\r\n font-size: 0.875rem;\r\n line-height: 1.5;\r\n font-weight: 600;\r\n`;\r\n","import React, { FC } from 'react';\r\nimport { Date, Wrapper, Title } from './styles';\r\n\r\ninterface DateTitleCellProps {\r\n date?: Date;\r\n title: string;\r\n}\r\n\r\nconst DateTitleCell: FC = ({ date, title }) => {\r\n const formattedDate = date?.toLocaleDateString('nl-NL', { day: '2-digit', month: '2-digit', year: 'numeric' }).replaceAll('-', '.');\r\n return (\r\n \r\n {date ? formattedDate : ''}\r\n {title}\r\n \r\n );\r\n};\r\n\r\nexport default DateTitleCell;\r\n","import { useApi } from 'hooks/api';\r\nimport { CustomError } from 'hooks/api/types';\r\nimport { useQuery } from 'react-query';\r\nimport { appendObject } from 'utils/objectAppender';\r\nimport { buildUriWithParams } from 'utils/urihelper';\r\nimport { AddKnowledgeBaseItemInputModel, EditKnowledgeBaseItemInputModel, GetKnowledgeBaseItemInputModel, KnowledgeBaseItemModel } from './types';\r\n\r\nconst getKnowledgeBaseItemsQueryKey = 'knowledgebaseitem.get';\r\n\r\nconst useKnowledgeBaseItems = () => {\r\n\r\n const { get, post, put, deleteCall } = useApi();\r\n\r\n const baseUrl = '/knowledgebaseitem';\r\n\r\n const getAllKnowledgeBaseItem = async (params?: GetKnowledgeBaseItemInputModel) => {\r\n const url = buildUriWithParams(baseUrl, params);\r\n\r\n const response = await get(url);\r\n\r\n return response;\r\n };\r\n\r\n const useAllKnowledgeBaseItems = (params?: GetKnowledgeBaseItemInputModel) => {\r\n const queryKey = [getKnowledgeBaseItemsQueryKey, params];\r\n\r\n return useQuery(queryKey, async () => {\r\n const response = await getAllKnowledgeBaseItem(params);\r\n\r\n if (!response.ok && response.errors != null) {\r\n throw response.errors;\r\n }\r\n\r\n return response.data ?? [];\r\n });\r\n };\r\n\r\n const addKnowledgeBaseItem = async (values: AddKnowledgeBaseItemInputModel) => {\r\n const fd = new FormData();\r\n\r\n appendObject(values, fd);\r\n\r\n const response = await post(baseUrl, fd);\r\n\r\n return response;\r\n };\r\n\r\n const editKnowledgeBaseItem = async (values: EditKnowledgeBaseItemInputModel) => {\r\n const fd = new FormData();\r\n\r\n appendObject(values, fd);\r\n\r\n const response = await put(baseUrl, fd);\r\n\r\n return response;\r\n };\r\n\r\n const deleteKnowledgeBaseItem = async (id: string) => {\r\n const response = await deleteCall(`${baseUrl}/${id}`);\r\n\r\n return response;\r\n };\r\n\r\n return {\r\n getAllKnowledgeBaseItem,\r\n useAllKnowledgeBaseItems,\r\n addKnowledgeBaseItem,\r\n editKnowledgeBaseItem,\r\n deleteKnowledgeBaseItem\r\n };\r\n};\r\n\r\nexport default useKnowledgeBaseItems;\r\n","import { useApi } from 'hooks/api';\r\nimport { CustomError } from 'hooks/api/types';\r\nimport { useQuery } from 'react-query';\r\nimport { appendObject } from 'utils/objectAppender';\r\nimport { buildUriWithParams } from 'utils/urihelper';\r\nimport { AddNewsItemInputModel, EditNewsItemInputModel, GetNewsItemInputModel, NewsItemModel } from './types';\r\n\r\nconst getNewsItemsQueryKey = 'newsitem.get';\r\n\r\nconst useNewsItems = () => {\r\n\r\n const { get, post, put, deleteCall } = useApi();\r\n\r\n const baseUrl = '/newsitem';\r\n\r\n const getAllNewsItem = async (params?: GetNewsItemInputModel) => {\r\n const url = buildUriWithParams(baseUrl, params);\r\n\r\n const response = await get(url);\r\n\r\n return response;\r\n };\r\n\r\n const useAllNewsItems = (params?: GetNewsItemInputModel) => {\r\n const queryKey = [getNewsItemsQueryKey, params];\r\n\r\n return useQuery(queryKey, async () => {\r\n const response = await getAllNewsItem(params);\r\n\r\n if (!response.ok && response.errors != null) {\r\n throw response.errors;\r\n }\r\n\r\n return response.data ?? [];\r\n });\r\n };\r\n\r\n const addNewsItem = async (values: AddNewsItemInputModel) => {\r\n const fd = new FormData();\r\n\r\n appendObject(values, fd);\r\n\r\n const response = await post(baseUrl, fd);\r\n\r\n return response;\r\n };\r\n\r\n const editNewsItem = async (values: EditNewsItemInputModel) => {\r\n const fd = new FormData();\r\n\r\n appendObject(values, fd);\r\n\r\n const response = await put(baseUrl, fd);\r\n\r\n return response;\r\n };\r\n\r\n const deleteNewsItem = async (id: string) => {\r\n const response = await deleteCall(`${baseUrl}/${id}`);\r\n\r\n return response;\r\n };\r\n\r\n return {\r\n getAllNewsItem,\r\n useAllNewsItems,\r\n addNewsItem,\r\n editNewsItem,\r\n deleteNewsItem\r\n };\r\n};\r\n\r\nexport default useNewsItems;\r\n","import React, { FC, useMemo } from 'react';\r\nimport { RouteComponentProps, navigate, Link } from '@reach/router';\r\nimport { Col, Row } from 'react-grid-system';\r\nimport { Card, CardHeader } from 'components/atoms/card';\r\nimport { H4, Paragraph } from 'components/atoms/text';\r\nimport Margin from 'components/atoms/Margin';\r\nimport { useHeader } from 'contexts/headerContext';\r\nimport { Column } from 'react-table';\r\nimport Table from 'components/molecules/table';\r\nimport { Button } from 'components/atoms/button';\r\nimport ActiveInactive from 'components/atoms/ActiveInactive';\r\nimport DateTitleCell from 'components/atoms/DateTitleCell';\r\nimport { useSession } from 'contexts/sessionContext';\r\nimport Tooltip from 'components/atoms/Tooltip';\r\nimport { Right } from 'utils/constants/rightconstants';\r\nimport useKnowledgeBaseItems from 'hooks/knowledgebaseitem';\r\nimport useNewsItems from 'hooks/newsitem';\r\nimport { NewsItemModel } from 'hooks/newsitem/types';\r\nimport { KnowledgeBaseItemModel } from 'hooks/knowledgebaseitem/types';\r\nimport { parseISO } from 'date-fns';\r\nimport { orderBy } from 'lodash';\r\n\r\n// TODO replace for db modal.\r\ninterface NewsItem extends NewsItemModel { }\r\n\r\nconst newsColumns: Column[] = [\r\n {\r\n Header: 'Titel',\r\n accessor: (news) => \r\n }\r\n];\r\n\r\n// TODO replace for db modal.\r\ninterface Article extends KnowledgeBaseItemModel { }\r\n\r\nconst articleColumns: Column
[] = [\r\n {\r\n Header: 'Titel',\r\n accessor: (article) => \r\n }\r\n];\r\n\r\n// TODO replace for db modal.\r\ninterface Agreement {\r\n title: string;\r\n active?: boolean;\r\n to: string;\r\n}\r\n\r\nconst agreementColumns: Column[] = [\r\n {\r\n Header: 'Titel',\r\n accessor: (collection) => collection.title\r\n }\r\n];\r\n\r\nconst Dashboard: FC = () => {\r\n const { session } = useSession();\r\n const agreements = useMemo(() => ([\r\n {\r\n title: 'Incassomodule Nederland',\r\n active: session?.rights?.some((ur) => ur === Right.Collection) ? true : false,\r\n to: '/collection-netherlands'\r\n },\r\n {\r\n title: 'Incassomodule Buitenland',\r\n active: session?.rights?.some((ur) => ur === Right.CollectionAbroad) ? true : false,\r\n to: '/collection-foreign'\r\n },\r\n {\r\n title: 'Module Rechtshulp',\r\n active: session?.rights?.some((ur) => ur === Right.LegalAid) ? true : false,\r\n to: '/legal-aid'\r\n },\r\n {\r\n title: 'Algemene voorwaarden',\r\n active: session?.rights?.some((ur) => ur === Right.GeneralConditions) ? true : false,\r\n to: '/terms-and-conditions'\r\n }\r\n ]), [session?.rights]);\r\n\r\n const { useAllNewsItems } = useNewsItems();\r\n const { data: newsItems = [] } = useAllNewsItems();\r\n const sortedNewsItems = orderBy(newsItems, item => parseISO(item.publicationDate ?? new Date().toISOString()).getTime(), ['desc']);\r\n\r\n const { useAllKnowledgeBaseItems } = useKnowledgeBaseItems();\r\n const { data: articles = [] } = useAllKnowledgeBaseItems();\r\n const sortedArticles = orderBy(articles, article => parseISO(article.publicationDate).getTime(), ['desc']);\r\n\r\n const greeting = useMemo(() => {\r\n const hourNow = new Date().getHours();\r\n let greeting;\r\n\r\n if (hourNow > 18) {\r\n greeting = 'Goedenavond ';\r\n } else if (hourNow > 12) {\r\n greeting = 'Goedemiddag ';\r\n } else if (hourNow > 0) {\r\n greeting = 'Goedemorgen ';\r\n } else {\r\n greeting = 'Welkom ';\r\n }\r\n\r\n if (session?.gender === 'De heer' || session?.gender === 'Mevrouw') {\r\n let gender = '';\r\n if (session?.gender === 'De heer') {\r\n gender = 'Meneer';\r\n } else {\r\n gender = session?.gender;\r\n }\r\n greeting = `${greeting} ${gender.toLowerCase()} ${session?.insertion ?? ''} ${session?.lastName ?? ''}`;\r\n } else {\r\n greeting = `${greeting} ${session?.fullName ?? ''}`;\r\n }\r\n\r\n return `${greeting},`;\r\n }, [session?.gender]);\r\n\r\n useHeader(greeting);\r\n\r\n // Render.\r\n return (\r\n <>\r\n \r\n In uw persoonlijke Juresta-omgeving leest u meer over de door u gesloten modules met Juresta. Ook kunt u eenvoudig een incasso-opdracht indienen of gebruik maken van diverse hulpmiddelen bij uw debiteurenbeheer. Maakt u nog geen gebruik van een bepaalde module of wilt u bijvoorbeeld meer weten over onze mogelijkheden? Wij informeren u graag.\r\n \r\n \r\n \r\n \r\n \r\n \r\n

Nieuws

\r\n In dit deel leest u relevante nieuwsberichten van en over Juresta.\r\n
\r\n \r\n data={sortedNewsItems.slice(0, 3)}\r\n columns={newsColumns}\r\n cta={() => navigate('news')}\r\n ctaText=\"Bekijk al het nieuws\"\r\n actions={[\r\n {\r\n component: ({ id }) => Lees {'>'}\r\n }\r\n ]}\r\n sortBy={[]}\r\n hideTableHeader\r\n hidePagination\r\n fullWidth\r\n />\r\n
\r\n \r\n \r\n \r\n \r\n

Kennisbank

\r\n In dit deel kunt u artikelen raadplegen over diverse relevante onderwerpen. Denk daarbij aan onderwerpen die voor u als ondernemer van belang zijn. Heeft u vragen naar aanleiding van een artikel? Neem gerust contact met ons op. Wij zijn u graag van dienst.\r\n
\r\n \r\n data={sortedArticles.slice(0, 3)}\r\n columns={articleColumns}\r\n cta={() => navigate('knowledge-base')}\r\n ctaText=\"Bekijk de gehele kennisbank\"\r\n actions={[\r\n {\r\n component: ({ id }) => Lees {'>'}\r\n }\r\n ]}\r\n sortBy={[]}\r\n hideTableHeader\r\n hidePagination\r\n fullWidth\r\n />\r\n
\r\n \r\n
\r\n \r\n \r\n

Modules

\r\n Uw overeenkomsten met Juresta. Klik op de overeenkomst voor meer informatie.\r\n
\r\n \r\n data={agreements}\r\n columns={agreementColumns}\r\n actions={[\r\n {\r\n component: ({ to, active }) => \r\n \r\n \r\n )}\r\n \r\n \r\n ),\r\n []\r\n );\r\n\r\n // Render.\r\n return (\r\n <>\r\n {\r\n !hasRights &&\r\n \r\n \r\n \r\n

Rechtshulp

\r\n \r\n
\r\n \r\n Op basis van onze advocatenovereenkomst kunt u bij één van de advocaten uit het Juresta-netwerk terecht voor uw juridische vragen of kwesties. U beschikt nog niet over een advocatenovereenkomst.\r\n \r\n \r\n Wilt u juridisch advies of heeft u rechtshulp nodig? Geef een (korte) omschrijving van uw vraag of probleem. Wij nemen zo spoedig mogelijk contact met u op om de mogelijkheden van de advocatenovereenkomst met u te bespreken.\r\n \r\n
\r\n
\r\n }\r\n {\r\n hasRights &&\r\n <>\r\n \r\n \r\n

Module rechtshulp

\r\n \r\n Op basis van uw module rechtshulp kunt u bij één van de advocaten uit het Juresta-netwerk terecht voor uw juridische vragen of kwesties.\r\n \r\n \r\n Wilt u advies of heeft u rechtshulp nodig? Geef een (korte) omschrijving van uw vraag of probleem. Wij gaan direct voor u op zoek naar een passende advocaat. Vervolgens worden de mogelijkheden voor advies of rechtshulp met u besproken.\r\n \r\n
\r\n
\r\n \r\n \r\n initialValues={initialValues} onSubmit={handleMail}>\r\n {({ isSubmitting }) => (\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 LegalAid;\r\n","import React, { FC } from 'react';\r\nimport { navigate, RouteComponentProps } from '@reach/router';\r\nimport { Col, Row } from 'react-grid-system';\r\nimport { Card, CardBody } from 'components/atoms/card';\r\nimport { Button } from 'components/atoms/button';\r\nimport { H3, Paragraph } from 'components/atoms/text';\r\nimport Margin from 'components/atoms/Margin';\r\nimport { useHeader } from 'contexts/headerContext';\r\nimport Group from 'components/molecules/Group';\r\n\r\nconst AdminDashboard: FC = () => {\r\n useHeader('Dashboard');\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n

Relaties

\r\n \r\n PLACEHOLDER\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

Correspondentie

\r\n \r\n PLACEHOLDER\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 Voorbeeldbrieven\r\n

\r\n \r\n PLACEHOLDER\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

Nieuwsberichten

\r\n \r\n PLACEHOLDER\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

Kennisbank

\r\n \r\n PLACEHOLDER\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 Banners\r\n

\r\n \r\n PLACEHOLDER\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 AdminDashboard;\r\n","import styled from '@emotion/styled';\r\n\r\nexport const Header = styled.div`\r\n position: relative;\r\n margin-bottom: 1rem;\r\n color: ${({ theme }) => theme.colors.primary};\r\n font-weight: 500;\r\n font-size: 1.15rem;\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n\r\n hr {\r\n flex-grow: 1;\r\n margin: 0 1rem;\r\n border: 0;\r\n border-bottom: 1px solid ${({ theme }) => theme.colors.border};\r\n height: 0;\r\n }\r\n\r\n button {\r\n background: none;\r\n cursor: pointer;\r\n padding: 0;\r\n color: inherit;\r\n font-weight: 500;\r\n display: inline-flex;\r\n font-size: .8rem;\r\n align-items: center;\r\n border: 0;\r\n outline: 0;\r\n box-shadow: none;\r\n .icon-wrapper {\r\n margin-right: .35rem;\r\n }\r\n }\r\n`;\r\n","import React from 'react';\r\nimport { useTheme } from '@emotion/react';\r\nimport { Header } from './styles';\r\nimport Icon from 'components/atoms/Icon';\r\nimport Tooltip from '../Tooltip';\r\nimport Margin from '../Margin';\r\n\r\ninterface Action {\r\n title: string;\r\n onClick: () => void;\r\n}\r\n\r\ninterface HeaderActionProps {\r\n title: string;\r\n tooltip?: string;\r\n action?: Action;\r\n}\r\n\r\nconst HeaderActionComponent = ({ title, tooltip, action }: HeaderActionProps) => {\r\n const theme = useTheme();\r\n return (\r\n
\r\n

{title}

\r\n {tooltip &&\r\n {tooltip}\r\n }\r\n
\r\n {\r\n action &&\r\n \r\n }\r\n
\r\n );\r\n};\r\n\r\nexport default HeaderActionComponent;\r\n","import styled from '@emotion/styled';\r\n\r\nexport const Alert = styled.p`\r\n display: block;\r\n margin: 0;\r\n padding: .5rem .75rem;\r\n border-radius: ${({ theme }) => theme.borderRadius.normal}px;\r\n color: ${({ theme }) => theme.colors.primary};\r\n background-color: ${({ theme }) => theme.colors.border};\r\n font-weight: 500;\r\n font-size: .9rem;\r\n`;","import React from 'react';\r\nimport { Alert } from './styles';\r\n\r\ninterface AlertProps {\r\n text: string;\r\n}\r\n\r\nconst AlertComponent = ({ text }: AlertProps) => {\r\n return (\r\n {text}\r\n );\r\n};\r\n\r\nexport default AlertComponent;\r\n","import styled from '@emotion/styled';\r\n\r\nexport const Table = styled.table`\r\n table-collapse: collapse;\r\n border: 0;\r\n max-width: 100%;\r\n width: 100%;\r\n font-weight: 500;\r\n table-layout: fixed;\r\n td {\r\n padding: .5rem;\r\n &:first-of-type {\r\n padding-left: 0;\r\n }\r\n &:last-of-type {\r\n padding-right: 0;\r\n font-weight: 300;\r\n \r\n span {\r\n font-size: 1.35rem;\r\n line-height: 1rem;\r\n }\r\n }\r\n }\r\n`;\r\n","import React from 'react';\r\nimport { Table } from './styles';\r\n\r\ninterface Item {\r\n key: string;\r\n value: string | boolean;\r\n required?: boolean;\r\n include?: boolean;\r\n}\r\n\r\ninterface KeyValueProps {\r\n items: Item[];\r\n}\r\n\r\nconst KeyValueComponent = ({ items }: KeyValueProps) => {\r\n return (\r\n \r\n \r\n {\r\n items.map((item, index) =>\r\n item.include &&\r\n \r\n \r\n \r\n \r\n )\r\n }\r\n \r\n
{item.key}{item.value} {item.required && *}
\r\n );\r\n};\r\n\r\nexport default KeyValueComponent;\r\n","import { useApi } from 'hooks/api';\r\nimport { buildUriWithParams } from 'utils/urihelper';\r\nimport { EditUserInfoRequestModel, GetEditUserInfoRequestModel } from './types';\r\n\r\nconst useEditUserInfoRequests = () => {\r\n\r\n const { get, put } = useApi();\r\n\r\n const baseUrl = '/EditUserInfoRequest';\r\n\r\n const getEditUserInfoRequests = async (params?: GetEditUserInfoRequestModel) => {\r\n const url = buildUriWithParams(baseUrl, params);\r\n\r\n const response = await get(url);\r\n\r\n return response;\r\n };\r\n\r\n const completeEditUserInfoRequest = async (id: string) => {\r\n const response = await put(`${baseUrl}/${id}/complete`);\r\n\r\n return response;\r\n };\r\n\r\n return {\r\n getEditUserInfoRequests,\r\n completeEditUserInfoRequest\r\n };\r\n};\r\n\r\nexport default useEditUserInfoRequests;\r\n","import styled from '@emotion/styled';\r\nimport { css } from '@emotion/react';\r\nimport { lighten, rgba } from 'polished';\r\n\r\nexport const Wrapper = styled.div`\r\n position: relative;\r\n margin: 0 auto;\r\n max-width: 6rem;\r\n`;\r\n\r\nexport const Inner = styled.div<{ heightPercentage?: number, hasError?: boolean }>`\r\n position: relative;\r\n overflow: hidden;\r\n height: 0;\r\n box-shadow: 0px 1px 4px 0px ${({ theme }) => rgba(theme.colors.black, 0.1)};\r\n width: 100%;\r\n border-radius: 50%;\r\n background-color: ${({ hasError, theme }) => hasError ? lighten(.35, theme.colors.error) : theme.colors.white};\r\n ${({ heightPercentage }) =>\r\n heightPercentage &&\r\n css`\r\n padding-bottom: ${heightPercentage}%;\r\n `}\r\n`;\r\n\r\nexport const Image = styled.div<{ image?: string; }>`\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n background-repeat: no-repeat;\r\n background-position: center center;\r\n background-size: cover;\r\n width: 100%;\r\n height: 100%;\r\n\r\n ${({ image }) =>\r\n image != null &&\r\n css`\r\n background-image: url(${image});\r\n `}\r\n`;\r\n\r\nexport const NoImage = styled.div`\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: 100%;\r\n height: 100%;\r\n user-select: none;\r\n\r\n img {\r\n width: 100%;\r\n height: auto;\r\n max-width: 4rem;\r\n }\r\n`;\r\n","import React, { FC } from 'react';\r\nimport { Wrapper, Inner, NoImage, Image } from './styles';\r\nimport noImage from 'static/no-photo.svg';\r\n\r\nexport interface FormImageProps {\r\n value?: string;\r\n}\r\n\r\nconst FormImage: FC = ({ value }) => {\r\n const hasImage = value !== undefined;\r\n return (\r\n \r\n \r\n {\r\n hasImage ? (\r\n \r\n ) : (\r\n \r\n \"Placeholder\"\r\n \r\n )\r\n }\r\n \r\n \r\n );\r\n};\r\n\r\nexport default FormImage;\r\n","export enum Gender {\r\n Male = 1,\r\n Female = 2,\r\n //Other = 3,\r\n Unknown = 3\r\n}\r\n\r\nexport const genderOptions = [\r\n {\r\n value: Gender.Male,\r\n label: 'De heer'\r\n },\r\n {\r\n value: Gender.Female,\r\n label: 'Mevrouw'\r\n },\r\n /* {\r\n value: Gender.Other,\r\n label: 'Anders'\r\n }, */\r\n {\r\n value: Gender.Unknown,\r\n label: 'Onbekend'\r\n }\r\n];\r\n\r\nexport const getGenderDisplay = (gender: Gender): string => {\r\n switch (gender) {\r\n case Gender.Male:\r\n return 'de heer';\r\n case Gender.Female:\r\n return 'mevrouw';\r\n /* case Gender.Other:\r\n return 'anders'; */\r\n case Gender.Unknown:\r\n return 'onbekend';\r\n }\r\n};\r\n","import React, { FC, useEffect, useMemo, useState } from 'react';\r\nimport { RouteComponentProps } from '@reach/router';\r\nimport { Col, Row } from 'react-grid-system';\r\nimport { Button } from 'components/atoms/button';\r\nimport { Card, CardBody } from 'components/atoms/card';\r\nimport HeaderAction from 'components/atoms/HeaderAction';\r\nimport Alert from 'components/atoms/Alert';\r\nimport { H3 } from 'components/atoms/text';\r\nimport Margin from 'components/atoms/Margin';\r\nimport KeyValue from 'components/atoms/KeyValue';\r\nimport Group from 'components/molecules/Group';\r\nimport { useHeader } from 'contexts/headerContext';\r\nimport { FormGroup, FormikFormControl, FormikFormImage, FormikFormSelect, FormikFormYesNo } from 'components/atoms/form';\r\nimport { Form, Formik, FormikHelpers } from 'formik';\r\nimport { EditProfileInputModel, GetProfileModel } from 'hooks/profile/types';\r\nimport useProfile from 'hooks/profile/useProfile';\r\nimport { toast } from 'react-toastify';\r\nimport { Loading } from 'components/atoms/button/Button/styles';\r\nimport { EditUserInfoRequestModel } from 'hooks/edituserinforequest/types';\r\nimport useEditUserInfoRequests from 'hooks/edituserinforequest/useEditUserInfoRequest';\r\nimport { useSession } from 'contexts/sessionContext';\r\nimport { EditUserInfoRequestStatus } from 'utils/constants';\r\nimport moment from 'moment';\r\nimport { toFormikErrors } from 'utils/errorhelper';\r\nimport { cdnFileUrl } from 'utils/cdnHelper';\r\nimport UserImage from 'components/atoms/UserImage';\r\nimport { Right } from 'utils/constants/rightconstants';\r\nimport { getLegalFormDisplay, legelFormOptions } from 'utils/constants/legalformconstants';\r\nimport { getPaymentMethodDisplay, paymentMethodOptions } from 'utils/constants/paymentmethodconstants';\r\nimport { getGenderDisplay, genderOptions } from 'utils/constants/personconstants';\r\n\r\nconst Profile: FC = () => {\r\n\r\n const { session } = useSession();\r\n const { edit, getProfile } = useProfile();\r\n const { getEditUserInfoRequests } = useEditUserInfoRequests();\r\n\r\n const [isLoading, setIsLoading] = useState(true);\r\n const [editMode, setEditMode] = useState(false);\r\n const [profile, setProfile] = useState();\r\n const { setHeaderProfile, setHeaderTitle } = useHeader();\r\n const [editUserInfoRequest, setEditUserInfoRequest] = useState();\r\n\r\n const loadProfile = async () => {\r\n const response = await getProfile();\r\n\r\n if (response.ok && response.data) {\r\n setProfile(response.data);\r\n setHeaderProfile(response.data);\r\n } else {\r\n toast.error('Oeps, er ging iets fout bij het ophalen van jouw gegevens');\r\n }\r\n };\r\n\r\n const loadEditUserInfoRequest = async () => {\r\n const response = await getEditUserInfoRequests({ userId: session?.userId, status: EditUserInfoRequestStatus.Requested });\r\n\r\n if (response.ok && response.data) {\r\n setEditUserInfoRequest(response.data[0]);\r\n } else {\r\n toast.error('Oeps, er ging iets fout bij het ophalen van jouw gegevens');\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n (async () => {\r\n const profileCall = loadProfile();\r\n const requestCall = loadEditUserInfoRequest();\r\n\r\n await Promise.all([profileCall, requestCall]);\r\n\r\n setIsLoading(false);\r\n })();\r\n setHeaderTitle('Mijn gegevens');\r\n }, []);\r\n\r\n const handleSubmit = async (values: EditProfileInputModel, { setErrors, setSubmitting }: FormikHelpers) => {\r\n const response = await edit(values);\r\n\r\n if (response.ok) {\r\n toast.success('Het wijzigingsversoek is verzonden');\r\n loadProfile();\r\n loadEditUserInfoRequest();\r\n setEditMode(false);\r\n } else if (response.errors) {\r\n const errors = toFormikErrors(response.errors);\r\n toast.error('Oeps, er ontbreken wat gegevens. Vul ze in en probeer het opnieuw!');\r\n setErrors(errors);\r\n } else {\r\n toast.error('Oeps, er ging iets fout tijdens het versturen van het wijzigingsverzoek. Probeer het later opnieuw!');\r\n }\r\n\r\n setSubmitting(false);\r\n };\r\n\r\n const initialValues: EditProfileInputModel = useMemo(() => ({\r\n gender: editUserInfoRequest?.gender ?? profile?.gender,\r\n initials: editUserInfoRequest?.initials ?? profile?.initials ?? '',\r\n firstName: editUserInfoRequest?.firstName ?? profile?.firstName ?? '',\r\n lastName: editUserInfoRequest?.lastName ?? profile?.lastName ?? '',\r\n insertion: editUserInfoRequest?.insertion ?? profile?.insertion ?? '',\r\n avatar: profile?.avatar != null ? cdnFileUrl(profile?.avatar.hash) : undefined,\r\n function: editUserInfoRequest?.function ?? profile?.function ?? '',\r\n phoneNumber: editUserInfoRequest?.phoneNumber ?? profile?.phoneNumber ?? '',\r\n mobileNumber: editUserInfoRequest?.mobileNumber ?? profile?.mobileNumber,\r\n companyName: editUserInfoRequest?.companyName ?? profile?.customer.name ?? '',\r\n kvkNumber: editUserInfoRequest?.kvkNumber ?? profile?.customer.kvkNumber ?? '',\r\n legalForm: editUserInfoRequest?.legalForm ?? profile?.customer.legalForm,\r\n addressVisit: editUserInfoRequest?.addressVisit ?? profile?.customer.addressVisit ?? '',\r\n postalCodeVisit: editUserInfoRequest?.postalCodeVisit ?? profile?.customer.postalCodeVisit ?? '',\r\n cityVisit: editUserInfoRequest?.cityVisit ?? profile?.customer.cityVisit ?? '',\r\n isMailAddressDifferent: editUserInfoRequest?.isMailAddressDifferent ?? profile?.customer.isMailAddressDifferent ?? false,\r\n email: editUserInfoRequest?.email ?? profile?.email ?? '',\r\n emailInvoice: editUserInfoRequest?.emailInvoice ?? profile?.customer.emailInvoice ?? '',\r\n addressMail: editUserInfoRequest?.addressMail ?? profile?.customer.addressMail ?? '',\r\n postalCodeMail: editUserInfoRequest?.postalCodeMail ?? profile?.customer.postalCodeMail ?? '',\r\n cityMail: editUserInfoRequest?.cityMail ?? profile?.customer.cityMail ?? '',\r\n bankAccount: editUserInfoRequest?.bankAccount ?? profile?.customer.bankAccount ?? '',\r\n paymentMethod: editUserInfoRequest?.paymentMethod ?? profile?.customer.paymentMethod,\r\n website: editUserInfoRequest?.website ?? profile?.customer.website ?? ''\r\n }), [profile, editUserInfoRequest]);\r\n\r\n const userInfoItems = useMemo(() => ([\r\n {\r\n key: 'Aanhef',\r\n value: editUserInfoRequest?.gender != null ? getGenderDisplay(editUserInfoRequest.gender) : profile?.gender != null ? getGenderDisplay(profile.gender) : 'Onbekend',\r\n required: editUserInfoRequest != null && editUserInfoRequest.gender !== profile?.gender,\r\n include: true\r\n },\r\n {\r\n key: 'Voorletters',\r\n value: editUserInfoRequest?.initials ?? profile?.initials ?? 'Onbekend',\r\n required: editUserInfoRequest != null && editUserInfoRequest.initials !== profile?.initials,\r\n include: true\r\n },\r\n {\r\n key: 'Voornaam',\r\n value: editUserInfoRequest?.firstName ?? profile?.firstName ?? 'Onbekend',\r\n required: editUserInfoRequest != null && editUserInfoRequest.firstName !== profile?.firstName,\r\n include: true\r\n },\r\n {\r\n key: 'Tussenvoegsel',\r\n value: editUserInfoRequest?.insertion ?? profile?.insertion ?? '',\r\n required: editUserInfoRequest != null && editUserInfoRequest.insertion !== profile?.insertion,\r\n include: true\r\n },\r\n {\r\n key: 'Achternaam',\r\n value: editUserInfoRequest?.lastName ?? profile?.lastName ?? 'Onbekend',\r\n required: editUserInfoRequest != null && editUserInfoRequest.lastName !== profile?.lastName,\r\n include: true\r\n },\r\n {\r\n key: 'Functie',\r\n value: editUserInfoRequest?.function ?? profile?.function ?? 'Onbekend',\r\n required: editUserInfoRequest != null && editUserInfoRequest.function !== profile?.function,\r\n include: true\r\n },\r\n {\r\n key: 'E-mailadres',\r\n value: editUserInfoRequest?.email ?? profile?.email ?? 'Onbekend',\r\n required: editUserInfoRequest != null && editUserInfoRequest.email !== profile?.email,\r\n include: true\r\n },\r\n {\r\n key: 'Telefoonnummer',\r\n value: editUserInfoRequest?.phoneNumber ?? profile?.phoneNumber ?? 'Onbekend',\r\n required: editUserInfoRequest != null && editUserInfoRequest.phoneNumber !== profile?.phoneNumber,\r\n include: true\r\n },\r\n {\r\n key: 'Mobiel telefoonnummer',\r\n value: editUserInfoRequest?.mobileNumber ?? profile?.mobileNumber ?? 'Onbekend',\r\n required: editUserInfoRequest != null && editUserInfoRequest.mobileNumber !== profile?.mobileNumber,\r\n include: true\r\n }\r\n ]), [editUserInfoRequest, profile]);\r\n\r\n const customerInfoItems = useMemo(() => ([\r\n {\r\n key: 'Bedrijfsnaam',\r\n value: profile?.customer.name ?? 'Onbekend',\r\n required: editUserInfoRequest != null && editUserInfoRequest.companyName !== profile?.customer.name,\r\n include: true\r\n },\r\n {\r\n key: 'KvK-nummer',\r\n value: profile?.customer.kvkNumber ?? 'Onbekend',\r\n required: editUserInfoRequest != null && editUserInfoRequest.kvkNumber !== profile?.customer.kvkNumber,\r\n include: true\r\n },\r\n {\r\n key: 'Rechtsvorm',\r\n value: profile?.customer.legalForm != null ? getLegalFormDisplay(profile.customer.legalForm) : 'Onbekend',\r\n required: editUserInfoRequest != null && editUserInfoRequest.legalForm !== profile?.customer.legalForm,\r\n include: true\r\n },\r\n {\r\n key: 'Bezoekadres',\r\n value: profile?.customer.addressVisit ?? 'Onbekend',\r\n required: editUserInfoRequest != null && editUserInfoRequest.addressVisit !== profile?.customer.addressVisit,\r\n include: true\r\n },\r\n {\r\n key: 'Postcode',\r\n value: profile?.customer.postalCodeVisit ?? 'Onbekend',\r\n required: editUserInfoRequest != null && editUserInfoRequest.postalCodeVisit !== profile?.customer.postalCodeVisit,\r\n include: true\r\n },\r\n {\r\n key: 'Plaats',\r\n value: profile?.customer.cityVisit ?? 'Onbekend',\r\n required: editUserInfoRequest != null && editUserInfoRequest.cityVisit !== profile?.customer.cityVisit,\r\n include: true\r\n },\r\n {\r\n key: 'Afwijkend postadres',\r\n value: profile?.customer.isMailAddressDifferent ? 'Ja' : 'Nee',\r\n required: editUserInfoRequest != null && editUserInfoRequest.isMailAddressDifferent !== profile?.customer.isMailAddressDifferent,\r\n include: true\r\n },\r\n {\r\n key: 'Postadres',\r\n value: profile?.customer.addressMail ?? 'Onbekend',\r\n required: editUserInfoRequest != null && editUserInfoRequest.addressMail !== profile?.customer.addressMail,\r\n include: profile?.customer.isMailAddressDifferent\r\n },\r\n {\r\n key: 'Postadres postcode',\r\n value: profile?.customer.postalCodeMail ?? 'Onbekend',\r\n required: editUserInfoRequest != null && editUserInfoRequest.postalCodeMail !== profile?.customer.postalCodeMail,\r\n include: profile?.customer.isMailAddressDifferent\r\n },\r\n {\r\n key: 'Postadres plaats',\r\n value: profile?.customer.cityMail ?? 'Onbekend',\r\n required: editUserInfoRequest != null && editUserInfoRequest.cityMail !== profile?.customer.cityMail,\r\n include: profile?.customer.isMailAddressDifferent\r\n },\r\n {\r\n key: 'E-mailadres voor facturatie',\r\n value: editUserInfoRequest?.emailInvoice ?? profile?.customer.emailInvoice ?? 'Onbekend',\r\n required: editUserInfoRequest != null && editUserInfoRequest.emailInvoice !== profile?.customer.emailInvoice,\r\n include: true\r\n },\r\n {\r\n key: 'Website',\r\n value: editUserInfoRequest?.website ?? profile?.customer.website ?? 'Onbekend',\r\n required: editUserInfoRequest != null && editUserInfoRequest.website !== profile?.customer.website,\r\n include: true\r\n }\r\n ]), [profile, editUserInfoRequest]);\r\n\r\n const paymentItems = useMemo(() => ([\r\n {\r\n key: 'Rekeningnummer',\r\n value: profile?.customer.bankAccount ?? 'Onbekend',\r\n required: editUserInfoRequest != null && editUserInfoRequest.bankAccount !== profile?.customer.bankAccount,\r\n include: true\r\n },\r\n {\r\n key: 'Betaalwijze',\r\n value: profile?.customer.paymentMethod != null ? getPaymentMethodDisplay(profile.customer.paymentMethod) : 'Onbekend',\r\n required: editUserInfoRequest != null && editUserInfoRequest.paymentMethod !== profile?.customer.paymentMethod,\r\n include: true\r\n }\r\n ]), [profile, editUserInfoRequest]);\r\n\r\n const modulesInfoItems = useMemo(() => ([\r\n {\r\n key: 'Incassomodule Nederland',\r\n value: profile?.rights.some((ur) => ur.name === Right.Collection) ? 'Actief' : 'Inactief',\r\n include: true\r\n },\r\n {\r\n key: 'Incassomodule Buitenland',\r\n value: profile?.rights.some((ur) => ur.name === Right.CollectionAbroad) ? 'Actief' : 'Inactief',\r\n include: true\r\n },\r\n {\r\n key: 'Module Rechtshulp',\r\n value: profile?.rights.some((ur) => ur.name === Right.LegalAid) ? 'Actief' : 'Inactief',\r\n include: true\r\n },\r\n {\r\n key: 'Algemene voorwaarden',\r\n value: profile?.rights.some((ur) => ur.name === Right.GeneralConditions) ? 'Actief' : 'Inactief',\r\n include: true\r\n }\r\n ]), [profile]);\r\n\r\n return isLoading ? : (\r\n <>\r\n \r\n \r\n

Mijn profiel

\r\n {!editMode ? (\r\n <>\r\n \r\n \r\n \r\n setEditMode(!editMode)\r\n }\r\n }\r\n />\r\n \r\n \r\n \r\n\r\n \r\n \r\n {\r\n editUserInfoRequest != null &&\r\n \r\n \r\n \r\n }\r\n \r\n ) : (\r\n <>\r\n initialValues={initialValues} onSubmit={handleSubmit}>\r\n {({ isSubmitting, values }) => (\r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \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 {values.isMailAddressDifferent &&\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n )}\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 Profile;\r\n","import { FormGroup, FormikFormControl, FormikFormSelect, FormikFormSwitch, FormikFormYesNo, FormRow } from 'components/atoms/form';\r\nimport HeaderAction from 'components/atoms/HeaderAction';\r\nimport { useFormikContext } from 'formik';\r\nimport { InviteCustomerInputModel } from 'hooks/userInvitation/types';\r\nimport React, { FC } from 'react';\r\nimport { Row, Col } from 'react-grid-system';\r\nimport { legelFormOptions } from 'utils/constants/legalformconstants';\r\nimport { paymentMethodOptions } from 'utils/constants/paymentmethodconstants';\r\nimport { genderOptions } from 'utils/constants/personconstants';\r\n\r\nexport interface Step2Props { }\r\n\r\nconst Step2: FC = () => {\r\n const { values } = useFormikContext();\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \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 {values.isMailAddressDifferent && (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Step2;\r\n","import { useApi } from 'hooks/api';\r\nimport { KvkBasicProfileModel, KvkDataModel } from './types';\r\n\r\nconst useKvk = () => {\r\n\r\n const { get } = useApi();\r\n\r\n const baseUrl = '/kvk';\r\n\r\n const searchKvk = async (searchValue: string) => {\r\n const response = get(\r\n `${baseUrl}/search/companies?name=${searchValue}`\r\n );\r\n\r\n return response;\r\n };\r\n\r\n const getBasicProfile = async (kvkNumber: string) => {\r\n const response = get(\r\n `${baseUrl}/profile/${kvkNumber}`\r\n );\r\n\r\n return response;\r\n };\r\n\r\n return {\r\n searchKvk,\r\n getBasicProfile\r\n };\r\n};\r\n\r\nexport default useKvk;\r\n","import { Loading } from 'components/atoms/button/Button/styles';\r\nimport { FormGroup, FormSelect } from 'components/atoms/form';\r\nimport { IOption } from 'components/atoms/form/FormSelect';\r\nimport InvalidFeedback from 'components/atoms/form/InvalidFeedback';\r\nimport Margin from 'components/atoms/Margin';\r\nimport { KvkCompanyInfoModel } from 'hooks/kvk/types';\r\nimport useKvk from 'hooks/kvk/useKvk';\r\nimport { debounce } from 'lodash';\r\nimport React, { FC, useEffect, useState } from 'react';\r\nimport { InputActionMeta, Options } from 'react-select';\r\nimport { Option } from 'react-select/src/filters';\r\n\r\ninterface KvkSearchProps {\r\n onSelectChange: (value: KvkCompanyInfoModel | undefined) => void;\r\n notFoundMessage?: string;\r\n onSearchDone?: (hasResults: boolean) => void;\r\n}\r\n\r\nconst KvkSearch: FC = ({ onSelectChange, notFoundMessage, onSearchDone }) => {\r\n const { searchKvk } = useKvk();\r\n\r\n const [searchString, setSearchString] = useState();\r\n const [value, setValue] = useState | null>(null);\r\n const [companies, setCompanies] = useState([]);\r\n const [companyOptions, setCompanyOptions] = useState([]);\r\n const [isLoadingKvk, setIsLoadingKvk] = useState(false);\r\n const [error, setError] = useState('');\r\n\r\n const debounced_test = debounce((newValue: string, actionMeta: InputActionMeta) => {\r\n if (actionMeta.action === 'input-change') {\r\n setSearchString(newValue);\r\n }\r\n }, 1500);\r\n\r\n const searchInKvk = async () => {\r\n if (searchString === undefined) {\r\n return;\r\n }\r\n\r\n setError('');\r\n setIsLoadingKvk(true);\r\n\r\n const response = await searchKvk(searchString);\r\n\r\n if (response.ok && response.data) {\r\n setCompanies(response.data.items);\r\n const options = response.data.items\r\n .map((item) => ({\r\n label: item.name,\r\n value: item.kvkNumber,\r\n data: item\r\n }));\r\n setCompanyOptions(options);\r\n\r\n if (options.length === 0) {\r\n const error = notFoundMessage ?? 'Het bedrijf kan niet worden gevonden in het KvK register';\r\n setError(error);\r\n onSearchDone && onSearchDone(false);\r\n setValue(null);\r\n } else {\r\n onSearchDone && onSearchDone(true);\r\n }\r\n } else {\r\n onSearchDone && onSearchDone(false);\r\n setValue(null);\r\n }\r\n\r\n setIsLoadingKvk(false);\r\n };\r\n\r\n useEffect(() => {\r\n (async () => {\r\n await searchInKvk();\r\n })();\r\n }, [searchString]);\r\n\r\n const onCompanySelectChange = (option: IOption | Options | null) => {\r\n if (option == null || option instanceof Array) {\r\n return;\r\n }\r\n\r\n setValue(option);\r\n\r\n const company = companies.find((c) => c.kvkNumber === option.value);\r\n\r\n onSelectChange(company);\r\n };\r\n\r\n return (\r\n <>\r\n \r\n error ? (notFoundMessage ?? 'Het bedrijf kan niet worden gevonden in het KvK register') : 'Start met zoeken'}\r\n loadingMessage={() => 'Aan het zoeken naar bedrijven...'}\r\n />\r\n {error != null && {error}}\r\n \r\n {isLoadingKvk && (\r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default KvkSearch;\r\n","import { LegalForm } from 'utils/constants/legalformconstants';\r\n\r\nexport const KvkLegalFormStringToLegalForm = (legalForm: string) => {\r\n\r\n switch (legalForm.toLowerCase()) {\r\n case 'eenmanszaak':\r\n case 'eenmanszaak met meer dan één eigenaar':\r\n return LegalForm.Proprietorship;\r\n case 'vennootschap onder firma':\r\n return LegalForm.Partnership;\r\n case 'commanditaire vennootschap':\r\n return LegalForm.LimitedPartnerschip;\r\n case 'besloten vennootschap':\r\n case 'besloten vennootschap met gewone structuur':\r\n return LegalForm.PrivateCompany;\r\n case 'naamloze vennootschap':\r\n case 'naamloze vennootschap met gewone structuur':\r\n case 'naamloze vennootschap blijkens statuten structuurvennootschap':\r\n case 'naamloze vennootschap beleggingsmaatschappij met veranderlijk kapitaal':\r\n case 'naamloze vennootschap beleggingsmaatschappij met veranderlijk kapitaal blijkens statuten structuurvennootschap':\r\n case 'europese naamloze vennootschap (SE) met gewone structuur':\r\n case 'europese naamloze vennootschap (SE) blijkens statuten structuurvennootschap':\r\n return LegalForm.LimitedLiabilityCompany;\r\n case 'vereniging met volledige rechtsbevoegdheid':\r\n case 'vereniging met beperkte rechtsbevoegdheid':\r\n return LegalForm.Union;\r\n case 'stichting':\r\n return LegalForm.Foundation;\r\n default:\r\n return LegalForm.Unknown;\r\n }\r\n};\r\n","import Margin from 'components/atoms/Margin';\r\nimport KvkSearch from 'components/organisms/KvkSearch';\r\nimport { useFormikContext } from 'formik';\r\nimport { KvkCompanyInfoModel } from 'hooks/kvk/types';\r\nimport useKvk from 'hooks/kvk/useKvk';\r\nimport React, { FC } from 'react';\r\nimport { KvkLegalFormStringToLegalForm } from 'utils/kvkHelper';\r\n\r\nexport interface Step1Props { }\r\n\r\nconst Step1: FC = () => {\r\n const { getBasicProfile } = useKvk();\r\n const { setFieldValue } = useFormikContext();\r\n\r\n const onCompanySelectChange = async (company: KvkCompanyInfoModel | undefined) => {\r\n if (company === undefined) {\r\n setFieldValue('kvkNumber', '');\r\n setFieldValue('name', '');\r\n return;\r\n }\r\n\r\n const companyData = await getBasicProfile(company.kvkNumber);\r\n\r\n if (companyData.data && companyData.data.addresses?.[0]) {\r\n const { street, houseNumber, houseNumberAddition, postalCode, city } = companyData.data.addresses?.[0] ?? {};\r\n\r\n const addressVisit = `${street} ${houseNumber}${houseNumberAddition ?? ''}`;\r\n\r\n setFieldValue('postalCodeVisit', postalCode);\r\n setFieldValue('cityVisit', city);\r\n setFieldValue('addressVisit', addressVisit);\r\n }\r\n\r\n if (companyData.data != null && companyData.data.legalForm != null) {\r\n setFieldValue('legalForm', KvkLegalFormStringToLegalForm(companyData.data.legalForm));\r\n }\r\n\r\n setFieldValue('kvkNumber', company.kvkNumber);\r\n setFieldValue('name', company.name);\r\n\r\n };\r\n\r\n const onSearchDone = (hasResults: boolean) => {\r\n if (hasResults) {\r\n return;\r\n }\r\n\r\n setFieldValue('kvkNumber', '');\r\n setFieldValue('name', '');\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Step1;\r\n","import { useApi } from 'hooks/api';\r\nimport { useQuery } from 'react-query';\r\nimport { CustomerPlainModel } from './types';\r\n\r\nexport const allCustomersQueryKey = 'customer.all';\r\n\r\n\r\n\r\nexport default function useAllCustomers() {\r\n const { get } = useApi();\r\n const getAllCustomers = async () => {\r\n const { data } = await get('/customer');\r\n\r\n return data;\r\n };\r\n\r\n return useQuery(allCustomersQueryKey, getAllCustomers);\r\n}\r\n","export enum DocumentType {\r\n General = 0,\r\n TermsAndConditions = 1,\r\n MaintenanceContract = 2,\r\n Agreement = 3\r\n};\r\n\r\nexport const getDocumentTypeDisplay = (type: DocumentType): string => {\r\n switch (type) {\r\n case DocumentType.General:\r\n return 'Algemeen';\r\n case DocumentType.TermsAndConditions:\r\n return 'Algemene voorwaarden';\r\n case DocumentType.MaintenanceContract:\r\n return 'Onderhoudscontract';\r\n case DocumentType.Agreement:\r\n return 'Overeenkomst';\r\n }\r\n\r\n return '';\r\n};\r\n","import React, { FC } from 'react';\r\nimport { navigate, RouteComponentProps } from '@reach/router';\r\nimport { Card, CardBody } from 'components/atoms/card';\r\nimport Table from 'components/molecules/table';\r\nimport { Column } from 'react-table';\r\nimport useModal from 'hooks/modal';\r\nimport Modal from 'components/organisms/Modal';\r\nimport Wizard from 'components/organisms/Wizard';\r\nimport Step2 from './components/Step2';\r\nimport Step1 from './components/Step1';\r\nimport { FormikHelpers } from 'formik';\r\nimport { CustomerPlainModel } from 'hooks/customer/types';\r\nimport { toFormikErrors } from 'utils/errorhelper';\r\nimport useAllCustomers from 'hooks/customer/useAllCustomers';\r\nimport { useHeader } from 'contexts/headerContext';\r\nimport { InviteCustomerInputModel } from 'hooks/userInvitation/types';\r\nimport useUserInvitation from 'hooks/userInvitation/useUserInvitation';\r\nimport { format, parseISO } from 'date-fns';\r\n\r\nconst columns: Column[] = [\r\n {\r\n Header: 'Relatienummer',\r\n accessor: (customer) => customer.relationNumber\r\n },\r\n {\r\n Header: 'Bedrijfsnaam',\r\n accessor: (customer) => customer.name\r\n },\r\n {\r\n Header: 'KvK-nummer',\r\n accessor: (customer) => customer.kvkNumber\r\n },\r\n {\r\n Header: 'Laatste inlog',\r\n accessor: (customer) => customer.lastLogin != null ? parseISO(customer.lastLogin).getTime() : null,\r\n Cell: ({ value }: any) => value != null ? format(value, 'dd-MM-yyyy HH:mm') : ''\r\n },\r\n {\r\n Header: 'Aangemaakt op',\r\n accessor: (customer) => customer.created != null ? parseISO(customer.created).getTime() : null,\r\n Cell: ({ value }: any) => value != null ? format(value, 'dd-MM-yyyy HH:mm') : ''\r\n }\r\n];\r\n\r\nconst Customers: FC = () => {\r\n useHeader('Relaties');\r\n\r\n const { inviteCustomer } = useUserInvitation();\r\n const { data: customers = [], refetch, isLoading } = useAllCustomers();\r\n\r\n const onAddCustomer = async (values: InviteCustomerInputModel, { setSubmitting, setErrors }: FormikHelpers) => {\r\n const response = await inviteCustomer(values);\r\n\r\n if (response.ok) {\r\n refetch();\r\n hide();\r\n } else if (response.errors) {\r\n const errors = toFormikErrors(response.errors);\r\n setErrors(errors);\r\n }\r\n\r\n setSubmitting(false);\r\n };\r\n\r\n const initialValues: InviteCustomerInputModel = {\r\n gender: null,\r\n kvkNumber: '',\r\n name: '',\r\n initials: '',\r\n firstName: '',\r\n lastName: '',\r\n phoneNumber: '',\r\n mobileNumber: '',\r\n email: '',\r\n emailInvoice: '',\r\n addressVisit: '',\r\n cityVisit: '',\r\n postalCodeVisit: '',\r\n isMailAddressDifferent: false,\r\n addressMail: '',\r\n postalCodeMail: '',\r\n cityMail: '',\r\n function: '',\r\n bankAccount: '',\r\n paymentMethod: null,\r\n relationNumber: '',\r\n hasModuleCollection: false,\r\n hasModuleCollectionAbroad: false,\r\n hasModuleLegalAid: false,\r\n hasModuleGeneralConditions: false\r\n };\r\n\r\n const [show, hide] = useModal(\r\n ({ in: inProp, onExited }) => (\r\n \r\n \r\n initialValues={initialValues}\r\n initialStep={0}\r\n onSubmitLabel=\"Uitnodiging versturen\"\r\n onSubmit={onAddCustomer}\r\n steps={[\r\n {\r\n step: 1,\r\n title: 'Zoek bedrijf',\r\n child: \r\n },\r\n {\r\n step: 2,\r\n title: 'Gegevens',\r\n child: \r\n }\r\n ]}\r\n />\r\n \r\n ),\r\n []\r\n );\r\n\r\n const navigateToCustomerDetailPage = (item: CustomerPlainModel | undefined) => {\r\n navigate(`/admin/customers/${item?.id}/detail`, { state: { customer: item } });\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n isLoading={isLoading}\r\n data={customers}\r\n noDataMessage=\"Geen relaties beschikbaar\"\r\n columns={columns}\r\n search\r\n onAddClick={show}\r\n actions={[\r\n {\r\n icon: 'right',\r\n onClick: (item) => navigateToCustomerDetailPage(item),\r\n title: 'Ga naar detail pagina'\r\n }\r\n ]}\r\n />\r\n \r\n \r\n );\r\n};\r\n\r\nexport default Customers;\r\n","import { CustomError, useApi } from 'hooks/api';\r\nimport { useQuery } from 'react-query';\r\nimport { appendObject } from 'utils/objectAppender';\r\nimport { buildUriWithParams } from 'utils/urihelper';\r\nimport { CustomerModel, EditCustomerInputModel, GetCustomersInputModel } from './types';\r\n\r\nexport const allCustomersFullQueryKey = 'customer.all.full';\r\n\r\nconst useCustomer = () => {\r\n\r\n const { get, post, put } = useApi();\r\n\r\n const baseUrl = '/customer';\r\n\r\n const getAllCustomers = async (params?: GetCustomersInputModel) => {\r\n const url = buildUriWithParams(`${baseUrl}/all`, params);\r\n\r\n const respone = await get(url);\r\n\r\n return respone;\r\n };\r\n\r\n const useAllCustomers = (params?: GetCustomersInputModel) => {\r\n const queryKey = [allCustomersFullQueryKey, params];\r\n\r\n return useQuery(queryKey, async () => {\r\n const response = await getAllCustomers(params);\r\n\r\n if (!response.ok && response.errors != null) {\r\n throw response.errors;\r\n }\r\n\r\n return response.data ?? [];\r\n });\r\n };\r\n\r\n const editCustomer = async (values: EditCustomerInputModel) => {\r\n const form = new FormData();\r\n\r\n appendObject(values, form);\r\n\r\n const response = await put(baseUrl, form);\r\n\r\n return response;\r\n };\r\n\r\n const setCustomerBlocked = async (id: string, state: boolean) => {\r\n const response = await post(\r\n `${baseUrl}/${id}/setBlocked`, state\r\n );\r\n\r\n return response;\r\n };\r\n\r\n return {\r\n getAllCustomers,\r\n useAllCustomers,\r\n editCustomer,\r\n setCustomerBlocked\r\n };\r\n};\r\n\r\nexport default useCustomer;\r\n","import { useApi } from 'hooks/api';\r\nimport { buildUriWithParams } from 'utils/urihelper';\r\nimport { GetRightInputModel, RightModel } from './types';\r\n\r\nconst useRights = () => {\r\n\r\n const baseUrl = '/right';\r\n\r\n const { get } = useApi();\r\n\r\n const getRights = async (params?: GetRightInputModel) => {\r\n const url = buildUriWithParams(baseUrl, params);\r\n\r\n const response = await get(url);\r\n\r\n return response;\r\n };\r\n\r\n return {\r\n getRights\r\n };\r\n};\r\n\r\nexport default useRights;\r\n","import { Card, CardBody } from 'components/atoms/card';\r\nimport { FormYesNo } from 'components/atoms/form';\r\nimport Margin from 'components/atoms/Margin';\r\nimport Table from 'components/molecules/table';\r\nimport { H3 } from 'components/atoms/text';\r\nimport { CustomerModel } from 'hooks/customer/types';\r\nimport { RightModel } from 'hooks/right/types';\r\nimport React, { FC, useMemo, useState } from 'react';\r\nimport { Column } from 'react-table';\r\nimport { getRightDisplay } from 'utils/constants/rightconstants';\r\nimport useModal from 'hooks/modal';\r\nimport Modal from 'components/organisms/Modal';\r\nimport Group from 'components/molecules/Group';\r\nimport { Button } from 'components/atoms/button';\r\nimport useModules from 'hooks/modules/useModules';\r\nimport { toast } from 'react-toastify';\r\n\r\ninterface CustomerDetailModulesProps {\r\n customer: CustomerModel;\r\n rights: RightModel[];\r\n fetchCustomer: () => Promise;\r\n}\r\n\r\ninterface ModuleModel {\r\n id: string;\r\n name: string;\r\n enabled: boolean;\r\n}\r\n\r\nconst CustomerDetailModules: FC = ({ customer, rights, fetchCustomer }) => {\r\n\r\n const { editCustomerModule } = useModules();\r\n\r\n const [isLoadingModuleEdit, setIsLoadingModuleEdit] = useState(false);\r\n const [moduleToToggle, setModuleToToggle] = useState();\r\n\r\n const modules: ModuleModel[] = useMemo(() => rights.map((r) => ({\r\n id: r.id,\r\n name: getRightDisplay(r.name),\r\n enabled: customer?.user.rights.some((ur) => ur.id === r.id) ?? false\r\n })), [customer]);\r\n\r\n const openToggleModal = (module: ModuleModel) => {\r\n setModuleToToggle(module);\r\n showToggleModal();\r\n };\r\n\r\n const closeToggleModal = () => {\r\n hideToggleModal();\r\n setModuleToToggle(undefined);\r\n };\r\n\r\n const [showToggleModal, hideToggleModal] = useModal(\r\n ({ in: inProp, onExited }) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n ),\r\n [moduleToToggle, isLoadingModuleEdit]\r\n );\r\n\r\n const editModule = async () => {\r\n if (moduleToToggle == null) {\r\n return;\r\n }\r\n\r\n setIsLoadingModuleEdit(true);\r\n\r\n const response = await editCustomerModule({ rightId: moduleToToggle.id, customerId: customer.id, enable: !moduleToToggle.enabled });\r\n\r\n if (response.ok) {\r\n await fetchCustomer();\r\n toast.success(`Module is succesvol ${moduleToToggle.enabled ? 'uitgezet' : 'aangezet'}`);\r\n closeToggleModal();\r\n } else {\r\n toast.error('Oops, er ging iets mis bij het bewerken van deze module');\r\n }\r\n\r\n setIsLoadingModuleEdit(false);\r\n };\r\n\r\n const moduleColumns: Column[] = [\r\n {\r\n Header: 'Naam',\r\n accessor: (item) => item.name\r\n },\r\n {\r\n Header: 'Status',\r\n accessor: (item) => openToggleModal(item)} />\r\n }\r\n ];\r\n\r\n return (\r\n \r\n \r\n \r\n

Modules

\r\n
\r\n \r\n \r\n \r\n \r\n \r\n data={modules}\r\n columns={moduleColumns}\r\n />\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default CustomerDetailModules;\r\n","import { useApi } from 'hooks/api';\r\nimport { CustomErrors } from 'hooks/api/types';\r\nimport { useQuery } from 'react-query';\r\nimport { appendObject } from 'utils/objectAppender';\r\nimport { buildUriWithParams } from 'utils/urihelper';\r\nimport { AddGeneralDocumentInputModel, DocumentModel, GetDocumentInputModel, SendDocumentMailInputModel } from './types';\r\n\r\nexport const allDocumentsQueryKey = 'documents.all';\r\n\r\nconst useDocuments = () => {\r\n\r\n const { get, post, deleteCall } = useApi();\r\n\r\n const baseUrl = '/document';\r\n\r\n const getDocuments = async (params?: GetDocumentInputModel) => {\r\n const url = buildUriWithParams(baseUrl, params);\r\n\r\n const response = await get(url);\r\n\r\n return response;\r\n };\r\n\r\n const useAllDocuments = (params?: GetDocumentInputModel) => {\r\n const queryKey = [allDocumentsQueryKey, params];\r\n\r\n return useQuery(queryKey, async () => {\r\n const response = await getDocuments(params);\r\n\r\n if (!response.ok && response.errors != null) {\r\n throw response.errors;\r\n }\r\n\r\n return response.data ?? [];\r\n });\r\n };\r\n\r\n const getDocumentFile = (documentId: string) => {\r\n const response = get(`${baseUrl}/${documentId}/file`);\r\n\r\n return response;\r\n };\r\n\r\n const sendDocumentMail = (id: string, values: SendDocumentMailInputModel) => {\r\n const response = post(`${baseUrl}/${id}/mail`, values);\r\n\r\n return response;\r\n };\r\n\r\n const addGeneralDocument = async (values: AddGeneralDocumentInputModel) => {\r\n const fd = new FormData();\r\n\r\n appendObject(values, fd);\r\n\r\n const response = await post(baseUrl, fd);\r\n\r\n return response;\r\n };\r\n\r\n const deleteDocument = async (id: string) => {\r\n const response = await deleteCall(`${baseUrl}/${id}`);\r\n\r\n return response;\r\n };\r\n\r\n return {\r\n getDocuments,\r\n useAllDocuments,\r\n getDocumentFile,\r\n sendDocumentMail,\r\n addGeneralDocument,\r\n deleteDocument\r\n };\r\n};\r\n\r\nexport default useDocuments;\r\n","import { Card, CardBody } from 'components/atoms/card';\r\nimport Margin from 'components/atoms/Margin';\r\nimport { H3 } from 'components/atoms/text';\r\nimport { CustomerModel } from 'hooks/customer/types';\r\nimport useDocuments from 'hooks/document';\r\nimport { DocumentModel, SendDocumentMailInputModel } from 'hooks/document/types';\r\nimport React, { FC, useState } from 'react';\r\nimport { Column } from 'react-table';\r\nimport Table from 'components/molecules/table';\r\nimport { DocumentType, getDocumentTypeDisplay } from 'utils/constants/documentConstants';\r\nimport { toast } from 'react-toastify';\r\nimport useModal from 'hooks/modal';\r\nimport Modal from 'components/organisms/Modal';\r\nimport { Form, Formik, FormikHelpers } from 'formik';\r\nimport { FormGroup, FormikFormControl } from 'components/atoms/form';\r\nimport Group from 'components/molecules/Group';\r\nimport { Button } from 'components/atoms/button';\r\nimport { toFormikErrors } from 'utils/errorhelper';\r\nimport { format, parseISO } from 'date-fns';\r\n\r\ninterface CustomerDetailDocumentsProps {\r\n customer: CustomerModel;\r\n}\r\n\r\nconst CustomerDetailDocuments: FC = ({ customer }) => {\r\n\r\n const { useAllDocuments, getDocumentFile, sendDocumentMail } = useDocuments();\r\n const { data: documents = [], isLoading: isLoadingDocuments } = useAllDocuments({ customerId: customer.id, types: [DocumentType.Agreement, DocumentType.MaintenanceContract, DocumentType.TermsAndConditions] });\r\n\r\n const printRef = React.createRef();\r\n const [fileToPrint, setFileToPrint] = useState();\r\n const [documentToMail, setDocumentToMail] = useState();\r\n\r\n const documentColumns: Column[] = [\r\n {\r\n Header: 'Naam',\r\n accessor: (item) => item.fileName\r\n },\r\n {\r\n Header: 'Type',\r\n accessor: (item) => getDocumentTypeDisplay(item.type)\r\n },\r\n {\r\n Header: 'Versie',\r\n accessor: (item) => item.version\r\n },\r\n {\r\n id: 'date',\r\n Header: 'Datum',\r\n accessor: (item) => parseISO(item.date).getTime(),\r\n Cell: ({ value }: any) => format(value, 'dd-MM-yyyy')\r\n }\r\n ];\r\n\r\n const downloadDocument = async (document: DocumentModel) => {\r\n const response = await getDocumentFile(document.id);\r\n\r\n if (response.ok) {\r\n saveAs(await response.blob(), document.fileName);\r\n } else {\r\n toast.error('Er ging iets fout bij het ophalen van de algemene voorwaarden');\r\n }\r\n };\r\n\r\n const printDocument = async (document: DocumentModel) => {\r\n const response = await getDocumentFile(document.id);\r\n\r\n if (response.ok) {\r\n const url = window.URL.createObjectURL(await response.blob());\r\n setFileToPrint(url);\r\n } else {\r\n toast.error('Er ging iets fout bij het ophalen van de algemene voorwaarden');\r\n }\r\n };\r\n\r\n const handleMail = async (values: SendDocumentMailInputModel, { setErrors }: FormikHelpers) => {\r\n if (!documentToMail) {\r\n return;\r\n }\r\n\r\n const response = await sendDocumentMail(documentToMail.id, values);\r\n\r\n if (response.ok) {\r\n toast.success('Document is succesvol verstuurd');\r\n closeMailModal();\r\n } else if (response.errors) {\r\n const errors = toFormikErrors(response.errors);\r\n setErrors(errors);\r\n } else {\r\n toast.error('Er ging iets fout bij het versturen van het document');\r\n }\r\n };\r\n\r\n const initialValuesSendMail: SendDocumentMailInputModel = {\r\n toEmail: '',\r\n toName: ''\r\n };\r\n\r\n const [showMailModal, hideMailModal] = useModal(\r\n ({ in: inProp, onExited }) => (\r\n \r\n initialValues={initialValuesSendMail} onSubmit={handleMail}>\r\n {({ isSubmitting, isValid }) => (\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 [documentToMail]\r\n );\r\n\r\n const openMailModal = (document: DocumentModel) => {\r\n setDocumentToMail(document);\r\n showMailModal();\r\n };\r\n\r\n const closeMailModal = () => {\r\n setDocumentToMail(undefined);\r\n hideMailModal();\r\n };\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n

Documenten

\r\n
\r\n \r\n \r\n \r\n \r\n \r\n data={documents}\r\n columns={documentColumns}\r\n isLoading={isLoadingDocuments}\r\n sortBy={[{ id: 'date', desc: true }]}\r\n actions={[\r\n {\r\n icon: 'download',\r\n title: 'Document downloaden',\r\n onClick: downloadDocument\r\n },\r\n {\r\n icon: 'print',\r\n title: 'Document printen',\r\n onClick: printDocument\r\n },\r\n {\r\n icon: 'mail',\r\n title: 'Document mailen',\r\n onClick: openMailModal\r\n }\r\n ]}\r\n />\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n {\r\n fileToPrint &&\r\n \r\n }\r\n \r\n );\r\n};\r\n\r\nexport default CustomerDetailDocuments;\r\n","import { Card, CardBody } from 'components/atoms/card';\r\nimport Margin from 'components/atoms/Margin';\r\nimport { H3 } from 'components/atoms/text';\r\nimport { CustomerModel } from 'hooks/customer/types';\r\nimport { AddGeneralDocumentInputModel, DocumentModel } from 'hooks/document/types';\r\nimport React, { FC, useState } from 'react';\r\nimport { Column } from 'react-table';\r\nimport Table from 'components/molecules/table';\r\nimport { DocumentType, getDocumentTypeDisplay } from 'utils/constants/documentConstants';\r\nimport { toast } from 'react-toastify';\r\nimport useDocuments from 'hooks/document';\r\nimport Group from 'components/molecules/Group';\r\nimport { Button } from 'components/atoms/button';\r\nimport useModal from 'hooks/modal';\r\nimport Modal from 'components/organisms/Modal';\r\nimport { Form, Formik, FormikHelpers } from 'formik';\r\nimport { FormGroup, FormikFormControl, FormikFormDate, FormikFormFile } from 'components/atoms/form';\r\nimport { toFormikErrors } from 'utils/errorhelper';\r\nimport { format, parseISO } from 'date-fns';\r\n\r\ninterface CustomerDetailFilesProps {\r\n customer: CustomerModel;\r\n}\r\n\r\nconst CustomerDetailFiles: FC = ({ customer }) => {\r\n\r\n const { useAllDocuments, getDocumentFile, addGeneralDocument, deleteDocument } = useDocuments();\r\n const { data: files = [], isLoading: isLoadingFiles, refetch: refetchFiles } = useAllDocuments({ customerId: customer.id, type: DocumentType.General });\r\n\r\n const printRef = React.createRef();\r\n const [fileToPrint, setFileToPrint] = useState();\r\n const [documentToDelete, setDocumentToDelete] = useState();\r\n const [isLoadingDelete, setIsLoadingDelete] = useState(false);\r\n\r\n const documentColumns: Column[] = [\r\n {\r\n Header: 'Naam',\r\n accessor: (item) => item.fileName\r\n },\r\n {\r\n Header: 'Type',\r\n accessor: (item) => getDocumentTypeDisplay(item.type)\r\n },\r\n {\r\n Header: 'Versie',\r\n accessor: (item) => item.version\r\n },\r\n {\r\n id: 'date',\r\n Header: 'Datum',\r\n accessor: (item) => parseISO(item.date).getTime(),\r\n Cell: ({ value }: any) => format(value, 'dd-MM-yyyy')\r\n }\r\n ];\r\n\r\n const downloadDocument = async (document: DocumentModel) => {\r\n const response = await getDocumentFile(document.id);\r\n\r\n if (response.ok) {\r\n saveAs(await response.blob(), document.fileName);\r\n } else {\r\n toast.error('Er ging iets fout bij het ophalen van de algemene voorwaarden');\r\n }\r\n };\r\n\r\n const printDocument = async (document: DocumentModel) => {\r\n const response = await getDocumentFile(document.id);\r\n\r\n if (response.ok) {\r\n const url = window.URL.createObjectURL(await response.blob());\r\n setFileToPrint(url);\r\n } else {\r\n toast.error('Er ging iets fout bij het ophalen van de algemene voorwaarden');\r\n }\r\n };\r\n\r\n // Methods.\r\n const handleAddGeneralDocument = async (values: AddGeneralDocumentInputModel, { setErrors, setSubmitting, resetForm }: FormikHelpers) => {\r\n const response = await addGeneralDocument(values);\r\n\r\n if (response.ok) {\r\n refetchFiles();\r\n hideAddGeneralDocument();\r\n resetForm();\r\n } else if (response.errors) {\r\n const errors = toFormikErrors(response.errors);\r\n setErrors(errors);\r\n }\r\n\r\n setSubmitting(false);\r\n };\r\n\r\n const initialValues: AddGeneralDocumentInputModel = {\r\n date: new Date(),\r\n version: '',\r\n customerId: customer.id,\r\n file: undefined\r\n };\r\n\r\n const [showAddGeneralDocument, hideAddGeneralDocument] = useModal(\r\n ({ in: inProp, onExited }) => (\r\n \r\n initialValues={initialValues} onSubmit={handleAddGeneralDocument}>\r\n {({ isSubmitting }) => (\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 [customer]\r\n );\r\n\r\n const openDeleteModal = (document: DocumentModel) => {\r\n setDocumentToDelete(document);\r\n showDeleteModal();\r\n };\r\n\r\n const closeDeleteModal = () => {\r\n hideDeleteModal();\r\n setDocumentToDelete(undefined);\r\n };\r\n\r\n const handleDelete = async () => {\r\n if (documentToDelete == null) {\r\n return;\r\n }\r\n\r\n setIsLoadingDelete(true);\r\n\r\n const response = await deleteDocument(documentToDelete.id);\r\n\r\n if (response.ok) {\r\n refetchFiles();\r\n closeDeleteModal();\r\n } else {\r\n toast.error('Er ging iets fout bij het verwijderen van het bestand');\r\n }\r\n\r\n setIsLoadingDelete(false);\r\n };\r\n\r\n const [showDeleteModal, hideDeleteModal] = useModal(\r\n ({ in: inProp, onExited }) => (\r\n \r\n

Bestandsnaam: {documentToDelete?.fileName}

\r\n

Versie: {documentToDelete?.version}

\r\n \r\n \r\n \r\n \r\n
\r\n ),\r\n [documentToDelete]\r\n );\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n

Bestanden

\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n data={files}\r\n columns={documentColumns}\r\n isLoading={isLoadingFiles}\r\n sortBy={[{ id: 'date', desc: true }]}\r\n actions={[\r\n {\r\n icon: 'download',\r\n title: 'Bestand downloaden',\r\n onClick: downloadDocument\r\n },\r\n {\r\n icon: 'print',\r\n title: 'Bestand printen',\r\n onClick: printDocument\r\n },\r\n {\r\n icon: 'delete',\r\n title: 'Bestand verwijderen',\r\n onClick: openDeleteModal\r\n }\r\n ]}\r\n />\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n {\r\n fileToPrint &&\r\n \r\n }\r\n \r\n );\r\n};\r\n\r\nexport default CustomerDetailFiles;\r\n","import React, { FC, useEffect, useMemo, useState, useCallback } from 'react';\r\nimport { navigate, RouteComponentProps } from '@reach/router';\r\nimport { useHeader } from 'contexts/headerContext';\r\nimport { Row, Col } from 'react-grid-system';\r\nimport HeaderAction from 'components/atoms/HeaderAction';\r\nimport { Button } from 'components/atoms/button';\r\nimport { Card, CardBody } from 'components/atoms/card';\r\nimport { H3 } from 'components/atoms/text';\r\nimport { FormGroup, FormikFormControl, FormikFormSelect, FormikFormYesNo } from 'components/atoms/form';\r\nimport { Form, Formik, FormikHelpers } from 'formik';\r\nimport Margin from 'components/atoms/Margin';\r\nimport Group from 'components/molecules/Group';\r\nimport { CustomerModel, CustomerPlainModel, EditCustomerInputModel } from 'hooks/customer/types';\r\nimport useCustomer from 'hooks/customer/useCustomer';\r\nimport { Loading } from 'components/atoms/button/Button/styles';\r\nimport { cdnFileUrl } from 'utils/cdnHelper';\r\nimport { toast } from 'react-toastify';\r\nimport { toFormikErrors } from 'utils/errorhelper';\r\nimport useEditUserInfoRequests from 'hooks/edituserinforequest/useEditUserInfoRequest';\r\nimport { EditUserInfoRequestStatus } from 'utils/constants';\r\nimport { EditUserInfoRequestModel } from 'hooks/edituserinforequest/types';\r\nimport useRights from 'hooks/right';\r\nimport { RightModel } from 'hooks/right/types';\r\nimport CustomerDetailModules from './components/modules';\r\nimport CustomerDetailDocuments from './components/documents';\r\nimport ActionComponent from 'components/atoms/Action';\r\nimport { getLegalFormDisplay, legelFormOptions } from 'utils/constants/legalformconstants';\r\nimport { getGenderDisplay, genderOptions } from 'utils/constants/personconstants';\r\nimport { getPaymentMethodDisplay, paymentMethodOptions } from 'utils/constants/paymentmethodconstants';\r\nimport useUserInvitation from 'hooks/userInvitation/useUserInvitation';\r\nimport CustomerDetailFiles from './components/files';\r\n\r\ninterface CustomerDetailProps extends RouteComponentProps<{ location: { state: { customer: CustomerPlainModel } } }> { }\r\n\r\ninterface ChangeRequestModel {\r\n title: string;\r\n valueString: string | number | boolean;\r\n value?: any;\r\n field: string;\r\n}\r\n\r\nconst CustomerDetail: FC = ({ location }) => {\r\n useHeader(location?.state.customer.name);\r\n\r\n const { getAllCustomers, editCustomer, setCustomerBlocked } = useCustomer();\r\n const { getEditUserInfoRequests, completeEditUserInfoRequest } = useEditUserInfoRequests();\r\n const { getRights } = useRights();\r\n const { resendInvitation } = useUserInvitation();\r\n\r\n const [isLoading, setIsLoading] = useState(true);\r\n const [customer, setCustomer] = useState();\r\n const [editUserInfoRequest, setEditUserInfoRequest] = useState();\r\n const [rights, setRights] = useState([]);\r\n\r\n const [deniedChangeRequests, setDeniedChangeRequests] = useState([]);\r\n const [acceptedChangeRequests, setAcceptedChangeRequests] = useState([]);\r\n\r\n const fetchCustomer = async () => {\r\n const response = await getAllCustomers({ id: location?.state.customer.id });\r\n\r\n if (response.ok && response.data) {\r\n setCustomer(response.data[0]);\r\n } else {\r\n toast.error('Oeps, er ging iets fout bij het ophalen van jouw gegevens');\r\n }\r\n };\r\n\r\n const fetchEditUserInfoRequest = async () => {\r\n const response = await getEditUserInfoRequests({\r\n userId: location?.state.customer.userId,\r\n status: EditUserInfoRequestStatus.Requested\r\n });\r\n\r\n if (response.ok && response.data) {\r\n setEditUserInfoRequest(response.data[0]);\r\n } else {\r\n toast.error('Oeps, er ging iets fout bij het ophalen van jouw gegevens');\r\n }\r\n };\r\n\r\n const fetchRights = async () => {\r\n const response = await getRights();\r\n\r\n if (response.ok && response.data) {\r\n setRights(response.data);\r\n } else {\r\n toast.error('Oeps, er ging iets fout bij het ophalen van jouw gegevens');\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n (async () => {\r\n const customerCall = fetchCustomer();\r\n const userInfoRequestCall = fetchEditUserInfoRequest();\r\n const rightsCall = fetchRights();\r\n\r\n await Promise.all([customerCall, userInfoRequestCall, rightsCall]);\r\n\r\n setIsLoading(false);\r\n })();\r\n }, [location?.state.customer]);\r\n\r\n const genderField = 'user.gender';\r\n const initialsField = 'user.initials';\r\n const firstNameField = 'user.firstName';\r\n const insertionField = 'user.insertion';\r\n const lastNameField = 'user.lastName';\r\n const functionField = 'user.function';\r\n const phoneNumberField = 'user.phoneNumber';\r\n const mobileNumberField = 'user.mobileNumber';\r\n const emailAddressField = 'user.email';\r\n const companyNameField = 'name';\r\n const kvkNumberField = 'kvkNumber';\r\n const legalFormField = 'legalForm';\r\n const addressVisitField = 'addressVisit';\r\n const postalCodeVisitField = 'postalCodeVisit';\r\n const cityVisitField = 'cityVisit';\r\n const isMailAddressDifferentField = 'isMailAddressDifferent';\r\n const addressMailField = 'addressMail';\r\n const postalCodeMailField = 'postalCodeMail';\r\n const cityMailField = 'cityMail';\r\n const bankAccountField = 'bankAccount';\r\n const paymentMethodField = 'paymentMethod';\r\n const emailInvoiceField = 'emailInvoice';\r\n const relationNumberField = 'relationNumber';\r\n const websiteField = 'website';\r\n\r\n const changeRequests = useMemo((): ChangeRequestModel[] => {\r\n if (editUserInfoRequest == null || customer == null) {\r\n return [];\r\n }\r\n\r\n const requests: ChangeRequestModel[] = [];\r\n\r\n if (editUserInfoRequest.gender !== customer.user.gender) {\r\n requests.push({\r\n field: genderField,\r\n title: 'Aanhef',\r\n valueString: getGenderDisplay(editUserInfoRequest.gender),\r\n value: editUserInfoRequest.gender\r\n });\r\n }\r\n if (editUserInfoRequest.initials !== customer.user.initials) {\r\n requests.push({\r\n field: initialsField,\r\n title: 'Initialen',\r\n valueString: editUserInfoRequest.initials,\r\n value: editUserInfoRequest.initials\r\n });\r\n }\r\n if (editUserInfoRequest.firstName !== customer.user.firstName) {\r\n requests.push({\r\n field: firstNameField,\r\n title: 'Voornaam',\r\n valueString: editUserInfoRequest.firstName,\r\n value: editUserInfoRequest.firstName\r\n });\r\n }\r\n if (editUserInfoRequest.insertion !== customer.user.insertion) {\r\n requests.push({\r\n field: insertionField,\r\n title: 'Tussenvoegsel',\r\n valueString: editUserInfoRequest.insertion ?? '',\r\n value: editUserInfoRequest.insertion\r\n });\r\n }\r\n if (editUserInfoRequest.lastName !== customer.user.lastName) {\r\n requests.push({\r\n field: lastNameField,\r\n title: 'Achternaam',\r\n valueString: editUserInfoRequest.lastName,\r\n value: editUserInfoRequest.lastName\r\n });\r\n }\r\n if (editUserInfoRequest.function !== customer.user.function) {\r\n requests.push({\r\n field: functionField,\r\n title: 'Functie',\r\n valueString: editUserInfoRequest.function,\r\n value: editUserInfoRequest.function\r\n });\r\n }\r\n if (editUserInfoRequest.phoneNumber !== customer.user.phoneNumber) {\r\n requests.push({\r\n field: phoneNumberField,\r\n title: 'Telefoonnummer',\r\n valueString: editUserInfoRequest.phoneNumber,\r\n value: editUserInfoRequest.phoneNumber\r\n });\r\n }\r\n if (editUserInfoRequest.mobileNumber !== customer.user.mobileNumber) {\r\n requests.push({\r\n field: mobileNumberField,\r\n title: 'Mobiele telefoonnummer',\r\n valueString: editUserInfoRequest.mobileNumber,\r\n value: editUserInfoRequest.mobileNumber\r\n });\r\n }\r\n if (editUserInfoRequest.companyName !== customer.name) {\r\n requests.push({\r\n field: companyNameField,\r\n title: 'Bedrijfsnaam',\r\n valueString: editUserInfoRequest.companyName,\r\n value: editUserInfoRequest.companyName\r\n });\r\n }\r\n if (editUserInfoRequest.kvkNumber !== customer.kvkNumber) {\r\n requests.push({\r\n field: kvkNumberField,\r\n title: 'KvK-nummer',\r\n valueString: editUserInfoRequest.kvkNumber,\r\n value: editUserInfoRequest.kvkNumber\r\n });\r\n }\r\n if (editUserInfoRequest.legalForm !== customer.legalForm) {\r\n requests.push({\r\n field: legalFormField,\r\n title: 'Rechtsvorm',\r\n valueString: getLegalFormDisplay(editUserInfoRequest.legalForm),\r\n value: editUserInfoRequest.legalForm\r\n });\r\n }\r\n if (editUserInfoRequest.addressVisit !== customer.addressVisit) {\r\n requests.push({\r\n field: addressVisitField,\r\n title: 'Bezoekadres',\r\n valueString: editUserInfoRequest.addressVisit,\r\n value: editUserInfoRequest.addressVisit\r\n });\r\n }\r\n if (editUserInfoRequest.postalCodeVisit !== customer.postalCodeVisit) {\r\n requests.push({\r\n field: postalCodeVisitField,\r\n title: 'Postcode',\r\n valueString: editUserInfoRequest.postalCodeVisit,\r\n value: editUserInfoRequest.postalCodeVisit\r\n });\r\n }\r\n if (editUserInfoRequest.cityVisit !== customer.cityVisit) {\r\n requests.push({\r\n field: cityVisitField,\r\n title: 'Plaats',\r\n valueString: editUserInfoRequest.cityVisit,\r\n value: editUserInfoRequest.cityVisit\r\n });\r\n }\r\n\r\n if (editUserInfoRequest.isMailAddressDifferent !== customer.isMailAddressDifferent) {\r\n requests.push({\r\n field: isMailAddressDifferentField,\r\n title: 'Postadres anders dan bezoekadres',\r\n valueString: editUserInfoRequest.isMailAddressDifferent ? 'Ja' : 'Nee',\r\n value: editUserInfoRequest.isMailAddressDifferent\r\n });\r\n }\r\n if (editUserInfoRequest.addressMail !== customer.addressMail) {\r\n requests.push({\r\n field: addressMailField,\r\n title: 'Postadres',\r\n valueString: editUserInfoRequest.addressMail,\r\n value: editUserInfoRequest.addressMail\r\n });\r\n }\r\n if (editUserInfoRequest.postalCodeMail !== customer.postalCodeMail) {\r\n requests.push({\r\n field: postalCodeMailField,\r\n title: 'Postadres postcode',\r\n valueString: editUserInfoRequest.postalCodeMail,\r\n value: editUserInfoRequest.postalCodeMail\r\n });\r\n }\r\n if (editUserInfoRequest.cityMail !== customer.cityMail) {\r\n requests.push({\r\n field: cityMailField,\r\n title: 'Postadres plaats',\r\n valueString: editUserInfoRequest.cityMail,\r\n value: editUserInfoRequest.cityMail\r\n });\r\n }\r\n if (editUserInfoRequest.bankAccount !== customer.bankAccount) {\r\n requests.push({\r\n field: bankAccountField,\r\n title: 'Rekeningnummer',\r\n valueString: editUserInfoRequest.bankAccount,\r\n value: editUserInfoRequest.bankAccount\r\n });\r\n }\r\n if (editUserInfoRequest.paymentMethod !== customer.paymentMethod) {\r\n requests.push({\r\n field: paymentMethodField,\r\n title: 'Betaalwijze',\r\n valueString: getPaymentMethodDisplay(editUserInfoRequest.paymentMethod),\r\n value: editUserInfoRequest.paymentMethod\r\n });\r\n }\r\n if (editUserInfoRequest.email !== customer.user.email) {\r\n requests.push({\r\n field: emailAddressField,\r\n title: 'E-mailadres',\r\n valueString: editUserInfoRequest.email,\r\n value: editUserInfoRequest.email\r\n });\r\n }\r\n if (editUserInfoRequest.emailInvoice !== customer.emailInvoice) {\r\n requests.push({\r\n field: emailInvoiceField,\r\n title: 'E-mailadres voor facturering',\r\n valueString: editUserInfoRequest.emailInvoice,\r\n value: editUserInfoRequest.emailInvoice\r\n });\r\n }\r\n if (editUserInfoRequest.website !== customer.website) {\r\n requests.push({\r\n field: websiteField,\r\n title: 'Website',\r\n valueString: editUserInfoRequest.website ?? '',\r\n value: editUserInfoRequest.website\r\n });\r\n }\r\n\r\n return requests;\r\n }, [editUserInfoRequest, customer, acceptedChangeRequests, deniedChangeRequests]);\r\n\r\n const showChangeRequests = useMemo(\r\n () =>\r\n changeRequests.filter(\r\n (c) => !deniedChangeRequests.some((d) => d.field === c.field) && !acceptedChangeRequests.some((a) => a.field === c.field)\r\n ),\r\n [changeRequests, acceptedChangeRequests, deniedChangeRequests]\r\n );\r\n\r\n const resendInvitationHandler = async () => {\r\n if (customer == null) {\r\n return;\r\n }\r\n\r\n const response = await resendInvitation(customer.user.id);\r\n\r\n if (response.ok) {\r\n toast.success('De uitnodiging is opnieuw verzonden');\r\n } else {\r\n toast.error('Oeps, er is iets fout gegaan');\r\n }\r\n };\r\n\r\n const onEditCustomer = useCallback(\r\n async (values: EditCustomerInputModel, { setErrors, setSubmitting }: FormikHelpers) => {\r\n const response = await editCustomer(values);\r\n\r\n if (response.ok) {\r\n toast.success('De wijzigingen zijn succesvol opgeslagen');\r\n if (editUserInfoRequest != null && changeRequests.length === acceptedChangeRequests.length + deniedChangeRequests.length) {\r\n await completeEditUserInfoRequest(editUserInfoRequest.id);\r\n setEditUserInfoRequest(undefined);\r\n }\r\n } else if (response.errors) {\r\n const errors = toFormikErrors(response.errors);\r\n setErrors(errors);\r\n toast.error('Niet alle velden zijn ingevuld');\r\n } else {\r\n toast.error('Oops, er ging iets fout bij het opslaan van de wijzigingen');\r\n }\r\n\r\n setSubmitting(false);\r\n },\r\n [changeRequests, acceptedChangeRequests, deniedChangeRequests, editUserInfoRequest]\r\n );\r\n\r\n const blockUserHandler = () => {\r\n if (customer == null) {\r\n return;\r\n }\r\n\r\n setCustomerBlocked(customer.id, !customer.blocked);\r\n setCustomer({ ...customer, blocked: !customer.blocked });\r\n };\r\n\r\n const isMailAddressDifferent = customer != null\r\n && (\r\n customer.addressMail != null ||\r\n customer.postalCodeMail != null ||\r\n customer.cityMail != null\r\n );\r\n\r\n\r\n const initialValues: EditCustomerInputModel = useMemo(\r\n () => ({\r\n id: customer?.id ?? '',\r\n name: customer?.name ?? '',\r\n kvkNumber: customer?.kvkNumber ?? '',\r\n legalForm: customer?.legalForm,\r\n addressVisit: customer?.addressVisit ?? '',\r\n postalCodeVisit: customer?.postalCodeVisit ?? '',\r\n cityVisit: customer?.cityVisit ?? '',\r\n isMailAddressDifferent: isMailAddressDifferent,\r\n addressMail: customer?.addressMail ?? '',\r\n postalCodeMail: customer?.postalCodeMail ?? '',\r\n cityMail: customer?.cityMail ?? '',\r\n bankAccount: customer?.bankAccount ?? '',\r\n paymentMethod: customer?.paymentMethod,\r\n emailInvoice: customer?.emailInvoice ?? '',\r\n relationNumber: customer?.relationNumber ?? '',\r\n website: customer?.website ?? '',\r\n user: {\r\n avatar: customer?.user.avatar != null ? cdnFileUrl(customer?.user.avatar.hash) : undefined,\r\n gender: customer?.user.gender,\r\n initials: customer?.user.initials ?? '',\r\n firstName: customer?.user.firstName ?? '',\r\n insertion: customer?.user.insertion,\r\n lastName: customer?.user.lastName ?? '',\r\n email: customer?.user.email ?? '',\r\n phoneNumber: customer?.user.phoneNumber ?? '',\r\n mobileNumber: customer?.user.mobileNumber ?? '',\r\n function: customer?.user.function ?? ''\r\n }\r\n }),\r\n [customer]\r\n );\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n {\r\n customer?.user.registeredOn == null &&\r\n \r\n }\r\n \r\n \r\n \r\n \r\n {(isLoading || customer == null) && }\r\n {!isLoading && customer != null && (\r\n <>\r\n \r\n \r\n

{customer.name}

\r\n \r\n {({ isSubmitting, setFieldValue, values }) => {\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \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 {values.isMailAddressDifferent &&\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 {showChangeRequests.length} wijziging\r\n {showChangeRequests.length !== 1 && 'en'} aangevraagd\r\n

\r\n {showChangeRequests.length === 0 && editUserInfoRequest != null && (\r\n

\r\n Alle aangevraagde wijzigingen zijn verwerkt. Vergeet niet op te\r\n slaan.\r\n

\r\n )}\r\n {showChangeRequests.map((cr, index) => (\r\n
\r\n {index > 0 &&
}\r\n \r\n {cr.title}\r\n {cr.valueString}\r\n
\r\n {\r\n const array = [...deniedChangeRequests];\r\n array.push(item);\r\n setDeniedChangeRequests(array);\r\n }}\r\n />\r\n {\r\n setFieldValue(item.field, item.value);\r\n const array = [...acceptedChangeRequests];\r\n array.push(item);\r\n setAcceptedChangeRequests(array);\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 CustomerDetail;\r\n","import { useField } from 'formik';\r\nimport React, { FC } from 'react';\r\nimport FormCheck, { FormCheckProps } from '..';\r\n\r\nconst FormCheckFormik: FC = (props) => {\r\n const [field, meta] = useField(props);\r\n\r\n const error = !!(meta.touched && meta.error) ? meta.error : undefined;\r\n return ;\r\n};\r\n\r\nexport default FormCheckFormik;\r\n","import React, { FC, useState } from 'react';\r\nimport { Card, CardBody } from 'components/atoms/card';\r\nimport { FormGroup, FormikFormControl, FormikFormDate, FormikFormSelect, FormikFormTextarea } from 'components/atoms/form';\r\nimport FormCheckFormik from 'components/atoms/form/FormCheck/formik';\r\nimport { useFormikContext } from 'formik';\r\nimport { AddCollectionInputModel } from 'hooks/collection/types';\r\nimport HeaderAction from 'components/atoms/HeaderAction';\r\nimport { Col, Row } from 'react-grid-system';\r\nimport { legelFormOptions } from 'utils/constants/legalformconstants';\r\nimport KvkSearch from 'components/organisms/KvkSearch';\r\nimport { KvkCompanyInfoModel } from 'hooks/kvk/types';\r\nimport Margin from 'components/atoms/Margin';\r\nimport { Paragraph, H3 } from 'components/atoms/text';\r\nimport useKvk from 'hooks/kvk/useKvk';\r\nimport { genderOptions } from 'utils/constants/personconstants';\r\nimport { KvkLegalFormStringToLegalForm } from 'utils/kvkHelper';\r\n\r\nexport interface Step2Props {\r\n}\r\n\r\nconst Step2: FC = () => {\r\n const { getBasicProfile } = useKvk();\r\n\r\n const { values, setFieldValue } = useFormikContext();\r\n const [showCompanyNameField, setShowCompanyNameField] = useState(true);\r\n\r\n const onCompanySelectChange = (company: KvkCompanyInfoModel | undefined) => {\r\n if (company === undefined) {\r\n setShowCompanyNameField(true);\r\n setFieldValue('debtor.kvkNumber', '');\r\n setFieldValue('debtor.companyName', '');\r\n setFieldValue('debtor.isMailAddressDifferent', false);\r\n clearPostAddress();\r\n clearVisitAddress();\r\n return;\r\n }\r\n\r\n setShowCompanyNameField(false);\r\n setFieldValue('debtor.kvkNumber', company.kvkNumber);\r\n setFieldValue('debtor.companyName', company.name);\r\n\r\n getCompanyBasicProfile(company.kvkNumber);\r\n };\r\n\r\n const onCompanySearchDone = (hasResults: boolean) => {\r\n if (hasResults) {\r\n return;\r\n }\r\n\r\n setShowCompanyNameField(true);\r\n setFieldValue('debtor.kvkNumber', '');\r\n setFieldValue('debtor.companyName', '');\r\n setFieldValue('debtor.isMailAddressDifferent', false);\r\n clearPostAddress();\r\n clearVisitAddress();\r\n };\r\n\r\n const clearPostAddress = () => {\r\n setFieldValue('debtor.isMailAddressDifferent', false);\r\n setFieldValue('debtor.postalCodeMail', '');\r\n setFieldValue('debtor.cityMail', '');\r\n setFieldValue('debtor.addressMail', '');\r\n };\r\n\r\n const clearVisitAddress = () => {\r\n setFieldValue('debtor.postalCodeVisit', '');\r\n setFieldValue('debtor.cityVisit', '');\r\n setFieldValue('debtor.addressVisit', '');\r\n };\r\n\r\n const getCompanyBasicProfile = async (kvkNumber: string) => {\r\n const response = await getBasicProfile(kvkNumber);\r\n\r\n if (!response.ok || response.data == null || response.data.addresses.length === 0) {\r\n return;\r\n }\r\n\r\n const visitAddress = response.data.addresses.find((address) => address.type === 'bezoekadres');\r\n const postAddress = response.data.addresses.find((address) => address.type === 'correspondentieadres');\r\n\r\n setFieldValue('debtor.legalForm', KvkLegalFormStringToLegalForm(response.data.legalForm));\r\n\r\n if (visitAddress != null) {\r\n setFieldValue('debtor.postalCodeVisit', visitAddress.postalCode);\r\n setFieldValue('debtor.cityVisit', visitAddress.city);\r\n setFieldValue('debtor.addressVisit', `${visitAddress.street} ${visitAddress.houseNumber}${visitAddress.houseNumberAddition}`);\r\n }\r\n\r\n if (visitAddress == null && postAddress != null) {\r\n setFieldValue('debtor.postalCodeVisit', postAddress.postalCode);\r\n setFieldValue('debtor.cityVisit', postAddress.city);\r\n setFieldValue('debtor.addressVisit', `${postAddress.street} ${postAddress.houseNumber}${postAddress.houseNumberAddition}`);\r\n }\r\n\r\n if (visitAddress != null && postAddress != null) {\r\n setFieldValue('debtor.isMailAddressDifferent', true);\r\n setFieldValue('debtor.postalCodeMail', postAddress.postalCode);\r\n setFieldValue('debtor.cityMail', postAddress.city);\r\n setFieldValue('debtor.addressMail', `${postAddress.street} ${postAddress.houseNumber}${postAddress.houseNumberAddition}`);\r\n }\r\n\r\n if (visitAddress == null || postAddress == null) {\r\n clearPostAddress();\r\n }\r\n\r\n if (visitAddress == null && postAddress == null) {\r\n clearVisitAddress();\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n \r\n \r\n {values.debtor.isCompany ? (\r\n <>\r\n

Opdrachtformulier tot incasso - bedrijf

\r\n \r\n Met dit formulier geeft u Juresta opdracht, op basis van de gesloten incassomodule,\r\n tot het behandelen van uw incasso-opdracht. Vul het formulier zo volledig mogelijk in. Waar\r\n nodig kunt u direct de relevante documenten toevoegen. Door gebruik te maken van de\r\n zoekfunctie “vind uw debiteur” kunt u eenvoudig de gegevens van uw debiteur overnemen in\r\n dit formulier.\r\n \r\n \r\n In het eerste deel van dit formulier vult u de bedrijfs- en contactgegevens in. In het\r\n tweede deel vult u de gegevens met betrekking tot de openstaande post(en) in. Formulier ingevuld?\r\n Dan heeft u de mogelijkheid het formulier digitaal te ondertekenen en een exemplaar op te slaan\r\n of te printen voor uw eigen administratie.\r\n \r\n \r\n Heeft u vragen over het invullen van dit formulier, neemt u dan gerust contact met ons op.\r\n \r\n \r\n ) : (\r\n <>\r\n

Opdrachtformulier tot incasso - consument

\r\n \r\n Met dit formulier geeft u Juresta opdracht, op basis van de gesloten incasso-overeenkomst, tot\r\n het behandelen van uw incasso-opdracht. Vul het formulier zo volledig mogelijk in. Waar nodig\r\n kunt u direct de relevante documenten toevoegen.\r\n \r\n \r\n In het eerste deel van dit formulier vult u de persoonlijke- en contactgegevens in. In het\r\n tweede deel vult u de gegevens met betrekking tot de openstaande post in.\r\n \r\n \r\n Heeft u vragen over het invullen van dit formulier, neemt u dan gerust contact met ons op.\r\n \r\n \r\n )}\r\n
\r\n
\r\n \r\n \r\n {values.debtor.isCompany ? (\r\n <>\r\n \r\n

Gegevens van uw debiteur

\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n showCompanyNameField &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \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 {values.debtor.isCompany && (\r\n \r\n \r\n \r\n

Adresgegevens

\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 {values.debtor.isMailAddressDifferent && (\r\n \r\n \r\n \r\n

Adresgegevens

\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

Contactgegevens

\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 Step2;\r\n","import React, { FC } from 'react';\r\nimport { Card, CardBody } from 'components/atoms/card';\r\nimport { FormGroup, FormRadio } from 'components/atoms/form';\r\nimport Margin from 'components/atoms/Margin';\r\nimport { Paragraph, H3 } from 'components/atoms/text';\r\nimport Group from 'components/molecules/Group';\r\nimport { useFormikContext } from 'formik';\r\nimport { AddCollectionInputModel } from 'hooks/collection/types';\r\nimport HeaderAction from 'components/atoms/HeaderAction';\r\n\r\nexport interface Step1Props {\r\n}\r\n\r\nconst Step1: FC = () => {\r\n\r\n const { setFieldValue, values } = useFormikContext();\r\n\r\n // Render.\r\n const title = values.debtor.isCompany ? 'Incasso-opdracht indienen' : 'Incasso-opdracht indienen';\r\n //const date = new Date();\r\n //const time = date.getHours();\r\n\r\n const setCompany = (value: boolean) => {\r\n setFieldValue('debtor.isCompany', value);\r\n\r\n if (!value) {\r\n setFieldValue('debtor.companyName', '');\r\n setFieldValue('debtor.kvkNumber', '');\r\n setFieldValue('debtor.legalForm', undefined);\r\n } else {\r\n setFieldValue('debtor.dateOfBirth', undefined);\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n \r\n \r\n

\r\n {title}\r\n

\r\n \r\n In dit deel kunt u eenvoudig uw incasso-opdracht indienen. Het invullen van het formulier duurt ongeveer 5 – 10 minuten. Voordat u begint adviseren wij u de relevante documenten te verzamelen (of beschikbaar te hebben om direct bij te kunnen voegen). Denkt u dan aan uw factuur, herinnering, aanmaning e.d. In het formulier is er op meerdere plekken ruimte om een toelichting te geven.\r\n \r\n \r\n Kiest u hieronder allereerst of uw debiteur een consument of een bedrijf betreft.\r\n Twijfelt u over de aard van uw debiteur? Kies dan voor de optie bedrijf.\r\n \r\n
\r\n
\r\n \r\n \r\n {/* \r\n

Incasso-opdracht indienen

\r\n \r\n {\r\n time < 12 ? (\r\n <>Goedemorgen,\r\n ) : time < 18 ? (\r\n <>Goedemiddag,\r\n ) : (\r\n <>Goedeavond,\r\n )\r\n }\r\n \r\n \r\n In dit deel kunt u eenvoudig uw incasso-opdracht indienen. Het invullen van het formulier duurt ongeveer 5 – 10 minuten. Voordat u begint adviseren wij u de relevante documenten te verzamelen (of beschikbaar te hebben om direct bij te kunnen voegen). Denkt u dan aan uw factuur, herinnering, aanmaning e.d. In het formulier is er op meerdere plekken ruimte om een toelichting te geven.\r\n \r\n \r\n Kiest u hieronder allereerst of uw debiteur een consument of een bedrijf betreft.\r\n Twijfelt u over de aard van uw debiteur? Kies dan voor de optie bedrijf.\r\n \r\n
*/}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n setCompany(true)} />\r\n setCompany(false)} />\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default Step1;\r\n","import { Card, CardBody } from 'components/atoms/card';\r\nimport { FormikFormYesNo, FormikFormTextarea, FormGroup, FormikFormMultipleFile } from 'components/atoms/form';\r\nimport React, { FC, useEffect } from 'react';\r\nimport { useFormikContext } from 'formik';\r\nimport { AddCollectionInputModel } from 'hooks/collection/types';\r\nimport { H3, Paragraph } from 'components/atoms/text';\r\nimport FormCurrencyFormik from 'components/atoms/form/FormCurrency/formik';\r\n\r\nexport interface Step3Props { }\r\n\r\nconst Step3: FC = () => {\r\n const { values, setFieldValue } = useFormikContext();\r\n\r\n // Render.\r\n const showWrittenDocumentsExplanation = [\r\n values.hasSignedAgreements,\r\n values.hasQuotation,\r\n values.hasAssignmentLetter,\r\n values.hasSignedDeliveryNote\r\n ].some(Boolean);\r\n\r\n useEffect(() => {\r\n // @ts-ignore: amount is door de currencyinput een string die hier omgezet wordt naar een number\r\n if (typeof values.amount === 'string' && values.amount.indexOf(',') === values.amount.length - 3) {\r\n // @ts-ignore: cont.\r\n values.amount = values.amount.replaceAll(',', '.');\r\n // @ts-ignore: cont.\r\n } else if (typeof values.amount === 'string' && (values.amount.indexOf(',') === values.amount.length - 1 || values.amount.indexOf(',') === values.amount.length - 2)) {\r\n return;\r\n }\r\n }, [values.amount]);\r\n\r\n return (\r\n <>\r\n \r\n \r\n

Vordering

\r\n \r\n setFieldValue('amount', value)} />\r\n \r\n
\r\n
\r\n \r\n \r\n

Geschiedenis debiteur

\r\n \r\n \r\n {values.historyWithDebtorWantToComment && (\r\n \r\n \r\n \r\n )}\r\n
\r\n
\r\n \r\n \r\n

Verweer debiteur

\r\n \r\n \r\n {values.debtorDefenceWantToComment && values.hasDebtorDefence && (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n {values.debtorDefenceWantToComment && !values.hasDebtorDefence && (\r\n \r\n \r\n \r\n )}\r\n
\r\n
\r\n \r\n \r\n

Voorwaarden

\r\n \r\n {values.areTermsApplied && (\r\n \r\n \r\n \r\n )}\r\n \r\n {values.termsAppliedWantToComment && (\r\n \r\n \r\n \r\n )}\r\n
\r\n
\r\n \r\n \r\n

Documenten met betrekking tot uw vordering

\r\n \r\n Alle mogelijke documenten die kunnen leiden tot de vaststelling dat de overeenkomst tot stand is gekomen zijn van\r\n belang. Denk bijvoorbeeld aan een ondertekend offerteformulier, werkbon, pakbon of een vrachtbrief. Beschikt u niet\r\n over deze documenten? Vult u dan in het opmerkingenveld in hoe de overeenkomst tot stand is gekomen.\r\n \r\n \r\n Daarnaast staan wij sterker in een incassoprocedure als alle relevante stukken van de vordering aanwezig zijn. Ook\r\n een eenvoudige (telefoon)notitie of Whatsapp-bericht kan van belang zijn. Is het voor u niet mogelijk om uw\r\n documenten direct bij te voegen? Stuurt u deze dan per mail naar teamincasso@juresta.nl.\r\n \r\n \r\n {values.hasSignedAgreements && (\r\n \r\n \r\n \r\n )}\r\n \r\n {values.hasQuotation && (\r\n \r\n \r\n \r\n )}\r\n \r\n {values.hasAssignmentLetter && (\r\n \r\n \r\n \r\n )}\r\n \r\n {values.hasSignedDeliveryNote && (\r\n \r\n \r\n \r\n )}\r\n {showWrittenDocumentsExplanation && (\r\n \r\n \r\n \r\n )}\r\n
\r\n
\r\n \r\n \r\n

Relevante stukken

\r\n \r\n {values.hasInvoices && (\r\n \r\n \r\n \r\n )}\r\n \r\n {values.hasReminders && (\r\n \r\n \r\n \r\n )}\r\n \r\n {values.hasExhortation && (\r\n \r\n \r\n \r\n )}\r\n \r\n {values.hasPlan && (\r\n \r\n \r\n \r\n )}\r\n \r\n {values.hasConversationNotes && (\r\n \r\n \r\n \r\n )}\r\n \r\n {values.hasPhoneNotes && (\r\n \r\n \r\n \r\n )}\r\n \r\n {values.hasAppOrSms && (\r\n \r\n \r\n \r\n )}\r\n \r\n {values.hasOtherCorrespondence && (\r\n \r\n \r\n \r\n )}\r\n
\r\n
\r\n \r\n \r\n

BTW

\r\n \r\n {!values.isTaxesRequired && (\r\n \r\n \r\n \r\n )}\r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default Step3;\r\n","import styled from '@emotion/styled';\r\n\r\nconst ButtonWrapper = styled.div`\r\n display: flex;\r\n flex-wrap: wrap;\r\n margin-bottom: -.75rem;\r\n\r\n > * {\r\n margin-right: 1rem;\r\n margin-bottom: .75rem;\r\n }\r\n`;\r\n\r\nexport default ButtonWrapper;","import { useSession } from 'contexts/sessionContext';\r\nimport { useApi } from 'hooks/api';\r\nimport { useQuery } from 'react-query';\r\nimport { buildUriWithParams } from 'utils/urihelper';\r\nimport { CollectionPlainModel, GetCollectionInputModel } from './types';\r\n\r\nexport const CollectionAllQueryKey = 'collection.all';\r\n\r\nexport default function useAllCollections() {\r\n const { session } = useSession();\r\n const { get } = useApi();\r\n\r\n const getAllCollections = async (params?: GetCollectionInputModel) => {\r\n\r\n const uri = buildUriWithParams('/collection', params);\r\n const { data } = await get(uri);\r\n\r\n return data;\r\n };\r\n\r\n return useQuery(CollectionAllQueryKey, () => getAllCollections({ customerId: session?.customerId }));\r\n}\r\n","export enum CollectionStatus {\r\n NeedsSigning = 0,\r\n InProgress = 1,\r\n Finished = 2\r\n}\r\n\r\nexport const collectionStatusOptions = [\r\n {\r\n value: CollectionStatus.NeedsSigning,\r\n label: 'Vereist handtekening'\r\n },\r\n {\r\n value: CollectionStatus.InProgress,\r\n label: 'In behandeling'\r\n },\r\n {\r\n value: CollectionStatus.Finished,\r\n label: 'Afgewikkeld'\r\n }\r\n];\r\n\r\nexport const getCollectionStatusDisplay = (status: CollectionStatus) => {\r\n switch (status) {\r\n case CollectionStatus.NeedsSigning:\r\n return 'Vereist handtekening';\r\n case CollectionStatus.InProgress:\r\n return 'In behandeling';\r\n case CollectionStatus.Finished:\r\n return 'Afgewikkeld';\r\n };\r\n};\r\n","export enum Country {\r\n 'België' = 'BE',\r\n 'Duitsland' = 'DE',\r\n 'Frankrijk' = 'FR',\r\n 'Verenigd Koninkrijk' = 'GB',\r\n ' ' = '-',\r\n 'Afghanistan' = 'AF',\r\n 'Aland-eilanden' = 'AX',\r\n 'Albanië' = 'AL',\r\n 'Algerije' = 'DZ',\r\n 'Amerikaans Samoa' = 'AS',\r\n 'Amerikaanse Kleinere Afgelegen Eilanden' = 'UM',\r\n 'Andorra' = 'AD',\r\n 'Angola' = 'AO',\r\n 'Anguilla' = 'AI',\r\n 'Antarctica' = 'AQ',\r\n 'Antigua en Barbuda' = 'AG',\r\n 'Argentinië' = 'AR',\r\n 'Armenië' = 'AM',\r\n 'Aruba' = 'AW',\r\n 'Australië' = 'AU',\r\n 'Azerbeidzjan' = 'AZ',\r\n 'Bahamas' = 'BS',\r\n 'Bahrein' = 'BH',\r\n 'Bangladesh' = 'BD',\r\n 'Barbados' = 'BB',\r\n 'Belize' = 'BZ',\r\n 'Benin' = 'BJ',\r\n 'Bermuda' = 'BM',\r\n 'Bhutan' = 'BT',\r\n 'Bolivia' = 'BO',\r\n 'Bosnië-Herzegovina' = 'BA',\r\n 'Botswana' = 'BW',\r\n 'Bouvetisland' = 'BV',\r\n 'Brazilië' = 'BR',\r\n 'Brits-Indisch oceaan gebied' = 'IO',\r\n 'Brunei Darussalam' = 'BN',\r\n 'Bulgarije' = 'BG',\r\n 'Burkinafaso' = 'BF',\r\n 'Burundi' = 'BI',\r\n 'Cambodja' = 'KH',\r\n 'Canada' = 'CA',\r\n 'Caribisch Nederland' = 'BQ',\r\n 'Centraal Afrikaanse Republiek' = 'CF',\r\n 'Chili' = 'CL',\r\n 'China' = 'CN',\r\n 'Cocoskeelingislands' = 'CC',\r\n 'Colombia' = 'CO',\r\n 'Comoros' = 'KM',\r\n 'Congo' = 'CG',\r\n 'Congodemocratedrepublic' = 'CD',\r\n 'Cookislanden' = 'CK',\r\n 'Costarica' = 'CR',\r\n 'Cotedivoire' = 'CI',\r\n 'Cuba' = 'CU',\r\n 'Curacao' = 'CW',\r\n 'Cyprus' = 'CY',\r\n 'Denemarken' = 'DK',\r\n 'Djibouti' = 'DJ',\r\n 'Dominica' = 'DM',\r\n 'Dominicaanse Republiek' = 'DO',\r\n 'Ecuador' = 'EC',\r\n 'Egypte' = 'EG',\r\n 'Elsalvador' = 'SV',\r\n 'Equatoriaal-Guinea' = 'GQ',\r\n 'Eritrea' = 'ER',\r\n 'Estland' = 'EE',\r\n 'Ethiopië' = 'ET',\r\n 'Falkland Eilanden' = 'FK',\r\n 'FaroElands' = 'FO',\r\n 'Fiji' = 'FJ',\r\n 'Filippijnen' = 'PH',\r\n 'Finland' = 'FI',\r\n 'Frans-Polynesië' = 'PF',\r\n 'Franse zuidelijke gebieden' = 'TF',\r\n 'FranseGuana' = 'GF',\r\n 'Gaan' = 'TG',\r\n 'Gabon' = 'GA',\r\n 'Gambia' = 'GM',\r\n 'Georgië' = 'GE',\r\n 'Ghana' = 'GH',\r\n 'Gibraltar' = 'GI',\r\n 'Grenada' = 'GD',\r\n 'Griekenland' = 'GR',\r\n 'Groenland' = 'GL',\r\n 'Guadeloupe' = 'GP',\r\n 'Guam' = 'GU',\r\n 'Guatemala' = 'GT',\r\n 'Guernsey' = 'GG',\r\n 'Guinea' = 'GN',\r\n 'Guinebissau' = 'GW',\r\n 'Guyana' = 'GY',\r\n 'Haïti' = 'HT',\r\n 'Heard en McDonaldeilanden' = 'HM',\r\n 'Honduras' = 'HN',\r\n 'Hongarije' = 'HU',\r\n 'Hongkong' = 'HK',\r\n 'Ierland' = 'IE',\r\n 'IJsland' = 'IS',\r\n 'India' = 'IN',\r\n 'Indonesië' = 'ID',\r\n 'Irak' = 'IQ',\r\n 'Iran' = 'IR',\r\n 'Isleofman' = 'IM',\r\n 'Israël' = 'IL',\r\n 'Italië' = 'IT',\r\n 'Jamaica' = 'JM',\r\n 'Japan' = 'JP',\r\n 'Jemen' = 'YE',\r\n 'Jersey' = 'JE',\r\n 'Jordanië' = 'JO',\r\n 'Kaaiman Eilanden' = 'KY',\r\n 'Kaapverdië' = 'CV',\r\n 'Kalkoen' = 'TR',\r\n 'Kameroen' = 'CM',\r\n 'Kazachstan' = 'KZ',\r\n 'Kenia' = 'KE',\r\n 'Kersteiland' = 'CX',\r\n 'Kirgizië' = 'KG',\r\n 'Kiribati' = 'KI',\r\n 'Koeweit' = 'KW',\r\n 'Noord-Korea' = 'KP',\r\n 'Zuid-Korea' = 'KR',\r\n 'Kroatië' = 'HR',\r\n 'Lao Democratische Volksrepubliek' = 'LA',\r\n 'Lesotho' = 'LS',\r\n 'Letland' = 'LV',\r\n 'Libanon' = 'LB',\r\n 'Liberia' = 'LR',\r\n 'Libië' = 'LY',\r\n 'Liechtenstein' = 'LI',\r\n 'Litouwen' = 'LT',\r\n 'Luxemburg' = 'LU',\r\n 'Macao' = 'MO',\r\n 'Macedonië' = 'MK',\r\n 'Madagascar' = 'MG',\r\n 'Malawi' = 'MW',\r\n 'Maldiven' = 'MV',\r\n 'Maleisië' = 'MY',\r\n 'Mali' = 'ML',\r\n 'Malta' = 'MT',\r\n 'Marokko' = 'MA',\r\n 'Marshall eilanden' = 'MH',\r\n 'Martinique' = 'MQ',\r\n 'Mauritanië' = 'MR',\r\n 'Mauritius' = 'MU',\r\n 'Mayotte' = 'YT',\r\n 'Mexico' = 'MX',\r\n 'Micronesië' = 'FM',\r\n 'Moldavië' = 'MD',\r\n 'Monaco' = 'MC',\r\n 'Mongolië' = 'MN',\r\n 'Montenegro' = 'ME',\r\n 'Montserrat' = 'MS',\r\n 'Mozambique' = 'MZ',\r\n 'Myanmar' = 'MM',\r\n 'Namibië' = 'NA',\r\n 'Nauru' = 'NR',\r\n 'Nederland' = 'NL',\r\n 'Nepal' = 'NP',\r\n 'Nicaragua' = 'NI',\r\n 'Nieuw-Caledonië' = 'NC',\r\n 'Nieuw-Zeeland' = 'NZ',\r\n 'Niger' = 'NE',\r\n 'Nigeria' = 'NG',\r\n 'Niue' = 'NU',\r\n 'Noordelijke Mariana eilanden' = 'MP',\r\n 'Noorwegen' = 'NO',\r\n 'Norfolkisland' = 'NF',\r\n 'Oeganda' = 'UG',\r\n 'Oekraïne' = 'UA',\r\n 'Oezbekistan' = 'UZ',\r\n 'Oman' = 'OM',\r\n 'Oostenrijk' = 'AT',\r\n 'Pakistan' = 'PK',\r\n 'Palau' = 'PW',\r\n 'Palestijns gebied' = 'PS',\r\n 'Panama' = 'PA',\r\n 'Papoea-Nieuw-Guinea' = 'PG',\r\n 'Paraguay' = 'PY',\r\n 'Peru' = 'PE',\r\n 'Pitcairn' = 'PN',\r\n 'Polen' = 'PL',\r\n 'Portugal' = 'PT',\r\n 'Puerto Rico' = 'PR',\r\n 'Qatar' = 'QA',\r\n 'Réunion' = 'RE',\r\n 'Roemenië' = 'RO',\r\n 'Russische Federatie' = 'RU',\r\n 'Rwanda' = 'RW',\r\n 'Saint Kitts en Nevis' = 'KN',\r\n 'Saintelena' = 'SH',\r\n 'Saintlucia' = 'LC',\r\n 'Saintpierreandmiquelon' = 'PM',\r\n 'SaintVincentandGrenadines' = 'VC',\r\n 'Samoa' = 'WS',\r\n 'San Marino' = 'SM',\r\n 'Saoedi-Arabië' = 'SA',\r\n 'SaoTomeandprincipe' = 'ST',\r\n 'Senegal' = 'SN',\r\n 'Servië' = 'RS',\r\n 'Seychellen' = 'SC',\r\n 'Sierra Leone' = 'SL',\r\n 'Singapore' = 'SG',\r\n 'Sint-Bartholomeus' = 'BL',\r\n 'Sint-Maarten' = 'MF',\r\n 'SintMaarten' = 'SX',\r\n 'Slovenië' = 'SI',\r\n 'Slowakije' = 'SK',\r\n 'Soedan' = 'SD',\r\n 'Solomon eilanden' = 'SB',\r\n 'Somalië' = 'SO',\r\n 'Spanje' = 'ES',\r\n 'Sri Lanka' = 'LK',\r\n 'Suriname' = 'SR',\r\n 'Svalbardandjanmayen' = 'SJ',\r\n 'Swaziland' = 'SZ',\r\n 'Syrische Arabische Republiek' = 'SY',\r\n 'Tadjikistan' = 'TJ',\r\n 'Taiwan' = 'TW',\r\n 'Tanzania' = 'TZ',\r\n 'Thailand' = 'TH',\r\n 'Timorleste' = 'TL',\r\n 'Tokelau' = 'TK',\r\n 'Tonga' = 'TO',\r\n 'Trinidad en Tobago' = 'TT',\r\n 'Tsjaad' = 'TD',\r\n 'Tsjechische Republiek' = 'CZ',\r\n 'Tunesië' = 'TN',\r\n 'Turkmenistan' = 'TM',\r\n 'Turks- en Caicoseilanden' = 'TC',\r\n 'Tuvalu' = 'TV',\r\n 'Uruguay' = 'UY',\r\n 'Vanuatu' = 'VU',\r\n 'Vaticaanstad' = 'VA',\r\n 'Venezuela' = 'VE',\r\n 'Verenigde Arabische Emiraten' = 'AE',\r\n 'Verenigde Staten' = 'US',\r\n 'Vietnam' = 'VN',\r\n 'VirginislandsBritish' = 'VG',\r\n 'Virginislandsus' = 'VI',\r\n 'Wallis en Futuna' = 'WF',\r\n 'Westelijke Sahara' = 'EH',\r\n 'Wit-Rusland' = 'BY',\r\n 'Zambia' = 'ZM',\r\n 'Zimbabwe' = 'ZW',\r\n 'Zuid Soedan' = 'SS',\r\n 'Zuid-Afrika' = 'ZA',\r\n 'Zuid-Georgia en de Zuidelijke Sandwicheilanden' = 'GS',\r\n 'Zweden' = 'SE',\r\n 'Zwitserland' = 'CH',\r\n}\r\n","import { CustomResponse, useApi } from 'hooks/api';\r\nimport { useMutation, useQueryClient } from 'react-query';\r\nimport { appendObject } from 'utils/objectAppender';\r\nimport { AddCollectionInputModel, AddSignedCollectionOverviewInputModel, CollectionMutationContext, CollectionPlainModel, EditCollectionInputModel } from './types';\r\nimport { CollectionAllQueryKey } from './useAllCollections';\r\nimport { v4 as uuid } from 'uuid';\r\nimport { formatISO } from 'date-fns';\r\nimport { CollectionStatus } from 'utils/constants/collectionconstants';\r\n\r\nconst useCollection = () => {\r\n const queryClient = useQueryClient();\r\n\r\n const { post, get, put, deleteCall } = useApi();\r\n\r\n const baseUrl = '/collection';\r\n\r\n const addCollection = async (values: AddCollectionInputModel) => {\r\n const fd = new FormData();\r\n\r\n appendObject(values, fd);\r\n\r\n const response = await post(\r\n baseUrl, fd\r\n );\r\n\r\n return response;\r\n };\r\n\r\n const editCollection = async (values: EditCollectionInputModel) => {\r\n const fd = new FormData();\r\n\r\n appendObject(values, fd);\r\n\r\n const response = await put(\r\n baseUrl, fd\r\n );\r\n\r\n return response;\r\n };\r\n\r\n const validateStep1AddCollection = async (values: AddCollectionInputModel) => {\r\n const fd = new FormData();\r\n\r\n appendObject(values, fd);\r\n\r\n const response = await post(\r\n `${baseUrl}/validate/step1`, fd\r\n );\r\n\r\n return response;\r\n };\r\n\r\n const validateStep3AddCollection = async (values: AddCollectionInputModel) => {\r\n const fd = new FormData();\r\n\r\n appendObject(values, fd);\r\n\r\n const response = await post(\r\n `${baseUrl}/validate/step3`, fd\r\n );\r\n\r\n return response;\r\n };\r\n\r\n const collectionMutation = useMutation, CustomResponse, AddCollectionInputModel, CollectionMutationContext>((values: AddCollectionInputModel) => addCollection(values), {\r\n onMutate: async (values: AddCollectionInputModel) => {\r\n await queryClient.cancelQueries(CollectionAllQueryKey);\r\n\r\n const previousData = queryClient.getQueryData(CollectionAllQueryKey);\r\n\r\n const newData: CollectionPlainModel[] = [\r\n ...(previousData ?? []), {\r\n id: uuid(),\r\n amount: values.amount,\r\n created: formatISO(new Date()),\r\n debtor: {\r\n id: uuid(),\r\n contactPersonInitials: values.debtor.contactPersonInitials,\r\n contactPersonLastName: values.debtor.contactPersonLastName,\r\n companyName: values.debtor.companyName,\r\n relationNumber: values.debtor.relationNumber\r\n },\r\n customerName: '',\r\n caseNumber: '',\r\n status: CollectionStatus.InProgress\r\n }\r\n ];\r\n\r\n queryClient.setQueryData(CollectionAllQueryKey, newData);\r\n\r\n return { previousData };\r\n },\r\n onError: (error, variables, context) => {\r\n if (context?.previousData) {\r\n queryClient.setQueryData(CollectionAllQueryKey, context.previousData);\r\n }\r\n },\r\n onSettled: () => {\r\n queryClient.invalidateQueries(CollectionAllQueryKey);\r\n }\r\n });\r\n\r\n const getExampleCollectionOverview = async (values: AddCollectionInputModel) => {\r\n const fd = new FormData();\r\n\r\n appendObject(values, fd);\r\n\r\n const response = await post(\r\n `${baseUrl}/example-overview`, fd\r\n );\r\n\r\n return response;\r\n };\r\n\r\n const downloadCollectionFile = async (collectionId: string, fileId: string) => {\r\n const response = await get(\r\n `${baseUrl}/file/${collectionId}/${fileId}`\r\n );\r\n\r\n return response;\r\n };\r\n\r\n const uploadSignedCollectionOverview = async (collectionId: string, values: AddSignedCollectionOverviewInputModel) => {\r\n const fd = new FormData();\r\n\r\n appendObject(values, fd);\r\n\r\n const response = await post(`${baseUrl}/${collectionId}/signed`, fd);\r\n\r\n return response;\r\n };\r\n\r\n const getCollectionSignRequestUrl = async (collectionId: string) => {\r\n const response = await get(`${baseUrl}/${collectionId}/signrequesturl`);\r\n\r\n return response;\r\n };\r\n\r\n const deleteCollection = async (collectionId: string) => {\r\n const response = await deleteCall(`${baseUrl}/${collectionId}`);\r\n\r\n return response;\r\n };\r\n\r\n return {\r\n addCollection,\r\n editCollection,\r\n validateStep1AddCollection,\r\n validateStep3AddCollection,\r\n collectionMutation,\r\n getExampleCollectionOverview,\r\n downloadCollectionFile,\r\n uploadSignedCollectionOverview,\r\n getCollectionSignRequestUrl,\r\n deleteCollection\r\n };\r\n};\r\n\r\nexport default useCollection;\r\n","import React, { FC, useCallback, useEffect, useState } from 'react';\r\nimport { Card, CardBody } from 'components/atoms/card';\r\nimport { Paragraph, H3, H4 } from 'components/atoms/text';\r\nimport { Button } from 'components/atoms/button';\r\nimport ButtonWrapper from 'components/atoms/ButtonWrapper';\r\nimport useCollection from 'hooks/collection/useCollection';\r\nimport { useFormikContext } from 'formik';\r\nimport { AddCollectionInputModel } from 'hooks/collection/types';\r\nimport { toast } from 'react-toastify';\r\nimport { Document, Page } from 'react-pdf/dist/esm/entry.webpack';\r\nimport Margin from 'components/atoms/Margin';\r\nimport Group from 'components/molecules/Group';\r\nimport { FormikFormYesNo } from 'components/atoms/form';\r\nimport FormControlFormik from 'components/atoms/form/FormControl/formik';\r\nimport moment from 'moment';\r\nimport { useSession } from 'contexts/sessionContext';\r\nimport { Col, Row } from 'react-grid-system';\r\n\r\nexport interface Step4Props { }\r\n\r\nconst Step4: FC = () => {\r\n const { values } = useFormikContext();\r\n const { getExampleCollectionOverview } = useCollection();\r\n const { session } = useSession();\r\n\r\n const [valuesChanged, setValuesChanged] = useState(false);\r\n const [isLoadingDownload, setIsLoadingDownload] = useState(false);\r\n const [isLoadingPreview, setIsLoadingPreview] = useState(false);\r\n const [pdf, setPdf] = useState();\r\n const [showPdf, setShowPdf] = useState(false);\r\n const [numPages, setNumPages] = useState(null);\r\n const [pageNumber, setPageNumber] = useState(1);\r\n\r\n const onDocumentLoadSuccess = (numPages: number) => {\r\n setNumPages(numPages);\r\n };\r\n\r\n const downloadExampleCollectionOverview = async () => {\r\n if (!valuesChanged && pdf != null) {\r\n saveAs(pdf, 'voorbeeld_incasso_overzicht.pdf');\r\n return;\r\n }\r\n\r\n setIsLoadingDownload(true);\r\n\r\n const response = await getExampleCollectionOverview(values);\r\n\r\n if (response.ok) {\r\n const blob = await response.blob();\r\n saveAs(blob, 'voorbeeld_incasso_overzicht.pdf');\r\n setPdf(blob);\r\n setValuesChanged(false);\r\n } else {\r\n toast.error('Er ging iets fout bij het ophalen van de PDF');\r\n }\r\n\r\n setIsLoadingDownload(false);\r\n };\r\n\r\n const previewExampleCollectionOverview = async () => {\r\n if (!valuesChanged && pdf != null) {\r\n setShowPdf(true);\r\n }\r\n\r\n setIsLoadingPreview(true);\r\n\r\n const response = await getExampleCollectionOverview(values);\r\n\r\n if (response.ok) {\r\n const blob = await response.blob();\r\n setPdf(blob);\r\n setShowPdf(true);\r\n setValuesChanged(false);\r\n } else {\r\n toast.error('Er ging iets fout bij het ophalen van de PDF');\r\n }\r\n\r\n setIsLoadingPreview(false);\r\n };\r\n\r\n useEffect(() => {\r\n setValuesChanged(true);\r\n }, [values]);\r\n\r\n const nextPage = useCallback(() => {\r\n if (pageNumber === numPages) {\r\n return;\r\n }\r\n\r\n setPageNumber(pageNumber + 1);\r\n }, [pageNumber, numPages]);\r\n\r\n const previousPage = useCallback(() => {\r\n if (pageNumber === 1) {\r\n return;\r\n }\r\n\r\n setPageNumber(pageNumber - 1);\r\n }, [pageNumber, numPages]);\r\n\r\n // Render.\r\n return (\r\n <>\r\n \r\n \r\n

Verhaalsinformatie

\r\n \r\n Verhaalsinformatie geeft u inzicht in de (financiële) situatie van uw debiteur en geeft een indicatie van het te\r\n volgen traject bij het incasseren van uw vordering. Wij adviseren verhaalsinformatie bij vorderingen vanaf €\r\n 2.500,00. Op basis van uw incassomodule ontvangt u 50% korting op het verhaalsrapport, wij informeren u\r\n hierover nader.\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n

Machtiging

\r\n \r\n Door het verzenden van dit formulier machtigt u Juresta om alle zaken met betrekking tot deze in behandeling gegeven\r\n incasso-opdracht te beheren, de belangen waar te nemen, voor de rechten van de opdrachtgever op te komen en deze bij\r\n dit alles - zowel in als buiten rechte - te vertegenwoordigen en verder alles te doen wat de gevolmachtigde in het\r\n belang van de volmachtgever gewenst, nuttig of noodzakelijk zal achten.\r\n \r\n
\r\n

Uw gegevens

\r\n \r\n \r\n Datum\r\n {moment().format('DD-MM-YYYY')}\r\n \r\n \r\n \r\n \r\n Naam\r\n {session?.fullName ?? ''}\r\n \r\n \r\n \r\n \r\n Functie\r\n \r\n \r\n \r\n \r\n

Heeft u de gegevens zo volledig mogelijk en naar waarheid ingevuld?

\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n Bekijk de door u ingevulde gegevens of download een overzicht, u kunt ook\r\n een exemplaar opslaan voor uw eigen administratie.\r\n \r\n \r\n \r\n \r\n \r\n {pdf && showPdf && (\r\n \r\n onDocumentLoadSuccess(numPages)}>\r\n \r\n \r\n \r\n \r\n

{`${pageNumber} van ${numPages}`}

\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 Step4;\r\n","import React, { FC } from 'react';\r\nimport { RouteComponentProps } from '@reach/router';\r\nimport Wizard from 'components/organisms/Wizard';\r\nimport Step2 from './components/Step2';\r\nimport Step1 from './components/Step1';\r\nimport Step3 from './components/Step3';\r\nimport Step4 from './components/Step4';\r\nimport { AddCollectionInputModel } from 'hooks/collection/types';\r\nimport { FormikHelpers } from 'formik';\r\nimport useCollection from 'hooks/collection/useCollection';\r\nimport { toFormikErrors } from 'utils/errorhelper';\r\nimport { toast } from 'react-toastify';\r\nimport { useHeader } from 'contexts/headerContext';\r\nimport Margin from 'components/atoms/Margin';\r\nimport { persistCollectionKey } from 'utils/constants/localstrorageconstants';\r\n\r\nconst AddCollection: FC = () => {\r\n useHeader('Nieuwe Incasso - Opdracht');\r\n\r\n const { validateStep1AddCollection, validateStep3AddCollection, addCollection } = useCollection();\r\n\r\n const handleOnSubmit = async (\r\n values: AddCollectionInputModel,\r\n { setErrors, setSubmitting, resetForm }: FormikHelpers\r\n ) => {\r\n const response = await addCollection(values);\r\n if (response.ok && response.data) {\r\n setSubmitting(false);\r\n resetForm();\r\n localStorage.removeItem(persistCollectionKey);\r\n\r\n window.location.href = response.data;\r\n } else if (response.errors) {\r\n const errors = toFormikErrors(response.errors);\r\n setErrors(errors);\r\n toast.error('Niet alle velden zijn ingevuld');\r\n } else {\r\n toast.error('Er ging iets fout bij het toevoegen van de incasso');\r\n }\r\n\r\n setSubmitting(false);\r\n };\r\n\r\n const validateStep1 = async (\r\n values: AddCollectionInputModel,\r\n { setSubmitting, setErrors }: FormikHelpers\r\n ): Promise => {\r\n setSubmitting(true);\r\n\r\n const response = await validateStep1AddCollection(values);\r\n\r\n if (response.ok) {\r\n setSubmitting(false);\r\n return true;\r\n } else if (response.errors) {\r\n const errors = toFormikErrors(response.errors);\r\n setErrors(errors);\r\n toast.error('Niet alle velden zijn ingevuld');\r\n }\r\n\r\n setSubmitting(false);\r\n return false;\r\n };\r\n\r\n const validateStep3 = async (\r\n values: AddCollectionInputModel,\r\n { setSubmitting, setErrors }: FormikHelpers\r\n ): Promise => {\r\n setSubmitting(true);\r\n\r\n const response = await validateStep3AddCollection(values);\r\n\r\n if (response.ok) {\r\n setSubmitting(false);\r\n return true;\r\n } else if (response.errors) {\r\n const errors = toFormikErrors(response.errors);\r\n setErrors(errors);\r\n toast.error('Niet alle velden zijn ingevuld');\r\n }\r\n\r\n setSubmitting(false);\r\n return false;\r\n };\r\n\r\n // Formik.\r\n const initialValues: AddCollectionInputModel = {\r\n debtor: {\r\n isCompany: true,\r\n addressMail: '',\r\n addressVisit: '',\r\n cityMail: '',\r\n cityVisit: '',\r\n comments: '',\r\n companyName: '',\r\n contactPersonInitials: '',\r\n contactPersonLastName: '',\r\n dateOfBirth: undefined,\r\n gender: undefined,\r\n email: '',\r\n iban: '',\r\n kvkNumber: '',\r\n legalForm: undefined,\r\n mobileNumber: '',\r\n phoneNumber: '',\r\n postalCodeMail: '',\r\n postalCodeVisit: '',\r\n website: '',\r\n isMailAddressDifferent: false,\r\n relationNumber: 0\r\n },\r\n amount: 0,\r\n hasHistoryWithDebtor: false,\r\n historyWithDebtorWantToComment: false,\r\n historyWithDebtorComments: '',\r\n hasDebtorDefence: false,\r\n debtorDefenceFiles: undefined,\r\n debtorDefenceWantToComment: false,\r\n debtorDefenceComments: '',\r\n areTermsApplied: false,\r\n termsAppliedWantToComment: false,\r\n termsAppliedComments: '',\r\n termsFiles: undefined,\r\n hasSignedAgreements: false,\r\n signedAgreementsFiles: undefined,\r\n hasQuotation: false,\r\n quotationFiles: undefined,\r\n hasAssignmentLetter: false,\r\n assignmentLetterFiles: undefined,\r\n hasSignedDeliveryNote: false,\r\n signedDeliveryNoteFiles: undefined,\r\n writtenDocumentsComments: '',\r\n hasInvoices: false,\r\n invoiceFiles: undefined,\r\n hasReminders: false,\r\n reminderFiles: undefined,\r\n hasExhortation: false,\r\n exhortationFiles: undefined,\r\n hasPlan: false,\r\n planFiles: undefined,\r\n hasConversationNotes: false,\r\n conversationNotesFiles: undefined,\r\n hasPhoneNotes: false,\r\n phoneNotesFiles: undefined,\r\n hasAppOrSms: false,\r\n appOrSmsFiles: undefined,\r\n hasOtherCorrespondence: false,\r\n otherCorrespondenceFiles: undefined,\r\n isTaxesRequired: false,\r\n taxesComments: '',\r\n isStoryInformationRequested: false,\r\n hasAgreed: false,\r\n userFunction: ''\r\n };\r\n\r\n return (\r\n \r\n \r\n initialValues={initialValues}\r\n initialStep={0}\r\n onSubmit={handleOnSubmit}\r\n onSubmitLabel=\"Ondertekenen\"\r\n persistKey={persistCollectionKey}\r\n steps={[\r\n {\r\n step: 1,\r\n title: 'Zakelijk of particulier',\r\n child: ,\r\n needsValidation: false\r\n },\r\n {\r\n step: 2,\r\n title: 'Gewenste debiteur',\r\n child: ,\r\n onSubmit: validateStep1,\r\n needsValidation: true\r\n },\r\n {\r\n step: 3,\r\n title: 'Gegevens vordering',\r\n child: ,\r\n onSubmit: validateStep3,\r\n needsValidation: true\r\n },\r\n {\r\n step: 4,\r\n title: 'Indienen incasso',\r\n child: \r\n }\r\n ]}\r\n />\r\n \r\n );\r\n};\r\n\r\nexport default AddCollection;\r\n","import React, { FC, useState } from 'react';\r\nimport { Card, CardBody } from 'components/atoms/card';\r\nimport { FormGroup, FormikFormControl, FormikFormDate, FormikFormSelect, FormikFormTextarea } from 'components/atoms/form';\r\nimport FormCheckFormik from 'components/atoms/form/FormCheck/formik';\r\nimport { useFormikContext } from 'formik';\r\nimport { AddCollectionForeignInputModel } from 'hooks/collectionforeign/types';\r\nimport HeaderAction from 'components/atoms/HeaderAction';\r\nimport { Col, Row } from 'react-grid-system';\r\nimport { legelFormOptions } from 'utils/constants/legalformconstants';\r\nimport KvkSearch from 'components/organisms/KvkSearch';\r\nimport { KvkCompanyInfoModel } from 'hooks/kvk/types';\r\nimport Margin from 'components/atoms/Margin';\r\nimport { Paragraph, H3 } from 'components/atoms/text';\r\nimport useKvk from 'hooks/kvk/useKvk';\r\nimport { Country } from 'utils/constants/address';\r\nimport { genderOptions } from 'utils/constants/personconstants';\r\nimport { KvkLegalFormStringToLegalForm } from 'utils/kvkHelper';\r\n\r\nexport interface Step2Props {\r\n}\r\n\r\nconst Step2: FC = () => {\r\n const { getBasicProfile } = useKvk();\r\n\r\n const { values, setFieldValue } = useFormikContext();\r\n const [showCompanyNameField, setShowCompanyNameField] = useState(true);\r\n\r\n const onCompanySelectChange = (company: KvkCompanyInfoModel | undefined) => {\r\n if (company === undefined) {\r\n setShowCompanyNameField(true);\r\n setFieldValue('debtor.kvkNumber', '');\r\n setFieldValue('debtor.companyName', '');\r\n setFieldValue('debtor.isMailAddressDifferent', false);\r\n clearPostAddress();\r\n clearVisitAddress();\r\n return;\r\n }\r\n\r\n setShowCompanyNameField(false);\r\n setFieldValue('debtor.kvkNumber', company.kvkNumber);\r\n setFieldValue('debtor.companyName', company.name);\r\n\r\n getCompanyBasicProfile(company.kvkNumber);\r\n };\r\n\r\n const onCompanySearchDone = (hasResults: boolean) => {\r\n if (hasResults) {\r\n return;\r\n }\r\n\r\n setShowCompanyNameField(true);\r\n setFieldValue('debtor.kvkNumber', '');\r\n setFieldValue('debtor.companyName', '');\r\n setFieldValue('debtor.isMailAddressDifferent', false);\r\n clearPostAddress();\r\n clearVisitAddress();\r\n };\r\n\r\n const clearPostAddress = () => {\r\n setFieldValue('debtor.isMailAddressDifferent', false);\r\n setFieldValue('debtor.postalCodeMail', '');\r\n setFieldValue('debtor.cityMail', '');\r\n setFieldValue('debtor.addressMail', '');\r\n };\r\n\r\n const clearVisitAddress = () => {\r\n setFieldValue('debtor.postalCodeVisit', '');\r\n setFieldValue('debtor.cityVisit', '');\r\n setFieldValue('debtor.addressVisit', '');\r\n };\r\n\r\n const getCompanyBasicProfile = async (kvkNumber: string) => {\r\n const response = await getBasicProfile(kvkNumber);\r\n\r\n if (!response.ok || response.data == null || response.data.addresses.length === 0) {\r\n return;\r\n }\r\n\r\n const visitAddress = response.data.addresses.find((address) => address.type === 'bezoekadres');\r\n const postAddress = response.data.addresses.find((address) => address.type === 'correspondentieadres');\r\n\r\n setFieldValue('debtor.legalForm', KvkLegalFormStringToLegalForm(response.data.legalForm));\r\n\r\n if (visitAddress != null) {\r\n setFieldValue('debtor.postalCodeVisit', visitAddress.postalCode);\r\n setFieldValue('debtor.cityVisit', visitAddress.city);\r\n setFieldValue('debtor.addressVisit', `${visitAddress.street} ${visitAddress.houseNumber}${visitAddress.houseNumberAddition}`);\r\n }\r\n\r\n if (visitAddress == null && postAddress != null) {\r\n setFieldValue('debtor.postalCodeVisit', postAddress.postalCode);\r\n setFieldValue('debtor.cityVisit', postAddress.city);\r\n setFieldValue('debtor.addressVisit', `${postAddress.street} ${postAddress.houseNumber}${postAddress.houseNumberAddition}`);\r\n }\r\n\r\n if (visitAddress != null && postAddress != null) {\r\n setFieldValue('debtor.isMailAddressDifferent', true);\r\n setFieldValue('debtor.postalCodeMail', postAddress.postalCode);\r\n setFieldValue('debtor.cityMail', postAddress.city);\r\n setFieldValue('debtor.addressMail', `${postAddress.street} ${postAddress.houseNumber}${postAddress.houseNumberAddition}`);\r\n }\r\n\r\n if (visitAddress == null || postAddress == null) {\r\n clearPostAddress();\r\n }\r\n\r\n if (visitAddress == null && postAddress == null) {\r\n clearVisitAddress();\r\n }\r\n };\r\n\r\n\r\n const country: any = [];\r\n for (const [key, value] of Object.entries(Country)) {\r\n country.push({ label: key, value: value });\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n {values.debtor.isCompany ? (\r\n <>\r\n

Opdrachtformulier tot incasso - bedrijf

\r\n \r\n Met dit formulier geeft u Juresta opdracht, op basis van de gesloten incassomodule,\r\n tot het behandelen van uw incasso-opdracht. Vul het formulier zo volledig mogelijk in. Waar\r\n nodig kunt u direct de relevante documenten toevoegen. Door gebruik te maken van de\r\n zoekfunctie “vind uw debiteur” kunt u eenvoudig de gegevens van uw debiteur overnemen in\r\n dit formulier.\r\n \r\n \r\n In het eerste deel van dit formulier vult u de bedrijfs- en contactgegevens in. In het\r\n tweede deel vult u de gegevens met betrekking tot de openstaande post(en) in. Formulier ingevuld?\r\n Dan heeft u de mogelijkheid het formulier digitaal te ondertekenen en een exemplaar op te slaan\r\n of te printen voor uw eigen administratie.\r\n \r\n \r\n Heeft u vragen over het invullen van dit formulier, neemt u dan gerust contact met ons op.\r\n \r\n \r\n ) : (\r\n <>\r\n

Opdrachtformulier tot incasso - consument

\r\n \r\n Met dit formulier geeft u Juresta opdracht, op basis van de gesloten incasso-overeenkomst, tot\r\n het behandelen van uw incasso-opdracht. Vul het formulier zo volledig mogelijk in. Waar nodig\r\n kunt u direct de relevante documenten toevoegen.\r\n \r\n \r\n In het eerste deel van dit formulier vult u de persoonlijke- en contactgegevens in. In het\r\n tweede deel vult u de gegevens met betrekking tot de openstaande post in.\r\n \r\n \r\n Heeft u vragen over het invullen van dit formulier, neemt u dan gerust contact met ons op.\r\n \r\n \r\n )}\r\n
\r\n
\r\n \r\n \r\n {values.debtor.isCompany ? (\r\n <>\r\n \r\n

Gegevens van uw debiteur

\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n showCompanyNameField &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \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

Adresgegevens

\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 {values.debtor.isMailAddressDifferent && (\r\n \r\n \r\n \r\n

Postadresgegevens

\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

Contactgegevens

\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 Step2;\r\n","import React, { FC } from 'react';\r\nimport { Card, CardBody } from 'components/atoms/card';\r\nimport { FormGroup, FormRadio } from 'components/atoms/form';\r\nimport Margin from 'components/atoms/Margin';\r\nimport { Paragraph, H3 } from 'components/atoms/text';\r\nimport Group from 'components/molecules/Group';\r\nimport { useFormikContext } from 'formik';\r\nimport { AddCollectionForeignInputModel } from 'hooks/collectionforeign/types';\r\nimport HeaderAction from 'components/atoms/HeaderAction';\r\n\r\nexport interface Step1Props {\r\n}\r\n\r\nconst Step1: FC = () => {\r\n\r\n const { values, setFieldValue } = useFormikContext();\r\n\r\n // Render.\r\n const title = values.debtor.isCompany ? 'Incasso-opdracht indienen - Buitenland' : 'Incasso-opdracht indienen - Buitenland';\r\n // const date = new Date();\r\n // const time = date.getHours();\r\n\r\n const setCompany = (value: boolean) => {\r\n setFieldValue('debtor.isCompany', value);\r\n\r\n if (!value) {\r\n setFieldValue('debtor.companyName', '');\r\n setFieldValue('debtor.kvkNumber', '');\r\n setFieldValue('debtor.legalForm', undefined);\r\n } else {\r\n setFieldValue('debtor.dateOfBirth', undefined);\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n \r\n \r\n

\r\n {title}\r\n

\r\n \r\n In dit deel kunt u eenvoudig uw incasso-opdracht indienen. Het invullen van het formulier duurt ongeveer 5 – 10 minuten. Voordat u begint adviseren wij u de relevante documenten te verzamelen (of beschikbaar te hebben om direct bij te kunnen voegen). Denkt u dan aan uw factuur, herinnering, aanmaning e.d. In het formulier is er op meerdere plekken ruimte om een toelichting te geven.\r\n \r\n \r\n Kiest u hieronder allereerst of uw debiteur een consument of een bedrijf betreft.\r\n Twijfelt u over de aard van uw debiteur? Kies dan voor de optie bedrijf.\r\n \r\n
\r\n
\r\n \r\n \r\n {/* \r\n

Incasso-opdracht indienen

\r\n \r\n {\r\n time < 12 ? (\r\n <>Goeiemorgen,\r\n ) : time < 18 ? (\r\n <>Goeiemiddag,\r\n ) : (\r\n <>Goeieavond,\r\n )\r\n }\r\n \r\n \r\n In dit deel kunt u eenvoudig uw incasso-opdracht indienen. Het invullen van het formulier duurt ongeveer 5 – 10 minuten. Voordat u begint adviseren wij u de relevante documenten te verzamelen (of beschikbaar te hebben om direct bij te kunnen voegen). Denkt u dan aan uw factuur, herinnering, aanmaning e.d. In het formulier is er op meerdere plekken ruimte om een toelichting te geven.\r\n \r\n \r\n Kiest u hieronder allereerst of uw debiteur een consument of een bedrijf betreft.\r\n Twijfelt u over de aard van uw debiteur? Kies dan voor de optie bedrijf.\r\n \r\n
*/}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n setCompany(true)} />\r\n setCompany(false)} />\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default Step1;\r\n","import { Card, CardBody } from 'components/atoms/card';\r\nimport { FormikFormYesNo, FormikFormTextarea, FormGroup, FormikFormMultipleFile } from 'components/atoms/form';\r\nimport React, { FC } from 'react';\r\nimport { useFormikContext } from 'formik';\r\nimport { AddCollectionForeignInputModel } from 'hooks/collectionforeign/types';\r\nimport { H3, Paragraph } from 'components/atoms/text';\r\nimport FormCurrencyFormik from 'components/atoms/form/FormCurrency/formik';\r\n\r\nexport interface Step3Props { }\r\n\r\nconst Step3: FC = () => {\r\n const { values, setFieldValue } = useFormikContext();\r\n\r\n // Render.\r\n const showWrittenDocumentsExplanation = [\r\n values.hasSignedAgreements,\r\n values.hasQuotation,\r\n values.hasAssignmentLetter,\r\n values.hasSignedDeliveryNote\r\n ].some(Boolean);\r\n\r\n return (\r\n <>\r\n \r\n \r\n

Vordering

\r\n \r\n setFieldValue('amount', value)} />\r\n \r\n
\r\n
\r\n \r\n \r\n

Geschiedenis debiteur

\r\n \r\n \r\n {values.historyWithDebtorWantToComment && (\r\n \r\n \r\n \r\n )}\r\n
\r\n
\r\n \r\n \r\n

Verweer debiteur

\r\n \r\n \r\n {values.debtorDefenceWantToComment && values.hasDebtorDefence && (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n {values.debtorDefenceWantToComment && !values.hasDebtorDefence && (\r\n \r\n \r\n \r\n )}\r\n
\r\n
\r\n \r\n \r\n

Voorwaarden

\r\n \r\n {values.areTermsApplied && (\r\n \r\n \r\n \r\n )}\r\n \r\n {values.termsAppliedWantToComment && (\r\n \r\n \r\n \r\n )}\r\n
\r\n
\r\n \r\n \r\n

Documenten met betrekking tot uw vordering

\r\n \r\n Alle mogelijke documenten die kunnen leiden tot de vaststelling dat de overeenkomst tot stand is gekomen zijn van\r\n belang. Denk bijvoorbeeld aan een ondertekend offerteformulier, werkbon, pakbon of een vrachtbrief. Beschikt u niet\r\n over deze documenten? Vult u dan in het opmerkingenveld in hoe de overeenkomst tot stand is gekomen.\r\n \r\n \r\n Daarnaast staan wij sterker in een incassoprocedure als alle relevante stukken van de vordering aanwezig zijn. Ook\r\n een eenvoudige (telefoon)notitie of Whatsapp-bericht kan van belang zijn. Is het voor u niet mogelijk om uw\r\n documenten direct bij te voegen? Stuurt u deze dan per mail naar teamincasso@juresta.nl.\r\n \r\n \r\n {values.hasSignedAgreements && (\r\n \r\n \r\n \r\n )}\r\n \r\n {values.hasQuotation && (\r\n \r\n \r\n \r\n )}\r\n \r\n {values.hasAssignmentLetter && (\r\n \r\n \r\n \r\n )}\r\n \r\n {values.hasSignedDeliveryNote && (\r\n \r\n \r\n \r\n )}\r\n {showWrittenDocumentsExplanation && (\r\n \r\n \r\n \r\n )}\r\n
\r\n
\r\n \r\n \r\n

Relevante stukken

\r\n \r\n {values.hasInvoices && (\r\n \r\n \r\n \r\n )}\r\n \r\n {values.hasReminders && (\r\n \r\n \r\n \r\n )}\r\n \r\n {values.hasExhortation && (\r\n \r\n \r\n \r\n )}\r\n \r\n {values.hasPlan && (\r\n \r\n \r\n \r\n )}\r\n \r\n {values.hasConversationNotes && (\r\n \r\n \r\n \r\n )}\r\n \r\n {values.hasPhoneNotes && (\r\n \r\n \r\n \r\n )}\r\n \r\n {values.hasAppOrSms && (\r\n \r\n \r\n \r\n )}\r\n \r\n {values.hasOtherCorrespondence && (\r\n \r\n \r\n \r\n )}\r\n
\r\n
\r\n \r\n \r\n

BTW

\r\n \r\n {!values.isTaxesRequired && (\r\n \r\n \r\n \r\n )}\r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default Step3;\r\n","import { useSession } from 'contexts/sessionContext';\r\nimport { useApi } from 'hooks/api';\r\nimport { useQuery } from 'react-query';\r\nimport { buildUriWithParams } from 'utils/urihelper';\r\nimport { CollectionForeignPlainModel, GetCollectionForeignInputModel } from './types';\r\n\r\nexport const CollectionForeignAllQueryKey = 'collectionforeign.all';\r\n\r\nexport default function useAllCollectionForeigns() {\r\n const { session } = useSession();\r\n const { get } = useApi();\r\n\r\n const getAllCollectionForeigns = async (params?: GetCollectionForeignInputModel) => {\r\n\r\n const uri = buildUriWithParams('/collectionforeign', params);\r\n const { data } = await get(uri);\r\n\r\n return data;\r\n };\r\n\r\n return useQuery(CollectionForeignAllQueryKey, () => getAllCollectionForeigns({ customerId: session?.customerId }));\r\n}\r\n","import { CustomResponse, useApi } from 'hooks/api';\r\nimport { useMutation, useQueryClient } from 'react-query';\r\nimport { appendObject } from 'utils/objectAppender';\r\nimport { AddCollectionForeignInputModel, AddSignedCollectionForeignOverviewInputModel, CollectionForeignMutationContext, CollectionForeignPlainModel, EditCollectionForeignInputModel } from './types';\r\nimport { CollectionForeignAllQueryKey } from './useAllCollectionForeigns';\r\nimport { v4 as uuid } from 'uuid';\r\nimport { formatISO } from 'date-fns';\r\nimport { CollectionStatus } from 'utils/constants/collectionconstants';\r\n\r\nconst useCollectionForeign = () => {\r\n const queryClient = useQueryClient();\r\n\r\n const { post, get, put, deleteCall } = useApi();\r\n\r\n const baseUrl = '/collectionforeign';\r\n\r\n const addCollectionForeign = async (values: AddCollectionForeignInputModel) => {\r\n const fd = new FormData();\r\n\r\n appendObject(values, fd);\r\n\r\n const response = await post(\r\n baseUrl, fd\r\n );\r\n\r\n return response;\r\n };\r\n\r\n\r\n const editCollectionForeign = async (values: EditCollectionForeignInputModel) => {\r\n const fd = new FormData();\r\n\r\n appendObject(values, fd);\r\n\r\n const response = await put(\r\n baseUrl, fd\r\n );\r\n\r\n return response;\r\n };\r\n\r\n const validateStep1AddCollectionForeign = async (values: AddCollectionForeignInputModel) => {\r\n const fd = new FormData();\r\n\r\n appendObject(values, fd);\r\n\r\n const response = await post(\r\n `${baseUrl}/validate/step1`, fd\r\n );\r\n\r\n return response;\r\n };\r\n\r\n const validateStep3AddCollectionForeign = async (values: AddCollectionForeignInputModel) => {\r\n const fd = new FormData();\r\n\r\n appendObject(values, fd);\r\n\r\n const response = await post(\r\n `${baseUrl}/validate/step3`, fd\r\n );\r\n\r\n return response;\r\n };\r\n\r\n const collectionForeignMutation = useMutation, CustomResponse, AddCollectionForeignInputModel, CollectionForeignMutationContext>((values: AddCollectionForeignInputModel) => addCollectionForeign(values), {\r\n onMutate: async (values: AddCollectionForeignInputModel) => {\r\n await queryClient.cancelQueries(CollectionForeignAllQueryKey);\r\n\r\n const previousData = queryClient.getQueryData(CollectionForeignAllQueryKey);\r\n\r\n const newData: CollectionForeignPlainModel[] = [\r\n ...(previousData ?? []), {\r\n id: uuid(),\r\n amount: values.amount,\r\n created: formatISO(new Date()),\r\n debtor: {\r\n id: uuid(),\r\n contactPersonInitials: values.debtor.contactPersonInitials,\r\n contactPersonLastName: values.debtor.contactPersonLastName,\r\n companyName: values.debtor.companyName,\r\n relationNumber: values.debtor.relationNumber\r\n },\r\n customerName: '',\r\n caseNumber: '',\r\n status: CollectionStatus.InProgress\r\n }\r\n ];\r\n\r\n queryClient.setQueryData(CollectionForeignAllQueryKey, newData);\r\n\r\n return { previousData };\r\n },\r\n onError: (error, variables, context) => {\r\n if (context?.previousData) {\r\n queryClient.setQueryData(CollectionForeignAllQueryKey, context.previousData);\r\n }\r\n },\r\n onSettled: () => {\r\n queryClient.invalidateQueries(CollectionForeignAllQueryKey);\r\n }\r\n });\r\n\r\n const getExampleCollectionForeignOverview = async (values: AddCollectionForeignInputModel) => {\r\n const fd = new FormData();\r\n\r\n appendObject(values, fd);\r\n\r\n const response = await post(\r\n `${baseUrl}/example-overview`, fd\r\n );\r\n\r\n return response;\r\n };\r\n\r\n const downloadCollectionForeignFile = async (collectionForeignId: string, fileId: string) => {\r\n const response = await get(\r\n `${baseUrl}/file/${collectionForeignId}/${fileId}`\r\n );\r\n\r\n return response;\r\n };\r\n\r\n const uploadSignedCollectionForeignOverview = async (collectionId: string, values: AddSignedCollectionForeignOverviewInputModel) => {\r\n const fd = new FormData();\r\n\r\n appendObject(values, fd);\r\n\r\n const response = await post(`${baseUrl}/${collectionId}/signed`, fd);\r\n\r\n return response;\r\n };\r\n\r\n const getCollectionForeignSignRequestUrl = async (collectionId: string) => {\r\n const response = await get(`${baseUrl}/${collectionId}/signrequesturl`);\r\n\r\n return response;\r\n };\r\n\r\n const deleteCollectionForeign = async (collectionId: string) => {\r\n const response = await deleteCall(`${baseUrl}/${collectionId}`);\r\n\r\n return response;\r\n };\r\n\r\n return {\r\n addCollectionForeign,\r\n editCollectionForeign,\r\n validateStep1AddCollectionForeign,\r\n validateStep3AddCollectionForeign,\r\n collectionForeignMutation,\r\n getExampleCollectionForeignOverview,\r\n downloadCollectionForeignFile,\r\n uploadSignedCollectionForeignOverview,\r\n getCollectionForeignSignRequestUrl,\r\n deleteCollectionForeign\r\n };\r\n};\r\n\r\nexport default useCollectionForeign;\r\n","import React, { FC, useCallback, useEffect, useState } from 'react';\r\nimport { Card, CardBody } from 'components/atoms/card';\r\nimport { Paragraph, H3, H4 } from 'components/atoms/text';\r\nimport { Button } from 'components/atoms/button';\r\nimport ButtonWrapper from 'components/atoms/ButtonWrapper';\r\nimport useCollectionForeign from 'hooks/collectionforeign/useCollectionForeign';\r\nimport { useFormikContext } from 'formik';\r\nimport { AddCollectionForeignInputModel } from 'hooks/collectionforeign/types';\r\nimport { toast } from 'react-toastify';\r\nimport { Document, Page } from 'react-pdf/dist/esm/entry.webpack';\r\nimport Margin from 'components/atoms/Margin';\r\nimport Group from 'components/molecules/Group';\r\nimport { FormikFormYesNo } from 'components/atoms/form';\r\nimport FormControlFormik from 'components/atoms/form/FormControl/formik';\r\nimport moment from 'moment';\r\nimport { useSession } from 'contexts/sessionContext';\r\nimport { Col, Row } from 'react-grid-system';\r\n\r\nexport interface Step4Props { }\r\n\r\nconst Step4: FC = () => {\r\n const { values } = useFormikContext();\r\n const { getExampleCollectionForeignOverview } = useCollectionForeign();\r\n const { session } = useSession();\r\n\r\n const [valuesChanged, setValuesChanged] = useState(false);\r\n const [isLoadingDownload, setIsLoadingDownload] = useState(false);\r\n const [isLoadingPreview, setIsLoadingPreview] = useState(false);\r\n const [pdf, setPdf] = useState();\r\n const [showPdf, setShowPdf] = useState(false);\r\n const [numPages, setNumPages] = useState(null);\r\n const [pageNumber, setPageNumber] = useState(1);\r\n\r\n const onDocumentLoadSuccess = (numPages: number) => {\r\n setNumPages(numPages);\r\n };\r\n\r\n const downloadExampleCollectionForeignOverview = async () => {\r\n if (!valuesChanged && pdf != null) {\r\n saveAs(pdf, 'voorbeeld_incasso_overzicht.pdf');\r\n return;\r\n }\r\n\r\n setIsLoadingDownload(true);\r\n\r\n const response = await getExampleCollectionForeignOverview(values);\r\n\r\n if (response.ok) {\r\n const blob = await response.blob();\r\n saveAs(blob, 'voorbeeld_incasso_overzicht.pdf');\r\n setPdf(blob);\r\n setValuesChanged(false);\r\n } else {\r\n toast.error('Er ging iets fout bij het ophalen van de PDF');\r\n }\r\n\r\n setIsLoadingDownload(false);\r\n };\r\n\r\n const previewExampleCollectionForeignOverview = async () => {\r\n if (!valuesChanged && pdf != null) {\r\n setShowPdf(true);\r\n }\r\n\r\n setIsLoadingPreview(true);\r\n\r\n const response = await getExampleCollectionForeignOverview(values);\r\n\r\n if (response.ok) {\r\n const blob = await response.blob();\r\n setPdf(blob);\r\n setShowPdf(true);\r\n setValuesChanged(false);\r\n } else {\r\n toast.error('Er ging iets fout bij het ophalen van de PDF');\r\n }\r\n\r\n setIsLoadingPreview(false);\r\n };\r\n\r\n useEffect(() => {\r\n setValuesChanged(true);\r\n }, [values]);\r\n\r\n const nextPage = useCallback(() => {\r\n if (pageNumber === numPages) {\r\n return;\r\n }\r\n\r\n setPageNumber(pageNumber + 1);\r\n }, [pageNumber, numPages]);\r\n\r\n const previousPage = useCallback(() => {\r\n if (pageNumber === 1) {\r\n return;\r\n }\r\n\r\n setPageNumber(pageNumber - 1);\r\n }, [pageNumber, numPages]);\r\n\r\n // Render.\r\n return (\r\n <>\r\n \r\n \r\n

Verhaalsinformatie

\r\n \r\n Verhaalsinformatie geeft u inzicht in de (financiële) situatie van uw debiteur en geeft een indicatie van het te\r\n volgen traject bij het incasseren van uw vordering. Wij adviseren verhaalsinformatie bij vorderingen vanaf €\r\n 2.500,00. Op basis van uw incassomodule ontvangt u 50% korting op het verhaalsrapport, wij informeren u\r\n hierover nader.\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n

Machtiging

\r\n \r\n Door het verzenden van dit formulier machtigt u Juresta om alle zaken met betrekking tot deze in behandeling gegeven\r\n incasso-opdracht te beheren, de belangen waar te nemen, voor de rechten van de opdrachtgever op te komen en deze bij\r\n dit alles - zowel in als buiten rechte - te vertegenwoordigen en verder alles te doen wat de gevolmachtigde in het\r\n belang van de volmachtgever gewenst, nuttig of noodzakelijk zal achten.\r\n \r\n
\r\n

Uw gegevens

\r\n \r\n \r\n Datum\r\n {moment().format('DD-MM-YYYY')}\r\n \r\n \r\n \r\n \r\n Naam\r\n {session?.fullName ?? ''}\r\n \r\n \r\n \r\n \r\n Functie\r\n \r\n \r\n \r\n \r\n

Heeft u de gegevens zo volledig mogelijk en naar waarheid ingevuld?

\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n Bekijk de door u ingevulde gegevens of download een overzicht, u kunt ook\r\n een exemplaar opslaan voor uw eigen administratie.\r\n \r\n \r\n \r\n \r\n \r\n {pdf && showPdf && (\r\n \r\n onDocumentLoadSuccess(numPages)}>\r\n \r\n \r\n \r\n \r\n

{`${pageNumber} van ${numPages}`}

\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 Step4;\r\n","import React, { FC } from 'react';\r\nimport { RouteComponentProps } from '@reach/router';\r\nimport Wizard from 'components/organisms/Wizard';\r\nimport Step2 from './components/Step2';\r\nimport Step1 from './components/Step1';\r\nimport Step3 from './components/Step3';\r\nimport Step4 from './components/Step4';\r\nimport { AddCollectionForeignInputModel } from 'hooks/collectionforeign/types';\r\nimport { FormikHelpers } from 'formik';\r\nimport useCollectionForeign from 'hooks/collectionforeign/useCollectionForeign';\r\nimport { toFormikErrors } from 'utils/errorhelper';\r\nimport { toast } from 'react-toastify';\r\nimport { useHeader } from 'contexts/headerContext';\r\nimport Margin from 'components/atoms/Margin';\r\nimport { persistCollectionForeignKey } from 'utils/constants/localstrorageconstants';\r\n\r\nconst AddCollectionForeign: FC = () => {\r\n useHeader('Nieuwe Incasso buitenland - Opdracht');\r\n\r\n const { validateStep1AddCollectionForeign, validateStep3AddCollectionForeign, addCollectionForeign } = useCollectionForeign();\r\n\r\n const handleOnSubmit = async (\r\n values: AddCollectionForeignInputModel,\r\n { setErrors, setSubmitting, resetForm }: FormikHelpers\r\n ) => {\r\n const response = await addCollectionForeign(values);\r\n\r\n if (response.ok && response.data) {\r\n resetForm();\r\n localStorage.removeItem(persistCollectionForeignKey);\r\n setSubmitting(false);\r\n window.location.href = response.data;\r\n } else if (response.errors) {\r\n const errors = toFormikErrors(response.errors);\r\n setErrors(errors);\r\n toast.error('Niet alle velden zijn ingevuld');\r\n } else {\r\n toast.error('Er ging iets fout bij het toevoegen van de incasso');\r\n }\r\n\r\n setSubmitting(false);\r\n };\r\n\r\n const validateStep1 = async (\r\n values: AddCollectionForeignInputModel,\r\n { setSubmitting, setErrors }: FormikHelpers\r\n ): Promise => {\r\n setSubmitting(true);\r\n\r\n const response = await validateStep1AddCollectionForeign(values);\r\n\r\n if (response.ok) {\r\n setSubmitting(false);\r\n return true;\r\n } else if (response.errors) {\r\n const errors = toFormikErrors(response.errors);\r\n setErrors(errors);\r\n toast.error('Niet alle velden zijn ingevuld');\r\n }\r\n\r\n setSubmitting(false);\r\n return false;\r\n };\r\n\r\n const validateStep3 = async (\r\n values: AddCollectionForeignInputModel,\r\n { setSubmitting, setErrors }: FormikHelpers\r\n ): Promise => {\r\n setSubmitting(true);\r\n\r\n const response = await validateStep3AddCollectionForeign(values);\r\n\r\n if (response.ok) {\r\n setSubmitting(false);\r\n return true;\r\n } else if (response.errors) {\r\n const errors = toFormikErrors(response.errors);\r\n setErrors(errors);\r\n toast.error('Niet alle velden zijn ingevuld');\r\n }\r\n\r\n setSubmitting(false);\r\n return false;\r\n };\r\n\r\n // Formik.\r\n const initialValues: AddCollectionForeignInputModel = {\r\n debtor: {\r\n isCompany: true,\r\n addressMail: '',\r\n addressVisit: '',\r\n cityMail: '',\r\n cityVisit: '',\r\n comments: '',\r\n companyName: '',\r\n contactPersonInitials: '',\r\n contactPersonLastName: '',\r\n dateOfBirth: undefined,\r\n gender: undefined,\r\n email: '',\r\n iban: '',\r\n kvkNumber: '',\r\n legalForm: undefined,\r\n mobileNumber: '',\r\n phoneNumber: '',\r\n postalCodeMail: '',\r\n postalCodeVisit: '',\r\n website: '',\r\n isMailAddressDifferent: false,\r\n relationNumber: 0\r\n },\r\n amount: 0,\r\n hasHistoryWithDebtor: false,\r\n historyWithDebtorWantToComment: false,\r\n historyWithDebtorComments: '',\r\n hasDebtorDefence: false,\r\n debtorDefenceFiles: undefined,\r\n debtorDefenceWantToComment: false,\r\n debtorDefenceComments: '',\r\n areTermsApplied: false,\r\n termsAppliedWantToComment: false,\r\n termsAppliedComments: '',\r\n termsFiles: undefined,\r\n hasSignedAgreements: false,\r\n signedAgreementsFiles: undefined,\r\n hasQuotation: false,\r\n quotationFiles: undefined,\r\n hasAssignmentLetter: false,\r\n assignmentLetterFiles: undefined,\r\n hasSignedDeliveryNote: false,\r\n signedDeliveryNoteFiles: undefined,\r\n writtenDocumentsComments: '',\r\n hasInvoices: false,\r\n invoiceFiles: undefined,\r\n hasReminders: false,\r\n reminderFiles: undefined,\r\n hasExhortation: false,\r\n exhortationFiles: undefined,\r\n hasPlan: false,\r\n planFiles: undefined,\r\n hasConversationNotes: false,\r\n conversationNotesFiles: undefined,\r\n hasPhoneNotes: false,\r\n phoneNotesFiles: undefined,\r\n hasAppOrSms: false,\r\n appOrSmsFiles: undefined,\r\n hasOtherCorrespondence: false,\r\n otherCorrespondenceFiles: undefined,\r\n isTaxesRequired: false,\r\n taxesComments: '',\r\n isStoryInformationRequested: false\r\n };\r\n\r\n return (\r\n \r\n \r\n initialValues={initialValues}\r\n initialStep={0}\r\n onSubmit={handleOnSubmit}\r\n onSubmitLabel=\"Ondertekenen\"\r\n persistKey={persistCollectionForeignKey}\r\n steps={[\r\n {\r\n step: 1,\r\n title: 'Zakelijk of particulier',\r\n child: ,\r\n needsValidation: false\r\n },\r\n {\r\n step: 2,\r\n title: 'Gewenste debiteur',\r\n child: ,\r\n onSubmit: validateStep1,\r\n needsValidation: true\r\n },\r\n {\r\n step: 3,\r\n title: 'Gegevens vordering',\r\n child: ,\r\n onSubmit: validateStep3,\r\n needsValidation: true\r\n },\r\n {\r\n step: 4,\r\n title: 'Indienen incasso',\r\n child: \r\n }\r\n ]}\r\n />\r\n \r\n );\r\n};\r\n\r\nexport default AddCollectionForeign;\r\n","import { useApi } from 'hooks/api';\r\nimport { useQuery } from 'react-query';\r\nimport { CorrespondencePlainModel, GetCorrespondenceModel } from 'hooks/correspondence/types';\r\nimport { buildUriWithParams } from 'utils/urihelper';\r\n\r\nexport const correspondenceQueryKey = 'LetterKey';\r\n\r\nexport default function useAllCorrespondences(model?: GetCorrespondenceModel) {\r\n\r\n const { get } = useApi();\r\n\r\n const getAllCorrespondences = async (model?: GetCorrespondenceModel) => {\r\n const url = buildUriWithParams('/correspondence', model);\r\n\r\n const { data } = await get(url);\r\n\r\n return data;\r\n };\r\n\r\n return useQuery(correspondenceQueryKey, async () => {\r\n return await getAllCorrespondences(model);\r\n });\r\n}\r\n","import { CorrespondencePlainModel, DeleteCorrespondenceInputModel } from 'hooks/correspondence/types';\r\nimport { useMutation, useQueryClient } from 'react-query';\r\nimport { useApi } from 'hooks/api';\r\nimport { correspondenceQueryKey } from 'hooks/correspondence/useAllCorrespondence';\r\n\r\nconst useDeleteAdminCorrespondence = () => {\r\n\r\n const { deleteCall } = useApi();\r\n\r\n const baseUrl = '/correspondence';\r\n\r\n const queryClient = useQueryClient();\r\n\r\n const deleteCorrespondence = async (values: DeleteCorrespondenceInputModel) => {\r\n\r\n const response = await deleteCall(`${baseUrl}/${values.id}`);\r\n\r\n if(!response.ok) {\r\n throw response;\r\n }\r\n\r\n return response;\r\n };\r\n\r\n\r\n const deleteCorrespondenceMutation = useMutation((values: DeleteCorrespondenceInputModel) => deleteCorrespondence(values), {\r\n\r\n onMutate: async (values: DeleteCorrespondenceInputModel) => {\r\n \r\n await queryClient.cancelQueries(correspondenceQueryKey);\r\n\r\n const previousData = queryClient.getQueryData(correspondenceQueryKey);\r\n\r\n const filteredData = previousData?.filter(item => item.id !== values.id);\r\n queryClient.setQueryData(correspondenceQueryKey, filteredData ?? []);\r\n\r\n return { previousData };\r\n },\r\n onError: (err, variables, context) => {\r\n if(context?.previousData) {\r\n queryClient.setQueryData(correspondenceQueryKey, context.previousData);\r\n }\r\n },\r\n onSettled: (_, __, variables) => {\r\n queryClient.invalidateQueries(correspondenceQueryKey);\r\n }\r\n\r\n });\r\n\r\n return { deleteCorrespondenceMutation };\r\n};\r\n\r\nexport default useDeleteAdminCorrespondence;\r\n","import React, { FC, useState } from 'react';\r\nimport { navigate, RouteComponentProps } from '@reach/router';\r\nimport { useHeader } from 'contexts/headerContext';\r\nimport { Card, CardBody } from 'components/atoms/card';\r\nimport Table from 'components/molecules/table';\r\nimport { Column } from 'react-table';\r\nimport useAllCorrespondence from 'hooks/correspondence/useAllCorrespondence';\r\nimport { CorrespondencePlainModel } from 'hooks/correspondence/types';\r\nimport { format, parseISO } from 'date-fns';\r\nimport useDeleteAdminCorrespondence from 'hooks/correspondence/useDeleteAdminCorrespondence';\r\nimport useModal from 'hooks/modal';\r\nimport Modal from 'components/organisms/Modal';\r\nimport Group from 'components/molecules/Group';\r\nimport { Button } from 'components/atoms/button';\r\nimport { toast } from 'react-toastify';\r\n\r\ninterface CorrespondenceProps extends RouteComponentProps {\r\n}\r\n\r\n\r\nconst columns: Column[] = [\r\n {\r\n Header: 'Onderwerp',\r\n accessor: (mail) => mail.subject\r\n },\r\n {\r\n Header: 'Type',\r\n accessor: (mail) => mail.isQuestionnaire ? 'Vragenlijst' : 'Bericht'\r\n },\r\n {\r\n Header: 'Verzonden op',\r\n accessor: (mail) => parseISO(mail.created).getTime(),\r\n Cell: ({ value }: any) => format(value, 'dd-MM-yyyy HH:mm')\r\n },\r\n {\r\n Header: 'Ontvangers',\r\n accessor: (mail) => mail.customers.map((c) => c.name).join(', ')\r\n }\r\n];\r\n\r\nconst Correspondence: FC = () => {\r\n useHeader('Correspondentie');\r\n\r\n\r\n const [correspondenceToDelete, setCorrespondenceToDelete] = useState();\r\n const [isLoadingDelete, setIsLoadingDelete] = useState(false);\r\n\r\n const { data: correspondence = [], isLoading: isLoadingCorrespondence } = useAllCorrespondence();\r\n const { deleteCorrespondenceMutation } = useDeleteAdminCorrespondence();\r\n\r\n const deleteCorrespondence = async () => {\r\n if (correspondenceToDelete == null) {\r\n return;\r\n }\r\n\r\n setIsLoadingDelete(true);\r\n\r\n await deleteCorrespondenceMutation.mutateAsync({ id: correspondenceToDelete.id })\r\n .then(() => {\r\n toast.success('Correspondentie succesvol verwijderd!');\r\n }).catch(() => {\r\n toast.error('Oeps, er ging iets fout tijdens het verwijderen van de correspondentie. Probeer het later opnieuw!');\r\n });\r\n\r\n setIsLoadingDelete(false);\r\n closeDeleteModal();\r\n };\r\n\r\n const openDeleteModal = (templateLetter: CorrespondencePlainModel) => {\r\n setCorrespondenceToDelete(templateLetter);\r\n showDeleteModal();\r\n };\r\n\r\n const closeDeleteModal = () => {\r\n setCorrespondenceToDelete(undefined);\r\n hideDeleteModal();\r\n };\r\n\r\n const [showDeleteModal, hideDeleteModal] = useModal(\r\n ({ in: inProp, onExited }) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n ),\r\n [correspondenceToDelete, isLoadingDelete]\r\n );\r\n\r\n return (\r\n \r\n \r\n \r\n isLoading={isLoadingCorrespondence}\r\n data={correspondence}\r\n noDataMessage=\"Geen correspondentie beschikbaar\"\r\n columns={columns}\r\n search\r\n onAddClick={() => navigate('/admin/correspondence/send')}\r\n sortBy={[\r\n { id: 'Verzonden op', desc: true }\r\n ]}\r\n actions={[\r\n {\r\n icon: 'delete',\r\n title: 'Verwijder correspondentie',\r\n onClick: (item) => openDeleteModal(item)\r\n }\r\n ]}\r\n />\r\n \r\n \r\n );\r\n};\r\n\r\nexport default Correspondence;\r\n","import { useApi } from 'hooks/api';\r\nimport { useQuery } from 'react-query';\r\nimport { CorrespondenceTemplatePlainModel } from 'hooks/correspondenceTemplate/types';\r\n\r\nexport const correspondenceTemplateQueryKey = 'templateLetterKey';\r\n\r\nexport default function useAllCorrespondenceTemplates() {\r\n\r\n const { get } = useApi();\r\n\r\n const getAllCorrespondenceTemplates = async () => {\r\n const { data } = await get('/correspondencetemplate');\r\n\r\n return data;\r\n };\r\n\r\n return useQuery(correspondenceTemplateQueryKey, getAllCorrespondenceTemplates);\r\n}\r\n","import { CorrespondenceTemplatePlainModel, DeleteCorrespondenceTemplateInputModel } from 'hooks/correspondenceTemplate/types';\r\nimport { useMutation, useQueryClient } from 'react-query';\r\nimport { useApi } from 'hooks/api';\r\nimport { correspondenceTemplateQueryKey } from 'hooks/correspondenceTemplate/useAllCorrespondenceTemplates';\r\n\r\nconst useDeleteAdminCorrespondenceTemplate = () => {\r\n\r\n const { deleteCall } = useApi();\r\n\r\n const baseUrl = '/correspondencetemplate';\r\n\r\n const queryClient = useQueryClient();\r\n\r\n const deleteCorrespondenceTemplate = async (values: DeleteCorrespondenceTemplateInputModel) => {\r\n\r\n const response = await deleteCall(`${baseUrl}/${values.id}`);\r\n\r\n if(!response.ok) {\r\n throw response;\r\n }\r\n\r\n return response;\r\n };\r\n\r\n\r\n const deleteCorrespondenceTemplateMutation = useMutation((values: DeleteCorrespondenceTemplateInputModel) => deleteCorrespondenceTemplate(values), {\r\n\r\n onMutate: async (values: DeleteCorrespondenceTemplateInputModel) => {\r\n \r\n await queryClient.cancelQueries(correspondenceTemplateQueryKey);\r\n\r\n const previousData = queryClient.getQueryData(correspondenceTemplateQueryKey);\r\n\r\n const filteredData = previousData?.filter(item => item.id !== values.id);\r\n queryClient.setQueryData(correspondenceTemplateQueryKey, filteredData ?? []);\r\n\r\n return { previousData };\r\n },\r\n onError: (err, variables, context) => {\r\n if(context?.previousData) {\r\n queryClient.setQueryData(correspondenceTemplateQueryKey, context.previousData);\r\n }\r\n },\r\n onSettled: (_, __, variables) => {\r\n queryClient.invalidateQueries(correspondenceTemplateQueryKey);\r\n }\r\n\r\n });\r\n\r\n return { deleteCorrespondenceTemplateMutation };\r\n};\r\n\r\nexport default useDeleteAdminCorrespondenceTemplate;\r\n","import React, { FC, useState } from 'react';\r\nimport { RouteComponentProps } from '@reach/router';\r\nimport { useHeader } from 'contexts/headerContext';\r\nimport { Card, CardBody } from 'components/atoms/card';\r\nimport Table from 'components/molecules/table';\r\nimport { Column } from 'react-table';\r\nimport { navigate } from '@reach/router';\r\nimport { CorrespondenceTemplatePlainModel, DeleteCorrespondenceTemplateInputModel } from 'hooks/correspondenceTemplate/types';\r\nimport Modal from 'components/organisms/Modal';\r\nimport useModal from 'hooks/modal';\r\nimport Group from 'components/molecules/Group';\r\nimport { Button } from 'components/atoms/button';\r\nimport { toast } from 'react-toastify';\r\nimport useAllCorrespondenceTemplates from 'hooks/correspondenceTemplate/useAllCorrespondenceTemplates';\r\nimport useDeleteAdminCorrespondenceTemplate from 'hooks/correspondenceTemplate/useDeleteAdminCorrespondenceTemplate';\r\nimport { format, parseISO } from 'date-fns';\r\n\r\ninterface CorrespondenceTemplatesProps extends RouteComponentProps {\r\n}\r\n\r\nconst columns: Column[] = [\r\n {\r\n Header: 'Naam',\r\n accessor: (template) => template.name\r\n },\r\n {\r\n Header: 'Aangemaakt op',\r\n accessor: (template) => parseISO(template.created).getTime(),\r\n Cell: ({ value }: any) => format(value, 'dd-MM-yyyy HH:mm')\r\n },\r\n {\r\n Header: 'Laatst gewijzigd',\r\n accessor: (template) => parseISO(template.changed).getTime(),\r\n Cell: ({ value }: any) => format(value, 'dd-MM-yyyy HH:mm')\r\n }\r\n];\r\n\r\nconst CorrespondenceTemplates: FC = () => {\r\n useHeader('Templates');\r\n\r\n const [correspondenceTemplateToDelete, setCorrespondenceTemplateToDelete] = useState();\r\n const [isLoadingDelete, setIsLoadingDelete] = useState(false);\r\n\r\n const { deleteCorrespondenceTemplateMutation } = useDeleteAdminCorrespondenceTemplate();\r\n const { data: correspondenceTemplates = [], isLoading: isLoadingCorrespondenceTemplates } = useAllCorrespondenceTemplates();\r\n\r\n const handleDelete = async () => {\r\n\r\n if (!correspondenceTemplateToDelete) {\r\n return;\r\n }\r\n\r\n setIsLoadingDelete(true);\r\n\r\n await deleteCorrespondenceTemplateMutation.mutateAsync(correspondenceTemplateToDelete)\r\n .then(() => {\r\n toast.success('template succesvol verwijderd!');\r\n }).catch(() => {\r\n toast.error('Oeps, er ging iets fout tijdens het verwijderen van de template. Probeer het later opnieuw!');\r\n });\r\n\r\n setIsLoadingDelete(false);\r\n closeDeleteModal();\r\n };\r\n\r\n const handleManage = (item: CorrespondenceTemplatePlainModel | undefined) => {\r\n navigate('/admin/correspondence/templates/add', { state: { item: item } });\r\n };\r\n\r\n const openDeleteModal = (templateLetter: DeleteCorrespondenceTemplateInputModel) => {\r\n setCorrespondenceTemplateToDelete(templateLetter);\r\n showDeleteModal();\r\n };\r\n\r\n const closeDeleteModal = () => {\r\n setCorrespondenceTemplateToDelete(undefined);\r\n hideDeleteModal();\r\n };\r\n\r\n const [showDeleteModal, hideDeleteModal] = useModal(\r\n ({ in: inProp, onExited }) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n ),\r\n [correspondenceTemplateToDelete]\r\n );\r\n\r\n return (\r\n \r\n \r\n \r\n isLoading={isLoadingCorrespondenceTemplates}\r\n data={correspondenceTemplates}\r\n noDataMessage=\"Geen templates beschikbaar\"\r\n columns={columns}\r\n search\r\n onAddClick={() => navigate('/admin/correspondence/templates/add')}\r\n actions={[\r\n {\r\n icon: 'edit',\r\n onClick: (item, index) => handleManage(item),\r\n title: 'Pas template aan'\r\n },\r\n {\r\n icon: 'delete',\r\n onClick: (item, index) => openDeleteModal(item),\r\n title: 'Verwijder template'\r\n }\r\n ]}\r\n />\r\n \r\n \r\n );\r\n};\r\n\r\nexport default CorrespondenceTemplates;\r\n","import styled from '@emotion/styled';\r\nimport { lighten } from 'polished';\r\n\r\nexport const TitleWrapper = styled.div`\r\n display: flex;\r\n align-items: center;\r\n margin-bottom: 1.5rem;\r\n > * {\r\n margin-bottom: 0 !important;\r\n }\r\n`;\r\n\r\nexport const Label = styled.div`\r\n padding: .65rem 1rem;\r\n line-height: 1;\r\n font-weight: 500;\r\n font-size: .85rem;\r\n margin-left: 1rem;\r\n background-color: ${({ theme }) => lighten(.35, theme.colors.orange)};\r\n color: ${({ theme }) => theme.colors.orange};\r\n border-radius: ${({ theme }) => theme.borderRadius.normal}px;\r\n`;\r\n","import styled from '@emotion/styled';\r\n\r\nexport const Wrapper = styled.button`\r\n display: inline-flex;\r\n align-items: center;\r\n outline: 0;\r\n background: none;\r\n padding: 0;\r\n border: 1px solid ${({ theme }) => theme.colors.primary};\r\n padding: .85rem 1.25rem;\r\n line-height: 1;\r\n font-weight: 500;\r\n font-size: .9rem;\r\n cursor: pointer;\r\n border-radius: 1.5rem;\r\n color: ${({ theme }) => theme.colors.primary};\r\n .icon-wrapper {\r\n margin-left: 1rem;\r\n }\r\n`;","import React, { FC } from 'react';\r\nimport Icon from '../Icon';\r\nimport { Wrapper } from './styles';\r\nimport { useTheme } from '@emotion/react';\r\n\r\nexport interface AddFieldButtonProps {\r\n title: string;\r\n tag: string;\r\n onClick?: (tag: string) => void;\r\n}\r\n\r\nconst AddFieldButton: FC = ({ title, onClick, tag }) => {\r\n const theme = useTheme();\r\n\r\n const handleOnClick = () => {\r\n if (onClick) {\r\n onClick(tag);\r\n }\r\n };\r\n\r\n return (\r\n \r\n {title}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default AddFieldButton;\r\n","import { useMutation, useQueryClient } from 'react-query';\r\nimport { CustomResponse, useApi } from 'hooks/api';\r\nimport { correspondenceTemplateQueryKey } from 'hooks/correspondenceTemplate/useAllCorrespondenceTemplates';\r\nimport { AddCorrespondenceTemplateInputModel, CorrespondenceTemplateMutationContext, CorrespondenceTemplatePlainModel } from 'hooks/correspondenceTemplate/types';\r\n\r\nconst useAddAdminCorrespondenceTemplate = () => {\r\n\r\n const { post } = useApi();\r\n\r\n const baseUrl = '/correspondencetemplate';\r\n\r\n const queryClient = useQueryClient();\r\n \r\n const createCorrespondenceTemplate = async (values: AddCorrespondenceTemplateInputModel) => {\r\n\r\n const response = await post(\r\n baseUrl, values\r\n );\r\n\r\n if(!response.ok) {\r\n throw response;\r\n }\r\n\r\n return response;\r\n };\r\n\r\n const addCorrespondenceTemplateMutation = useMutation, CustomResponse, AddCorrespondenceTemplateInputModel, CorrespondenceTemplateMutationContext>((values: AddCorrespondenceTemplateInputModel) => createCorrespondenceTemplate(values), {\r\n\r\n onMutate: async (values: AddCorrespondenceTemplateInputModel) => {\r\n \r\n await queryClient.cancelQueries(correspondenceTemplateQueryKey);\r\n\r\n const previousData = queryClient.getQueryData(correspondenceTemplateQueryKey);\r\n \r\n const useAddAdminCorrespondenceTemplate: CorrespondenceTemplatePlainModel = {\r\n id: '',\r\n subject: values.subject,\r\n name: values.name,\r\n content: values.content,\r\n created: '',\r\n changed: ''\r\n };\r\n\r\n queryClient.setQueryData(correspondenceTemplateQueryKey,\r\n (previousData) => [\r\n useAddAdminCorrespondenceTemplate,\r\n ...(previousData ?? [])\r\n ]\r\n );\r\n\r\n return { previousData };\r\n },\r\n onError: (error, variables, context) => {\r\n if(context?.previousData) {\r\n queryClient.setQueryData(correspondenceTemplateQueryKey, context.previousData);\r\n }\r\n },\r\n onSettled: () => {\r\n queryClient.invalidateQueries(correspondenceTemplateQueryKey);\r\n }\r\n\r\n });\r\n\r\n return { addCorrespondenceTemplateMutation };\r\n};\r\n\r\nexport default useAddAdminCorrespondenceTemplate;\r\n","import { CorrespondenceTemplatePlainModel, EditCorrespondenceTemplateInputModel, CorrespondenceTemplateMutationContext } from 'hooks/correspondenceTemplate/types';\r\nimport { useMutation, useQueryClient } from 'react-query';\r\nimport { CustomResponse, useApi } from 'hooks/api';\r\nimport { correspondenceTemplateQueryKey } from 'hooks/correspondenceTemplate/useAllCorrespondenceTemplates';\r\n\r\nconst useEditAdminCorrespondenceTemplate = () => {\r\n\r\n const { put } = useApi();\r\n\r\n const baseUrl = '/correspondencetemplate';\r\n\r\n const queryClient = useQueryClient();\r\n\r\n const editCorrespondenceTemplate = async (values: EditCorrespondenceTemplateInputModel) => {\r\n\r\n const response = await put(\r\n baseUrl, values\r\n );\r\n\r\n if (!response.ok) {\r\n throw response;\r\n }\r\n\r\n return response;\r\n };\r\n\r\n\r\n const editCorrespondenceTemplateMutation = useMutation, CustomResponse, EditCorrespondenceTemplateInputModel, CorrespondenceTemplateMutationContext>((values: EditCorrespondenceTemplateInputModel) => editCorrespondenceTemplate(values), {\r\n\r\n onMutate: async (values: EditCorrespondenceTemplateInputModel) => {\r\n \r\n await queryClient.cancelQueries(correspondenceTemplateQueryKey);\r\n\r\n const previousData = queryClient.getQueryData(correspondenceTemplateQueryKey);\r\n const newData = [...previousData ?? []];\r\n\r\n const templateToEdit = newData.find(item => item.id === values.id);\r\n\r\n if(templateToEdit != null){\r\n templateToEdit.name = values.name;\r\n templateToEdit.content = values.name;\r\n }\r\n\r\n queryClient.setQueryData(correspondenceTemplateQueryKey, newData);\r\n\r\n return { previousData };\r\n },\r\n onError: (error, variables, context) => {\r\n if(context?.previousData) {\r\n queryClient.setQueryData(correspondenceTemplateQueryKey, context.previousData);\r\n }\r\n },\r\n onSettled: () => {\r\n queryClient.invalidateQueries(correspondenceTemplateQueryKey);\r\n }\r\n\r\n });\r\n\r\n return { editCorrespondenceTemplateMutation };\r\n};\r\n\r\nexport default useEditAdminCorrespondenceTemplate;\r\n","import React, { FC } from 'react';\r\nimport { useField } from 'formik';\r\nimport WysiwygEditor, { WysiwygEditorProps } from '..';\r\n\r\ninterface WysiwygEditorFormikProps extends WysiwygEditorProps {\r\n name: string;\r\n}\r\n\r\nconst WysiwygEditorFormik: FC = ({ name, ...props }) => {\r\n const [field, meta, helpers] = useField(name);\r\n\r\n const handleEditorChange = (value: string) => {\r\n helpers.setValue(value);\r\n };\r\n\r\n const error = !!(meta.touched && meta.error) ? meta.error : undefined;\r\n\r\n return (\r\n <>\r\n \r\n \r\n );\r\n};\r\n\r\nexport default WysiwygEditorFormik;\r\n","import React, { FC, useRef } from 'react';\r\nimport { navigate, RouteComponentProps } from '@reach/router';\r\nimport { useHeader } from 'contexts/headerContext';\r\nimport { Card, CardBody } from 'components/atoms/card';\r\nimport { H3 } from 'components/atoms/text';\r\nimport Margin from 'components/atoms/Margin';\r\nimport { Col, Row } from 'react-grid-system';\r\nimport { FormGroup } from 'components/atoms/form';\r\nimport ButtonWrapper from 'components/atoms/ButtonWrapper';\r\nimport { TitleWrapper, Label } from './styles';\r\nimport Group from 'components/molecules/Group';\r\nimport AddFieldButton from 'components/atoms/AddFieldButton';\r\nimport HeaderAction from 'components/atoms/HeaderAction';\r\nimport { Button } from 'components/atoms/button';\r\nimport { Form, Formik, FormikHelpers } from 'formik';\r\nimport { AddCorrespondenceTemplateInputModel, CorrespondenceTemplateInputModel, CorrespondenceTemplatePlainModel, EditCorrespondenceTemplateInputModel } from 'hooks/correspondenceTemplate/types';\r\nimport { toast } from 'react-toastify';\r\nimport { toFormikErrors } from 'utils/errorhelper';\r\nimport useAddAdminCorrespondenceTemplate from 'hooks/correspondenceTemplate/useAddAdminCorrespondenceTemplate';\r\nimport useEditAdminCorrespondenceTemplate from 'hooks/correspondenceTemplate/useEditAdminCorrespondenceTemplate';\r\nimport FormControlFormik from 'components/atoms/form/FormControl/formik';\r\nimport WysiwygEditorFormik from 'components/atoms/form/WysiwygEditor/formik';\r\nimport { Editor as TinyMCEEditor } from 'tinymce';\r\n\r\nexport interface AddCorrespondenceTemplateProps extends RouteComponentProps<{ location: { state: { item: CorrespondenceTemplatePlainModel } } }> {\r\n}\r\n\r\nconst AddCorrespondenceTemplate: FC = ({ location }: AddCorrespondenceTemplateProps) => {\r\n // State.\r\n const editorRef = useRef();\r\n\r\n const initialValues: CorrespondenceTemplateInputModel = {\r\n id: location?.state?.item ? location.state.item.id : '',\r\n name: location?.state?.item ? location.state.item.name : '',\r\n content: location?.state?.item ? location.state.item.content : '',\r\n subject: location?.state?.item ? location.state.item.subject : ''\r\n };\r\n\r\n // Hooks.\r\n useHeader('Nieuw template toevoegen');\r\n const { addCorrespondenceTemplateMutation } = useAddAdminCorrespondenceTemplate();\r\n const { editCorrespondenceTemplateMutation } = useEditAdminCorrespondenceTemplate();\r\n\r\n // Methods.\r\n const handleOnTagClick = (tag: string) => {\r\n editorRef.current?.execCommand('mceInsertContent', undefined, `{{${tag}}}`);\r\n };\r\n\r\n const handleSubmit = (values: EditCorrespondenceTemplateInputModel, { setErrors }: FormikHelpers) => {\r\n if (values.id) {\r\n return editCorrespondenceTemplateMutation.mutateAsync(values, {\r\n onSuccess: () => {\r\n navigate('/admin/correspondence/templates');\r\n toast.success(`'${values.name}' succesvol opgeslagen`);\r\n },\r\n onError: (error) => {\r\n if (error.errors) {\r\n const errors = toFormikErrors(error.errors);\r\n setErrors(errors);\r\n toast.error('Niet alle velden zijn ingevuld');\r\n } else {\r\n toast.error('Oeps, er ging iets fout tijdens het aanmaken van de template. Probeer het later opnieuw!');\r\n }\r\n }\r\n });\r\n } else {\r\n return addCorrespondenceTemplateMutation.mutateAsync(values, {\r\n onSuccess: () => {\r\n navigate('/admin/correspondence/templates');\r\n toast.success('template succesvol aangemaakt!');\r\n },\r\n onError: (error) => {\r\n if (error.errors) {\r\n const errors = toFormikErrors(error.errors);\r\n setErrors(errors);\r\n toast.error('Niet alle velden zijn ingevuld');\r\n } else {\r\n toast.error('Oeps, er ging iets fout tijdens het aanpassen van de template. Probeer het later opnieuw!');\r\n }\r\n }\r\n });\r\n }\r\n };\r\n\r\n\r\n // Render.\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n

Nieuwe template

\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n {({ isSubmitting, isValid, values, setFieldValue }) => (\r\n
\r\n \r\n

Template

\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

Dynamische velden

\r\n

Selecteer de velden om ze toe te voegen

\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n editorRef.current = editor}\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 AddCorrespondenceTemplate;\r\n","import styled from '@emotion/styled';\r\nimport { lighten } from 'polished';\r\n\r\nexport const TitleWrapper = styled.div`\r\n display: flex;\r\n align-items: center;\r\n margin-bottom: 1.5rem;\r\n > * {\r\n margin-bottom: 0 !important;\r\n }\r\n`;\r\n\r\nexport const Label = styled.div`\r\n padding: .65rem 1rem;\r\n line-height: 1;\r\n font-weight: 500;\r\n font-size: .85rem;\r\n margin-left: 1rem;\r\n background-color: ${({ theme }) => lighten(.35, theme.colors.orange)};\r\n color: ${({ theme }) => theme.colors.orange};\r\n border-radius: ${({ theme }) => theme.borderRadius.normal}px;\r\n`;\r\n","import { useMutation, useQueryClient } from 'react-query';\r\nimport { CustomResponse, useApi } from 'hooks/api';\r\nimport { correspondenceQueryKey } from 'hooks/correspondence/useAllCorrespondence';\r\nimport { AddCorrespondenceInputModel, CorrespondenceMutationContext, CorrespondencePlainModel } from 'hooks/correspondence/types';\r\nimport { appendObject } from 'utils/objectAppender';\r\nimport { CustomerPlainModel } from 'hooks/customer/types';\r\nimport { allCustomersQueryKey } from 'hooks/customer/useAllCustomers';\r\n\r\n\r\nconst useAddAdminCorrespondence = () => {\r\n\r\n const { post } = useApi();\r\n\r\n const baseUrl = '/correspondence';\r\n\r\n const queryClient = useQueryClient();\r\n\r\n const createCorrespondence = async (values: AddCorrespondenceInputModel) => {\r\n const fd = new FormData();\r\n\r\n appendObject(values, fd);\r\n\r\n const response = await post(\r\n baseUrl, fd\r\n );\r\n\r\n if (!response.ok) {\r\n throw response;\r\n }\r\n\r\n return response;\r\n };\r\n\r\n const addCorrespondenceMutation = useMutation, CustomResponse, AddCorrespondenceInputModel, CorrespondenceMutationContext>((values: AddCorrespondenceInputModel) => createCorrespondence(values), {\r\n\r\n onMutate: async (values: AddCorrespondenceInputModel) => {\r\n\r\n await queryClient.cancelQueries(correspondenceQueryKey);\r\n\r\n const customersData = queryClient.getQueryData(allCustomersQueryKey);\r\n const previousData = queryClient.getQueryData(correspondenceQueryKey);\r\n\r\n const customers = customersData?.filter((c) => values.customerIds.some((id) => id === c.id)) ?? [];\r\n\r\n const useAddAdminCorrespondence: CorrespondencePlainModel = {\r\n id: '',\r\n subject: values.subject,\r\n content: values.content,\r\n customers: customers,\r\n files: values.files,\r\n created: new Date().toISOString(),\r\n changed: new Date().toISOString(),\r\n isQuestionnaire: values.isQuestionnaire,\r\n link: values.link\r\n };\r\n\r\n queryClient.setQueryData(correspondenceQueryKey,\r\n (previousData) => [\r\n ...(previousData ?? []),\r\n useAddAdminCorrespondence\r\n ]\r\n );\r\n\r\n return { previousData };\r\n },\r\n onError: (error, variables, context) => {\r\n if (context?.previousData) {\r\n queryClient.setQueryData(correspondenceQueryKey, context.previousData);\r\n }\r\n },\r\n onSettled: () => {\r\n queryClient.invalidateQueries(correspondenceQueryKey);\r\n }\r\n\r\n });\r\n\r\n return { addCorrespondenceMutation };\r\n};\r\n\r\nexport default useAddAdminCorrespondence;\r\n","import { CorrespondencePlainModel, EditCorrespondenceInputModel, CorrespondenceMutationContext } from 'hooks/correspondence/types';\r\nimport { useMutation, useQueryClient } from 'react-query';\r\nimport { CustomResponse, useApi } from 'hooks/api';\r\nimport { correspondenceQueryKey } from 'hooks/correspondence/useAllCorrespondence';\r\nimport { appendObject } from 'utils/objectAppender';\r\nimport { CustomerPlainModel } from 'hooks/customer/types';\r\nimport { allCustomersQueryKey } from 'hooks/customer/useAllCustomers';\r\n\r\nconst useEditAdminCorrespondence = () => {\r\n\r\n const { put } = useApi();\r\n\r\n const baseUrl = '/correspondence';\r\n\r\n const queryClient = useQueryClient();\r\n\r\n const editCorrespondence = async (values: EditCorrespondenceInputModel) => {\r\n const fd = new FormData();\r\n\r\n appendObject(values, fd);\r\n\r\n const response = await put(\r\n baseUrl, fd\r\n );\r\n\r\n if (!response.ok) {\r\n throw response;\r\n }\r\n\r\n return response;\r\n };\r\n\r\n\r\n const editCorrespondenceMutation = useMutation, CustomResponse, EditCorrespondenceInputModel, CorrespondenceMutationContext>((values: EditCorrespondenceInputModel) => editCorrespondence(values), {\r\n\r\n onMutate: async (values: EditCorrespondenceInputModel) => {\r\n\r\n await queryClient.cancelQueries(correspondenceQueryKey);\r\n\r\n const customersData = queryClient.getQueryData(allCustomersQueryKey);\r\n const previousData = queryClient.getQueryData(correspondenceQueryKey);\r\n const newData = [...previousData ?? []];\r\n\r\n const ToEdit = newData.find(item => item.id === values.id);\r\n const newCustomers = customersData?.filter((c) => values.customerIds.some((id) => id === c.id)) ?? [];\r\n\r\n if (ToEdit != null) {\r\n ToEdit.content = values.content;\r\n ToEdit.customers = newCustomers;\r\n ToEdit.files = values.files;\r\n ToEdit.subject = values.subject;\r\n ToEdit.link = values.link;\r\n }\r\n\r\n queryClient.setQueryData(correspondenceQueryKey, newData);\r\n\r\n return { previousData };\r\n },\r\n onError: (error, variables, context) => {\r\n if (context?.previousData) {\r\n queryClient.setQueryData(correspondenceQueryKey, context.previousData);\r\n }\r\n },\r\n onSettled: () => {\r\n queryClient.invalidateQueries(correspondenceQueryKey);\r\n }\r\n\r\n });\r\n\r\n return { editCorrespondenceMutation };\r\n};\r\n\r\nexport default useEditAdminCorrespondence;\r\n","import React, { FC, useMemo, useRef } from 'react';\r\nimport { navigate, RouteComponentProps } from '@reach/router';\r\nimport { useHeader } from 'contexts/headerContext';\r\nimport { Card, CardBody } from 'components/atoms/card';\r\nimport { H3, Paragraph } from 'components/atoms/text';\r\nimport Margin from 'components/atoms/Margin';\r\nimport { FormGroup, FormSelect, FormikFormMultipleFile, FormikFormSelect, FormikFormYesNo } from 'components/atoms/form';\r\nimport ButtonWrapper from 'components/atoms/ButtonWrapper';\r\nimport Alert from 'components/atoms/Alert';\r\nimport AddFieldButton from 'components/atoms/AddFieldButton';\r\nimport { TitleWrapper, Label } from './styles';\r\nimport Group from 'components/molecules/Group';\r\nimport { Button } from 'components/atoms/button';\r\nimport HeaderAction from 'components/atoms/HeaderAction';\r\nimport { Form, Formik, FormikHelpers } from 'formik';\r\nimport { AddCorrespondenceInputModel, CorrespondenceInputModel, EditCorrespondenceInputModel } from 'hooks/correspondence/types';\r\nimport { toast } from 'react-toastify';\r\nimport { toFormikErrors } from 'utils/errorhelper';\r\nimport useAddAdminCorrespondence from 'hooks/correspondence/useAddAdminCorrespondence';\r\nimport useEditAdminCorrespondence from 'hooks/correspondence/useEditAdminCorrespondence';\r\nimport useAllCorrespondenceTemplates from 'hooks/correspondenceTemplate/useAllCorrespondenceTemplates';\r\nimport FormControlFormik from 'components/atoms/form/FormControl/formik';\r\nimport useAllCustomers from 'hooks/customer/useAllCustomers';\r\nimport { Editor as TinyMCEEditor } from 'tinymce';\r\nimport WysiwygEditorFormik from 'components/atoms/form/WysiwygEditor/formik';\r\n\r\ninterface SendCorrespondenceProps extends RouteComponentProps { }\r\n\r\nconst SendCorrespondence: FC = () => {\r\n useHeader('Bericht versturen');\r\n\r\n // State.\r\n const editorRef = useRef();\r\n\r\n const initialValues: CorrespondenceInputModel = {\r\n id: '',\r\n content: '',\r\n subject: '',\r\n customerIds: [],\r\n files: undefined,\r\n isQuestionnaire: false,\r\n link: undefined\r\n };\r\n\r\n // Hooks.\r\n const { addCorrespondenceMutation } = useAddAdminCorrespondence();\r\n const { editCorrespondenceMutation } = useEditAdminCorrespondence();\r\n const { data: correspondenceTemplates = [] } = useAllCorrespondenceTemplates();\r\n const { data: customers = [] } = useAllCustomers();\r\n\r\n const correspondenceTemplateOptions = useMemo(() => [{ value: '', label: 'Geen template' }].concat(correspondenceTemplates.map((c) => ({\r\n value: c.id,\r\n label: c.name\r\n }))), [correspondenceTemplates]);\r\n\r\n const customerOptions = useMemo(() => customers.map((c) => ({\r\n value: c.id,\r\n label: `${c.relationNumber ? c.relationNumber : 'Geen relatienummer'} - ${c.name} - ${c.userFullName}`\r\n })), [customers]);\r\n\r\n // Methods.\r\n const handleOnTagClick = (tag: string) => {\r\n editorRef.current?.execCommand('mceInsertContent', undefined, `{{${tag}}}`);\r\n };\r\n\r\n const handleSubmit = (values: EditCorrespondenceInputModel, { setErrors }: FormikHelpers) => {\r\n if (values.id) {\r\n return editCorrespondenceMutation.mutateAsync(values, {\r\n onSuccess: () => {\r\n navigate('/admin/correspondence');\r\n toast.success(`'${values.subject}' succesvol opgeslagen`);\r\n },\r\n onError: (error) => {\r\n if (error.errors) {\r\n const errors = toFormikErrors(error.errors);\r\n setErrors(errors);\r\n toast.error('Niet alle velden zijn ingevuld');\r\n } else {\r\n toast.error('Oeps, er ging iets fout tijdens het aanmaken van het bericht. Probeer het later opnieuw!');\r\n }\r\n }\r\n });\r\n } else {\r\n return addCorrespondenceMutation.mutateAsync(values, {\r\n onSuccess: () => {\r\n navigate('/admin/correspondence');\r\n toast.success('bericht succesvol aangemaakt!');\r\n },\r\n onError: (error) => {\r\n if (error.errors) {\r\n const errors = toFormikErrors(error.errors);\r\n setErrors(errors);\r\n toast.error('Niet alle velden zijn ingevuld');\r\n } else {\r\n toast.error('Oeps, er ging iets fout tijdens het aanpassen van het bericht. Probeer het later opnieuw!');\r\n }\r\n }\r\n });\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n \r\n {({ setFieldValue, values, isSubmitting }) => (\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

Versturen

\r\n Naar wie wil je dit bericht versturen?\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n

Nieuwe bericht versturen

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

Bericht

\r\n \r\n \r\n \r\n \r\n {\r\n if (value instanceof Array) {\r\n return;\r\n }\r\n\r\n const subject = correspondenceTemplates.find(x => x.id === value?.value)?.subject ?? '';\r\n const newContent = correspondenceTemplates.find(x => x.id === value?.value)?.content ?? '';\r\n setFieldValue('subject', subject);\r\n setFieldValue('content', newContent);\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 values.isQuestionnaire &&\r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n

Dynamische velden

\r\n

Selecteer de velden om ze toe te voegen

\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n editorRef.current = editor}\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 SendCorrespondence;\r\n","import React, { FC, useEffect, useState } from 'react';\r\nimport { Link, RouteComponentProps } from '@reach/router';\r\nimport { Card, CardBody, CardHeader } from 'components/atoms/card';\r\nimport { H3, Paragraph } from 'components/atoms/text';\r\nimport { useHeader } from 'contexts/headerContext';\r\nimport Label from 'components/atoms/Label';\r\nimport { Button } from 'components/atoms/button';\r\nimport Margin from 'components/atoms/Margin';\r\nimport { toast } from 'react-toastify';\r\nimport { Right } from 'utils/constants';\r\nimport { useSession } from 'contexts/sessionContext';\r\nimport { ActivateModuleInputModel } from 'hooks/modules/types';\r\nimport useModules from 'hooks/modules/useModules';\r\nimport { Module } from 'utils/constants/moduleconstants';\r\nimport { Form, Formik, FormikHelpers } from 'formik';\r\nimport { FormGroup, FormikFormTextarea } from 'components/atoms/form';\r\nimport useModal from 'hooks/modal';\r\nimport Modal from 'components/organisms/Modal';\r\nimport { toFormikErrors } from 'utils/errorhelper';\r\n\r\ninterface CollectionsProps extends RouteComponentProps {\r\n\r\n}\r\n\r\nconst Collections: FC = () => {\r\n useHeader('Incasso Nederland');\r\n\r\n const { session, hasRight } = useSession();\r\n const [hasRights, setHasRights] = useState(false);\r\n\r\n const { activateModule } = useModules();\r\n\r\n const activateModules = async (values: ActivateModuleInputModel, { setSubmitting, setErrors }: FormikHelpers) => {\r\n if (!values) {\r\n return;\r\n }\r\n\r\n const response = await activateModule(values);\r\n\r\n if (response.ok) {\r\n toast.success('Uw informatie aanvraag voor de module incasso Nederland is succesvol verstuurd');\r\n hide();\r\n } else if (response.errors) {\r\n toast.error('Niet alle velden zijn ingevuld');\r\n const errors = toFormikErrors(response.errors);\r\n setErrors(errors);\r\n } else {\r\n toast.error('Er ging iets fout bij het versturen van de aanvraag voor de module incasso Nederland');\r\n }\r\n\r\n setSubmitting(false);\r\n };\r\n\r\n useEffect(() => {\r\n setHasRights(hasRight(Right.Collection));\r\n }, [session]);\r\n\r\n const activateModuleInitialValues: ActivateModuleInputModel = {\r\n type: Module.Collections,\r\n question: ''\r\n };\r\n\r\n const [show, hide] = useModal(\r\n ({ in: inProp, onExited }) => (\r\n \r\n initialValues={activateModuleInitialValues} onSubmit={activateModules}>\r\n {({ isSubmitting }) => (\r\n
\r\n Met onderstaande formulier vraagt u vrijblijvend informatie aan over de module Incasso Nederland.\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 return (\r\n <>\r\n {\r\n hasRights ? (\r\n <>\r\n \r\n \r\n \r\n \r\n Op basis van uw incassomodule Nederland kunt een onbeperkt aantal incasso-opdrachten indienen. Klik hier wanneer u direct uw incasso-opdracht wilt indienen. Meer over herinneren en aanmanen leest u hieronder.\r\n \r\n

Wanneer herinneren of aanmanen?

\r\n \r\n Het is van belang dat u uw debiteuren op de betaling van uw factuur blijft attenderen. Dat kan zowel telefonisch als schriftelijk. Hanteert u bijvoorbeeld een betaaltermijn van 30 dagen, dan kan het geen kwaad om uw debiteur na 15 dagen eens te bellen of een vriendelijk mailtje te sturen met de vraag of de factuur in goede orde is ontvangen, of alles in orde is en uw debiteur op de hoogte is van de betaaltermijn van 30 dagen. Doet u dit telefonisch? Maak dan een notitie met de datum van het gesprek en noteer met wie u heeft gesproken.\r\n \r\n

Herinnering of een aanmaning?

\r\n \r\n Verstuur direct na het verstrijken van de betaaltermijn een herinnering. Een voorbeeld vindt u hier. Heeft u geen betaling ontvangen na de genoemde termijn in de uw herinnering? Verstuur dan een aanmaning per e-mail of post. Telefonisch aanmanen is niet voldoende omdat dit moeilijk te bewijzen is. Bewaar een kopie van al uw correspondentie met uw debiteur.\r\n \r\n

Laatste aanmaning

\r\n \r\n Verstuur na het uitblijven van betaling na het verstrijken van de termijn genoemd in uw aanmaning direct een laatste aanmaning. Hiermee stelt u uw debiteur onder andere aansprakelijk voor de buitengerechtelijke kosten.\r\n \r\n

Is uw debiteur een consument?

\r\n \r\n Om uw recht op vergoeding van de buitengerechtelijke incassokosten te verzekeren, bent u wettelijk verplicht tot het verzenden van een laatste schriftelijke aanmaning. Aan de inhoud en wijze van verzenden van deze zogenaamde laatste aanmaning worden door de wetgever strenge eisen gesteld. U dient uw debiteur, als laatste wapenfeit, nog minimaal 14 dagen in de gelegenheid te stellen om tot betaling van uw factuur over te gaan. Bovendien moet de debiteur er op worden geattendeerd dat wanneer hij niet binnen de aangegeven termijn alsnog betaalt, de buitengerechtelijke incassokosten en vertragingsrente verschuldigd worden. Let op: doet u dit niet dan wordt uw debiteur de incassokosten niet verschuldigd.\r\n \r\n

Versturen van uw laatste aanmaning

\r\n \r\n Wij adviseren u de laatste aanmaning per aangetekende post te versturen. U beschikt dan immers over een ontvangstbewijs. Daarnaast adviseren wij u om de brief tevens per gewone post en per e-mail met een ontvangst- en leesbevestiging te versturen.\r\n \r\n \r\n Klik hier voor onze voorbeeldbrieven. Vertragingsrente of incassokosten berekenen? Klik hier. Heeft u vragen over uw openstaande facturen, herinneren of aanmanen? Neem contact met ons op, dat kan natuurlijk ook telefonisch via 055-5383074.\r\n \r\n
\r\n\r\n
\r\n
\r\n \r\n ) : (\r\n \r\n \r\n \r\n

Incassomodule Nederland

\r\n \r\n
\r\n \r\n Heeft u te maken met onbetaalde facturen of een debiteur die al meermaals beloofde zijn factuur te betalen? En blijft betaling uit? U maakt nog geen gebruik van onze incassomogelijkheden, maar wij informeren u graag over de mogelijkheden.\r\n Neemt u ook contact op wanneer u advies wenst over uw openstaande posten.\r\n \r\n
\r\n
\r\n )\r\n }\r\n \r\n );\r\n};\r\n\r\nexport default Collections;\r\n","export const numberToEuroString = (value: number) => Intl.NumberFormat('nl', {\r\n style: 'currency',\r\n currency: 'eur'\r\n}).format(value);\r\n\r\n\r\nexport const debtorFullName = (initials?: string, lastName?: string) => {\r\n if (initials == null && lastName == null) {\r\n return 'Onbekend';\r\n }\r\n\r\n const value = `${initials != null ? `${initials} ` : ''}${lastName}`;\r\n\r\n return value;\r\n};\r\n","import React, { FC, useState } from 'react';\r\nimport { RouteComponentProps } from '@reach/router';\r\nimport { Card, CardBody } from 'components/atoms/card';\r\nimport Table from 'components/molecules/table';\r\nimport { AddSignedCollectionOverviewInputModel, CollectionPlainModel, EditCollectionInputModel } from 'hooks/collection/types';\r\nimport { Column } from 'react-table';\r\nimport useAllCollections from 'hooks/collection/useAllCollections';\r\nimport { debtorFullName, numberToEuroString } from 'utils/stringHelpers';\r\nimport { useHeader } from 'contexts/headerContext';\r\nimport useCollection from 'hooks/collection/useCollection';\r\nimport { toast } from 'react-toastify';\r\nimport { Button } from 'components/atoms/button';\r\nimport useModal from 'hooks/modal';\r\nimport Modal from 'components/organisms/Modal';\r\nimport { Form, Formik, FormikHelpers } from 'formik';\r\nimport { FormGroup, FormikFormControl, FormikFormFile, FormikFormSelect } from 'components/atoms/form';\r\nimport Group from 'components/molecules/Group';\r\nimport { toFormikErrors } from 'utils/errorhelper';\r\nimport { CollectionStatus, collectionStatusOptions, getCollectionStatusDisplay } from 'utils/constants/collectionconstants';\r\nimport { format, parseISO } from 'date-fns';\r\nimport FormCurrencyFormik from 'components/atoms/form/FormCurrency/formik';\r\n\r\ninterface ManageCollectionsProps extends RouteComponentProps {\r\n\r\n}\r\n\r\nconst ManageCollections: FC = () => {\r\n useHeader('Incasso\\'s Nederland');\r\n\r\n const { data: collections = [], isLoading, refetch: refetchCollections } = useAllCollections();\r\n const { downloadCollectionFile, uploadSignedCollectionOverview, editCollection, deleteCollection } = useCollection();\r\n\r\n const [collectionOverviewUpload, setCollectionOverviewUpload] = useState();\r\n const [collectionToEdit, setCollectionToEdit] = useState();\r\n const [collectionToDelete, setCollectionToDelete] = useState();\r\n const [isLoadingDelete, setIsLoadingDelete] = useState(false);\r\n\r\n const columns: Column[] = [\r\n {\r\n id: 'caseNumber',\r\n Header: 'Dossiernummer',\r\n accessor: (collection) => collection.caseNumber ?? ''\r\n },\r\n {\r\n id: 'customerName',\r\n Header: 'Relatie',\r\n accessor: (collection) => collection.customerName\r\n },\r\n {\r\n id: 'debtorName',\r\n Header: 'Debiteur',\r\n accessor: (collection) => collection.debtor?.companyName ?? debtorFullName(collection.debtor?.contactPersonInitials, collection.debtor?.contactPersonLastName)\r\n },\r\n {\r\n Header: 'Incassobedrag',\r\n accessor: (collection) => numberToEuroString(collection.amount)\r\n },\r\n {\r\n Header: 'Status',\r\n accessor: (collection) => getCollectionStatusDisplay(collection?.status ?? CollectionStatus.InProgress)\r\n },\r\n {\r\n id: 'created',\r\n Header: 'Datum',\r\n accessor: (collection) => parseISO(collection.created).getTime(),\r\n Cell: ({ value }: any) => format(value, 'dd-MM-yyyy')\r\n }\r\n ];\r\n\r\n const downloadOverviewFile = async (collection: CollectionPlainModel) => {\r\n if (collection.overviewFile == null) {\r\n toast.error('Deze incasso heeft nog geen ondertekend overzicht');\r\n return;\r\n }\r\n\r\n const response = await downloadCollectionFile(collection.id, collection.overviewFile.id);\r\n\r\n if (response.ok) {\r\n saveAs(await response.blob(), collection.overviewFile.fileName);\r\n } else {\r\n toast.error('Oops, er ging iets mis bij het ophalen van het bestand');\r\n }\r\n };\r\n\r\n const initialValuesAddSignedCollectionOverview: AddSignedCollectionOverviewInputModel = {\r\n overviewFile: undefined\r\n };\r\n\r\n const [showUploadOverviewModal, hideUploadOverviewModal] = useModal(\r\n ({ in: inProp, onExited }) => (\r\n \r\n initialValues={initialValuesAddSignedCollectionOverview} onSubmit={uploadSignedOverview}>\r\n {({ isSubmitting, isValid }) => (\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 [collectionOverviewUpload]\r\n );\r\n\r\n const openUploadOverviewModal = (collection: CollectionPlainModel) => {\r\n setCollectionOverviewUpload(collection);\r\n showUploadOverviewModal();\r\n };\r\n\r\n const closeUploadOverviewModal = () => {\r\n setCollectionOverviewUpload(undefined);\r\n hideUploadOverviewModal();\r\n };\r\n\r\n const uploadSignedOverview = async (values: AddSignedCollectionOverviewInputModel, { setErrors, resetForm }: FormikHelpers) => {\r\n if (collectionOverviewUpload == null) {\r\n return;\r\n }\r\n\r\n const response = await uploadSignedCollectionOverview(collectionOverviewUpload.id, values);\r\n\r\n if (response.ok) {\r\n refetchCollections();\r\n toast.success('Bestand is succesvol geüpload');\r\n closeUploadOverviewModal();\r\n resetForm();\r\n } else if (response.errors) {\r\n const errors = toFormikErrors(response.errors);\r\n setErrors(errors);\r\n toast.error('Niet alle velden zijn ingevuld');\r\n } else {\r\n toast.error('Oops, er ging iets mis bij het uploaden van het bestand');\r\n }\r\n };\r\n\r\n const initialEditCollectionValues: EditCollectionInputModel = {\r\n id: collectionToEdit?.id ?? '',\r\n amount: collectionToEdit?.amount ?? 0,\r\n caseNumber: collectionToEdit?.caseNumber ?? null,\r\n status: collectionToEdit?.status ?? CollectionStatus.InProgress\r\n };\r\n\r\n const onSumbitEditCollection = async (\r\n model: EditCollectionInputModel,\r\n { setErrors, setSubmitting }: FormikHelpers\r\n ) => {\r\n setSubmitting(true);\r\n const response = await editCollection(model);\r\n\r\n if (response.ok) {\r\n refetchCollections();\r\n hideEditCollectionModal();\r\n toast.success('Incasso succesvol opgeslagen');\r\n } else if (response.errors) {\r\n const errors = toFormikErrors(response.errors);\r\n setErrors(errors);\r\n toast.error('Niet alle velden zijn ingevuld');\r\n } else {\r\n toast.error('Oeps, er ging iets fout tijdens het aanpassen van de incasso. Probeer het later opnieuw!');\r\n }\r\n setSubmitting(false);\r\n };\r\n\r\n const [showEditCollectionModal, hideEditCollectionModal] = useModal(\r\n ({ in: inProp, onExited }) => (\r\n \r\n initialValues={initialEditCollectionValues} onSubmit={onSumbitEditCollection}>\r\n {({ isSubmitting, isValid, setFieldValue }) => (\r\n
\r\n \r\n setFieldValue('amount', value)} />\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 [collectionToEdit]\r\n );\r\n\r\n const openEditCollectionModal = (collection: CollectionPlainModel) => {\r\n setCollectionToEdit(collection);\r\n showEditCollectionModal();\r\n };\r\n\r\n const closeEditCollectionModal = () => {\r\n setCollectionToEdit(undefined);\r\n hideEditCollectionModal();\r\n }; \r\n \r\n const handleDelete = async () => {\r\n if (!collectionToDelete) {\r\n return;\r\n }\r\n\r\n setIsLoadingDelete(true);\r\n\r\n const response = await deleteCollection(collectionToDelete.id);\r\n\r\n if (response.ok) {\r\n refetchCollections();\r\n toast.success('Incasso is succesvol verwijderd');\r\n closeDeleteModal();\r\n } else {\r\n toast.error('Er ging iets fout bij het verwijderen van de incasso');\r\n }\r\n\r\n setIsLoadingDelete(false);\r\n };\r\n\r\n const [showDeleteModal, hideDeleteModal] = useModal(\r\n ({ in: inProp, onExited }) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n ),\r\n [collectionToDelete, isLoadingDelete]\r\n );\r\n\r\n const openDeleteModal = (collection: CollectionPlainModel) => {\r\n setCollectionToDelete(collection);\r\n showDeleteModal();\r\n };\r\n\r\n const closeDeleteModal = () => {\r\n setCollectionToDelete(undefined);\r\n hideDeleteModal();\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n isLoading={isLoading}\r\n data={collections}\r\n columns={columns}\r\n noDataMessage=\"Geen incasso's beschikbaar\"\r\n search\r\n sortBy={[\r\n { id: 'caseNumber', desc: true },\r\n ]}\r\n actions={[\r\n {\r\n icon: 'edit',\r\n onClick: openEditCollectionModal,\r\n title: 'Bewerken'\r\n },\r\n {\r\n icon: 'download',\r\n onClick: downloadOverviewFile,\r\n title: 'Download ondertekend overzicht',\r\n active: (item) => item.overviewFile != null\r\n },\r\n {\r\n icon: 'plus',\r\n title: 'Ondertekend overzicht toevoegen',\r\n onClick: openUploadOverviewModal\r\n },\r\n {\r\n icon: 'delete',\r\n onClick: openDeleteModal,\r\n title: 'Verwijderen'\r\n },\r\n ]}\r\n />\r\n \r\n \r\n );\r\n};\r\n\r\nexport default ManageCollections;\r\n","import React, { FC, useEffect } from 'react';\r\nimport { navigate, RouteComponentProps, useLocation } from '@reach/router';\r\nimport { Card, CardBody } from 'components/atoms/card';\r\nimport Table from 'components/molecules/table';\r\nimport { CollectionPlainModel } from 'hooks/collection/types';\r\nimport { Column } from 'react-table';\r\nimport useAllCollections from 'hooks/collection/useAllCollections';\r\nimport { debtorFullName, numberToEuroString } from 'utils/stringHelpers';\r\nimport { useHeader } from 'contexts/headerContext';\r\nimport useCollection from 'hooks/collection/useCollection';\r\nimport { toast } from 'react-toastify';\r\nimport { format, parseISO } from 'date-fns';\r\nimport { Paragraph } from 'components/atoms/text';\r\nimport { CollectionStatus, getCollectionStatusDisplay } from 'utils/constants/collectionconstants';\r\n\r\ninterface CollectionsProps extends RouteComponentProps {\r\n\r\n}\r\n\r\nconst Collections: FC = () => {\r\n useHeader('Incasso Nederland overzicht');\r\n\r\n const { search } = useLocation();\r\n const { data: collections = [], isLoading } = useAllCollections();\r\n const { downloadCollectionFile, getCollectionSignRequestUrl } = useCollection();\r\n\r\n const columns: Column[] = [\r\n {\r\n id: 'created',\r\n Header: 'Datum',\r\n accessor: (collection) => parseISO(collection.created).getTime(),\r\n Cell: ({ value }: any) => format(value, 'dd-MM-yyyy')\r\n },\r\n {\r\n id: 'debtorName',\r\n Header: 'Debiteur',\r\n accessor: (collection) => collection.debtor?.companyName ?? debtorFullName(collection.debtor?.contactPersonInitials, collection.debtor?.contactPersonLastName)\r\n },\r\n {\r\n id: 'caseNumber',\r\n Header: 'Dossiernummer',\r\n accessor: (collection) => collection.caseNumber\r\n },\r\n {\r\n Header: 'Status',\r\n accessor: (collection) => getCollectionStatusDisplay(collection?.status ?? CollectionStatus.InProgress)\r\n },\r\n {\r\n Header: 'Hoofdsom',\r\n accessor: (collection) => numberToEuroString(collection.amount)\r\n }\r\n ];\r\n\r\n useEffect(() => {\r\n const signed = new URLSearchParams(search).get('signed');\r\n if (signed == null) {\r\n return;\r\n }\r\n\r\n if (signed === 'true') {\r\n toast.success('De incasso is succesvol toegevoegd en ondertekend. Het kan een paar minuten duren voordat de status is aangepast.');\r\n } else {\r\n toast.error('De incasso is toegevoegd maar niet ondertekend');\r\n }\r\n }, [search]);\r\n\r\n const downloadOverviewFile = async (collection: CollectionPlainModel) => {\r\n if (collection.overviewFile == null) {\r\n return;\r\n }\r\n\r\n const response = await downloadCollectionFile(collection.id, collection.overviewFile.id);\r\n\r\n if (response.ok) {\r\n saveAs(await response.blob(), collection.overviewFile.fileName);\r\n } else {\r\n toast.error('Oops, er ging iets mis bij het ophalen van het bestand');\r\n }\r\n };\r\n\r\n const signCollection = async (collectionId: string) => {\r\n const response = await getCollectionSignRequestUrl(collectionId);\r\n\r\n if (response.ok && response.data) {\r\n window.location.href = response.data;\r\n } else {\r\n toast.error('Oops, er ging iets mis bij het starten van het ondertekenen');\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n Hieronder vindt u een overzicht van de door u ingediende incasso-opdrachten.\r\n Let wel: dit betreft een overzicht van uw dossiers, maar is geen weergave van de stand van zaken in uw dossier.\r\n \r\n \r\n Wenst u een stand van zaken in uw dossiers? Neemt u dan contact met ons op onder vermelding van het dossiernummer of relatienummer.\r\n \r\n \r\n \r\n \r\n \r\n \r\n isLoading={isLoading}\r\n data={collections}\r\n columns={columns}\r\n onAddClick={() => navigate('/collection-netherlands/add')}\r\n onAddClickLabel=\"incasso-opdracht indienen\"\r\n noDataMessage=\"Geen incasso's beschikbaar\"\r\n search\r\n sortBy={[\r\n { id: 'caseNumber', desc: true },\r\n ]}\r\n actions={[\r\n {\r\n icon: 'download',\r\n title: 'Download overzicht',\r\n onClick: downloadOverviewFile,\r\n active: (item) => item.overviewFile != null\r\n },\r\n {\r\n icon: 'edit',\r\n title: 'Ondertekenen',\r\n onClick: (item) => signCollection(item.id),\r\n active: (item) => item.status === CollectionStatus.NeedsSigning\r\n }\r\n ]}\r\n />\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Collections;\r\n","import React, { FC, useEffect, useState } from 'react';\r\nimport { Link, RouteComponentProps } from '@reach/router';\r\nimport { Card, CardBody, CardHeader } from 'components/atoms/card';\r\nimport { useHeader } from 'contexts/headerContext';\r\nimport Margin from 'components/atoms/Margin';\r\nimport { H3, Paragraph } from 'components/atoms/text';\r\nimport { Button } from 'components/atoms/button';\r\nimport Label from 'components/atoms/Label';\r\nimport { toast } from 'react-toastify';\r\nimport { useSession } from 'contexts/sessionContext';\r\nimport { Right } from 'utils/constants';\r\nimport { ActivateModuleInputModel } from 'hooks/modules/types';\r\nimport useModules from 'hooks/modules/useModules';\r\nimport { Module } from 'utils/constants/moduleconstants';\r\nimport useModal from 'hooks/modal';\r\nimport Modal from 'components/organisms/Modal';\r\nimport { Form, Formik, FormikHelpers } from 'formik';\r\nimport { FormGroup, FormikFormTextarea } from 'components/atoms/form';\r\nimport { toFormikErrors } from 'utils/errorhelper';\r\n\r\ninterface CollectionForeignsProps extends RouteComponentProps {\r\n\r\n}\r\n\r\nconst CollectionForeigns: FC = () => {\r\n useHeader('Incasso Buitenland');\r\n\r\n const { session, hasRight } = useSession();\r\n const [hasRights, setHasRights] = useState(false);\r\n\r\n const { activateModule } = useModules();\r\n\r\n const activateModules = async (values: ActivateModuleInputModel, { setSubmitting, setErrors }: FormikHelpers) => {\r\n if (!values) {\r\n return;\r\n }\r\n\r\n const response = await activateModule(values);\r\n\r\n if (response.ok) {\r\n toast.success('Uw informatie aanvraag voor de module incasso buitenland is succesvol verstuurd');\r\n hide();\r\n } else if (response.errors) {\r\n toast.error('Niet alle velden zijn ingevuld');\r\n const errors = toFormikErrors(response.errors);\r\n setErrors(errors);\r\n } else {\r\n toast.error('Er ging iets fout bij het versturen van de aanvraag voor de module incasso buitenland');\r\n }\r\n\r\n setSubmitting(false);\r\n };\r\n\r\n useEffect(() => {\r\n setHasRights(hasRight(Right.CollectionAbroad));\r\n }, [session]);\r\n\r\n const activateModuleInitialValues: ActivateModuleInputModel = {\r\n type: Module.CollectionsForeign,\r\n question: ''\r\n };\r\n\r\n const [show, hide] = useModal(\r\n ({ in: inProp, onExited }) => (\r\n \r\n initialValues={activateModuleInitialValues} onSubmit={activateModules}>\r\n {({ isSubmitting }) => (\r\n
\r\n Met onderstaande formulier vraagt u vrijblijvend informatie aan over de module Incasso buitenland.\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 return (\r\n <>\r\n {\r\n hasRights ? (\r\n <>\r\n \r\n \r\n \r\n \r\n Op basis van uw incassomodule Buitenland kunt een onbeperkt aantal incasso-opdrachten indienen. Klik hier wanneer u direct uw incasso-opdracht wilt indienen. Meer over herinneren en aanmanen leest u hieronder.\r\n \r\n

Wanneer herinneren of aanmanen?

\r\n \r\n Het is van belang dat u uw debiteuren op de betaling van uw factuur blijft attenderen. Dat kan zowel telefonisch als schriftelijk. Hanteert u bijvoorbeeld een betaaltermijn van 30 dagen, dan kan het geen kwaad om uw debiteur na 15 dagen eens te bellen of een vriendelijk mailtje te sturen met de vraag of de factuur in goede orde is ontvangen, of alles in orde is en uw debiteur op de hoogte is van de betaaltermijn van 30 dagen. Doet u dit telefonisch? Maak dan een notitie met de datum van het gesprek en noteer met wie u heeft gesproken.\r\n \r\n

Herinnering of een aanmaning?

\r\n \r\n Verstuur direct na het verstrijken van de betaaltermijn een herinnering. Een voorbeeld vindt u hier. Heeft u geen betaling ontvangen na de genoemde termijn in de uw herinnering? Verstuur dan een aanmaning per e-mail of post. Telefonisch aanmanen is niet voldoende omdat dit moeilijk te bewijzen is. Bewaar een kopie van al uw correspondentie met uw debiteur.\r\n \r\n

Laatste aanmaning

\r\n \r\n Verstuur na het uitblijven van betaling na het verstrijken van de termijn genoemd in uw aanmaning direct een laatste aanmaning. Hiermee stelt u uw debiteur onder andere aansprakelijk voor de buitengerechtelijke kosten.\r\n \r\n

Is uw debiteur een consument?

\r\n \r\n Om uw recht op vergoeding van de buitengerechtelijke incassokosten te verzekeren, bent u wettelijk verplicht tot het verzenden van een laatste schriftelijke aanmaning. Aan de inhoud en wijze van verzenden van deze zogenaamde laatste aanmaning worden door de wetgever strenge eisen gesteld. U dient uw debiteur, als laatste wapenfeit, nog minimaal 14 dagen in de gelegenheid te stellen om tot betaling van uw factuur over te gaan. Bovendien moet de debiteur er op worden geattendeerd dat wanneer hij niet binnen de aangegeven termijn alsnog betaalt, de buitengerechtelijke incassokosten en vertragingsrente verschuldigd worden. Let op: doet u dit niet dan wordt uw debiteur de incassokosten niet verschuldigd.\r\n \r\n

Versturen van uw laatste aanmaning

\r\n \r\n Wij adviseren u de laatste aanmaning per aangetekende post te versturen. U beschikt dan immers over een ontvangstbewijs. Daarnaast adviseren wij u om de brief tevens per gewone post en per e-mail met een ontvangst- en leesbevestiging te versturen.\r\n \r\n \r\n Klik hier voor onze voorbeeldbrieven. Vertragingsrente of incassokosten berekenen? Klik hier. Heeft u vragen over uw openstaande facturen, herinneren of aanmanen? Neem contact met ons op, dat kan natuurlijk ook telefonisch via 055-5383074.\r\n \r\n
\r\n\r\n
\r\n
\r\n \r\n ) : (\r\n \r\n \r\n \r\n

Incassomodule buitenland

\r\n \r\n
\r\n \r\n Heeft u te maken met onbetaalde facturen of een debiteur die al meermaals beloofde zijn factuur te betalen? En blijft betaling uit? U maakt nog geen gebruik van onze internationale incassomogelijkheden, maar wij informeren u graag over de mogelijkheden. Neemt u ook contact op wanneer u advies wenst over uw openstaande posten.\r\n \r\n
\r\n
\r\n )\r\n }\r\n \r\n );\r\n};\r\n\r\nexport default CollectionForeigns;\r\n","import React, { FC, useState } from 'react';\r\nimport { RouteComponentProps } from '@reach/router';\r\nimport { Card, CardBody } from 'components/atoms/card';\r\nimport Table from 'components/molecules/table';\r\nimport { Column } from 'react-table';\r\nimport { debtorFullName, numberToEuroString } from 'utils/stringHelpers';\r\nimport { useHeader } from 'contexts/headerContext';\r\nimport { toast } from 'react-toastify';\r\nimport { Button } from 'components/atoms/button';\r\nimport useModal from 'hooks/modal';\r\nimport Modal from 'components/organisms/Modal';\r\nimport { Form, Formik, FormikHelpers } from 'formik';\r\nimport { FormGroup, FormikFormControl, FormikFormFile, FormikFormSelect } from 'components/atoms/form';\r\nimport Group from 'components/molecules/Group';\r\nimport { toFormikErrors } from 'utils/errorhelper';\r\nimport useAllCollectionForeigns from 'hooks/collectionforeign/useAllCollectionForeigns';\r\nimport useCollectionForeign from 'hooks/collectionforeign/useCollectionForeign';\r\nimport { AddSignedCollectionForeignOverviewInputModel, CollectionForeignPlainModel, EditCollectionForeignInputModel } from 'hooks/collectionforeign/types';\r\nimport { CollectionStatus, collectionStatusOptions, getCollectionStatusDisplay } from 'utils/constants/collectionconstants';\r\nimport { format, parseISO } from 'date-fns';\r\nimport FormCurrencyFormik from 'components/atoms/form/FormCurrency/formik';\r\n\r\ninterface ManageCollectionForeignsProps extends RouteComponentProps {\r\n\r\n}\r\n\r\nconst ManageCollectionForeigns: FC = () => {\r\n useHeader('Incasso\\'s Buitenland');\r\n\r\n const { data: collectionForeigns = [], isLoading, refetch: refetchCollections } = useAllCollectionForeigns();\r\n const { downloadCollectionForeignFile, uploadSignedCollectionForeignOverview, editCollectionForeign, deleteCollectionForeign } = useCollectionForeign();\r\n\r\n const [collectionForeignOverviewUpload, setCollectionForeignOverviewUpload] = useState();\r\n const [collectionToEdit, setCollectionToEdit] = useState();\r\n const [collectionToDelete, setCollectionToDelete] = useState();\r\n const [isLoadingDelete, setIsLoadingDelete] = useState(false);\r\n\r\n const columns: Column[] = [\r\n {\r\n id: 'caseNumber',\r\n Header: 'Dossiernummer',\r\n accessor: (collection) => collection.caseNumber\r\n },\r\n {\r\n id: 'customerName',\r\n Header: 'Relatie',\r\n accessor: (collection) => collection.customerName\r\n },\r\n {\r\n id: 'debtorName',\r\n Header: 'Debiteur',\r\n accessor: (collection) => collection.debtor?.companyName ?? debtorFullName(collection.debtor?.contactPersonInitials, collection.debtor?.contactPersonLastName)\r\n },\r\n {\r\n Header: 'Incassobedrag',\r\n accessor: (collection) => numberToEuroString(collection.amount)\r\n },\r\n {\r\n Header: 'Status',\r\n accessor: (collection) => getCollectionStatusDisplay(collection?.status ?? CollectionStatus.InProgress)\r\n },\r\n {\r\n id: 'created',\r\n Header: 'Datum',\r\n accessor: (collection) => parseISO(collection.created).getTime(),\r\n Cell: ({ value }: any) => format(value, 'dd-MM-yyyy')\r\n }\r\n ];\r\n\r\n const downloadOverviewFile = async (collectionForeign: CollectionForeignPlainModel) => {\r\n if (collectionForeign.overviewFile == null) {\r\n toast.error('Deze incasso heeft nog geen ondertekend overzicht');\r\n return;\r\n }\r\n\r\n const response = await downloadCollectionForeignFile(collectionForeign.id, collectionForeign.overviewFile.id);\r\n\r\n if (response.ok) {\r\n saveAs(await response.blob(), collectionForeign.overviewFile.fileName);\r\n } else {\r\n toast.error('Oops, er ging iets mis bij het ophalen van het bestand');\r\n }\r\n };\r\n\r\n const initialValuesAddSignedCollectionForeignOverview: AddSignedCollectionForeignOverviewInputModel = {\r\n overviewFile: undefined\r\n };\r\n\r\n const [showUploadOverviewModal, hideUploadOverviewModal] = useModal(\r\n ({ in: inProp, onExited }) => (\r\n \r\n initialValues={initialValuesAddSignedCollectionForeignOverview} onSubmit={uploadSignedOverview}>\r\n {({ isSubmitting, isValid }) => (\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 [collectionForeignOverviewUpload]\r\n );\r\n\r\n const openUploadOverviewModal = (collectionForeign: CollectionForeignPlainModel) => {\r\n setCollectionForeignOverviewUpload(collectionForeign);\r\n showUploadOverviewModal();\r\n };\r\n\r\n const closeUploadOverviewModal = () => {\r\n setCollectionForeignOverviewUpload(undefined);\r\n hideUploadOverviewModal();\r\n };\r\n\r\n const uploadSignedOverview = async (values: AddSignedCollectionForeignOverviewInputModel, { setErrors, resetForm }: FormikHelpers) => {\r\n if (collectionForeignOverviewUpload == null) {\r\n return;\r\n }\r\n\r\n const response = await uploadSignedCollectionForeignOverview(collectionForeignOverviewUpload.id, values);\r\n\r\n if (response.ok) {\r\n refetchCollections();\r\n toast.success('Bestand is succesvol geüpload');\r\n closeUploadOverviewModal();\r\n resetForm();\r\n } else if (response.errors) {\r\n const errors = toFormikErrors(response.errors);\r\n setErrors(errors);\r\n toast.error('Niet alle velden zijn ingevuld');\r\n } else {\r\n toast.error('Oops, er ging iets mis bij het uploaden van het bestand');\r\n }\r\n };\r\n\r\n const initialEditCollectionValues: EditCollectionForeignInputModel = {\r\n id: collectionToEdit?.id ?? '',\r\n amount: collectionToEdit?.amount ?? 0,\r\n caseNumber: collectionToEdit?.caseNumber ?? null,\r\n status: collectionToEdit?.status ?? CollectionStatus.InProgress\r\n };\r\n\r\n const onSumbitEditCollection = async (\r\n model: EditCollectionForeignInputModel,\r\n { setErrors, setSubmitting }: FormikHelpers\r\n ) => {\r\n setSubmitting(true);\r\n const response = await editCollectionForeign(model);\r\n\r\n if (response.ok) {\r\n refetchCollections();\r\n hideEditCollectionModal();\r\n toast.success('Incasso succesvol opgeslagen');\r\n } else if (response.errors) {\r\n const errors = toFormikErrors(response.errors);\r\n setErrors(errors);\r\n toast.error('Niet alle velden zijn ingevuld');\r\n } else {\r\n toast.error('Oeps, er ging iets fout tijdens het aanpassen van de incasso. Probeer het later opnieuw!');\r\n }\r\n setSubmitting(false);\r\n };\r\n\r\n const [showEditCollectionModal, hideEditCollectionModal] = useModal(\r\n ({ in: inProp, onExited }) => (\r\n \r\n initialValues={initialEditCollectionValues} onSubmit={onSumbitEditCollection}>\r\n {({ isSubmitting, isValid, setFieldValue }) => (\r\n
\r\n \r\n setFieldValue('amount', value)} />\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 [collectionToEdit]\r\n );\r\n\r\n const openEditCollectionModal = (collection: CollectionForeignPlainModel) => {\r\n setCollectionToEdit(collection);\r\n showEditCollectionModal();\r\n };\r\n\r\n const closeEditCollectionModal = () => {\r\n setCollectionToEdit(undefined);\r\n hideEditCollectionModal();\r\n }; \r\n \r\n const handleDelete = async () => {\r\n if (!collectionToDelete) {\r\n return;\r\n }\r\n\r\n setIsLoadingDelete(true);\r\n\r\n const response = await deleteCollectionForeign(collectionToDelete.id);\r\n\r\n if (response.ok) {\r\n refetchCollections();\r\n toast.success('Incasso is succesvol verwijderd');\r\n closeDeleteModal();\r\n } else {\r\n toast.error('Er ging iets fout bij het verwijderen van de incasso');\r\n }\r\n\r\n setIsLoadingDelete(false);\r\n };\r\n\r\n const [showDeleteModal, hideDeleteModal] = useModal(\r\n ({ in: inProp, onExited }) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n ),\r\n [collectionToDelete, isLoadingDelete]\r\n );\r\n\r\n const openDeleteModal = (collection: CollectionForeignPlainModel) => {\r\n setCollectionToDelete(collection);\r\n showDeleteModal();\r\n };\r\n\r\n const closeDeleteModal = () => {\r\n setCollectionToDelete(undefined);\r\n hideDeleteModal();\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n isLoading={isLoading}\r\n data={collectionForeigns}\r\n columns={columns}\r\n noDataMessage=\"Geen incasso's beschikbaar\"\r\n search\r\n sortBy={[\r\n { id: 'caseNumber', desc: true },\r\n ]}\r\n actions={[\r\n {\r\n icon: 'edit',\r\n onClick: openEditCollectionModal,\r\n title: 'Bewerken'\r\n },\r\n {\r\n icon: 'download',\r\n onClick: downloadOverviewFile,\r\n title: 'Download ondertekend overzicht',\r\n active: (item) => item.overviewFile != null\r\n },\r\n {\r\n icon: 'plus',\r\n title: 'Ondertekend overzicht toevoegen',\r\n onClick: openUploadOverviewModal\r\n },\r\n {\r\n icon: 'delete',\r\n onClick: openDeleteModal,\r\n title: 'Verwijderen'\r\n }\r\n ]}\r\n />\r\n \r\n \r\n );\r\n};\r\n\r\nexport default ManageCollectionForeigns;\r\n","import React, { FC, useEffect } from 'react';\r\nimport { navigate, RouteComponentProps, useLocation } from '@reach/router';\r\nimport { Card, CardBody } from 'components/atoms/card';\r\nimport Table from 'components/molecules/table';\r\nimport { CollectionForeignPlainModel } from 'hooks/collectionforeign/types';\r\nimport { Column } from 'react-table';\r\nimport useAllCollectionForeigns from 'hooks/collectionforeign/useAllCollectionForeigns';\r\nimport { debtorFullName, numberToEuroString } from 'utils/stringHelpers';\r\nimport { useHeader } from 'contexts/headerContext';\r\nimport useCollectionForeign from 'hooks/collectionforeign/useCollectionForeign';\r\nimport { toast } from 'react-toastify';\r\nimport { format, parseISO } from 'date-fns';\r\nimport { Paragraph } from 'components/atoms/text';\r\nimport { CollectionStatus, getCollectionStatusDisplay } from 'utils/constants/collectionconstants';\r\n\r\ninterface CollectionForeignsProps extends RouteComponentProps {\r\n\r\n}\r\n\r\nconst CollectionForeigns: FC = () => {\r\n useHeader('Incasso Buitenland overzicht');\r\n\r\n const { search } = useLocation();\r\n const { data: collections = [], isLoading } = useAllCollectionForeigns();\r\n const { downloadCollectionForeignFile, getCollectionForeignSignRequestUrl } = useCollectionForeign();\r\n\r\n const columns: Column[] = [\r\n {\r\n id: 'created',\r\n Header: 'Datum',\r\n accessor: (collection) => parseISO(collection.created).getTime(),\r\n Cell: ({ value }: any) => format(value, 'dd-MM-yyyy')\r\n },\r\n {\r\n id: 'debtorName',\r\n Header: 'Debiteur',\r\n accessor: (collection) => collection?.debtor?.companyName ?? debtorFullName(collection.debtor?.contactPersonInitials, collection.debtor?.contactPersonLastName)\r\n },\r\n {\r\n id: 'caseNumber',\r\n Header: 'Dossiernummer',\r\n accessor: (collection) => collection.caseNumber\r\n },\r\n {\r\n Header: 'Status',\r\n accessor: (collection) => getCollectionStatusDisplay(collection?.status ?? CollectionStatus.InProgress)\r\n },\r\n {\r\n Header: 'Hoofdsom',\r\n accessor: (collection) => numberToEuroString(collection.amount)\r\n }\r\n ];\r\n\r\n useEffect(() => {\r\n const signed = new URLSearchParams(search).get('signed');\r\n if (signed == null) {\r\n return;\r\n }\r\n\r\n if (signed === 'true') {\r\n toast.success('De incasso is succesvol toegevoegd en ondertekend. Het kan een paar minuten duren voordat de status is aangepast.');\r\n } else {\r\n toast.error('De incasso is toegevoegd maar niet ondertekend');\r\n }\r\n }, [search]);\r\n\r\n const downloadOverviewFile = async (collection: CollectionForeignPlainModel) => {\r\n if (collection.overviewFile == null) {\r\n return;\r\n }\r\n\r\n const response = await downloadCollectionForeignFile(collection.id, collection.overviewFile.id);\r\n\r\n if (response.ok) {\r\n saveAs(await response.blob(), collection.overviewFile.fileName);\r\n } else {\r\n toast.error('Oops, er ging iets mis bij het ophalen van het bestand');\r\n }\r\n };\r\n\r\n const signCollection = async (collectionId: string) => {\r\n const response = await getCollectionForeignSignRequestUrl(collectionId);\r\n\r\n if (response.ok && response.data) {\r\n window.location.href = response.data;\r\n } else {\r\n toast.error('Oops, er ging iets mis bij het starten van het ondertekenen');\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n Hieronder vindt u een overzicht van de door u ingediende incasso-opdrachten.\r\n Let wel: dit betreft een overzicht van uw dossiers, maar is geen weergave van de stand van zaken in uw dossier.\r\n \r\n \r\n Wenst u een stand van zaken in uw dossiers? Neemt u dan contact met ons op onder vermelding van het dossiernummer of relatienummer.\r\n \r\n \r\n \r\n \r\n \r\n \r\n isLoading={isLoading}\r\n data={collections}\r\n columns={columns}\r\n onAddClick={() => navigate('/collection-foreign/add')}\r\n onAddClickLabel=\"incasso-opdracht indienen\"\r\n noDataMessage=\"Geen incasso's beschikbaar\"\r\n search\r\n sortBy={[\r\n { id: 'caseNumber', desc: true },\r\n ]}\r\n actions={[\r\n {\r\n icon: 'download',\r\n title: 'Download overzicht',\r\n onClick: downloadOverviewFile,\r\n active: (item) => item.overviewFile != null\r\n },\r\n {\r\n icon: 'edit',\r\n title: 'Ondertekenen',\r\n onClick: (item) => signCollection(item.id),\r\n active: (item) => item.status === CollectionStatus.NeedsSigning\r\n }\r\n ]}\r\n />\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default CollectionForeigns;\r\n","import { useApi } from 'hooks/api';\r\nimport { useQuery } from 'react-query';\r\nimport { buildUriWithParams } from 'utils/urihelper';\r\nimport { GetTermsAndConditionsInputModel, TermsAndConditionsPlainModel } from './types';\r\n\r\nexport const allTermsAndConditionsKey = 'termsandconditions.all';\r\n\r\n\r\nexport default function useAllTermsAndConditions(params?: GetTermsAndConditionsInputModel) {\r\n\r\n const { get } = useApi();\r\n\r\n const getAllTermsAndConditions = async (params?: GetTermsAndConditionsInputModel) => {\r\n const url = buildUriWithParams('/termsandconditions', params);\r\n\r\n const { data } = await get(url);\r\n\r\n return data;\r\n };\r\n\r\n return useQuery(allTermsAndConditionsKey, () => getAllTermsAndConditions(params));\r\n}\r\n","import { CustomResponse, useApi } from 'hooks/api';\r\nimport { useMutation, useQueryClient } from 'react-query';\r\nimport { AddTermsAndConditionsInputModel, SendTermsAndConditionsMailInputModel, TermsAndConditionsMutationContext, TermsAndConditionsPlainModel, SendTermsAndConditionsTaskMailInputModel } from './types';\r\nimport { allTermsAndConditionsKey } from './useAllTermsAndConditions';\r\nimport { v4 as uuid } from 'uuid';\r\nimport { CustomerPlainModel } from 'hooks/customer/types';\r\nimport { allCustomersQueryKey } from 'hooks/customer/useAllCustomers';\r\nimport { appendObject } from 'utils/objectAppender';\r\n\r\nconst useTermsAndConditions = () => {\r\n const queryClient = useQueryClient();\r\n\r\n const { get, post, deleteCall } = useApi();\r\n\r\n const baseUrl = '/termsandconditions';\r\n\r\n const addTermsAndConditions = async (values: AddTermsAndConditionsInputModel) => {\r\n const fd = new FormData();\r\n\r\n appendObject(values, fd);\r\n\r\n const response = await post(baseUrl, fd);\r\n\r\n if (!response.ok) {\r\n throw response;\r\n }\r\n\r\n return response;\r\n };\r\n\r\n const termsAndConditionsMutation = useMutation, CustomResponse, AddTermsAndConditionsInputModel, TermsAndConditionsMutationContext>((values: AddTermsAndConditionsInputModel) => addTermsAndConditions(values), {\r\n onMutate: async (values: AddTermsAndConditionsInputModel) => {\r\n await queryClient.cancelQueries(allTermsAndConditionsKey);\r\n\r\n const previousData = queryClient.getQueryData(allTermsAndConditionsKey);\r\n const customersData = queryClient.getQueryData(allCustomersQueryKey);\r\n\r\n const selectedCustomer = customersData?.find((c) => c.id === values.customerId);\r\n\r\n if (!selectedCustomer) {\r\n return { previousData };\r\n }\r\n\r\n const newFiles = values.files?.map((f) => ({\r\n id: uuid(),\r\n date: values.date.toISOString(),\r\n version: values.version,\r\n fileName: f.name,\r\n customer: selectedCustomer\r\n })) ?? [];\r\n\r\n const newData: TermsAndConditionsPlainModel[] = [\r\n ...(previousData ?? []), ...newFiles\r\n ];\r\n\r\n queryClient.setQueryData(allTermsAndConditionsKey, newData);\r\n\r\n return { previousData };\r\n },\r\n onError: (error, variables, context) => {\r\n if (context?.previousData) {\r\n queryClient.setQueryData(allTermsAndConditionsKey, context.previousData);\r\n }\r\n },\r\n onSettled: () => {\r\n queryClient.invalidateQueries(allTermsAndConditionsKey);\r\n }\r\n });\r\n\r\n const deleteTermsAndConditions = async (id: string) => {\r\n const response = await deleteCall(`${baseUrl}/${id}`);\r\n\r\n if (!response.ok) {\r\n throw response;\r\n }\r\n\r\n return response;\r\n };\r\n\r\n const deleteTermsAndConditionsMutation = useMutation, CustomResponse, string, TermsAndConditionsMutationContext>((id: string) => deleteTermsAndConditions(id), {\r\n onMutate: async (id: string) => {\r\n await queryClient.cancelQueries(allTermsAndConditionsKey);\r\n\r\n const previousData = queryClient.getQueryData(allTermsAndConditionsKey) ?? [];\r\n\r\n const indexOfRemovedTerms = previousData?.findIndex((t) => t.id === id);\r\n\r\n if (indexOfRemovedTerms === -1) {\r\n return { previousData };\r\n }\r\n\r\n const newData = [...previousData];\r\n newData.splice(indexOfRemovedTerms, 1);\r\n\r\n queryClient.setQueryData(allTermsAndConditionsKey, newData);\r\n\r\n return { previousData };\r\n },\r\n onError: (error, variables, context) => {\r\n if (context?.previousData) {\r\n queryClient.setQueryData(allTermsAndConditionsKey, context.previousData);\r\n }\r\n },\r\n onSettled: () => {\r\n queryClient.invalidateQueries(allTermsAndConditionsKey);\r\n }\r\n });\r\n\r\n const getTermsAndConditionsFile = (termsAndConditionsId: string) => {\r\n const response = get(`${baseUrl}/${termsAndConditionsId}/file`);\r\n\r\n return response;\r\n };\r\n\r\n const sendTermsAndConditionsMail = (id: string, values: SendTermsAndConditionsMailInputModel) => {\r\n const response = post(`${baseUrl}/${id}/mail`, values);\r\n\r\n return response;\r\n };\r\n\r\n const sendTermsAndConditionsTaskMail = (values: SendTermsAndConditionsTaskMailInputModel) => {\r\n const fd = new FormData();\r\n\r\n appendObject(values, fd);\r\n\r\n const response = post(`${baseUrl}/task/mail`, fd);\r\n\r\n return response;\r\n };\r\n\r\n return {\r\n addTermsAndConditions,\r\n deleteTermsAndConditions,\r\n termsAndConditionsMutation,\r\n deleteTermsAndConditionsMutation,\r\n getTermsAndConditionsFile,\r\n sendTermsAndConditionsMail,\r\n sendTermsAndConditionsTaskMail\r\n };\r\n};\r\n\r\nexport default useTermsAndConditions;\r\n","export interface MaintenanceContractPlainModel {\r\n id: string;\r\n date: string;\r\n version: string;\r\n fileName: string;\r\n customerId: string;\r\n customerName: string;\r\n customerRelationNumber: string;\r\n}\r\n\r\nexport interface AddMaintenanceContractInputModel {\r\n customerId: string;\r\n date: Date;\r\n version: string;\r\n file?: File;\r\n type: MaintenanceContractType;\r\n}\r\n\r\nexport interface SendMaintenanceContractMailInputModel {\r\n toEmail: string;\r\n}\r\n\r\nexport interface GetMaintenanceContractInputModel {\r\n id?: string;\r\n customerId?: string;\r\n}\r\n\r\nexport enum MaintenanceContractType {\r\n BranchOriented = 0,\r\n CustomWork = 1\r\n}\r\n","import React, { FC, useState } from 'react';\r\nimport { RouteComponentProps } from '@reach/router';\r\nimport { Card, CardBody } from 'components/atoms/card';\r\nimport Table from 'components/molecules/table';\r\nimport { Column } from 'react-table';\r\nimport useModal from 'hooks/modal';\r\nimport Modal from 'components/organisms/Modal';\r\nimport { FormGroup, FormikFormControl, FormikFormDate, FormikFormMultipleFile, FormikFormSelect } from 'components/atoms/form';\r\nimport { Form, Formik, FormikHelpers } from 'formik';\r\nimport { Button } from 'components/atoms/button';\r\nimport useAllCustomers from 'hooks/customer/useAllCustomers';\r\nimport { useMemo } from 'react';\r\nimport useAllTermsAndConditions from 'hooks/termsAndConditions/useAllTermsAndConditions';\r\nimport { AddTermsAndConditionsInputModel, SendTermsAndConditionsMailInputModel, TermsAndConditionsPlainModel } from 'hooks/termsAndConditions/types';\r\nimport useTermsAndConditions from 'hooks/termsAndConditions/useTermsAndConditions';\r\nimport { toFormikErrors } from 'utils/errorhelper';\r\nimport { toast } from 'react-toastify';\r\nimport Group from 'components/molecules/Group';\r\nimport { saveAs } from 'file-saver';\r\nimport { useHeader } from 'contexts/headerContext';\r\nimport { format, parseISO } from 'date-fns';\r\n\r\nconst columns: Column[] = [\r\n {\r\n Header: 'Relatienummer',\r\n accessor: (tac) => tac.customer.relationNumber\r\n },\r\n {\r\n Header: 'Bedrijfsnaam',\r\n accessor: (tac) => tac.customer.name\r\n },\r\n {\r\n Header: 'Algemene voorwaarden',\r\n accessor: (tac) => tac.fileName\r\n },\r\n {\r\n id: 'date',\r\n Header: 'Datum',\r\n accessor: (tac) => parseISO(tac.date).getTime(),\r\n Cell: ({ value }: any) => format(value, 'dd-MM-yyyy')\r\n },\r\n {\r\n Header: 'Versie',\r\n accessor: (tac) => tac.version\r\n }\r\n];\r\n\r\nconst initialValues: AddTermsAndConditionsInputModel = {\r\n date: new Date(),\r\n version: '',\r\n customerId: '',\r\n files: undefined\r\n};\r\n\r\nconst initialValuesSendMail: SendTermsAndConditionsMailInputModel = {\r\n toName: '',\r\n toEmail: ''\r\n};\r\n\r\nconst TermsAndConditions: FC = () => {\r\n useHeader('Algemene voorwaarden');\r\n\r\n const { data: termsAndConditions = [], isLoading: isLoadingTermsAndConditions } = useAllTermsAndConditions();\r\n const { data: customers = [], isFetching: isLoadingCustomers } = useAllCustomers();\r\n const { termsAndConditionsMutation, deleteTermsAndConditionsMutation, getTermsAndConditionsFile, sendTermsAndConditionsMail } = useTermsAndConditions();\r\n\r\n const [termsToDelete, setTermsToDelete] = useState();\r\n const [termsToMail, setTermsToMail] = useState();\r\n const [isLoadingDelete, setIsLoadingDelete] = useState(false);\r\n const [fileToPrint, setFileToPrint] = useState();\r\n const printRef = React.createRef();\r\n\r\n const customerOptions = useMemo(() => customers.map((c) => ({\r\n value: c.id,\r\n label: c.name\r\n })), [customers]);\r\n\r\n // Methods.\r\n const handleOnSubmit = (values: AddTermsAndConditionsInputModel, { setErrors }: FormikHelpers) => {\r\n return termsAndConditionsMutation.mutateAsync(values, {\r\n onSuccess: () => {\r\n toast.success('Algemene voorwaarden is succesvol toegevoegd');\r\n hide();\r\n },\r\n onError: (error) => {\r\n if (error.errors) {\r\n const errors = toFormikErrors(error.errors);\r\n setErrors(errors);\r\n toast.error('Niet alle velden zijn ingevuld');\r\n } else {\r\n toast.error('Er ging iets fout bij het toevoegen van de algemene voorwaarden');\r\n }\r\n }\r\n });\r\n };\r\n\r\n const handleDelete = async () => {\r\n if (!termsToDelete) {\r\n return;\r\n }\r\n\r\n setIsLoadingDelete(true);\r\n\r\n await deleteTermsAndConditionsMutation.mutateAsync(termsToDelete.id, {\r\n onSuccess: () => {\r\n toast.success('Algemene voorwaarden is succesvol verwijderd');\r\n closeDeleteModal();\r\n },\r\n onError: () => {\r\n toast.error('Er ging iets fout bij het verwijderen van de algemene voorwaarden');\r\n }\r\n });\r\n\r\n setIsLoadingDelete(false);\r\n };\r\n\r\n const handleMail = async (values: SendTermsAndConditionsMailInputModel, { setErrors }: FormikHelpers) => {\r\n if (!termsToMail) {\r\n return;\r\n }\r\n\r\n const response = await sendTermsAndConditionsMail(termsToMail.id, values);\r\n\r\n if (response.ok) {\r\n toast.success('Algemene voorwaarden is succesvol verstuurd');\r\n closeMailModal();\r\n } else if (response.errors) {\r\n const errors = toFormikErrors(response.errors);\r\n setErrors(errors);\r\n } else {\r\n toast.error('Er ging iets fout bij het versturen van de algemene voorwaarden');\r\n }\r\n };\r\n\r\n const downloadFile = async (termsAndConditions: TermsAndConditionsPlainModel) => {\r\n\r\n const response = await getTermsAndConditionsFile(termsAndConditions.id);\r\n\r\n if (response.ok) {\r\n saveAs(await response.blob(), termsAndConditions.fileName);\r\n } else {\r\n toast.error('Er ging iets fout bij het ophalen van de algemene voorwaarden');\r\n }\r\n };\r\n\r\n const printFile = async (termsAndConditions: TermsAndConditionsPlainModel) => {\r\n\r\n const response = await getTermsAndConditionsFile(termsAndConditions.id);\r\n\r\n if (response.ok) {\r\n const url = window.URL.createObjectURL(await response.blob());\r\n setFileToPrint(url);\r\n } else {\r\n toast.error('Er ging iets fout bij het ophalen van de algemene voorwaarden');\r\n }\r\n };\r\n\r\n // Formik.\r\n const [show, hide] = useModal(\r\n ({ in: inProp, onExited }) => (\r\n \r\n initialValues={initialValues} onSubmit={handleOnSubmit}>\r\n {({ isSubmitting }) => (\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 [customerOptions, isLoadingCustomers]\r\n );\r\n\r\n const [showDeleteModal, hideDeleteModal] = useModal(\r\n ({ in: inProp, onExited }) => (\r\n \r\n

Bedrijfsnaam: {termsToDelete?.customer.name}

\r\n

Bestandsnaam: {termsToDelete?.fileName}

\r\n

Versie: {termsToDelete?.version}

\r\n \r\n \r\n \r\n \r\n
\r\n ),\r\n [termsToDelete]\r\n );\r\n\r\n const openDeleteModal = (termsAndConditions: TermsAndConditionsPlainModel) => {\r\n setTermsToDelete(termsAndConditions);\r\n showDeleteModal();\r\n };\r\n\r\n const closeDeleteModal = () => {\r\n setTermsToDelete(undefined);\r\n hideDeleteModal();\r\n };\r\n\r\n const [showMailModal, hideMailModal] = useModal(\r\n ({ in: inProp, onExited }) => (\r\n \r\n initialValues={initialValuesSendMail} onSubmit={handleMail}>\r\n {({ isSubmitting, isValid }) => (\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 [termsToMail]\r\n );\r\n\r\n const openMailModal = (termsAndConditions: TermsAndConditionsPlainModel) => {\r\n setTermsToMail(termsAndConditions);\r\n showMailModal();\r\n };\r\n\r\n const closeMailModal = () => {\r\n setTermsToMail(undefined);\r\n hideMailModal();\r\n };\r\n\r\n // Render.\r\n return (\r\n <>\r\n \r\n \r\n \r\n data={termsAndConditions}\r\n isLoading={isLoadingTermsAndConditions}\r\n noDataMessage=\"Geen algemene voorwaarden beschikbaar\"\r\n columns={columns}\r\n search\r\n onAddClick={show}\r\n sortBy={[{ id: 'date', desc: true }]}\r\n actions={[\r\n {\r\n icon: 'download',\r\n onClick: downloadFile,\r\n title: 'Download algemene voorwaarden'\r\n },\r\n {\r\n icon: 'print',\r\n onClick: printFile,\r\n title: 'Print algemene voorwaarden'\r\n },\r\n {\r\n icon: 'mail',\r\n onClick: openMailModal,\r\n title: 'Mail algemene voorwaarden'\r\n },\r\n {\r\n icon: 'delete',\r\n onClick: openDeleteModal,\r\n title: 'Verwijder algemene voorwaarden'\r\n }\r\n ]}\r\n />\r\n \r\n \r\n\r\n {\r\n fileToPrint &&\r\n \r\n }\r\n \r\n );\r\n};\r\n\r\nexport default TermsAndConditions;\r\n","import { useApi } from 'hooks/api';\r\nimport { AddAgreementInputModel, AgreementPlainModel, GetAgreementInputModel, SendAgreementMailInputModel, SendAgreementTaskMailInputModel } from 'hooks/agreement/types';\r\nimport { useQuery } from 'react-query';\r\nimport { CustomError } from 'hooks/api/types';\r\nimport { buildUriWithParams } from 'utils/urihelper';\r\nimport { appendObject } from 'utils/objectAppender';\r\n\r\n\r\nexport const getAgreementsQueryKey = 'agreement.get';\r\n\r\nconst useAgreements = () => {\r\n\r\n const baseUrl = '/agreement';\r\n\r\n const { post, get, deleteCall } = useApi();\r\n\r\n const useAllAgreements = (params?: GetAgreementInputModel) => {\r\n const queryKey = [getAgreementsQueryKey, params];\r\n\r\n return useQuery(queryKey, async () => {\r\n const response = await allAgreements(params);\r\n\r\n if (!response.ok && response.errors != null) {\r\n throw response.errors;\r\n }\r\n\r\n return response.data ?? [];\r\n });\r\n };\r\n\r\n const allAgreements = async (params?: GetAgreementInputModel) => {\r\n const url = buildUriWithParams(baseUrl, params);\r\n\r\n const response = await get(url);\r\n\r\n return response;\r\n };\r\n\r\n const addAgreement = async (values: AddAgreementInputModel) => {\r\n const fd = new FormData();\r\n\r\n appendObject(values, fd);\r\n\r\n const response = await post(baseUrl, fd);\r\n\r\n return response;\r\n };\r\n\r\n const deleteAgreement = async (id: string) => {\r\n const response = await deleteCall(`${baseUrl}/${id}`);\r\n\r\n return response;\r\n };\r\n\r\n const getAgreementFile = async (agreementId: string) => {\r\n const response = await get(`${baseUrl}/${agreementId}/file`);\r\n\r\n return response;\r\n };\r\n\r\n const sendAgreementMail = async (id: string, values: SendAgreementMailInputModel) => {\r\n const response = await post(`${baseUrl}/${id}/mail`, values);\r\n\r\n return response;\r\n };\r\n\r\n const sendAgreementTaskMail = (values: SendAgreementTaskMailInputModel) => {\r\n const fd = new FormData();\r\n\r\n appendObject(values, fd);\r\n\r\n const response = post(`${baseUrl}/task/mail`, fd);\r\n\r\n return response;\r\n };\r\n\r\n return {\r\n addAgreement,\r\n useAllAgreements,\r\n allAgreements,\r\n deleteAgreement,\r\n getAgreementFile,\r\n sendAgreementMail,\r\n sendAgreementTaskMail\r\n };\r\n};\r\n\r\nexport default useAgreements;\r\n","import React, { FC, useMemo, useState } from 'react';\r\nimport { RouteComponentProps } from '@reach/router';\r\nimport { Card, CardBody } from 'components/atoms/card';\r\nimport Table from 'components/molecules/table';\r\nimport { Column } from 'react-table';\r\nimport useModal from 'hooks/modal';\r\nimport Modal from 'components/organisms/Modal';\r\nimport { FormGroup, FormikFormControl, FormikFormDate, FormikFormMultipleFile, FormikFormSelect } from 'components/atoms/form';\r\nimport { Form, Formik, FormikHelpers } from 'formik';\r\nimport { Button } from 'components/atoms/button';\r\nimport { useHeader } from 'contexts/headerContext';\r\nimport useAgreements from 'hooks/agreement';\r\nimport { AddAgreementInputModel, AgreementPlainModel, SendAgreementMailInputModel } from 'hooks/agreement/types';\r\nimport { toFormikErrors } from 'utils/errorhelper';\r\nimport useAllCustomers from 'hooks/customer/useAllCustomers';\r\nimport Group from 'components/molecules/Group';\r\nimport { toast } from 'react-toastify';\r\nimport { format, parseISO } from 'date-fns';\r\n\r\nconst columns: Column[] = [\r\n {\r\n Header: 'Relatienummer',\r\n accessor: (agreement) => agreement.customerRelationNumber\r\n },\r\n {\r\n Header: 'Bedrijfsnaam',\r\n accessor: (agreement) => agreement.customerName\r\n },\r\n {\r\n Header: 'Overeenkomst',\r\n accessor: (agreement) => agreement.fileName\r\n },\r\n {\r\n id: 'date',\r\n Header: 'Datum',\r\n accessor: (agreement) => parseISO(agreement.date).getTime(),\r\n Cell: ({ value }: any) => format(value, 'dd-MM-yyyy')\r\n },\r\n {\r\n Header: 'Versie',\r\n accessor: (agreement) => agreement.version\r\n }\r\n];\r\n\r\nconst Agreements: FC = () => {\r\n useHeader('Overeenkomsten');\r\n\r\n const { addAgreement, useAllAgreements, deleteAgreement, getAgreementFile, sendAgreementMail } = useAgreements();\r\n const { data: agreements = [], refetch: refetchAgreements, isLoading: isLoadingAgreements } = useAllAgreements();\r\n const { data: customers = [], isFetching: isLoadingCustomers } = useAllCustomers();\r\n\r\n const [agreementToMail, setAgreementToMail] = useState();\r\n const [agreementToDelete, setAgreementToDelete] = useState();\r\n const [isLoadingDelete, setIsLoadingDelete] = useState(false);\r\n const [fileToPrint, setFileToPrint] = useState();\r\n const printRef = React.createRef();\r\n\r\n const customerOptions = useMemo(() => customers.map((c) => ({\r\n value: c.id,\r\n label: c.name\r\n })), [customers]);\r\n\r\n // Methods.\r\n const handleOnSubmit = async (values: AddAgreementInputModel, { setErrors, setSubmitting, resetForm }: FormikHelpers) => {\r\n const response = await addAgreement(values);\r\n\r\n if (response.ok) {\r\n refetchAgreements();\r\n hideAddAgreement();\r\n resetForm();\r\n } else if (response.errors) {\r\n const errors = toFormikErrors(response.errors);\r\n setErrors(errors);\r\n }\r\n\r\n setSubmitting(false);\r\n };\r\n\r\n const initialValues: AddAgreementInputModel = {\r\n date: new Date(),\r\n version: '',\r\n customerId: undefined,\r\n files: undefined\r\n };\r\n\r\n // Formik.\r\n const [showAddAgreement, hideAddAgreement] = useModal(\r\n ({ in: inProp, onExited }) => (\r\n \r\n initialValues={initialValues} onSubmit={handleOnSubmit}>\r\n {({ isSubmitting }) => (\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 [customerOptions, isLoadingCustomers]\r\n );\r\n\r\n const openDeleteModal = (agreement: AgreementPlainModel) => {\r\n setAgreementToDelete(agreement);\r\n showDeleteModal();\r\n };\r\n\r\n const closeDeleteModal = () => {\r\n hideDeleteModal();\r\n setAgreementToDelete(undefined);\r\n };\r\n\r\n const handleDelete = async () => {\r\n if (agreementToDelete == null) {\r\n return;\r\n }\r\n\r\n setIsLoadingDelete(true);\r\n\r\n const response = await deleteAgreement(agreementToDelete.id);\r\n\r\n if (response.ok) {\r\n refetchAgreements();\r\n closeDeleteModal();\r\n } else {\r\n toast.error('Er ging iets fout bij het verwijderen van de overeenkomst');\r\n }\r\n\r\n setIsLoadingDelete(false);\r\n };\r\n\r\n const [showDeleteModal, hideDeleteModal] = useModal(\r\n ({ in: inProp, onExited }) => (\r\n \r\n

Bedrijfsnaam: {agreementToDelete?.customerName}

\r\n

Bestandsnaam: {agreementToDelete?.fileName}

\r\n

Versie: {agreementToDelete?.version}

\r\n \r\n \r\n \r\n \r\n
\r\n ),\r\n [agreementToDelete]\r\n );\r\n\r\n const downloadFile = async (agreement: AgreementPlainModel) => {\r\n const response = await getAgreementFile(agreement.id);\r\n\r\n if (response.ok) {\r\n saveAs(await response.blob(), agreement.fileName);\r\n } else {\r\n toast.error('Er ging iets fout bij het ophalen van de overeenkomst');\r\n }\r\n };\r\n\r\n const printFile = async (agreement: AgreementPlainModel) => {\r\n const response = await getAgreementFile(agreement.id);\r\n\r\n if (response.ok) {\r\n const url = window.URL.createObjectURL(await response.blob());\r\n setFileToPrint(url);\r\n } else {\r\n toast.error('Er ging iets fout bij het ophalen van de overeenkomst');\r\n }\r\n };\r\n\r\n const handleMail = async (values: SendAgreementMailInputModel, { setErrors }: FormikHelpers) => {\r\n if (!agreementToMail) {\r\n return;\r\n }\r\n\r\n const response = await sendAgreementMail(agreementToMail.id, values);\r\n\r\n if (response.ok) {\r\n toast.success('Overeenkomst is succesvol verstuurd');\r\n closeMailModal();\r\n } else if (response.errors) {\r\n const errors = toFormikErrors(response.errors);\r\n setErrors(errors);\r\n } else {\r\n toast.error('Er ging iets fout bij het versturen van de overeenkomst');\r\n }\r\n };\r\n\r\n const initialValuesSendMail: SendAgreementMailInputModel = {\r\n toEmail: ''\r\n };\r\n\r\n const [showMailModal, hideMailModal] = useModal(\r\n ({ in: inProp, onExited }) => (\r\n \r\n initialValues={initialValuesSendMail} onSubmit={handleMail}>\r\n {({ isSubmitting, isValid }) => (\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 [agreementToMail]\r\n );\r\n\r\n const openMailModal = (agreement: AgreementPlainModel) => {\r\n setAgreementToMail(agreement);\r\n showMailModal();\r\n };\r\n\r\n const closeMailModal = () => {\r\n setAgreementToMail(undefined);\r\n hideMailModal();\r\n };\r\n\r\n // Render.\r\n return (\r\n <>\r\n \r\n \r\n \r\n data={agreements}\r\n noDataMessage=\"Geen overeenkomsten beschikbaar\"\r\n columns={columns}\r\n isLoading={isLoadingAgreements}\r\n search\r\n onAddClick={showAddAgreement}\r\n sortBy={[{ id: 'date', desc: true }]}\r\n actions={[\r\n {\r\n icon: 'download',\r\n onClick: (item) => downloadFile(item),\r\n title: 'Download overeenkomst'\r\n },\r\n {\r\n icon: 'print',\r\n onClick: (item) => printFile(item),\r\n title: 'Print overeenkomst'\r\n },\r\n {\r\n icon: 'mail',\r\n onClick: (item) => openMailModal(item),\r\n title: 'Mail overeenkomst'\r\n },\r\n {\r\n icon: 'delete',\r\n onClick: (item) => openDeleteModal(item),\r\n title: 'Verwijder overeenkomst'\r\n }\r\n ]}\r\n />\r\n \r\n \r\n\r\n {fileToPrint && }\r\n \r\n );\r\n};\r\n\r\nexport default Agreements;\r\n","import { useApi } from 'hooks/api';\r\nimport { CustomError } from 'hooks/api/types';\r\nimport { useQuery } from 'react-query';\r\nimport { appendObject } from 'utils/objectAppender';\r\nimport { buildUriWithParams } from 'utils/urihelper';\r\nimport { AddMaintenanceContractInputModel, GetMaintenanceContractInputModel, MaintenanceContractPlainModel, SendMaintenanceContractMailInputModel } from './types';\r\n\r\nexport const getMaintenanceContractsQueryKey = 'maintenancecontract.get';\r\n\r\nconst useMaintenanceContract = () => {\r\n\r\n const { get, post, deleteCall } = useApi();\r\n\r\n const baseUrl = '/maintenancecontract';\r\n\r\n const getAllMaintenanceContract = async (params?: GetMaintenanceContractInputModel) => {\r\n const url = buildUriWithParams(baseUrl, params);\r\n\r\n const response = await get(url);\r\n\r\n return response;\r\n };\r\n\r\n const useAllMaintenanceContracts = (params?: GetMaintenanceContractInputModel) => {\r\n const queryKey = [getMaintenanceContractsQueryKey, params];\r\n\r\n return useQuery(queryKey, async () => {\r\n const response = await getAllMaintenanceContract(params);\r\n\r\n if (!response.ok && response.errors != null) {\r\n throw response.errors;\r\n }\r\n\r\n return response.data ?? [];\r\n });\r\n };\r\n\r\n const addMaintenanceContract = async (values: AddMaintenanceContractInputModel) => {\r\n const fd = new FormData();\r\n\r\n appendObject(values, fd);\r\n\r\n const response = await post(baseUrl, fd);\r\n\r\n return response;\r\n };\r\n\r\n const deleteMaintenanceContract = async (id: string) => {\r\n const response = await deleteCall(`${baseUrl}/${id}`);\r\n\r\n return response;\r\n };\r\n\r\n const getMaintenanceContractFile = (maintenanceContractId: string) => {\r\n const response = get(`${baseUrl}/${maintenanceContractId}/file`);\r\n\r\n return response;\r\n };\r\n\r\n const sendMaintenanceContractMail = (id: string, values: SendMaintenanceContractMailInputModel) => {\r\n const response = post(`${baseUrl}/${id}/mail`, values);\r\n\r\n return response;\r\n };\r\n\r\n return {\r\n getAllMaintenanceContract,\r\n useAllMaintenanceContracts,\r\n addMaintenanceContract,\r\n deleteMaintenanceContract,\r\n getMaintenanceContractFile,\r\n sendMaintenanceContractMail\r\n };\r\n};\r\n\r\nexport default useMaintenanceContract;\r\n","import React, { FC, useMemo, useState } from 'react';\r\nimport { RouteComponentProps } from '@reach/router';\r\nimport { Card, CardBody } from 'components/atoms/card';\r\nimport Table from 'components/molecules/table';\r\nimport { Column } from 'react-table';\r\nimport useModal from 'hooks/modal';\r\nimport Modal from 'components/organisms/Modal';\r\nimport { FormGroup, FormikFormControl, FormikFormDate, FormikFormFile, FormikFormSelect } from 'components/atoms/form';\r\nimport { Form, Formik, FormikHelpers } from 'formik';\r\nimport { Button } from 'components/atoms/button';\r\nimport { useHeader } from 'contexts/headerContext';\r\nimport useMaintenanceContract from 'hooks/maintenancecontract';\r\nimport { AddMaintenanceContractInputModel, MaintenanceContractPlainModel, MaintenanceContractType, SendMaintenanceContractMailInputModel } from 'hooks/maintenancecontract/types';\r\nimport Group from 'components/molecules/Group';\r\nimport useAllCustomers from 'hooks/customer/useAllCustomers';\r\nimport { toFormikErrors } from 'utils/errorhelper';\r\nimport { toast } from 'react-toastify';\r\nimport { format, parseISO } from 'date-fns';\r\n\r\nconst columns: Column[] = [\r\n {\r\n Header: 'Relatienummer',\r\n accessor: (tac) => tac.customerRelationNumber\r\n },\r\n {\r\n Header: 'Bedrijfsnaam',\r\n accessor: (tac) => tac.customerName\r\n },\r\n {\r\n Header: 'Onderhoudscontract',\r\n accessor: (tac) => tac.fileName\r\n },\r\n {\r\n id: 'date',\r\n Header: 'Datum',\r\n accessor: (tac) => parseISO(tac.date).getTime(),\r\n Cell: ({ value }: any) => format(value, 'dd-MM-yyyy')\r\n },\r\n {\r\n Header: 'Versie',\r\n accessor: (tac) => tac.version\r\n }\r\n];\r\n\r\nconst initialValues: AddMaintenanceContractInputModel = {\r\n date: new Date(),\r\n version: '',\r\n customerId: '',\r\n file: undefined,\r\n type: MaintenanceContractType.BranchOriented\r\n};\r\n\r\nconst initialValuesSendMail: SendMaintenanceContractMailInputModel = {\r\n toEmail: ''\r\n};\r\n\r\nconst MaintenanceContracts: FC = () => {\r\n useHeader('Onderhoudscontracten');\r\n\r\n const {\r\n addMaintenanceContract,\r\n deleteMaintenanceContract,\r\n sendMaintenanceContractMail,\r\n useAllMaintenanceContracts,\r\n getMaintenanceContractFile\r\n } = useMaintenanceContract();\r\n\r\n const { data: maintenanceContracts = [], isLoading: isLoadingMaintenanceContracts, refetch: refetchMaintenanceContracts } = useAllMaintenanceContracts();\r\n const { data: customers = [], isFetching: isLoadingCustomers } = useAllCustomers();\r\n\r\n const [maintenanceContractToDelete, setMaintenanceContractToDelete] = useState();\r\n const [maintenanceContractToMail, setMaintenanceContractToMail] = useState();\r\n const [isLoadingDelete, setIsLoadingDelete] = useState(false);\r\n const [fileToPrint, setFileToPrint] = useState();\r\n const printRef = React.createRef();\r\n\r\n const customerOptions = useMemo(() => customers.map((c) => ({\r\n value: c.id,\r\n label: c.name\r\n })), [customers]);\r\n\r\n // Methods.\r\n const handleOnSubmit = async (values: AddMaintenanceContractInputModel, { setErrors, resetForm }: FormikHelpers) => {\r\n const response = await addMaintenanceContract(values);\r\n\r\n if (response.ok) {\r\n toast.success('Onderhoudscontract is succesvol toegevoegd');\r\n refetchMaintenanceContracts();\r\n hide();\r\n resetForm();\r\n } else if (response.errors) {\r\n const errors = toFormikErrors(response.errors);\r\n setErrors(errors);\r\n toast.error('Niet alle velden zijn ingevuld');\r\n }\r\n };\r\n\r\n const handleDelete = async () => {\r\n if (!maintenanceContractToDelete) {\r\n return;\r\n }\r\n\r\n setIsLoadingDelete(true);\r\n\r\n const response = await deleteMaintenanceContract(maintenanceContractToDelete.id);\r\n\r\n if (response.ok) {\r\n refetchMaintenanceContracts();\r\n toast.success('Onderhoudscontract is succesvol verwijderd');\r\n closeDeleteModal();\r\n } else {\r\n toast.error('Er ging iets fout bij het verwijderen van het onderhoudscontract');\r\n }\r\n\r\n setIsLoadingDelete(false);\r\n };\r\n\r\n const handleMail = async (values: SendMaintenanceContractMailInputModel, { setErrors }: FormikHelpers) => {\r\n if (!maintenanceContractToMail) {\r\n return;\r\n }\r\n\r\n const response = await sendMaintenanceContractMail(maintenanceContractToMail.id, values);\r\n\r\n if (response.ok) {\r\n toast.success('Onderhouscontract is succesvol verstuurd');\r\n closeMailModal();\r\n } else if (response.errors) {\r\n const errors = toFormikErrors(response.errors);\r\n setErrors(errors);\r\n } else {\r\n toast.error('Er ging iets fout bij het versturen van het onderhoudscontract');\r\n }\r\n };\r\n\r\n const downloadFile = async (maintenanceContractAndConditions: MaintenanceContractPlainModel) => {\r\n\r\n const response = await getMaintenanceContractFile(maintenanceContractAndConditions.id);\r\n\r\n if (response.ok) {\r\n saveAs(await response.blob(), maintenanceContractAndConditions.fileName);\r\n } else {\r\n toast.error('Er ging iets fout bij het ophalen van het onderhoudscontract');\r\n }\r\n };\r\n\r\n const printFile = async (maintenanceContractAndConditions: MaintenanceContractPlainModel) => {\r\n\r\n const response = await getMaintenanceContractFile(maintenanceContractAndConditions.id);\r\n\r\n if (response.ok) {\r\n const url = window.URL.createObjectURL(await response.blob());\r\n setFileToPrint(url);\r\n } else {\r\n toast.error('Er ging iets fout bij het ophalen van het onderhoudscontract');\r\n }\r\n };\r\n\r\n // Formik.\r\n const [show, hide] = useModal(\r\n ({ in: inProp, onExited }) => (\r\n \r\n initialValues={initialValues} onSubmit={handleOnSubmit}>\r\n {({ isSubmitting }) => (\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 [customerOptions, isLoadingCustomers]\r\n );\r\n\r\n const [showDeleteModal, hideDeleteModal] = useModal(\r\n ({ in: inProp, onExited }) => (\r\n \r\n

Bedrijfsnaam: {maintenanceContractToDelete?.customerName}

\r\n

Bestandsnaam: {maintenanceContractToDelete?.fileName}

\r\n

Versie: {maintenanceContractToDelete?.version}

\r\n \r\n \r\n \r\n \r\n
\r\n ),\r\n [maintenanceContractToDelete]\r\n );\r\n\r\n const openDeleteModal = (maintenanceContract: MaintenanceContractPlainModel) => {\r\n setMaintenanceContractToDelete(maintenanceContract);\r\n showDeleteModal();\r\n };\r\n\r\n const closeDeleteModal = () => {\r\n setMaintenanceContractToDelete(undefined);\r\n hideDeleteModal();\r\n };\r\n\r\n const [showMailModal, hideMailModal] = useModal(\r\n ({ in: inProp, onExited }) => (\r\n \r\n initialValues={initialValuesSendMail} onSubmit={handleMail}>\r\n {({ isSubmitting, isValid }) => (\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 [maintenanceContractToMail]\r\n );\r\n\r\n const openMailModal = (maintenanceContract: MaintenanceContractPlainModel) => {\r\n setMaintenanceContractToMail(maintenanceContract);\r\n showMailModal();\r\n };\r\n\r\n const closeMailModal = () => {\r\n setMaintenanceContractToMail(undefined);\r\n hideMailModal();\r\n };\r\n\r\n // Render.\r\n return (\r\n <>\r\n \r\n \r\n \r\n isLoading={isLoadingMaintenanceContracts}\r\n data={maintenanceContracts}\r\n noDataMessage=\"Geen onderhoudscontracten beschikbaar\"\r\n columns={columns}\r\n search\r\n onAddClick={show}\r\n sortBy={[{ id: 'date', desc: true }]}\r\n actions={[\r\n {\r\n icon: 'download',\r\n onClick: (item) => downloadFile(item),\r\n title: 'Download onderhoudscontract'\r\n },\r\n {\r\n icon: 'print',\r\n onClick: (item) => printFile(item),\r\n title: 'Print onderhoudscontract'\r\n },\r\n {\r\n icon: 'mail',\r\n onClick: (item) => openMailModal(item),\r\n title: 'Mail onderhoudscontract'\r\n },\r\n {\r\n icon: 'delete',\r\n onClick: (item) => openDeleteModal(item),\r\n title: 'Delete onderhoudscontract'\r\n }\r\n ]}\r\n />\r\n \r\n \r\n\r\n\r\n {\r\n fileToPrint &&\r\n \r\n }\r\n \r\n );\r\n};\r\n\r\nexport default MaintenanceContracts;\r\n","import { CustomerPlainModel } from 'hooks/customer/types';\r\n\r\nexport interface TermsAndConditionsPlainModel {\r\n id: string;\r\n date: string;\r\n version: string;\r\n fileName: string;\r\n customer: CustomerPlainModel;\r\n}\r\n\r\nexport interface AddTermsAndConditionsInputModel {\r\n customerId: string;\r\n date: Date;\r\n version: string;\r\n files?: File[];\r\n // TODO why are we sending a customer id and date if this can be defined on the backend?\r\n}\r\n\r\nexport interface TermsAndConditionsMutationContext {\r\n previousData?: TermsAndConditionsPlainModel[];\r\n}\r\n\r\nexport interface SendTermsAndConditionsMailInputModel {\r\n toName: string;\r\n toEmail: string;\r\n}\r\n\r\nexport interface GetTermsAndConditionsInputModel {\r\n id?: string;\r\n customerId?: string;\r\n}\r\n\r\nexport interface SendTermsAndConditionsTaskMailInputModel {\r\n file?: File;\r\n comments?: string;\r\n type: TermsAndConditionsType;\r\n language?: string;\r\n}\r\n\r\nexport enum TermsAndConditionsType {\r\n Default = 0,\r\n Update = 1,\r\n Translation = 2,\r\n Review = 3,\r\n MaintenanceRequest = 4\r\n}\r\n","import { RouteComponentProps } from '@reach/router';\r\nimport { Card, CardBody, CardHeader } from 'components/atoms/card';\r\nimport { H3, Paragraph } from 'components/atoms/text';\r\nimport { useHeader } from 'contexts/headerContext';\r\nimport Table from 'components/molecules/table';\r\nimport { Column } from 'react-table';\r\nimport React, { FC, useEffect, useState } from 'react';\r\nimport { SendTermsAndConditionsMailInputModel, TermsAndConditionsPlainModel } from 'hooks/termsAndConditions/types';\r\nimport useAllTermsAndConditions from 'hooks/termsAndConditions/useAllTermsAndConditions';\r\nimport { useSession } from 'contexts/sessionContext';\r\nimport useTermsAndConditions from 'hooks/termsAndConditions/useTermsAndConditions';\r\nimport { Form, Formik, FormikHelpers } from 'formik';\r\nimport { toast } from 'react-toastify';\r\nimport { toFormikErrors } from 'utils/errorhelper';\r\nimport useModal from 'hooks/modal';\r\nimport Modal from 'components/organisms/Modal';\r\nimport { FormGroup, FormikFormControl, FormikFormTextarea } from 'components/atoms/form';\r\nimport Group from 'components/molecules/Group';\r\nimport { Button } from 'components/atoms/button';\r\nimport Label from 'components/atoms/Label';\r\nimport { Right } from 'utils/constants';\r\nimport { ActivateModuleInputModel } from 'hooks/modules/types';\r\nimport useModules from 'hooks/modules/useModules';\r\nimport { Module } from 'utils/constants/moduleconstants';\r\nimport { format, parseISO } from 'date-fns';\r\n\r\ninterface TermsAndConditionsProps extends RouteComponentProps { }\r\n\r\nconst TermsAndConditionsMain: FC = () => {\r\n useHeader('Algemene Voorwaarden');\r\n\r\n const { session, hasRight } = useSession();\r\n const [hasRights, setHasRights] = useState(false);\r\n\r\n const { activateModule } = useModules();\r\n\r\n const activateModules = async (values: ActivateModuleInputModel, { setSubmitting, setErrors }: FormikHelpers) => {\r\n if (!values) {\r\n return;\r\n }\r\n\r\n const response = await activateModule(values);\r\n\r\n if (response.ok) {\r\n toast.success('Uw informatie aanvraag voor de module algemene voorwaarden is succesvol verstuurd');\r\n hide();\r\n } else if (response.errors) {\r\n toast.error('Niet alle velden zijn ingevuld');\r\n const errors = toFormikErrors(response.errors);\r\n setErrors(errors);\r\n } else {\r\n toast.error('Er ging iets fout bij het versturen van de aanvraag voor de module algemene voorwaarden');\r\n }\r\n\r\n setSubmitting(false);\r\n };\r\n\r\n const { data: termsAndConditions = [], isLoading: isLoadingTermsAndConditions } = useAllTermsAndConditions({ customerId: session?.customerId });\r\n const { getTermsAndConditionsFile, sendTermsAndConditionsMail } = useTermsAndConditions();\r\n\r\n const [termsToMail, setTermsToMail] = useState();\r\n const [fileToPrint, setFileToPrint] = useState();\r\n const printRef = React.createRef();\r\n\r\n useEffect(() => {\r\n setHasRights(hasRight(Right.GeneralConditions));\r\n }, [session]);\r\n\r\n const columns: Column[] = [\r\n {\r\n Header: 'Document',\r\n accessor: (tac) => tac.fileName\r\n },\r\n {\r\n Header: 'Datum',\r\n accessor: (tac) => parseISO(tac.date).getTime(),\r\n Cell: ({ value }: any) => format(value, 'dd-MM-yyyy')\r\n },\r\n {\r\n Header: 'Versie',\r\n accessor: (tac) => tac.version\r\n }\r\n ];\r\n\r\n const handleMail = async (values: SendTermsAndConditionsMailInputModel, { setErrors }: FormikHelpers) => {\r\n if (!termsToMail) {\r\n return;\r\n }\r\n\r\n const response = await sendTermsAndConditionsMail(termsToMail.id, values);\r\n\r\n if (response.ok) {\r\n toast.success('Algemene voorwaarden is succesvol verstuurd');\r\n closeMailModal();\r\n } else if (response.errors) {\r\n const errors = toFormikErrors(response.errors);\r\n setErrors(errors);\r\n } else {\r\n toast.error('Er ging iets fout bij het versturen van de algemene voorwaarden');\r\n }\r\n };\r\n\r\n const downloadFile = async (termsAndConditions: TermsAndConditionsPlainModel) => {\r\n\r\n const response = await getTermsAndConditionsFile(termsAndConditions.id);\r\n\r\n if (response.ok) {\r\n saveAs(await response.blob(), termsAndConditions.fileName);\r\n } else {\r\n toast.error('Er ging iets fout bij het ophalen van de algemene voorwaarden');\r\n }\r\n };\r\n\r\n const printFile = async (termsAndConditions: TermsAndConditionsPlainModel) => {\r\n\r\n const response = await getTermsAndConditionsFile(termsAndConditions.id);\r\n\r\n if (response.ok) {\r\n const url = window.URL.createObjectURL(await response.blob());\r\n setFileToPrint(url);\r\n } else {\r\n toast.error('Er ging iets fout bij het ophalen van de algemene voorwaarden');\r\n }\r\n };\r\n\r\n const initialValuesSendMail: SendTermsAndConditionsMailInputModel = {\r\n toName: '',\r\n toEmail: ''\r\n };\r\n\r\n const [showMailModal, hideMailModal] = useModal(\r\n ({ in: inProp, onExited }) => (\r\n \r\n initialValues={initialValuesSendMail} onSubmit={handleMail}>\r\n {({ isSubmitting, isValid }) => (\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 [termsToMail]\r\n );\r\n\r\n const openMailModal = (termsAndConditions: TermsAndConditionsPlainModel) => {\r\n setTermsToMail(termsAndConditions);\r\n showMailModal();\r\n };\r\n\r\n const closeMailModal = () => {\r\n setTermsToMail(undefined);\r\n hideMailModal();\r\n };\r\n\r\n const activateModuleInitialValues: ActivateModuleInputModel = {\r\n type: Module.TermsAndConditions,\r\n question: ''\r\n };\r\n\r\n const [show, hide] = useModal(\r\n ({ in: inProp, onExited }) => (\r\n \r\n initialValues={activateModuleInitialValues} onSubmit={activateModules}>\r\n {({ isSubmitting }) => (\r\n
\r\n Met onderstaande formulier vraagt u vrijblijvend informatie aan over algemene voorwaarden voor uw bedrijf. Geeft u bij het opmerkingenveld alvast een korte omschrijving van uw bedrijfsactiviteiten eventueel aangevuld met specifieke zaken die u wilt vastleggen of waar u tegenaan loopt.\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 return (\r\n <>\r\n {\r\n hasRights ? (\r\n <>\r\n \r\n \r\n

Uw algemene voorwaarden

\r\n \r\n In dit onderdeel van mijnjuresta.nl kunt u uw eigen algemene voorwaarden inzien. Ook kunt u uw algemene voorwaarden downloaden of direct per mail doorsturen naar een (mogelijke) opdrachtgever. Wij adviseren u de PDF-versie te versturen aan een (mogelijke) opdrachtgever, deze versie is dan niet te bewerken door de ontvanger. Daarmee kunnen er geen aanpassingen worden gedaan in het document en voorkomt u discussies achteraf.\r\n \r\n
\r\n
\r\n \r\n \r\n

Documenten

\r\n \r\n data={termsAndConditions}\r\n noDataMessage=\"Geen documenten beschikbaar\"\r\n columns={columns}\r\n isLoading={isLoadingTermsAndConditions}\r\n actions={[\r\n {\r\n icon: 'download',\r\n onClick: (item) => downloadFile(item),\r\n title: 'Download document'\r\n },\r\n {\r\n icon: 'print',\r\n onClick: (item) => printFile(item),\r\n title: 'Print document'\r\n },\r\n {\r\n icon: 'mail',\r\n onClick: (item) => openMailModal(item),\r\n title: 'Mail document'\r\n }\r\n ]}\r\n />\r\n
\r\n
\r\n\r\n {fileToPrint && }\r\n \r\n ) : (\r\n \r\n \r\n \r\n

Uw Algemene Voorwaarden

\r\n \r\n
\r\n \r\n In dit onderdeel van mijnjuresta.nl kunt u uw eigen algemene voorwaarden inzien wanneer deze zijn vervaardigd door Juresta. Geen algemene voorwaarden? Vraag vrijblijvend advies aan voor de mogelijkheden voor uw bedrijf.\r\n \r\n
\r\n
\r\n )\r\n }\r\n \r\n );\r\n};\r\n\r\nexport default TermsAndConditionsMain;\r\n","import { RouteComponentProps } from '@reach/router';\r\nimport { Card, CardBody } from 'components/atoms/card';\r\nimport { H3, Paragraph } from 'components/atoms/text';\r\nimport { useHeader } from 'contexts/headerContext';\r\nimport { SendTermsAndConditionsTaskMailInputModel, TermsAndConditionsType } from 'hooks/termsAndConditions/types';\r\nimport useTermsAndConditions from 'hooks/termsAndConditions/useTermsAndConditions';\r\nimport { FormGroup, FormikFormFile, FormikFormTextarea } from 'components/atoms/form';\r\nimport { Form, Formik, FormikHelpers } from 'formik';\r\nimport { toFormikErrors } from 'utils/errorhelper';\r\nimport { toast } from 'react-toastify';\r\nimport { Button } from 'components/atoms/button';\r\nimport React, { FC } from 'react';\r\n\r\ninterface ReviewProps extends RouteComponentProps { }\r\n\r\nconst initialValues: SendTermsAndConditionsTaskMailInputModel = {\r\n file: undefined,\r\n comments: '',\r\n type: TermsAndConditionsType.Review\r\n};\r\n\r\nconst Review: FC = () => {\r\n useHeader('Algemene Voorwaarden');\r\n\r\n const { sendTermsAndConditionsTaskMail } = useTermsAndConditions();\r\n\r\n const handleMail = async (values: SendTermsAndConditionsTaskMailInputModel, { setErrors, resetForm }: FormikHelpers) => {\r\n const response = await sendTermsAndConditionsTaskMail(values);\r\n\r\n if (response.ok) {\r\n toast.success('Uw aanvraag voor toetsing is succesvol verstuurd');\r\n resetForm();\r\n } else if (response.errors) {\r\n const errors = toFormikErrors(response.errors);\r\n setErrors(errors);\r\n } else {\r\n toast.error('Er ging iets fout bij het versturen van de toetsings-aanvraag');\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n

Toetsing

\r\n \r\n \r\n \r\n initialValues={initialValues} onSubmit={handleMail}>\r\n {({ isSubmitting }) => (\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 Review;\r\n","import { LegalForm } from 'utils/constants/legalformconstants';\r\nimport { PaymentMethod } from 'utils/constants/paymentmethodconstants';\r\nimport { Gender } from 'utils/constants/personconstants';\r\n\r\nexport interface UserInvitationModel {\r\n id: string;\r\n email: string;\r\n}\r\n\r\nexport interface InviteCustomerInputModel {\r\n kvkNumber: string;\r\n gender: Gender | null;\r\n name: string;\r\n relationNumber?: string;\r\n legalForm?: LegalForm;\r\n emailInvoice?: string;\r\n addressVisit: string;\r\n postalCodeVisit: string;\r\n cityVisit: string;\r\n isMailAddressDifferent: boolean;\r\n addressMail: string;\r\n postalCodeMail: string;\r\n cityMail: string;\r\n initials: string;\r\n firstName: string;\r\n insertion?: string;\r\n lastName: string;\r\n email: string;\r\n phoneNumber: string;\r\n mobileNumber: string;\r\n function: string;\r\n bankAccount: string;\r\n paymentMethod: PaymentMethod | null;\r\n hasModuleCollection: boolean;\r\n hasModuleCollectionAbroad: boolean;\r\n hasModuleLegalAid: boolean;\r\n hasModuleGeneralConditions: boolean;\r\n website?: string;\r\n}\r\n\r\nexport interface InviteAdminInputModel {\r\n firstName: string;\r\n insertion?: string;\r\n lastName: string;\r\n email: string;\r\n type: AdminType;\r\n}\r\n\r\nexport enum AdminType {\r\n Admin = 0,\r\n Sales = 1\r\n}\r\n\r\nexport interface CompleteRegistrationInputModel {\r\n code: string;\r\n email: string;\r\n password: string;\r\n passwordConfirm: string;\r\n}\r\n","import { RouteComponentProps } from '@reach/router';\r\nimport { Card, CardBody } from 'components/atoms/card';\r\nimport { H3, Paragraph } from 'components/atoms/text';\r\nimport { useHeader } from 'contexts/headerContext';\r\nimport { SendTermsAndConditionsTaskMailInputModel, TermsAndConditionsType } from 'hooks/termsAndConditions/types';\r\nimport useTermsAndConditions from 'hooks/termsAndConditions/useTermsAndConditions';\r\nimport { FormGroup, FormikFormFile, FormikFormTextarea, FormikFormControl } from 'components/atoms/form';\r\nimport { Form, Formik, FormikHelpers } from 'formik';\r\nimport { toFormikErrors } from 'utils/errorhelper';\r\nimport { toast } from 'react-toastify';\r\nimport { Button } from 'components/atoms/button';\r\nimport React, { FC } from 'react';\r\n\r\ninterface TranslationProps extends RouteComponentProps { }\r\n\r\nconst initialValues: SendTermsAndConditionsTaskMailInputModel = {\r\n file: undefined,\r\n comments: '',\r\n type: TermsAndConditionsType.Translation,\r\n language: ''\r\n};\r\n\r\nconst Translation: FC = () => {\r\n useHeader('Algemene Voorwaarden');\r\n\r\n const { sendTermsAndConditionsTaskMail } = useTermsAndConditions();\r\n\r\n\r\n const handleMail = async (values: SendTermsAndConditionsTaskMailInputModel, { setErrors, resetForm }: FormikHelpers) => {\r\n const response = await sendTermsAndConditionsTaskMail(values);\r\n\r\n if (response.ok) {\r\n toast.success('Uw aanvraag voor vertaling is succesvol verstuurd');\r\n resetForm();\r\n } else if (response.errors) {\r\n const errors = toFormikErrors(response.errors);\r\n setErrors(errors);\r\n } else {\r\n toast.error('Er ging iets fout bij het versturen van de vertaal-aanvraag');\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n \r\n \r\n

Vertalen algemene voorwaarden

\r\n \r\n Wanneer u zakendoet in het buitenland of anderstalige opdrachtgevers heeft, is een vertaling van uw algemene voorwaarden aan te bevelen. Met een vertaling van uw algemene voorwaarden sluit u het risico van onduidelijkheden door een taalbarrière zoveel mogelijk uit.\r\n \r\n \r\n Interesse in een vertaling (of vertalingen) van uw algemene voorwaarden? Wij sturen u graag vrijblijvend een prijsopgave.\r\n \r\n
\r\n
\r\n \r\n \r\n initialValues={initialValues} onSubmit={handleMail}>\r\n {({ isSubmitting }) => (\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 Translation;\r\n","import { RouteComponentProps } from '@reach/router';\r\nimport { Card, CardBody } from 'components/atoms/card';\r\nimport { H3, Paragraph } from 'components/atoms/text';\r\nimport { useHeader } from 'contexts/headerContext';\r\nimport { SendTermsAndConditionsTaskMailInputModel, TermsAndConditionsType } from 'hooks/termsAndConditions/types';\r\nimport useTermsAndConditions from 'hooks/termsAndConditions/useTermsAndConditions';\r\nimport { FormGroup, FormikFormFile, FormikFormTextarea } from 'components/atoms/form';\r\nimport { Form, Formik, FormikHelpers } from 'formik';\r\nimport { toFormikErrors } from 'utils/errorhelper';\r\nimport { toast } from 'react-toastify';\r\nimport { Button } from 'components/atoms/button';\r\nimport React, { FC } from 'react';\r\n\r\ninterface ReviewProps extends RouteComponentProps { }\r\n\r\nconst initialValues: SendTermsAndConditionsTaskMailInputModel = {\r\n file: undefined,\r\n comments: '',\r\n type: TermsAndConditionsType.Update\r\n};\r\n\r\nconst Update: FC = () => {\r\n useHeader('Algemene Voorwaarden');\r\n\r\n const { sendTermsAndConditionsTaskMail } = useTermsAndConditions();\r\n\r\n const handleMail = async (values: SendTermsAndConditionsTaskMailInputModel, { setErrors, resetForm }: FormikHelpers) => {\r\n const response = await sendTermsAndConditionsTaskMail(values);\r\n\r\n if (response.ok) {\r\n toast.success('Uw aanvraag voor het updaten van de Algemene Voorwaarden is succesvol verstuurd');\r\n resetForm();\r\n } else if (response.errors) {\r\n const errors = toFormikErrors(response.errors);\r\n setErrors(errors);\r\n } else {\r\n toast.error('Er ging iets fout bij het versturen van de update-aanvraag');\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n \r\n \r\n

Update algemene voorwaarden

\r\n \r\n Door bijvoorbeeld wijziging in wet- en regelgeving of wijzigingen in uw bedrijfsactiviteiten kunnen uw voorwaarden verouderen of niet meer voldoende passend zijn. Heeft u een onderhoudscontract algemene voorwaarden? Dat controleren wij uw voorwaarden periodiek en passen aan wanneer nodig.\r\n \r\n \r\n Heeft u twijfels over de actualiteit van uw algemene voorwaarden? Of vraagt u zich af of uw voorwaarden nog wel voldoende passend zijn door wijzigingen in uw bedrijfsactiviteiten? Vul onderstaand formulier in en wij informeren u graag over de actualiteit van uw algemene voorwaarden. Ook wanneer uw voorwaarden niet door Juresta werden vervaardigd kunt u onderstaand formulier invullen.\r\n \r\n
\r\n
\r\n \r\n \r\n initialValues={initialValues} onSubmit={handleMail}>\r\n {({ isSubmitting }) => (\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 Update;\r\n","import { RouteComponentProps } from '@reach/router';\r\nimport { Card, CardBody, CardHeader } from 'components/atoms/card';\r\nimport { H3, Paragraph } from 'components/atoms/text';\r\nimport { useHeader } from 'contexts/headerContext';\r\nimport { SendTermsAndConditionsTaskMailInputModel, TermsAndConditionsType } from 'hooks/termsAndConditions/types';\r\nimport useTermsAndConditions from 'hooks/termsAndConditions/useTermsAndConditions';\r\nimport { Form, Formik, FormikHelpers } from 'formik';\r\nimport { toFormikErrors } from 'utils/errorhelper';\r\nimport useModal from 'hooks/modal';\r\nimport Modal from 'components/organisms/Modal';\r\nimport Group from 'components/molecules/Group';\r\nimport { toast } from 'react-toastify';\r\nimport { Button } from 'components/atoms/button';\r\nimport Table from 'components/molecules/table';\r\nimport { Column } from 'react-table';\r\nimport React, { FC, useEffect, useState } from 'react';\r\nimport { MaintenanceContractPlainModel, SendMaintenanceContractMailInputModel } from 'hooks/maintenancecontract/types';\r\nimport useMaintenanceContract from 'hooks/maintenancecontract';\r\nimport { Right } from 'utils/constants';\r\nimport { useSession } from 'contexts/sessionContext';\r\nimport { Loading } from 'components/atoms/button/Button/styles';\r\nimport { FormGroup, FormikFormControl, FormikFormTextarea } from 'components/atoms/form';\r\nimport Label from 'components/atoms/Label';\r\nimport { Module } from 'utils/constants/moduleconstants';\r\nimport useModules from 'hooks/modules/useModules';\r\nimport { ActivateModuleInputModel } from 'hooks/modules/types';\r\nimport { format, parseISO } from 'date-fns';\r\n\r\ninterface MaintenanceProps extends RouteComponentProps { }\r\n\r\nconst initialValues: SendTermsAndConditionsTaskMailInputModel = {\r\n file: undefined,\r\n comments: '',\r\n type: TermsAndConditionsType.MaintenanceRequest\r\n};\r\n\r\nconst initialValuesSendMail: SendMaintenanceContractMailInputModel = {\r\n toEmail: ''\r\n};\r\n\r\nconst MaintenanceContracts: FC = () => {\r\n useHeader('Algemene Voorwaarden');\r\n\r\n const columns: Column[] = [\r\n {\r\n Header: 'Document',\r\n accessor: (tac) => tac.fileName\r\n },\r\n {\r\n Header: 'Datum',\r\n accessor: (tac) => parseISO(tac.date).getTime(),\r\n Cell: ({ value }: any) => format(value, 'dd-MM-yyyy')\r\n },\r\n {\r\n Header: 'Versie',\r\n accessor: (tac) => tac.version\r\n }\r\n ];\r\n\r\n const [hasRights, setHasRights] = useState(false);\r\n const { session, hasRight } = useSession();\r\n const { sendTermsAndConditionsTaskMail } = useTermsAndConditions();\r\n const { useAllMaintenanceContracts, sendMaintenanceContractMail, getMaintenanceContractFile } = useMaintenanceContract();\r\n const { data: maintenanceContracts = [], isLoading: isLoadingMaintenanceContracts } = useAllMaintenanceContracts({ customerId: session?.customerId });\r\n\r\n const [maintenanceContractToMail, setMaintenanceContractToMail] = useState();\r\n const [fileToPrint, setFileToPrint] = useState();\r\n const printRef = React.createRef();\r\n\r\n const { activateModule } = useModules();\r\n\r\n const activateModules = async (values: ActivateModuleInputModel, { setSubmitting, setErrors }: FormikHelpers) => {\r\n if (!values) {\r\n return;\r\n }\r\n\r\n const response = await activateModule(values);\r\n\r\n if (response.ok) {\r\n toast.success('Uw informatie aanvraag voor de module algemene voorwaarden is succesvol verstuurd');\r\n hide();\r\n } else if (response.errors) {\r\n toast.error('Niet alle velden zijn ingevuld');\r\n const errors = toFormikErrors(response.errors);\r\n setErrors(errors);\r\n } else {\r\n toast.error('Er ging iets fout bij het versturen van de aanvraag voor de module algemene voorwaarden');\r\n }\r\n\r\n setSubmitting(false);\r\n };\r\n useEffect(() => {\r\n setHasRights(hasRight(Right.GeneralConditions));\r\n }, [session]);\r\n const handleTaskMail = async (values: SendTermsAndConditionsTaskMailInputModel, { setErrors, resetForm }: FormikHelpers) => {\r\n const response = await sendTermsAndConditionsTaskMail(values);\r\n\r\n if (response.ok) {\r\n toast.success('Uw aanvraag tot onderhoud is succesvol gestuurd. Wij nemen per ommegaande contact met u op.');\r\n hideTaskMailModal();\r\n resetForm();\r\n } else if (response.errors) {\r\n const errors = toFormikErrors(response.errors);\r\n setErrors(errors);\r\n } else {\r\n toast.error('Er ging iets fout bij het versturen van het onderhouds-verzoek.');\r\n }\r\n };\r\n\r\n const handleMail = async (values: SendMaintenanceContractMailInputModel, { setErrors }: FormikHelpers) => {\r\n if (!maintenanceContractToMail) {\r\n return;\r\n }\r\n\r\n const response = await sendMaintenanceContractMail(maintenanceContractToMail.id, values);\r\n\r\n if (response.ok) {\r\n toast.success('Onderhoudscontract is succesvol verstuurd');\r\n closeTaskMailModal();\r\n } else if (response.errors) {\r\n const errors = toFormikErrors(response.errors);\r\n setErrors(errors);\r\n } else {\r\n toast.error('Er ging iets fout bij het versturen van het onderhoudscontract');\r\n }\r\n };\r\n\r\n const downloadFile = async (maintenanceContractAndConditions: MaintenanceContractPlainModel) => {\r\n\r\n const response = await getMaintenanceContractFile(maintenanceContractAndConditions.id);\r\n\r\n if (response.ok) {\r\n saveAs(await response.blob(), maintenanceContractAndConditions.fileName);\r\n } else {\r\n toast.error('Er ging iets fout bij het ophalen van het onderhoudscontract');\r\n }\r\n };\r\n\r\n const printFile = async (maintenanceContractAndConditions: MaintenanceContractPlainModel) => {\r\n\r\n const response = await getMaintenanceContractFile(maintenanceContractAndConditions.id);\r\n\r\n if (response.ok) {\r\n const url = window.URL.createObjectURL(await response.blob());\r\n setFileToPrint(url);\r\n } else {\r\n toast.error('Er ging iets fout bij het ophalen van het onderhoudscontract');\r\n }\r\n };\r\n\r\n const [showTaskMailModal, hideTaskMailModal] = useModal(\r\n ({ in: inProp, onExited }) => (\r\n \r\n \r\n Informeer vrijblijvend naar de mogelijkheden voor een onderhoudscontract voor uw algemene voorwaarden.\r\n
\r\n
\r\n\r\n initialValues={initialValues} onSubmit={handleTaskMail}>\r\n {({ isSubmitting, isValid }) => (\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n )}\r\n \r\n
\r\n ),\r\n [initialValues]\r\n );\r\n\r\n const openTaskMailModal = () => {\r\n showTaskMailModal();\r\n };\r\n\r\n const closeTaskMailModal = () => {\r\n hideTaskMailModal();\r\n };\r\n\r\n const [showMailModal, hideMailModal] = useModal(\r\n ({ in: inProp, onExited }) => (\r\n \r\n initialValues={initialValuesSendMail} onSubmit={handleMail}>\r\n {({ isSubmitting, isValid }) => (\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 [maintenanceContractToMail]\r\n );\r\n\r\n const openMailModal = (maintenanceContract: MaintenanceContractPlainModel) => {\r\n setMaintenanceContractToMail(maintenanceContract);\r\n showMailModal();\r\n };\r\n\r\n const closeMailModal = () => {\r\n setMaintenanceContractToMail(undefined);\r\n hideMailModal();\r\n };\r\n\r\n const activateModuleInitialValues: ActivateModuleInputModel = {\r\n type: Module.TermsAndConditions,\r\n question: ''\r\n };\r\n\r\n const [show, hide] = useModal(\r\n ({ in: inProp, onExited }) => (\r\n \r\n initialValues={activateModuleInitialValues} onSubmit={activateModules}>\r\n {({ isSubmitting }) => (\r\n
\r\n Met onderstaande formulier vraagt u vrijblijvend informatie aan over onderhoudscontract (onderdeel van de algemene voorwaarden module) voor uw bedrijf. Geeft u bij het opmerkingenveld alvast een korte omschrijving van uw bedrijfsactiviteiten eventueel aangevuld met specifieke zaken die u wilt vastleggen of waar u tegenaan loopt.\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 // If no MaintenanceContracts\r\n const NoContracts = () => {\r\n return (\r\n \r\n \r\n

Onderhoudscontracten

\r\n \r\n Met een onderhoudscontract algemene voorwaarden bent u verzekerd van algemene voorwaarden. U maakt nog geen gebruik van het onderhoudscontract algemene voorwaarden. Vraag vrijblijvend informatie aan over de mogelijkheden, wij informeren u graag.\r\n \r\n \r\n
\r\n
\r\n );\r\n };\r\n\r\n return !hasRights ? (\r\n <>\r\n \r\n \r\n \r\n

Onderhoudscontract algemene voorwaarden

\r\n \r\n
\r\n \r\n Met een onderhoudscontract algemene voorwaarden bent u verzekerd van actuele voorwaarden die aansluiten bij uw bedrijfsactiviteiten. Heeft u nog geen onderhoudscontract algemene voorwaarden?\r\n \r\n \r\n Wij informeren u graag over de mogelijkheden voor uw voorwaarden.\r\n \r\n
\r\n
\r\n \r\n ) : (\r\n isLoadingMaintenanceContracts\r\n ? \r\n : maintenanceContracts.length > 0\r\n ? <>\r\n \r\n \r\n

Onderhoudscontracten

\r\n \r\n Met een onderhoudscontract algemene voorwaarden bent u verzekerd van actuele voorwaarden die aansluiten bij uw bedrijfsactiviteiten. Hieronder vindt u een kopie van uw onderhoudscontract.\r\n \r\n
\r\n \r\n

Documenten

\r\n \r\n data={maintenanceContracts}\r\n noDataMessage=\"Geen documenten beschikbaar\"\r\n columns={columns}\r\n isLoading={isLoadingMaintenanceContracts}\r\n actions={[\r\n {\r\n icon: 'download',\r\n onClick: (item) => downloadFile(item),\r\n title: 'Download document'\r\n },\r\n {\r\n icon: 'print',\r\n onClick: (item) => printFile(item),\r\n title: 'Print document'\r\n },\r\n {\r\n icon: 'mail',\r\n onClick: (item) => openMailModal(item),\r\n title: 'Mail document'\r\n }\r\n ]}\r\n />\r\n
\r\n
\r\n\r\n {fileToPrint && }\r\n \r\n : \r\n );\r\n};\r\n\r\nexport default MaintenanceContracts;\r\n","import { FC } from 'react';\r\nimport { RouteComponentProps } from '@reach/router';\r\nimport { useHeader } from 'contexts/headerContext';\r\n\r\ninterface EmptyProps extends RouteComponentProps {\r\n title: string;\r\n}\r\n\r\nconst Empty: FC = ({ title }) => {\r\n useHeader(title);\r\n\r\n return null;\r\n};\r\n\r\nexport default Empty;\r\n","import { useApi } from 'hooks/api';\r\nimport { AddTemplateLetterInputModel } from './types';\r\nimport { appendObject } from 'utils/objectAppender';\r\n\r\nconst useAddAdminTemplateLetter = () => {\r\n\r\n const { post } = useApi();\r\n\r\n const baseUrl = '/templateletter';\r\n\r\n const createTemplateLetter = async (values: AddTemplateLetterInputModel) => {\r\n\r\n const fd = new FormData();\r\n appendObject(values, fd);\r\n\r\n const response = await post(\r\n baseUrl, fd\r\n );\r\n\r\n if (!response.ok) {\r\n throw response;\r\n }\r\n\r\n return response;\r\n };\r\n\r\n return { createTemplateLetter };\r\n};\r\n\r\nexport default useAddAdminTemplateLetter;\r\n","import { EditTemplateLetterInputModel } from 'hooks/templateLetter/types';\r\nimport { useApi } from 'hooks/api';\r\nimport { appendObject } from 'utils/objectAppender';\r\n\r\nconst useEditAdminTemplateLetter = () => {\r\n\r\n const { put } = useApi();\r\n\r\n const baseUrl = '/templateletter';\r\n\r\n const editTemplateLetter = async (values: EditTemplateLetterInputModel) => {\r\n const fd = new FormData();\r\n appendObject(values, fd);\r\n\r\n const response = await put(\r\n baseUrl, fd\r\n );\r\n\r\n if (!response.ok) {\r\n throw response;\r\n }\r\n\r\n return response;\r\n };\r\n\r\n return { editTemplateLetter };\r\n};\r\n\r\nexport default useEditAdminTemplateLetter;\r\n","import { useQueryClient } from 'react-query';\r\nimport { templateLetterQueryKey } from './useAllTemplateLetters';\r\n\r\nconst usePurgeTemplateLetterCache = () => {\r\n\r\n const queryClient = useQueryClient();\r\n\r\n const purgeTemplateLetterCache = () => {\r\n queryClient.removeQueries(templateLetterQueryKey, { exact: true });\r\n };\r\n\r\n return { purgeTemplateLetterCache };\r\n};\r\n\r\nexport default usePurgeTemplateLetterCache;\r\n","import { navigate, RouteComponentProps } from '@reach/router';\r\nimport { Button } from 'components/atoms/button';\r\nimport { Card, CardBody } from 'components/atoms/card';\r\nimport { FormGroup, FormikFormFile, FormikFormSelect } from 'components/atoms/form';\r\nimport FormControlFormik from 'components/atoms/form/FormControl/formik';\r\nimport { Form, Formik, FormikHelpers } from 'formik';\r\nimport { AddTemplateLetterInputModel, EditTemplateLetterInputModel, TemplateLetterInputModel, TemplateLetterPlainModel } from 'hooks/templateLetter/types';\r\nimport useAddAdminTemplateLetter from 'hooks/templateLetter/useAddAdminTemplateLetter';\r\nimport useEditAdminTemplateLetter from 'hooks/templateLetter/useEditAdminTemplateLetter';\r\nimport React, { FC, useMemo } from 'react';\r\nimport Group from 'components/molecules/Group';\r\nimport { toast } from 'react-toastify';\r\nimport { toFormikErrors } from 'utils/errorhelper';\r\nimport { useHeader } from 'contexts/headerContext';\r\nimport { useLanguage } from 'hooks/language';\r\nimport { Language } from 'hooks/language/types';\r\nimport usePurgeTemplateLetterCache from 'hooks/templateLetter/usePurgeTemplateLetterCache';\r\n\r\nexport interface ManageTemplateProps extends RouteComponentProps<{\r\n location: {\r\n state: {\r\n item: TemplateLetterPlainModel\r\n }\r\n }\r\n}> {\r\n}\r\n\r\nconst ManageTemplate: FC = ({ location }: ManageTemplateProps) => {\r\n useHeader('Voorbeeldbrieven');\r\n\r\n const { createTemplateLetter } = useAddAdminTemplateLetter();\r\n const { editTemplateLetter } = useEditAdminTemplateLetter();\r\n const { purgeTemplateLetterCache } = usePurgeTemplateLetterCache();\r\n const { useAllLanguages } = useLanguage();\r\n const { data: languages = [] } = useAllLanguages();\r\n\r\n const languageOptions = useMemo(() => languages.map(({ language, name }) => ({ label: name, value: language })), [languages]);\r\n\r\n const initialValues: TemplateLetterInputModel = {\r\n id: location?.state?.item ? location.state.item.id : '',\r\n name: location?.state?.item ? location.state.item.name : '',\r\n file: null,\r\n language: location?.state?.item ? location.state.item.language : Language.Nederlands,\r\n };\r\n\r\n const handleSubmit = (values: TemplateLetterInputModel | EditTemplateLetterInputModel, { setErrors, setSubmitting }: FormikHelpers) => {\r\n setSubmitting(true);\r\n\r\n if (values.id === '') {\r\n createTemplateLetter(values)\r\n .then(() => {\r\n navigate('/admin/templateletters');\r\n toast.success(`'${values.name}' succesvol opgeslagen`);\r\n }).catch((error) => {\r\n if (error.errors) {\r\n const errors = toFormikErrors(error.errors);\r\n setErrors(errors);\r\n toast.error('Niet alle velden zijn ingevuld');\r\n } else {\r\n toast.error('Oeps, er ging iets fout tijdens het aanmaken van de voorbeeldbrief. Probeer het later opnieuw!');\r\n }\r\n });\r\n } else {\r\n editTemplateLetter(values)\r\n .then(() => {\r\n navigate('/admin/templateletters');\r\n toast.success(`'${values.name}' succesvol opgeslagen`);\r\n }).catch((error) => {\r\n if (error.errors) {\r\n const errors = toFormikErrors(error.errors);\r\n setErrors(errors);\r\n toast.error('Niet alle velden zijn ingevuld');\r\n } else {\r\n toast.error('Oeps, er ging iets fout tijdens het aanpassen van de voorbeeldbrief. Probeer het later opnieuw!');\r\n }\r\n });\r\n }\r\n\r\n setSubmitting(false);\r\n purgeTemplateLetterCache();\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n {({ isSubmitting }) => (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n initialValues.id !== '' &&\r\n Het huidige bestand wordt overschreven als u een nieuw bestand upload. Als u geen bestand upload blijft het orginele bestand behouden.\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 ManageTemplate;\r\n","import { useApi, CustomError } from 'hooks/api';\r\nimport { useQuery } from 'react-query';\r\nimport { LanguageModel } from './types';\r\n\r\nconst queryKey = 'languages.';\r\n\r\nexport const useLanguage = () => {\r\n const { get } = useApi();\r\n\r\n const fetchAllLanguages = async () => await get('/language');\r\n\r\n const useAllLanguages = () => {\r\n const allLanguagesQueryKey = `${queryKey}.all`;\r\n\r\n return useQuery(allLanguagesQueryKey, async () => {\r\n const response = await fetchAllLanguages();\r\n\r\n if (!response.ok && response.errors != null) {\r\n throw response.errors;\r\n }\r\n\r\n return response.data ?? [];\r\n });\r\n };\r\n\r\n return {\r\n useAllLanguages,\r\n };\r\n};","import React, { FC, useState } from 'react';\r\nimport { RouteComponentProps } from '@reach/router';\r\nimport { Card, CardBody } from 'components/atoms/card';\r\nimport Table from 'components/molecules/table';\r\nimport { Column } from 'react-table';\r\nimport { useHeader } from 'contexts/headerContext';\r\nimport useAgreements from 'hooks/agreement';\r\nimport { useSession } from 'contexts/sessionContext';\r\nimport { AgreementPlainModel, SendAgreementMailInputModel } from 'hooks/agreement/types';\r\nimport { toast } from 'react-toastify';\r\nimport { Form, Formik, FormikHelpers } from 'formik';\r\nimport { toFormikErrors } from 'utils/errorhelper';\r\nimport useModal from 'hooks/modal';\r\nimport Modal from 'components/organisms/Modal';\r\nimport { FormGroup, FormikFormControl } from 'components/atoms/form';\r\nimport Group from 'components/molecules/Group';\r\nimport { Button } from 'components/atoms/button';\r\nimport { H3, Paragraph } from 'components/atoms/text';\r\nimport { format, parseISO } from 'date-fns';\r\n\r\nconst columns: Column[] = [\r\n {\r\n Header: 'Naam',\r\n accessor: (agreement) => agreement.fileName\r\n },\r\n {\r\n Header: 'Datum',\r\n accessor: (agreement) => parseISO(agreement.date).getTime(),\r\n Cell: ({ value }: any) => format(value, 'dd-MM-yyyy')\r\n },\r\n {\r\n Header: 'Versie',\r\n accessor: (agreement) => agreement.version\r\n }\r\n];\r\n\r\nconst ClientAgreements: FC = () => {\r\n useHeader('Overeenkomsten');\r\n\r\n const { session } = useSession();\r\n\r\n const { useAllAgreements, getAgreementFile, sendAgreementMail } = useAgreements();\r\n const { data: agreements = [], isLoading: isLoadingAgreements } = useAllAgreements({ customerId: session?.customerId });\r\n\r\n\r\n const [agreementToMail, setAgreementToMail] = useState();\r\n const [fileToPrint, setFileToPrint] = useState();\r\n const printRef = React.createRef();\r\n\r\n const downloadFile = async (agreement: AgreementPlainModel) => {\r\n const response = await getAgreementFile(agreement.id);\r\n\r\n if (response.ok) {\r\n saveAs(await response.blob(), agreement.fileName);\r\n } else {\r\n toast.error('Er ging iets fout bij het ophalen van de overeenkomst');\r\n }\r\n };\r\n\r\n const printFile = async (agreement: AgreementPlainModel) => {\r\n const response = await getAgreementFile(agreement.id);\r\n\r\n if (response.ok) {\r\n const url = window.URL.createObjectURL(await response.blob());\r\n setFileToPrint(url);\r\n } else {\r\n toast.error('Er ging iets fout bij het ophalen van de overeenkomst');\r\n }\r\n };\r\n\r\n const handleMail = async (values: SendAgreementMailInputModel, { setErrors }: FormikHelpers) => {\r\n if (!agreementToMail) {\r\n return;\r\n }\r\n\r\n const response = await sendAgreementMail(agreementToMail.id, values);\r\n\r\n if (response.ok) {\r\n toast.success('Overeenkomst is succesvol verstuurd');\r\n closeMailModal();\r\n } else if (response.errors) {\r\n const errors = toFormikErrors(response.errors);\r\n setErrors(errors);\r\n } else {\r\n toast.error('Er ging iets fout bij het versturen van de overeenkomst');\r\n }\r\n };\r\n\r\n const initialValuesSendMail: SendAgreementMailInputModel = {\r\n toEmail: ''\r\n };\r\n\r\n const [showMailModal, hideMailModal] = useModal(\r\n ({ in: inProp, onExited }) => (\r\n \r\n initialValues={initialValuesSendMail} onSubmit={handleMail}>\r\n {({ isSubmitting, isValid }) => (\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 [agreementToMail]\r\n );\r\n\r\n const openMailModal = (agreement: AgreementPlainModel) => {\r\n setAgreementToMail(agreement);\r\n showMailModal();\r\n };\r\n\r\n const closeMailModal = () => {\r\n setAgreementToMail(undefined);\r\n hideMailModal();\r\n };\r\n\r\n // Render.\r\n return (\r\n <>\r\n \r\n \r\n

Uw overeenkomsten

\r\n In dit onderdeel kunt u de door Juresta vervaardigde overeenkomsten voor uw onderneming inzien. U kunt de overeenkomst downloaden of direct per mail doorsturen naar een mogelijke opdrachtgever. \r\n
\r\n
\r\n \r\n \r\n \r\n data={agreements}\r\n columns={columns}\r\n isLoading={isLoadingAgreements}\r\n noDataMessage=\"Geen overeenkomsten beschikbaar\"\r\n actions={[\r\n {\r\n icon: 'download',\r\n onClick: (item) => downloadFile(item),\r\n title: 'Download overeenkomst'\r\n },\r\n {\r\n icon: 'print',\r\n onClick: (item) => printFile(item),\r\n title: 'Print overeenkomst'\r\n },\r\n {\r\n icon: 'mail',\r\n onClick: (item) => openMailModal(item),\r\n title: 'Mail overeenkomst'\r\n }\r\n ]}\r\n />\r\n \r\n \r\n\r\n {\r\n fileToPrint &&\r\n \r\n }\r\n \r\n );\r\n};\r\n\r\nexport default ClientAgreements;\r\n","import React, { FC, useState } from 'react';\r\nimport { Link, navigate, RouteComponentProps } from '@reach/router';\r\nimport { useHeader } from 'contexts/headerContext';\r\nimport { Row, Col } from 'react-grid-system';\r\nimport { Card, CardActions, CardBody, CardContent, CardHeader } from 'components/atoms/card';\r\nimport { H3, Paragraph } from 'components/atoms/text';\r\nimport useAllCorrespondence from 'hooks/correspondence/useAllCorrespondence';\r\nimport { Button } from 'components/atoms/button';\r\nimport { orderBy } from 'lodash';\r\nimport { format, parseISO } from 'date-fns';\r\nimport { FormSelect } from 'components/atoms/form';\r\nimport { IOption } from 'components/atoms/form/FormSelect';\r\nimport { Options } from 'react-select';\r\nimport moment from 'moment';\r\nimport { useSession } from 'contexts/sessionContext';\r\nimport htmr from 'htmr';\r\n\r\ninterface MessagesProps extends RouteComponentProps {\r\n archive: boolean;\r\n}\r\n\r\nconst Messages: FC = ({ archive = false }) => {\r\n const { session } = useSession();\r\n useHeader(archive ? 'Berichten archief' : 'Berichten');\r\n\r\n const [filter, setFilter] = useState('');\r\n\r\n const { data: correspondence = [] } = useAllCorrespondence();\r\n const handleOnItemClick = (id: string) => {\r\n navigate(`/messages/${id}/detail`);\r\n };\r\n\r\n const handleOnCategoryChange = (option: IOption | Options | null) => {\r\n if (option == null || option instanceof Array) {\r\n return;\r\n }\r\n\r\n if (typeof option.value === 'number') {\r\n return;\r\n }\r\n\r\n setFilter(option.value as string);\r\n };\r\n\r\n const categoryOptions = [{ value: '', label: 'Alles' }, { value: 'messages', label: 'Berichten' }, { value: 'questionnaires', label: 'Vragenlijsten' }];\r\n\r\n const sortedCorrespondence = orderBy(\r\n correspondence,\r\n (cor) => parseISO(cor.created).getTime(),\r\n ['desc']\r\n );\r\n\r\n const messages = filter !== 'questionnaires' ? sortedCorrespondence.filter(item => !item.isQuestionnaire) : [];\r\n const questionnaires = filter !== 'messages' ? sortedCorrespondence.filter(item => item.isQuestionnaire) : [];\r\n const totalMessages = messages.concat(questionnaires);\r\n\r\n let sortedMessages = orderBy(totalMessages, (item) => parseISO(item.created).getTime(), ['desc']);\r\n\r\n if (!archive) {\r\n sortedMessages = sortedMessages.slice(0, 6);\r\n }\r\n\r\n function parseVariables(text: string, date: string) {\r\n // add name\r\n text = text.replace('{{name}}', session?.fullName ?? '');\r\n\r\n // add date\r\n text = text.replace('{{date}}', moment(date).format('DD-MM-YYYY'));\r\n\r\n // add mail\r\n text = text.replace('{{mail}}', session?.username ?? '');\r\n\r\n return text;\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n Filter op categorie\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {sortedMessages.length === 0 &&\r\n

\r\n Geen berichten gevonden\r\n

\r\n }\r\n {sortedMessages.map((item) => (\r\n \r\n \r\n \r\n \r\n

{item.subject}

\r\n {format(parseISO(item.created), 'dd-MM-yyyy')}\r\n
\r\n \r\n {htmr(parseVariables(item.content, item.created))}\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n ))}\r\n
\r\n {\r\n !archive && totalMessages.length > 6 &&\r\n \r\n \r\n Bekijk oudere berichten\r\n \r\n \r\n }\r\n \r\n );\r\n};\r\n\r\nexport default Messages;\r\n","import { useApi } from 'hooks/api';\r\nimport { CustomError } from 'hooks/api/types';\r\nimport { useQuery } from 'react-query';\r\nimport { appendObject } from 'utils/objectAppender';\r\nimport { buildUriWithParams } from 'utils/urihelper';\r\nimport { AddKnowledgeBaseCategoryInputModel, EditKnowledgeBaseCategoryInputModel, GetKnowledgeBaseCategoryInputModel, KnowledgeBaseCategoryModel } from './types';\r\n\r\nconst getKnowledgeBaseCategoriesQueryKey = 'knowledgebasecategory.get';\r\n\r\nconst useKnowledgeBaseCategories = () => {\r\n\r\n const { get, post, put, deleteCall } = useApi();\r\n\r\n const baseUrl = '/knowledgebasecategory';\r\n\r\n const getAllKnowledgeBaseCategory = async (params?: GetKnowledgeBaseCategoryInputModel) => {\r\n const url = buildUriWithParams(baseUrl, params);\r\n\r\n const response = await get(url);\r\n\r\n return response;\r\n };\r\n\r\n const useAllKnowledgeBaseCategories = (params?: GetKnowledgeBaseCategoryInputModel) => {\r\n const queryKey = [getKnowledgeBaseCategoriesQueryKey, params];\r\n\r\n return useQuery(queryKey, async () => {\r\n const response = await getAllKnowledgeBaseCategory(params);\r\n\r\n if (!response.ok && response.errors != null) {\r\n throw response.errors;\r\n }\r\n\r\n return response.data ?? [];\r\n });\r\n };\r\n\r\n const addKnowledgeBaseCategory = async (values: AddKnowledgeBaseCategoryInputModel) => {\r\n const fd = new FormData();\r\n\r\n appendObject(values, fd);\r\n\r\n const response = await post(baseUrl, fd);\r\n\r\n return response;\r\n };\r\n\r\n const editKnowledgeBaseCategory = async (values: EditKnowledgeBaseCategoryInputModel) => {\r\n const fd = new FormData();\r\n\r\n appendObject(values, fd);\r\n\r\n const response = await put(baseUrl, fd);\r\n\r\n return response;\r\n };\r\n\r\n const deleteKnowledgeBaseCategory = async (id: string) => {\r\n const response = await deleteCall(`${baseUrl}/${id}`);\r\n\r\n return response;\r\n };\r\n\r\n return {\r\n getAllKnowledgeBaseCategory,\r\n useAllKnowledgeBaseCategories,\r\n addKnowledgeBaseCategory,\r\n editKnowledgeBaseCategory,\r\n deleteKnowledgeBaseCategory\r\n };\r\n};\r\n\r\nexport default useKnowledgeBaseCategories;\r\n","import React, { FC, useState } from 'react';\r\nimport { navigate, RouteComponentProps } from '@reach/router';\r\nimport { useHeader } from 'contexts/headerContext';\r\nimport { Row, Col } from 'react-grid-system';\r\nimport { Card, CardActions, CardBody, CardContent, CardHeader } from 'components/atoms/card';\r\nimport { H3, H5, Paragraph } from 'components/atoms/text';\r\nimport useKnowledgeBaseItems from 'hooks/knowledgebaseitem';\r\nimport { Button } from 'components/atoms/button';\r\nimport { FormSelect } from 'components/atoms/form';\r\nimport useKnowledgeBaseCategories from 'hooks/knowledgebasecategory';\r\nimport { IOption } from 'components/atoms/form/FormSelect';\r\nimport { Options } from 'react-select';\r\nimport { orderBy } from 'lodash';\r\nimport { format, parseISO } from 'date-fns';\r\n\r\ninterface MessagesProps extends RouteComponentProps { }\r\n\r\nconst KnowledgeBase: FC = () => {\r\n useHeader('Kennisbank');\r\n\r\n const [category, setCategory] = useState();\r\n const [showMore, setShowMore] = useState(false);\r\n\r\n const { useAllKnowledgeBaseItems } = useKnowledgeBaseItems();\r\n const { data: knowledgeBaseItems = [] } = useAllKnowledgeBaseItems({\r\n categoryId: category\r\n });\r\n const { useAllKnowledgeBaseCategories } = useKnowledgeBaseCategories();\r\n const { data: knowledgeBaseCategories = [] } = useAllKnowledgeBaseCategories();\r\n\r\n const categoryOptions = [{ value: '', label: '-' }].concat(knowledgeBaseCategories.map((c) => ({\r\n value: c.id,\r\n label: c.name\r\n })));\r\n\r\n const handleOnItemClick = (id: string) => {\r\n navigate(`/knowledge-base/${id}/detail`);\r\n };\r\n\r\n const handleOnCategoryChange = (option: IOption | Options | null) => {\r\n if (option == null || option instanceof Array) {\r\n return;\r\n }\r\n\r\n if (typeof option.value === 'number') {\r\n return;\r\n }\r\n\r\n setCategory(option.value as string);\r\n setShowMore(false);\r\n };\r\n\r\n let sortedKnowledgeBaseItems = orderBy(knowledgeBaseItems, (item) => item.publicationDate, 'desc');\r\n\r\n if (!showMore) {\r\n sortedKnowledgeBaseItems = sortedKnowledgeBaseItems.slice(0, 6);\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n Filter op categorie\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {sortedKnowledgeBaseItems.length === 0 &&\r\n

\r\n Geen artikelen gevonden\r\n

\r\n }\r\n {sortedKnowledgeBaseItems.map((item) => (\r\n \r\n \r\n \r\n \r\n
{item.category?.name ?? 'Geen categorie'}
\r\n

{item.title}

\r\n {format(parseISO(item.publicationDate), 'dd-MM-yyyy')}\r\n
\r\n \r\n {item.description}\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n ))}\r\n
\r\n {\r\n !showMore && knowledgeBaseItems.length > 6 &&\r\n \r\n \r\n {/* eslint-disable-next-line jsx-a11y/anchor-is-valid*/}\r\n setShowMore(true)}>Bekijk oudere artikelen\r\n \r\n \r\n }\r\n \r\n );\r\n};\r\n\r\nexport default KnowledgeBase;\r\n","import React, { FC } from 'react';\r\nimport { RouteComponentProps } from '@reach/router';\r\nimport { Card, CardBody, CardHeader } from 'components/atoms/card';\r\nimport { H3, H5, Paragraph } from 'components/atoms/text';\r\nimport useKnowledgeBaseItems from 'hooks/knowledgebaseitem';\r\nimport { Loading } from 'components/atoms/button/Button/styles';\r\nimport { cdnFileUrl } from 'utils/cdnHelper';\r\nimport Margin from 'components/atoms/Margin';\r\nimport { useHeader } from 'contexts/headerContext';\r\nimport { format, parseISO } from 'date-fns';\r\nimport { Button } from 'components/atoms/button';\r\nimport htmr from 'htmr';\r\n\r\ninterface KnowledgeBaseDetailProps extends RouteComponentProps {\r\n id?: string;\r\n}\r\n\r\nconst KnowledgeBaseDetail: FC = ({ id = '' }) => {\r\n useHeader('Kennisbank');\r\n\r\n const { useAllKnowledgeBaseItems } = useKnowledgeBaseItems();\r\n const { data: knowledgeBaseItems = [] } = useAllKnowledgeBaseItems({\r\n id\r\n });\r\n\r\n const knowledgeBaseItem = knowledgeBaseItems[0];\r\n\r\n return knowledgeBaseItem == null ? : (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n
{knowledgeBaseItem.category?.name}
\r\n

{knowledgeBaseItem.title}

\r\n {format(parseISO(knowledgeBaseItem.publicationDate), 'dd-MM-yyyy')}\r\n
\r\n {\r\n knowledgeBaseItem.image != null &&\r\n \r\n \"\"\r\n \r\n }\r\n \r\n {htmr(knowledgeBaseItem.content)}\r\n \r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default KnowledgeBaseDetail;\r\n","import React, { FC, useState } from 'react';\r\nimport { navigate, RouteComponentProps } from '@reach/router';\r\nimport { useHeader } from 'contexts/headerContext';\r\nimport { Card, CardBody } from 'components/atoms/card';\r\nimport Table from 'components/molecules/table';\r\nimport { Column } from 'react-table';\r\nimport { KnowledgeBaseItemModel } from 'hooks/knowledgebaseitem/types';\r\nimport useKnowledgeBaseItems from 'hooks/knowledgebaseitem';\r\nimport useModal from 'hooks/modal';\r\nimport Modal from 'components/organisms/Modal';\r\nimport Group from 'components/molecules/Group';\r\nimport { Button } from 'components/atoms/button';\r\nimport { toast } from 'react-toastify';\r\nimport { format, parseISO } from 'date-fns';\r\n\r\ninterface KnowledgeBaseItemProps extends RouteComponentProps { }\r\n\r\nconst columns: Column[] = [\r\n {\r\n Header: 'Titel',\r\n accessor: (item) => item.title\r\n },\r\n {\r\n width: 70,\r\n Header: 'Categorie',\r\n accessor: (item) => item.category?.name ?? '-'\r\n },\r\n {\r\n width: 60,\r\n Header: 'Publicatie datum',\r\n accessor: (item) => parseISO(item.publicationDate).getTime(),\r\n Cell: ({ value }: any) => format(value, 'dd-MM-yyyy')\r\n },\r\n {\r\n width: 60,\r\n id: 'created',\r\n Header: 'Aangemaakt op',\r\n accessor: (item) => item.created != null ? parseISO(item.created).getTime() : null,\r\n Cell: ({ value }: any) => value != null ? format(value, 'dd-MM-yyyy') : '-'\r\n }\r\n];\r\n\r\nconst KnowledgeBaseItem: FC = () => {\r\n useHeader('Kennisbank');\r\n\r\n const { useAllKnowledgeBaseItems, deleteKnowledgeBaseItem } = useKnowledgeBaseItems();\r\n const { data: knowledgeBaseItem = [], isLoading: isLoadingKnowledgeBaseItems, refetch } = useAllKnowledgeBaseItems();\r\n\r\n const [knowledgeBaseItemToDelete, setKnowledgeBaseItemToDelete] = useState();\r\n const [isLoadingDelete, setIsLoadingDelete] = useState(false);\r\n\r\n const openDeleteModal = (item: KnowledgeBaseItemModel) => {\r\n setKnowledgeBaseItemToDelete(item);\r\n showDeleteModal();\r\n };\r\n\r\n const closeDeleteModal = () => {\r\n setKnowledgeBaseItemToDelete(undefined);\r\n hideDeleteModal();\r\n };\r\n\r\n const handleDelete = async () => {\r\n if (knowledgeBaseItemToDelete == null) {\r\n return;\r\n }\r\n\r\n setIsLoadingDelete(true);\r\n\r\n const response = await deleteKnowledgeBaseItem(knowledgeBaseItemToDelete.id);\r\n\r\n if (response.ok) {\r\n refetch();\r\n toast.success('Item succesvol verwijderd!');\r\n closeDeleteModal();\r\n } else {\r\n toast.error('Oeps, er ging iets fout tijdens het verwijderen van het item. Probeer het later opnieuw!');\r\n }\r\n\r\n setIsLoadingDelete(false);\r\n };\r\n\r\n const [showDeleteModal, hideDeleteModal] = useModal(\r\n ({ in: inProp, onExited }) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n ),\r\n [knowledgeBaseItemToDelete]\r\n );\r\n return (\r\n \r\n \r\n \r\n isLoading={isLoadingKnowledgeBaseItems}\r\n data={knowledgeBaseItem}\r\n noDataMessage=\"Kennisbank is leeg\"\r\n columns={columns}\r\n search\r\n onAddClick={() => navigate('/admin/knowledgebase/add')}\r\n onSettingsClick={() => navigate('/admin/knowledgebase/settings')}\r\n sortBy={[\r\n { id: 'created', desc: true }\r\n ]}\r\n actions={[\r\n {\r\n icon: 'edit',\r\n onClick: (item) => navigate('/admin/knowledgebase/add', { state: { item: item } })\r\n },\r\n {\r\n icon: 'delete',\r\n onClick: (item) => openDeleteModal(item)\r\n }\r\n ]}\r\n />\r\n \r\n \r\n );\r\n};\r\n\r\nexport default KnowledgeBaseItem;\r\n","import React, { FC, useState } from 'react';\r\nimport { RouteComponentProps } from '@reach/router';\r\nimport { useHeader } from 'contexts/headerContext';\r\nimport { Card, CardBody } from 'components/atoms/card';\r\nimport Table from 'components/molecules/table';\r\nimport { Column } from 'react-table';\r\nimport {\r\n AddKnowledgeBaseCategoryInputModel,\r\n EditKnowledgeBaseCategoryInputModel,\r\n KnowledgeBaseCategoryModel\r\n} from 'hooks/knowledgebasecategory/types';\r\nimport useKnowledgeBaseCategories from 'hooks/knowledgebasecategory';\r\nimport useModal from 'hooks/modal';\r\nimport Modal from 'components/organisms/Modal';\r\nimport Group from 'components/molecules/Group';\r\nimport { Button } from 'components/atoms/button';\r\nimport { toast } from 'react-toastify';\r\nimport Margin from 'components/atoms/Margin';\r\nimport { H3 } from 'components/atoms/text';\r\nimport { Form, Formik, FormikHelpers } from 'formik';\r\nimport { FormGroup } from 'components/atoms/form';\r\nimport FormControlFormik from 'components/atoms/form/FormControl/formik';\r\nimport { toFormikErrors } from 'utils/errorhelper';\r\n\r\ninterface KnowledgeBaseCategoryProps extends RouteComponentProps { }\r\n\r\nconst columns: Column[] = [\r\n {\r\n Header: 'Categorie',\r\n accessor: (category) => category.name\r\n }\r\n];\r\n\r\nconst AddKnowledgeBaseCategory: FC = (props) => {\r\n useHeader('Kennisbank instellingen');\r\n\r\n const { addKnowledgeBaseCategory, editKnowledgeBaseCategory, useAllKnowledgeBaseCategories, deleteKnowledgeBaseCategory } =\r\n useKnowledgeBaseCategories();\r\n const { data: knowledgeBaseCategories = [], isLoading: isLoadingKnowledgeBaseCategories, refetch } = useAllKnowledgeBaseCategories();\r\n\r\n const [knowledgeBaseCategoryToDelete, setKnowledgeBaseCategoryToDelete] = useState();\r\n const [knowledgeBaseCategoryToEdit, setKnowledgeBaseCategoryToEdit] = useState();\r\n const [isLoadingDelete, setIsLoadingDelete] = useState(false);\r\n\r\n const openAddModal = (category: KnowledgeBaseCategoryModel) => {\r\n showAddModal();\r\n };\r\n\r\n const closeAddModal = () => {\r\n setKnowledgeBaseCategoryToEdit(undefined);\r\n hideAddModal();\r\n };\r\n\r\n const openDeleteModal = (category: KnowledgeBaseCategoryModel) => {\r\n setKnowledgeBaseCategoryToDelete(category);\r\n showDeleteModal();\r\n };\r\n\r\n const closeDeleteModal = () => {\r\n setKnowledgeBaseCategoryToDelete(undefined);\r\n hideDeleteModal();\r\n };\r\n\r\n const handleDelete = async () => {\r\n if (knowledgeBaseCategoryToDelete == null) {\r\n return;\r\n }\r\n\r\n setIsLoadingDelete(true);\r\n\r\n const response = await deleteKnowledgeBaseCategory(knowledgeBaseCategoryToDelete.id);\r\n\r\n if (response.ok) {\r\n refetch();\r\n toast.success('Categorie succesvol verwijderd!');\r\n closeDeleteModal();\r\n } else if (response.errors) {\r\n toast.error(response.errors.map(e => e.message).join(', /n'));\r\n } else {\r\n toast.error('Oeps, er ging iets fout tijdens het verwijderen van deze categorie. Probeer het later opnieuw!');\r\n }\r\n\r\n setIsLoadingDelete(false);\r\n };\r\n const initialValues: EditKnowledgeBaseCategoryInputModel = {\r\n id: knowledgeBaseCategoryToEdit?.id ?? '',\r\n name: knowledgeBaseCategoryToEdit?.name ?? ''\r\n };\r\n\r\n const handleAdd = async (\r\n values: EditKnowledgeBaseCategoryInputModel,\r\n { setErrors, setSubmitting }: FormikHelpers\r\n ) => {\r\n if (values.id) {\r\n const response = await editKnowledgeBaseCategory(values);\r\n\r\n if (response.ok) {\r\n refetch();\r\n closeAddModal();\r\n toast.success(`'${values.name}' succesvol opgeslagen`);\r\n } else if (response.errors) {\r\n const errors = toFormikErrors(response.errors);\r\n setErrors(errors);\r\n toast.error('Niet alle velden zijn ingevuld');\r\n } else {\r\n toast.error('Oeps, er ging iets fout tijdens het aanpassen van deze categorie. Probeer het later opnieuw!');\r\n }\r\n } else {\r\n const response = await addKnowledgeBaseCategory(values);\r\n\r\n if (response.ok) {\r\n refetch();\r\n closeAddModal();\r\n toast.success(`'${values.name}' succesvol aangemaakt`);\r\n } else if (response.errors) {\r\n const errors = toFormikErrors(response.errors);\r\n setErrors(errors);\r\n toast.error('Niet alle velden zijn ingevuld');\r\n } else {\r\n toast.error('Oeps, er ging iets fout tijdens het aanmaken van deze categorie. Probeer het later opnieuw!');\r\n }\r\n }\r\n\r\n setSubmitting(false);\r\n };\r\n\r\n const [showDeleteModal, hideDeleteModal] = useModal(\r\n ({ in: inProp, onExited }) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n ),\r\n [knowledgeBaseCategoryToDelete]\r\n );\r\n const [showAddModal, hideAddModal] = useModal(\r\n ({ in: inProp, onExited }) => (\r\n \r\n \r\n {({ isSubmitting, isValid }) => (\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 [knowledgeBaseCategoryToEdit, initialValues]\r\n );\r\n return (\r\n \r\n \r\n \r\n

Categoriën

\r\n
\r\n \r\n isLoading={isLoadingKnowledgeBaseCategories}\r\n data={knowledgeBaseCategories}\r\n noDataMessage=\"Geen categoriën gevonden\"\r\n columns={columns}\r\n search\r\n onAddClick={() => showAddModal()}\r\n actions={[\r\n {\r\n icon: 'edit',\r\n onClick: (category) => {\r\n setKnowledgeBaseCategoryToEdit(category);\r\n openAddModal(category);\r\n }\r\n\r\n },\r\n {\r\n icon: 'delete',\r\n onClick: (category) => openDeleteModal(category)\r\n }\r\n ]}\r\n />\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default AddKnowledgeBaseCategory;\r\n","import { navigate, RouteComponentProps } from '@reach/router';\r\nimport { Button } from 'components/atoms/button';\r\nimport { Card, CardBody } from 'components/atoms/card';\r\nimport { FormGroup, FormikFormDate, FormikFormImage, FormikFormSelect, FormikFormTextarea } from 'components/atoms/form';\r\nimport FormControlFormik from 'components/atoms/form/FormControl/formik';\r\nimport Margin from 'components/atoms/Margin';\r\nimport { H3 } from 'components/atoms/text';\r\nimport Group from 'components/molecules/Group';\r\nimport { useHeader } from 'contexts/headerContext';\r\nimport { Form, Formik, FormikHelpers } from 'formik';\r\nimport useKnowledgeBaseItems from 'hooks/knowledgebaseitem';\r\nimport useKnowledgeBaseCategories from 'hooks/knowledgebasecategory';\r\nimport { EditKnowledgeBaseItemInputModel, KnowledgeBaseItemModel } from 'hooks/knowledgebaseitem/types';\r\nimport React, { FC } from 'react';\r\nimport { Col, Row } from 'react-grid-system';\r\nimport { toast } from 'react-toastify';\r\nimport { cdnFileUrl } from 'utils/cdnHelper';\r\nimport { toFormikErrors } from 'utils/errorhelper';\r\nimport { parseISO } from 'date-fns';\r\nimport WysiwygEditorFormik from 'components/atoms/form/WysiwygEditor/formik';\r\n\r\ninterface AddKnowledgeBaseItemRouteProps {\r\n location: {\r\n state: {\r\n item: KnowledgeBaseItemModel;\r\n };\r\n };\r\n}\r\n\r\nexport interface AddKnowledgeBaseItemProps extends RouteComponentProps { }\r\n\r\ninterface CategoriesProps {\r\n value: string;\r\n label: string;\r\n}\r\n\r\nconst AddKnowledgeBaseItem: FC = (props) => {\r\n const { location } = props;\r\n\r\n const knowledgeBaseItem = location?.state.item;\r\n\r\n const { useAllKnowledgeBaseCategories } = useKnowledgeBaseCategories();\r\n const { data: knowledgeBaseCategories = [] } = useAllKnowledgeBaseCategories();\r\n const categories: Array = knowledgeBaseCategories.map(\r\n (category): CategoriesProps => ({ value: category.id, label: category.name })\r\n );\r\n\r\n useHeader(knowledgeBaseItem != null ? 'Kennisbank item aanpassen' : 'Nieuw kennisbank item toevoegen');\r\n\r\n const { addKnowledgeBaseItem, editKnowledgeBaseItem } = useKnowledgeBaseItems();\r\n\r\n const initialValues: EditKnowledgeBaseItemInputModel = {\r\n id: knowledgeBaseItem?.id ?? '',\r\n title: knowledgeBaseItem?.title ?? '',\r\n description: knowledgeBaseItem?.description ?? '',\r\n content: knowledgeBaseItem?.content ?? '',\r\n categoryId: knowledgeBaseItem?.category?.id ?? '',\r\n image: knowledgeBaseItem?.image != null ? cdnFileUrl(knowledgeBaseItem?.image.hash) : undefined,\r\n publicationDate: knowledgeBaseItem?.publicationDate != null ? parseISO(knowledgeBaseItem?.publicationDate) : new Date()\r\n };\r\n\r\n const handleSubmit = async (\r\n values: EditKnowledgeBaseItemInputModel,\r\n { setErrors, setSubmitting }: FormikHelpers\r\n ) => {\r\n if (values.id) {\r\n const response = await editKnowledgeBaseItem(values);\r\n\r\n if (response.ok) {\r\n navigate('/admin/knowledgebase');\r\n toast.success(`'${values.title}' succesvol opgeslagen`);\r\n } else if (response.errors) {\r\n const errors = toFormikErrors(response.errors);\r\n setErrors(errors);\r\n toast.error('Niet alle velden zijn ingevuld');\r\n } else {\r\n toast.error('Oeps, er ging iets fout tijdens het aanpassen van het item. Probeer het later opnieuw!');\r\n }\r\n } else {\r\n const response = await addKnowledgeBaseItem(values);\r\n\r\n if (response.ok) {\r\n navigate('/admin/knowledgebase');\r\n toast.success(`'${values.title}' succesvol aangemaakt`);\r\n } else if (response.errors) {\r\n const errors = toFormikErrors(response.errors);\r\n setErrors(errors);\r\n toast.error('Niet alle velden zijn ingevuld');\r\n } else {\r\n toast.error('Oeps, er ging iets fout tijdens het aanmaken van het item. Probeer het later opnieuw!');\r\n }\r\n }\r\n\r\n setSubmitting(false);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n

{knowledgeBaseItem != null ? 'Kennisbank item aanpassen' : 'Nieuwe kennisbank item'}

\r\n
\r\n \r\n \r\n \r\n {({ isSubmitting, isValid }) => (\r\n
\r\n \r\n

Kennisbank item

\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 AddKnowledgeBaseItem;\r\n\r\n","import React, { FC, useState } from 'react';\r\nimport { navigate, RouteComponentProps } from '@reach/router';\r\nimport { useHeader } from 'contexts/headerContext';\r\nimport { Card, CardBody } from 'components/atoms/card';\r\nimport Table from 'components/molecules/table';\r\nimport { Column } from 'react-table';\r\nimport { NewsItemModel } from 'hooks/newsitem/types';\r\nimport useNewsItems from 'hooks/newsitem';\r\nimport useModal from 'hooks/modal';\r\nimport Modal from 'components/organisms/Modal';\r\nimport Group from 'components/molecules/Group';\r\nimport { Button } from 'components/atoms/button';\r\nimport { toast } from 'react-toastify';\r\nimport { format, parseISO } from 'date-fns';\r\n\r\ninterface NewsItemProps extends RouteComponentProps {\r\n}\r\n\r\n\r\nconst columns: Column[] = [\r\n {\r\n Header: 'Titel',\r\n accessor: (mail) => mail.title\r\n },\r\n {\r\n width: 60,\r\n Header: 'Publicatiedatum',\r\n accessor: (mail) => mail.publicationDate != null ? parseISO(mail.publicationDate).getTime() : null,\r\n Cell: ({ value }: any) => value != null ? format(value, 'dd-MM-yyyy') : 'niet gepubliceerd'\r\n },\r\n {\r\n width: 60,\r\n id: 'created',\r\n Header: 'Aangemaakt op',\r\n accessor: (mail) => mail.created != null ? parseISO(mail.created).getTime() : null,\r\n Cell: ({ value }: any) => value != null ? format(value, 'dd-MM-yyyy') : '-'\r\n }\r\n];\r\n\r\nconst NewsItem: FC = () => {\r\n useHeader('Nieuwsberichten');\r\n\r\n const { useAllNewsItems, deleteNewsItem } = useNewsItems();\r\n const { data: newsItem = [], isLoading: isLoadingNewsItems, refetch } = useAllNewsItems();\r\n\r\n const [newsItemToDelete, setNewsItemToDelete] = useState();\r\n const [isLoadingDelete, setIsLoadingDelete] = useState(false);\r\n\r\n const openDeleteModal = (item: NewsItemModel) => {\r\n setNewsItemToDelete(item);\r\n showDeleteModal();\r\n };\r\n\r\n const closeDeleteModal = () => {\r\n setNewsItemToDelete(undefined);\r\n hideDeleteModal();\r\n };\r\n\r\n const handleDelete = async () => {\r\n if (newsItemToDelete == null) {\r\n return;\r\n }\r\n\r\n setIsLoadingDelete(true);\r\n\r\n const response = await deleteNewsItem(newsItemToDelete.id);\r\n\r\n if (response.ok) {\r\n refetch();\r\n toast.success('Nieuwsbericht succesvol verwijderd!');\r\n closeDeleteModal();\r\n } else {\r\n toast.error('Oeps, er ging iets fout tijdens het verwijderen van het nieuwsbericht. Probeer het later opnieuw!');\r\n }\r\n\r\n setIsLoadingDelete(false);\r\n };\r\n\r\n const [showDeleteModal, hideDeleteModal] = useModal(\r\n ({ in: inProp, onExited }) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n ),\r\n [newsItemToDelete]\r\n );\r\n\r\n return (\r\n \r\n \r\n \r\n isLoading={isLoadingNewsItems}\r\n data={newsItem}\r\n noDataMessage=\"Geen nieuwsberichten gevonden\"\r\n columns={columns}\r\n search\r\n onAddClick={() => navigate('/admin/news/add')}\r\n sortBy={[\r\n { id: 'created', desc: true }\r\n ]}\r\n actions={[\r\n {\r\n icon: 'edit',\r\n onClick: (item) => navigate('/admin/news/add', { state: { item: item } })\r\n },\r\n {\r\n icon: 'delete',\r\n onClick: (item) => openDeleteModal(item)\r\n }\r\n ]}\r\n />\r\n \r\n \r\n );\r\n};\r\n\r\nexport default NewsItem;\r\n","import { navigate, RouteComponentProps } from '@reach/router';\r\nimport { Button } from 'components/atoms/button';\r\nimport { Card, CardBody } from 'components/atoms/card';\r\nimport { FormGroup, FormikFormDate, FormikFormImage, FormikFormTextarea } from 'components/atoms/form';\r\nimport FormControlFormik from 'components/atoms/form/FormControl/formik';\r\nimport WysiwygEditorFormik from 'components/atoms/form/WysiwygEditor/formik';\r\nimport Margin from 'components/atoms/Margin';\r\nimport { H3 } from 'components/atoms/text';\r\nimport Group from 'components/molecules/Group';\r\nimport { useHeader } from 'contexts/headerContext';\r\nimport { parseISO } from 'date-fns';\r\nimport { Form, Formik, FormikHelpers } from 'formik';\r\nimport useNewsItems from 'hooks/newsitem';\r\nimport { EditNewsItemInputModel, NewsItemModel } from 'hooks/newsitem/types';\r\nimport React, { FC } from 'react';\r\nimport { Col, Row } from 'react-grid-system';\r\nimport { toast } from 'react-toastify';\r\nimport { cdnFileUrl } from 'utils/cdnHelper';\r\nimport { toFormikErrors } from 'utils/errorhelper';\r\n\r\ninterface AddKNowledgeBaseItemRouteProps {\r\n location: {\r\n state: {\r\n item: NewsItemModel;\r\n };\r\n };\r\n}\r\n\r\nexport interface AddNewsItemProps extends RouteComponentProps {\r\n}\r\n\r\nconst AddNewsItem: FC = (props) => {\r\n\r\n const {\r\n location\r\n } = props;\r\n\r\n const newsItem = location?.state.item;\r\n\r\n useHeader(newsItem != null ? 'Nieuwsbericht aanpassen' : 'Nieuw nieuwsbericht toevoegen');\r\n\r\n const { addNewsItem, editNewsItem } = useNewsItems();\r\n\r\n const initialValues: EditNewsItemInputModel = {\r\n id: newsItem?.id ?? '',\r\n title: newsItem?.title ?? '',\r\n description: newsItem?.description ?? '',\r\n content: newsItem?.content ?? '',\r\n image: newsItem?.image != null ? cdnFileUrl(newsItem?.image.hash) : undefined,\r\n publicationDate: newsItem?.publicationDate != null ? parseISO(newsItem?.publicationDate) : new Date()\r\n };\r\n\r\n const handleSubmit = async (values: EditNewsItemInputModel, { setErrors, setSubmitting }: FormikHelpers) => {\r\n if (values.id) {\r\n const response = await editNewsItem(values);\r\n\r\n if (response.ok) {\r\n navigate('/admin/news');\r\n toast.success(`'${values.title}' succesvol opgeslagen`);\r\n } else if (response.errors) {\r\n const errors = toFormikErrors(response.errors);\r\n setErrors(errors);\r\n toast.error('Niet alle velden zijn ingevuld');\r\n } else {\r\n toast.error('Oeps, er ging iets fout tijdens het aanpassen van het nieuwsbericht. Probeer het later opnieuw!');\r\n }\r\n } else {\r\n const response = await addNewsItem(values);\r\n\r\n if (response.ok) {\r\n navigate('/admin/news');\r\n toast.success(`'${values.title}' succesvol aangemaakt`);\r\n } else if (response.errors) {\r\n const errors = toFormikErrors(response.errors);\r\n setErrors(errors);\r\n toast.error('Niet alle velden zijn ingevuld');\r\n } else {\r\n toast.error('Oeps, er ging iets fout tijdens het aanmaken van het nieuwsbericht. Probeer het later opnieuw!');\r\n }\r\n\r\n }\r\n\r\n setSubmitting(false);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n

{newsItem != null ? 'Nieuwsbericht aanpassen' : 'Nieuwe nieuwsbericht'}

\r\n

\r\n Voeg hier een nieuw Nieuws-item toe.\r\n

\r\n
\r\n \r\n \r\n \r\n {({ isSubmitting, isValid }) => (\r\n
\r\n \r\n

Nieuwsbericht

\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 AddNewsItem;\r\n","import React, { FC } from 'react';\r\nimport { Link, navigate, RouteComponentProps } from '@reach/router';\r\nimport { useHeader } from 'contexts/headerContext';\r\nimport { Row, Col } from 'react-grid-system';\r\nimport { Card, CardActions, CardBody, CardContent, CardHeader } from 'components/atoms/card';\r\nimport { H3, Paragraph } from 'components/atoms/text';\r\nimport useNewsItems from 'hooks/newsitem';\r\nimport { Button } from 'components/atoms/button';\r\nimport { orderBy } from 'lodash';\r\nimport { format, parseISO } from 'date-fns';\r\n\r\ninterface MessagesProps extends RouteComponentProps {\r\n archive: boolean;\r\n}\r\n\r\nconst NewsItem: FC = ({ archive }) => {\r\n useHeader(archive ? 'Nieuws archief' : 'Nieuws');\r\n\r\n const { useAllNewsItems } = useNewsItems();\r\n const { data: newsItems = [] } = useAllNewsItems();\r\n\r\n const handleOnItemClick = (id: string) => {\r\n navigate(`/news/${id}/detail`);\r\n };\r\n\r\n let sortedNewsItems = orderBy(newsItems, item => parseISO(item.publicationDate ?? new Date().toISOString()).getTime(), ['desc']);\r\n\r\n if (!archive) {\r\n sortedNewsItems = sortedNewsItems.slice(0, 6);\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n Op deze pagina informeren wij over actuele zaken op bijvoorbeeld financieel of juridisch vlak.\r\n \r\n \r\n \r\n \r\n {sortedNewsItems.length === 0 &&\r\n

\r\n Geen nieuws gevonden\r\n

\r\n }\r\n {sortedNewsItems.map((item) => (\r\n \r\n \r\n \r\n \r\n

{item.title}

\r\n {\r\n item.publicationDate &&\r\n {format(parseISO(item.publicationDate), 'dd-MM-yyyy')}\r\n }\r\n
\r\n \r\n {item.description}\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n ))}\r\n
\r\n {\r\n !archive && newsItems.length > 6 &&\r\n \r\n \r\n Bekijk oudere berichten\r\n \r\n \r\n }\r\n \r\n );\r\n};\r\n\r\nexport default NewsItem;\r\n","import { useApi } from 'hooks/api';\r\nimport { CustomError } from 'hooks/api/types';\r\nimport { useQuery } from 'react-query';\r\nimport { buildUriWithParams } from 'utils/urihelper';\r\nimport { GetUserInputModel, UserModel } from './types';\r\n\r\nconst getUsersQueryKey = 'user.get';\r\n\r\nconst useUsers = () => {\r\n const { get, deleteCall } = useApi();\r\n\r\n const baseUrl = '/user';\r\n\r\n const getAllUser = async (params?: GetUserInputModel) => {\r\n const url = buildUriWithParams(baseUrl, params);\r\n const response = await get(url);\r\n return response;\r\n };\r\n const useAllUsers = (params?: GetUserInputModel) => {\r\n const queryKey = [getUsersQueryKey, params];\r\n return useQuery(queryKey, async () => {\r\n const response = await getAllUser(params);\r\n if (!response.ok && response.errors != null) {\r\n throw response.errors;\r\n }\r\n return response.data || [];\r\n });\r\n };\r\n const deleteUser = async (id: string) => {\r\n const response = await deleteCall(`${baseUrl}/${id}`);\r\n return response;\r\n };\r\n\r\n return {\r\n getAllUser,\r\n useAllUsers,\r\n deleteUser\r\n };\r\n};\r\n\r\nexport default useUsers;\r\n","import React, { FC, useState } from 'react';\r\nimport { RouteComponentProps } from '@reach/router';\r\nimport { Card, CardBody } from 'components/atoms/card';\r\nimport Table from 'components/molecules/table';\r\nimport { useHeader } from 'contexts/headerContext';\r\nimport useUsers from 'hooks/user';\r\nimport { UserModel } from 'hooks/user/types';\r\nimport { Column } from 'react-table';\r\nimport { useModal } from 'react-modal-hook';\r\nimport Modal from 'components/organisms/Modal';\r\nimport { Form, Formik, FormikHelpers } from 'formik';\r\nimport { FormGroup, FormikFormSelect } from 'components/atoms/form';\r\nimport FormControlFormik from 'components/atoms/form/FormControl/formik';\r\nimport Margin from 'components/atoms/Margin';\r\nimport Group from 'components/molecules/Group';\r\nimport { Button } from 'components/atoms/button';\r\nimport { Col, Row } from 'react-grid-system';\r\nimport HeaderAction from 'components/atoms/HeaderAction';\r\nimport { toFormikErrors } from 'utils/errorhelper';\r\nimport { AdminType, InviteAdminInputModel } from 'hooks/userInvitation/types';\r\nimport useUserInvitation from 'hooks/userInvitation/useUserInvitation';\r\nimport { toast } from 'react-toastify';\r\nimport { format, parseISO } from 'date-fns';\r\nimport { useSession } from 'contexts/sessionContext';\r\n\r\ninterface UserProps extends RouteComponentProps { }\r\n\r\nconst columns: Column[] = [\r\n {\r\n Header: 'Gebruiker',\r\n accessor: (user) =>\r\n user.insertion !== '' ? `${user.firstName} ${user.insertion} ${user.lastName}` : `${user.firstName} ${user.lastName}`\r\n },\r\n {\r\n Header: 'E-mail',\r\n accessor: (user) => user.email\r\n },\r\n {\r\n Header: 'Registratie afgerond op',\r\n accessor: (user) => user.finishedRegistration != null ? parseISO(user.finishedRegistration).getTime() : null,\r\n Cell: ({ value }: any) => value != null ? format(value, 'dd-MM-yyyy') : '-'\r\n }\r\n];\r\n\r\nconst Users: FC = () => {\r\n useHeader('Gebruikers');\r\n\r\n const { useAllUsers, deleteUser } = useUsers();\r\n const { inviteAdmin, resendInvitation } = useUserInvitation();\r\n const { data: users = [], isLoading: isLoadingUsers, refetch } = useAllUsers({\r\n role: 'admin'\r\n });\r\n\r\n const [userToDelete, setUserToDelete] = useState();\r\n const [isLoadingDelete, setIsLoadingDelete] = useState(false);\r\n const { session } = useSession();\r\n\r\n const AddUser = async (values: InviteAdminInputModel, { setSubmitting, setErrors }: FormikHelpers) => {\r\n const response = await inviteAdmin(values);\r\n if (response.ok) {\r\n refetch();\r\n hide();\r\n } else if (response.errors) {\r\n const errors = toFormikErrors(response.errors);\r\n setErrors(errors);\r\n }\r\n setSubmitting(false);\r\n };\r\n\r\n const initialValues: InviteAdminInputModel = {\r\n firstName: '',\r\n insertion: '',\r\n lastName: '',\r\n email: '',\r\n type: AdminType.Admin\r\n };\r\n\r\n const [show, hide] = useModal(\r\n ({ in: inProp, onExited }) => (\r\n \r\n \r\n {({ isSubmitting, isValid }) => (\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 const openDeleteModal = (item: UserModel) => {\r\n setUserToDelete(item);\r\n showDeleteModal();\r\n };\r\n\r\n const closeDeleteModal = () => {\r\n setUserToDelete(undefined);\r\n hideDeleteModal();\r\n };\r\n\r\n const handleDelete = async () => {\r\n if (userToDelete == null) {\r\n return;\r\n }\r\n\r\n setIsLoadingDelete(true);\r\n\r\n const response = await deleteUser(userToDelete.id);\r\n\r\n if (response.ok) {\r\n refetch();\r\n toast.success('Gebruiker succesvol verwijderd!');\r\n closeDeleteModal();\r\n } else {\r\n toast.error('Oeps, er ging iets fout tijdens het verwijderen van de gebruiker. Probeer het later opnieuw!');\r\n }\r\n\r\n setIsLoadingDelete(false);\r\n };\r\n\r\n const handleResendInvitation = async (item: UserModel) => {\r\n const response = await resendInvitation(item.id);\r\n\r\n if (response.ok) {\r\n toast.success('De uitnodiging is opnieuw verzonden');\r\n } else {\r\n toast.error('Oeps, er ging iets fout gegaan.');\r\n }\r\n };\r\n\r\n const [showDeleteModal, hideDeleteModal] = useModal(\r\n ({ in: inProp, onExited }) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n ),\r\n [userToDelete]\r\n );\r\n\r\n return (\r\n \r\n \r\n \r\n isLoading={isLoadingUsers}\r\n data={users}\r\n noDataMessage=\"Geen gebruikers beschikbaar\"\r\n columns={columns}\r\n search\r\n onAddClick={show}\r\n actions={[\r\n {\r\n icon: 'mail',\r\n onClick: handleResendInvitation,\r\n title: 'Uitnodiging opnieuw versturen',\r\n active: (i) => i.finishedRegistration == null\r\n },\r\n {\r\n icon: 'delete',\r\n onClick: (item) => {\r\n openDeleteModal(item);\r\n },\r\n title: 'verwijderen',\r\n active: (i) => i.id !== session?.userId\r\n }\r\n ]}\r\n />\r\n \r\n \r\n );\r\n};\r\n\r\nexport default Users;\r\n","export interface AddAgreementInputModel {\r\n customerId?: string;\r\n date: Date;\r\n version: string;\r\n files?: File[];\r\n}\r\n\r\nexport interface AgreementPlainModel {\r\n id: string;\r\n customerRelationNumber: string;\r\n customerName: string;\r\n customerId: string;\r\n fileName: string;\r\n date: string;\r\n version: string;\r\n}\r\n\r\nexport interface GetAgreementInputModel {\r\n Id?: string;\r\n customerId?: string;\r\n}\r\n\r\nexport interface SendAgreementMailInputModel {\r\n toEmail?: string;\r\n}\r\n\r\nexport interface SendAgreementTaskMailInputModel {\r\n file?: File;\r\n comments?: string;\r\n type: AgreementType;\r\n language?: string;\r\n}\r\n\r\nexport enum AgreementType {\r\n Default = 0,\r\n Update = 1,\r\n Translation = 2,\r\n Review = 3,\r\n MaintenanceRequest = 4\r\n}\r\n","import React, { FC } from 'react';\r\nimport { RouteComponentProps } from '@reach/router';\r\nimport { Card, CardBody, CardHeader } from 'components/atoms/card';\r\nimport { useHeader } from 'contexts/headerContext';\r\nimport { H3, Paragraph } from 'components/atoms/text';\r\nimport Margin from 'components/atoms/Margin';\r\nimport { Button } from 'components/atoms/button';\r\nimport { saveAs } from 'file-saver';\r\n\r\nconst TacTools: FC = () => {\r\n useHeader('Algemene voorwaarden');\r\n\r\n const downloadFile = () => {\r\n saveAs('https://cdn.bluenotion.nl/28e55d339f287f756bf3203ee1d22b539343f1c8f90b69935617c1d10e2d2802.pdf', 'Handleiding_deponeren_en_toepasselijk_maken_van_voorwaarden.pdf');\r\n };\r\n\r\n // Render.\r\n return (\r\n \r\n \r\n \r\n

Handleiding

\r\n
\r\n \r\n Hieronder vindt u de handleiding voor het gebruik van uw algemene voorwaarden. Leest u deze goed door. In deze handleiding leest u ook meer over het toepasselijk maken van uw voorwaarden of het deponeren hiervan. Heeft u vragen? Neemt u dan contact op met onze afdeling Juridische zaken (juridischezaken@juresta.nl) of telefonisch via 055 -5383086.\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default TacTools;\r\n","import { RouteComponentProps } from '@reach/router';\r\nimport { Card, CardBody } from 'components/atoms/card';\r\nimport { H3, Paragraph } from 'components/atoms/text';\r\nimport { useHeader } from 'contexts/headerContext';\r\nimport { AgreementType, SendAgreementTaskMailInputModel } from 'hooks/agreement/types';\r\nimport useAgreements from 'hooks/agreement/';\r\nimport { FormGroup, FormikFormFile, FormikFormTextarea } from 'components/atoms/form';\r\nimport { Form, Formik, FormikHelpers } from 'formik';\r\nimport { toFormikErrors } from 'utils/errorhelper';\r\nimport { toast } from 'react-toastify';\r\nimport { Button } from 'components/atoms/button';\r\nimport React, { FC } from 'react';\r\n\r\ninterface ReviewProps extends RouteComponentProps { }\r\n\r\nconst initialValues: SendAgreementTaskMailInputModel = {\r\n file: undefined,\r\n comments: '',\r\n type: AgreementType.Update\r\n};\r\n\r\nconst CaUpdate: FC = () => {\r\n useHeader('Overeenkomsten');\r\n\r\n const { sendAgreementTaskMail } = useAgreements();\r\n\r\n const handleMail = async (values: SendAgreementTaskMailInputModel, { setErrors, resetForm }: FormikHelpers) => {\r\n const response = await sendAgreementTaskMail(values);\r\n\r\n if (response.ok) {\r\n toast.success('Uw aanvraag voor het updaten van de Overeenkomst is succesvol verstuurd');\r\n resetForm();\r\n } else if (response.errors) {\r\n const errors = toFormikErrors(response.errors);\r\n setErrors(errors);\r\n } else {\r\n toast.error('Er ging iets fout bij het versturen van de update-aanvraag');\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n \r\n \r\n

Update overeenkomsten

\r\n \r\n Twijfelt u over de actualiteit van uw overeenkomst of hebben zich sindsdien wijzigingen voorgedaan in uw bedrijfsactiviteiten?\r\n \r\n \r\n Vul onderstaande formulier in en wij nemen contact met u op voor een beoordeling van uw overeenkomst.\r\n \r\n
\r\n
\r\n \r\n \r\n initialValues={initialValues} onSubmit={handleMail}>\r\n {({ isSubmitting }) => (\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 CaUpdate;\r\n","import { RouteComponentProps } from '@reach/router';\r\nimport { Card, CardBody } from 'components/atoms/card';\r\nimport { H3, Paragraph } from 'components/atoms/text';\r\nimport { useHeader } from 'contexts/headerContext';\r\nimport { SendAgreementTaskMailInputModel, AgreementType } from 'hooks/agreement/types';\r\nimport useAgreements from 'hooks/agreement/';\r\nimport { FormGroup, FormikFormFile, FormikFormTextarea, FormikFormControl } from 'components/atoms/form';\r\nimport { Form, Formik, FormikHelpers } from 'formik';\r\nimport { toFormikErrors } from 'utils/errorhelper';\r\nimport { toast } from 'react-toastify';\r\nimport { Button } from 'components/atoms/button';\r\nimport React, { FC } from 'react';\r\n\r\ninterface TranslationProps extends RouteComponentProps { }\r\n\r\nconst initialValues: SendAgreementTaskMailInputModel = {\r\n file: undefined,\r\n comments: '',\r\n type: AgreementType.Translation,\r\n language: ''\r\n};\r\n\r\nconst CaTranslation: FC = () => {\r\n useHeader('Overeenkomsten');\r\n\r\n const { sendAgreementTaskMail } = useAgreements();\r\n\r\n\r\n const handleMail = async (values: SendAgreementTaskMailInputModel, { setErrors, resetForm }: FormikHelpers) => {\r\n const response = await sendAgreementTaskMail(values);\r\n\r\n if (response.ok) {\r\n toast.success('Uw aanvraag voor vertaling is succesvol verstuurd');\r\n resetForm();\r\n } else if (response.errors) {\r\n const errors = toFormikErrors(response.errors);\r\n setErrors(errors);\r\n } else {\r\n toast.error('Er ging iets fout bij het versturen van de vertaal-aanvraag');\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n \r\n \r\n

Vertalen overeenkomst

\r\n \r\n Doet u ook zaken in het buitenland? Met een vertaling van uw overeenkomst zijn ook uw internationale klanten op de hoogte van de voorwaarden waaronder u zoeken doet.\r\n \r\n \r\n Vul onderstaand formulier in en u ontvangt een vrijblijvende prijsopgave.\r\n \r\n
\r\n
\r\n \r\n \r\n initialValues={initialValues} onSubmit={handleMail}>\r\n {({ isSubmitting }) => (\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 CaTranslation;\r\n","import React, { FC } from 'react';\r\nimport { RouteComponentProps } from '@reach/router';\r\nimport { Card, CardBody, CardHeader } from 'components/atoms/card';\r\nimport { H3, Paragraph } from 'components/atoms/text';\r\nimport { Loading } from 'components/atoms/button/Button/styles';\r\nimport { cdnFileUrl } from 'utils/cdnHelper';\r\nimport Margin from 'components/atoms/Margin';\r\nimport useNewsItems from 'hooks/newsitem';\r\nimport { useHeader } from 'contexts/headerContext';\r\nimport { format, parseISO } from 'date-fns';\r\nimport { Button } from 'components/atoms/button';\r\nimport htmr from 'htmr';\r\n\r\ninterface NewsItemDetailProps extends RouteComponentProps {\r\n id?: string;\r\n}\r\n\r\nconst NewsItemDetail: FC = ({ id = '' }) => {\r\n useHeader('Nieuws');\r\n\r\n const { useAllNewsItems } = useNewsItems();\r\n const { data: newsItems = [] } = useAllNewsItems({\r\n id\r\n });\r\n\r\n const newsItem = newsItems[0];\r\n\r\n return newsItem == null ? : (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n

{newsItem.title}

\r\n {\r\n newsItem.publicationDate &&\r\n {format(parseISO(newsItem.publicationDate), 'dd-MM-yyyy')}\r\n }\r\n
\r\n {\r\n newsItem.image != null &&\r\n \r\n \"\"\r\n \r\n }\r\n \r\n {htmr(newsItem.content)}\r\n \r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default NewsItemDetail;\r\n","import React, { FC } from 'react';\r\nimport { FormGroup, FormikFormControl, FormikFormCurrency, FormikFormImage } from 'components/atoms/form';\r\n\r\nexport interface StampDataProps { }\r\n\r\nconst StampData: FC = () => {\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default StampData;\r\n","import { RouteComponentProps } from '@reach/router';\r\nimport React, { FC, useState } from 'react';\r\nimport useModal from 'hooks/modal';\r\nimport { Column } from 'react-table';\r\nimport { Card, CardBody } from 'components/atoms/card';\r\nimport Table from 'components/molecules/table';\r\nimport Modal from 'components/organisms/Modal';\r\nimport Wizard from 'components/organisms/Wizard';\r\nimport StampData from './components/StampData';\r\nimport { FormikHelpers } from 'formik';\r\nimport { toast } from 'react-toastify';\r\nimport Group from 'components/molecules/Group';\r\nimport { Button } from 'components/atoms/button';\r\nimport { toFormikErrors } from 'utils/errorhelper';\r\nimport { useHeader } from 'contexts/headerContext';\r\nimport { EditStampInputModel, StampPlainModel } from 'hooks/stamp/types';\r\nimport { useStamps } from 'hooks/stamp';\r\nimport { cdnFileUrl } from 'utils/cdnHelper';\r\n\r\nexport interface StampProps extends RouteComponentProps { }\r\n\r\nconst columns: Column[] = [\r\n {\r\n Header: 'Naam',\r\n accessor: (stamp) => stamp.name\r\n },\r\n {\r\n Header: 'Beschrijving',\r\n accessor: (stamp) => stamp.description\r\n },\r\n {\r\n Header: 'Prijs',\r\n accessor: (stamp) => '€ ' + stamp.price.toFixed(2).toString().replace('.', ',')\r\n }\r\n];\r\n\r\nconst ManageStamps: FC = () => {\r\n useHeader('Stempels');\r\n\r\n const { useAllStamps, addStamp, editStamp, deleteStamp } = useStamps();\r\n const { data: stamps = [], refetch, isLoading: isLoadingStamps } = useAllStamps();\r\n\r\n const [stamp, setStamp] = useState();\r\n const [stampToDelete, setStampToDelete] = useState();\r\n const [isLoadingDelete, setIsLoadingDelete] = useState(false);\r\n\r\n const initialValues: EditStampInputModel = {\r\n id: stamp?.id ?? '',\r\n name: stamp?.name ?? '',\r\n description: stamp?.description ?? '',\r\n price: stamp?.price ?? 0,\r\n imageHash: stamp?.imageHash ?? '',\r\n stampImage: stamp?.imageHash ? cdnFileUrl(stamp.imageHash) : undefined\r\n };\r\n\r\n const handleshow = (item: StampPlainModel) => {\r\n setStamp(item);\r\n show();\r\n };\r\n\r\n const handleOnHide = (hide: () => void) => {\r\n setStamp(undefined);\r\n hide();\r\n };\r\n\r\n const [show, hide] = useModal(\r\n ({ in: inProp, onExited }) => (\r\n handleOnHide(hide)} title={`Stempel ${!initialValues.id ? 'toevoegen' : 'bewerken'}`}>\r\n \r\n initialValues={initialValues}\r\n initialStep={0}\r\n onSubmitLabel=\"Opslaan\"\r\n onSubmit={handleStampSubmit}\r\n steps={[\r\n {\r\n step: 1,\r\n title: 'Gegevens',\r\n child: \r\n }\r\n ]}\r\n />\r\n \r\n ),\r\n [initialValues]\r\n );\r\n\r\n const handleStampSubmit = async (values: EditStampInputModel, actions: FormikHelpers) => {\r\n if (stamp) {\r\n const response = await editStamp(values);\r\n if (response.ok) {\r\n toast.success('Stempel succesvol aangepast!');\r\n hide();\r\n refetch();\r\n } else if (response.errors) {\r\n toast.error('Niet alle velden zijn ingevuld!');\r\n const errors = toFormikErrors(response.errors);\r\n actions.setErrors(errors);\r\n } else {\r\n toast.error('Oeps, er ging iets fout tijdens het aanpassen van de stempel. Probeer het later opnieuw!');\r\n }\r\n } else {\r\n const response = await addStamp(values);\r\n\r\n if (response.ok) {\r\n toast.success('Stempel succesvol aangemaakt!');\r\n hide();\r\n refetch();\r\n } else if (response.errors) {\r\n toast.error('Niet alle velden zijn ingevuld!');\r\n const errors = toFormikErrors(response.errors);\r\n actions.setErrors(errors);\r\n } else {\r\n toast.error('Oeps, er ging iets fout tijdens het aanmaken van de stempel. Probeer het later opnieuw!');\r\n }\r\n }\r\n };\r\n\r\n const handleStampDelete = async () => {\r\n if (stampToDelete === undefined) {\r\n return;\r\n }\r\n\r\n setIsLoadingDelete(true);\r\n\r\n const response = await deleteStamp(stampToDelete.id);\r\n if (response.ok) {\r\n toast.success('Stempel succesvol verwijderd!');\r\n refetch();\r\n } else {\r\n toast.error('Oeps, er ging iets fout tijdens het verwijderen van de stempel. Probeer het later opnieuw!');\r\n }\r\n\r\n setIsLoadingDelete(false);\r\n\r\n closeDeleteModal();\r\n };\r\n\r\n const [showDeleteModal, hideDeleteModal] = useModal(\r\n ({ in: inProp, onExited }) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n ),\r\n [stampToDelete]\r\n );\r\n\r\n const openDeleteModal = (stamp: StampPlainModel) => {\r\n setStampToDelete(stamp);\r\n showDeleteModal();\r\n };\r\n\r\n const closeDeleteModal = () => {\r\n setStampToDelete(undefined);\r\n hideDeleteModal();\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n data={stamps}\r\n isLoading={isLoadingStamps}\r\n noDataMessage=\"Geen stempel beschikbaar\"\r\n columns={columns}\r\n search\r\n onAddClick={show}\r\n actions={[\r\n {\r\n icon: 'edit',\r\n onClick: (item) => handleshow(item),\r\n title: 'Pas stempel aan'\r\n },\r\n {\r\n icon: 'delete',\r\n onClick: (item) => openDeleteModal(item),\r\n title: 'Verwijder stempel'\r\n }\r\n ]}\r\n />\r\n \r\n \r\n );\r\n};\r\n\r\nexport default ManageStamps;\r\n","import { FC, useEffect } from 'react';\r\nimport { navigate, RouteComponentProps } from '@reach/router';\r\nimport { useHeader } from 'contexts/headerContext';\r\nimport useCollectionForeign from 'hooks/collectionforeign/useCollectionForeign';\r\nimport useCollection from 'hooks/collection/useCollection';\r\nimport { toast } from 'react-toastify';\r\nimport React from 'react';\r\nimport { H3, Paragraph } from 'components/atoms/text';\r\nimport { Card, CardBody, CardHeader } from 'components/atoms/card';\r\n\r\ninterface CollectionFileDownloadProps extends RouteComponentProps {\r\n isForeign?: boolean;\r\n collectionId?: string;\r\n overviewFileId?: string;\r\n}\r\n\r\nconst CollectionFileDownload: FC = ({ isForeign = false, collectionId = '', overviewFileId = '' }) => {\r\n useHeader('Downloaden');\r\n\r\n const { downloadCollectionForeignFile } = useCollectionForeign();\r\n const { downloadCollectionFile } = useCollection();\r\n\r\n\r\n const downloadFile = async () => {\r\n\r\n let response = null;\r\n if (isForeign) {\r\n response = await downloadCollectionForeignFile(collectionId, overviewFileId);\r\n } else {\r\n response = await downloadCollectionFile(collectionId, overviewFileId);\r\n }\r\n\r\n if (response.ok) {\r\n // Get filename\r\n const contentDisposition = response.headers.get('content-disposition');\r\n const match = contentDisposition ? /filename=\"?([^\"]*)\"?;/g.exec(contentDisposition) : undefined;\r\n const fileName = match != null && match.length > 1 ? match[1] : 'download';\r\n\r\n saveAs(await response.blob(), fileName);\r\n\r\n setTimeout(() => navigate('/'), 5000);\r\n } else {\r\n toast.error('Oops, er ging iets mis bij het ophalen van het bestand');\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n const download = async () => {\r\n await downloadFile();\r\n };\r\n\r\n download();\r\n }, []);\r\n\r\n return (\r\n \r\n \r\n \r\n

Downloaden

\r\n
\r\n \r\n Het bestand wordt op dit moment gedownload. Hierna wordt u automatisch doorgestuurd.\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default CollectionFileDownload;\r\n","import React, { FC, useRef } from 'react';\r\nimport { RouteComponentProps } from '@reach/router';\r\nimport { Card, CardBody, CardHeader } from 'components/atoms/card';\r\nimport { H3, Paragraph } from 'components/atoms/text';\r\nimport { Loading } from 'components/atoms/button/Button/styles';\r\nimport Margin from 'components/atoms/Margin';\r\nimport useAllCorrespondence from 'hooks/correspondence/useAllCorrespondence';\r\nimport { useHeader } from 'contexts/headerContext';\r\nimport { format, parseISO } from 'date-fns';\r\nimport { Button } from 'components/atoms/button';\r\nimport Icon from 'components/atoms/Icon';\r\nimport Group from 'components/molecules/Group';\r\nimport ReactToPrint, { PrintContextConsumer } from 'react-to-print';\r\nimport { useSession } from 'contexts/sessionContext';\r\nimport moment from 'moment';\r\nimport htmr from 'htmr';\r\n\r\ninterface MessageDetailProps extends RouteComponentProps {\r\n id?: string;\r\n}\r\n\r\nconst MessagesDetail: FC = ({ id = '' }) => {\r\n const ref = useRef(null);\r\n const { session } = useSession();\r\n const { data: Correspondence = [] } = useAllCorrespondence({ id: id });\r\n\r\n const message = Correspondence[0];\r\n\r\n useHeader(message?.subject ? `Bericht - ${message.subject}` : 'Bericht');\r\n\r\n function parseVariables(text: string, date: Date) {\r\n // add name\r\n text = text.replace('{{name}}', session?.fullName ?? '');\r\n\r\n // add date\r\n text = text.replace('{{date}}', moment(date).format('DD-MM-YYYY'));\r\n\r\n // add mail\r\n text = text.replace('{{mail}}', session?.username ?? '');\r\n\r\n return text;\r\n }\r\n\r\n return message == null ? : (\r\n <>\r\n \r\n \r\n \r\n ref.current}>\r\n \r\n {({ handlePrint }) => (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n

{message.subject}

\r\n {format(parseISO(message.created), 'dd-MM-yyyy')}\r\n
\r\n \r\n {htmr(parseVariables(message.content, parseISO(message.created)))}\r\n \r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default MessagesDetail;\r\n","import { CustomError, useApi } from 'hooks/api';\r\nimport { useQuery } from 'react-query';\r\nimport { AddProspectInputModel, AddProspectResponseModel, GetProspectsInputModel, ProspectModel } from './types';\r\n\r\nconst useProspect = () => {\r\n const { post } = useApi();\r\n\r\n const baseUrl = '/prospect';\r\n\r\n const getAllProspects = async (params: GetProspectsInputModel) => {\r\n const response = await post(`${baseUrl}/all`, params);\r\n return response;\r\n };\r\n\r\n const useGetAllProspects = (params: GetProspectsInputModel) => {\r\n const queryKey = [getAllProspects, params];\r\n\r\n return useQuery(queryKey, async () => {\r\n const response = await getAllProspects(params);\r\n if (!response.ok && response.errors != null) {\r\n throw response.errors;\r\n }\r\n return response.data || [];\r\n });\r\n };\r\n\r\n const addProspect = async (params: AddProspectInputModel) => {\r\n const response = await post(baseUrl, params);\r\n return response;\r\n };\r\n\r\n return {\r\n useGetAllProspects,\r\n addProspect\r\n };\r\n};\r\n\r\nexport default useProspect;\r\n","import React, { FC, useState } from 'react';\r\nimport { RouteComponentProps } from '@reach/router';\r\nimport { Card, CardBody } from 'components/atoms/card';\r\nimport Table from 'components/molecules/table';\r\nimport { useHeader } from 'contexts/headerContext';\r\nimport { Column } from 'react-table';\r\nimport useProspect from 'hooks/prospect/useProspect';\r\nimport { AddProspectInputModel, ProspectModel } from 'hooks/prospect/types';\r\nimport { useModal } from 'react-modal-hook';\r\nimport { FormikHelpers } from 'formik';\r\nimport { toFormikErrors } from 'utils/errorhelper';\r\nimport Modal from 'components/organisms/Modal';\r\nimport Wizard from 'components/organisms/Wizard';\r\nimport Step1 from '../Customers/components/Step1';\r\nimport Step2 from '../Customers/components/Step2';\r\nimport { format, parseISO } from 'date-fns';\r\nimport { ProspectModuleSignRequestModel } from 'hooks/prospect/types';\r\nimport { getProspectModuleSignRequestDisplay } from 'utils/constants/prospectmodulesignrequestconstants';\r\nimport { Button } from 'components/atoms/button';\r\nimport Group from 'components/molecules/Group';\r\n\r\ninterface ProspectsProps extends RouteComponentProps { }\r\n\r\nconst columns: Column[] = [\r\n {\r\n Header: 'Relatienummer',\r\n accessor: (prospect) => prospect.relationNumber\r\n },\r\n {\r\n Header: 'Bedrijfsnaam',\r\n accessor: (prospect) => prospect.name\r\n },\r\n {\r\n Header: 'KvK-nummer',\r\n accessor: (prospect) => prospect.kvkNumber\r\n },\r\n {\r\n Header: 'Aangemaakt op',\r\n accessor: (prospect) => prospect.created != null ? parseISO(prospect.created).getTime() : null,\r\n Cell: ({ value }: any) => value != null ? format(value, 'dd-MM-yyyy HH:mm') : ''\r\n }\r\n];\r\n\r\nconst Prospects: FC = () => {\r\n useHeader('Prospects');\r\n\r\n const { useGetAllProspects, addProspect } = useProspect();\r\n const { data: prospects = [], isLoading, refetch } = useGetAllProspects({});\r\n\r\n const [signRequests, setSignRequests] = useState([]);\r\n\r\n const onAddProspect = async (values: AddProspectInputModel, { setSubmitting, setErrors }: FormikHelpers) => {\r\n const response = await addProspect(values);\r\n if (response.ok && response.data) {\r\n refetch();\r\n hideAddModal();\r\n setSignRequests(response.data.prospectModuleSignRequests);\r\n showSignRequestsModal();\r\n } else if (response.errors) {\r\n const errors = toFormikErrors(response.errors);\r\n setErrors(errors);\r\n }\r\n setSubmitting(false);\r\n };\r\n\r\n const initialValues: AddProspectInputModel = {\r\n gender: null,\r\n kvkNumber: '',\r\n name: '',\r\n initials: '',\r\n firstName: '',\r\n lastName: '',\r\n phoneNumber: '',\r\n mobileNumber: '',\r\n email: '',\r\n emailInvoice: '',\r\n addressVisit: '',\r\n cityVisit: '',\r\n postalCodeVisit: '',\r\n isMailAddressDifferent: false,\r\n addressMail: '',\r\n postalCodeMail: '',\r\n cityMail: '',\r\n function: '',\r\n bankAccount: '',\r\n paymentMethod: null,\r\n relationNumber: '',\r\n hasModuleCollection: false,\r\n hasModuleCollectionAbroad: false,\r\n hasModuleLegalAid: false,\r\n hasModuleGeneralConditions: false\r\n };\r\n\r\n const [showAddModal, hideAddModal] = useModal(\r\n ({ in: inProp, onExited }) => (\r\n \r\n \r\n initialValues={initialValues}\r\n initialStep={0}\r\n onSubmitLabel=\"Uitnodiging versturen\"\r\n onSubmit={onAddProspect}\r\n steps={[\r\n {\r\n step: 1,\r\n title: 'Zoek bedrijf',\r\n child: \r\n },\r\n {\r\n step: 2,\r\n title: 'Gegevens',\r\n child: \r\n }\r\n ]}\r\n />\r\n \r\n ),\r\n []\r\n );\r\n\r\n const [showSignRequestsModal, hideSignReuqestsModal] = useModal(\r\n ({ in: inProp, onExited }) => (\r\n \r\n <>\r\n {\r\n signRequests.map((sr) => (\r\n

\r\n Contract module {getProspectModuleSignRequestDisplay(sr.type)}\r\n

)\r\n )\r\n }\r\n \r\n \r\n \r\n \r\n
\r\n ),\r\n [signRequests]\r\n );\r\n\r\n return (\r\n \r\n \r\n \r\n isLoading={isLoading}\r\n data={prospects}\r\n noDataMessage=\"Geen prospects beschikbaar\"\r\n columns={columns}\r\n search\r\n onAddClick={showAddModal}\r\n />\r\n \r\n \r\n );\r\n};\r\n\r\nexport default Prospects;\r\n","import React, { lazy, Suspense, useEffect, useState } from 'react';\r\nimport theme from './theme';\r\nimport { Global, css, ThemeProvider } from '@emotion/react';\r\nimport { ScreenClassProvider, setConfiguration } from 'react-grid-system';\r\nimport grid from 'theme/grid';\r\nimport colors from 'theme/colors';\r\nimport greys from 'theme/greys';\r\nimport { Router } from '@reach/router';\r\nimport Tabs from 'components/templates/Tabs';\r\nimport ForgotPassword from 'components/pages/ForgotPassword';\r\nimport ResetPassword from 'components/pages/ResetPassword';\r\nimport TwoFactorAuthentication from 'components/pages/TwoFactorAuthentication';\r\nimport Extras from 'components/pages/Extras';\r\nimport Calculators from 'components/pages/Calculators';\r\nimport TemplateLetters from 'components/pages/TemplateLetters';\r\nimport ManageTemplateLetters from 'components/pages/TemplateLetters/Manage';\r\nimport Tools from 'components/pages/Tools';\r\nimport Banners from 'components/pages/Banners';\r\nimport ManageBanners from 'components/pages/Banners/Manage';\r\nimport Account from 'components/templates/Account';\r\nimport Default from 'components/templates/Default';\r\nimport { QueryClient, QueryClientProvider } from 'react-query';\r\nimport borderRadius from 'theme/borderRadius';\r\nimport { ModalProvider } from 'react-modal-hook';\r\nimport { TransitionGroup } from 'react-transition-group';\r\n\r\n// Dashboard pages (The nav is not a heavy component, so no need for lazy import. Lazy loading is done inside default/admin template).\r\nimport Dashboard from 'components/pages/Dashboard';\r\nimport About from 'components/pages/About';\r\nimport LegalAid from 'components/pages/LegalAid';\r\nimport AdminDashboard from 'components/pages/AdminDashboard';\r\nimport Profile from 'components/pages/Profile';\r\nimport Customers from 'components/pages/Customers';\r\nimport CustomerDetail from 'components/pages/CustomerDetail';\r\nimport AddCollection from 'components/pages/Collection';\r\nimport AddCollectionForeign from 'components/pages/CollectionForeign';\r\nimport Correspondence from 'components/pages/Correspondence';\r\nimport CorrespondenceTemplates from 'components/pages/CorrespondenceTemplates';\r\nimport AddCorrespondenceTemplate from 'components/pages/AddCorrespondenceTemplate';\r\nimport SendCorrespondence from 'components/pages/SendCorrespondence';\r\nimport Collections from 'components/pages/Collections';\r\nimport ManageCollections from 'components/pages/Collections/manage';\r\nimport CollectionOverview from 'components/pages/Collections/overview';\r\nimport CollectionForeigns from 'components/pages/CollectionForeigns';\r\nimport ManageCollectionForeigns from 'components/pages/CollectionForeigns/manage';\r\nimport CollectionForeignOverview from 'components/pages/CollectionForeigns/overview';\r\nimport AdminTermsAndConditions from 'components/pages/AdminTermsAndConditions';\r\nimport Agreements from 'components/pages/Agreements';\r\nimport AdminMaintenanceContracts from 'components/pages/AdminMaintenanceContracts';\r\nimport TacMain from 'components/pages/TacMain';\r\nimport TacReview from 'components/pages/TacReview';\r\nimport TacTranslation from 'components/pages/TacTranslation';\r\nimport TacUpdate from 'components/pages/TacUpdate';\r\nimport TacMaintenanceContracts from 'components/pages/TacMaintenanceContracts';\r\nimport Empty from 'components/pages/Empty';\r\nimport ManageTemplate from 'components/pages/TemplateLetters/Manage/components/ManageTemplate';\r\nimport { HeaderProvider } from 'contexts/headerContext';\r\nimport ClientAgreements from 'components/pages/ClientAgreements';\r\nimport Messages from 'components/pages/Messages';\r\nimport KnowledgeBase from 'components/pages/KnowledgeBase';\r\nimport KnowledgeBaseDetail from 'components/pages/KnowledgeBaseDetail';\r\nimport ManageKnowledgeBase from 'components/pages/KnowledgeBase/Manage';\r\nimport ManageKnowledgeBaseSettings from 'components/pages/KnowledgeBaseSettings/Manage';\r\nimport AddKnowledgeBaseItem from 'components/pages/AddKnowledgeBaseItem';\r\nimport ManageNewsItems from 'components/pages/NewsItems/Manage';\r\nimport AddNewsItem from 'components/pages/AddNewsItem';\r\nimport { Right, Role } from 'utils/constants';\r\nimport NewsItem from 'components/pages/NewsItems';\r\nimport Users from 'components/pages/Users';\r\nimport TacTools from 'components/pages/TacTools';\r\nimport CaUpdate from 'components/pages/CaUpdate';\r\nimport CaTranslation from 'components/pages/CaTranslation';\r\nimport NewsItemDetail from 'components/pages/NewsItemDetail';\r\nimport ManageStamps from 'components/pages/Stamps/Manage';\r\nimport CollectionFileDownload from 'components/pages/CollectionFileDownload';\r\nimport { useSession } from 'contexts/sessionContext';\r\nimport MessagesDetail from 'components/pages/MessagesDetail';\r\nimport Prospects from 'components/pages/Prospects';\r\n\r\nsetConfiguration(grid);\r\n\r\n// Account pages.\r\nconst Login = lazy(() => import('components/pages/Login'));\r\nconst LoginWithUsername = lazy(() => import('components/pages/LoginWithUsername'));\r\nconst Register = lazy(() => import('components/pages/Register'));\r\nconst CompleteRegistration = lazy(() => import('components/pages/CompleteRegistration'));\r\n\r\nconst styles = css`\r\n * {\r\n margin: 0;\r\n padding: 0;\r\n box-sizing: border-box;\r\n }\r\n\r\n html {\r\n font-size: 16px;\r\n color: ${colors.dark};\r\n font-family: 'Poppins', Helvetica, Arial, sans-serif;\r\n }\r\n\r\n button, input, textarea {\r\n font-family: inherit;\r\n }\r\n\r\n h1, h2, h3, h4, h5, h6 {\r\n line-height: 1.2;\r\n margin-bottom: 1rem;\r\n font-weight: 600;\r\n }\r\n\r\n h1 {\r\n font-size: 2rem;\r\n margin-bottom: 1rem;\r\n font-weight: 500;\r\n }\r\n\r\n h2 {\r\n font-size: 1.625rem;\r\n font-weight: 500;\r\n }\r\n\r\n h3, h4, h5, h6 {\r\n font-size: 1rem;\r\n line-height: 1.4;\r\n margin-bottom: 0;\r\n }\r\n\r\n @keyframes rotate {\r\n from {\r\n transform: rotate(0);\r\n }\r\n to {\r\n transform: rotate(360deg);\r\n }\r\n }\r\n\r\n .icon-wrapper {\r\n pointer-events: none;\r\n\r\n span {\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n }\r\n }\r\n\r\n .rotate {\r\n transform: rotate(180deg);\r\n transform-origin: center center;\r\n display: inline-block;\r\n }\r\n\r\n .react-code-input {\r\n width: 100%;\r\n border-top: 1px solid ${greys[50]};\r\n border-left: 1px solid ${greys[50]};\r\n border-radius: ${borderRadius.normal}px;\r\n overflow: hidden;\r\n }\r\n\r\n .react-datepicker-wrapper,\r\n .react-datepicker__input-container,\r\n .react-datepicker__input-container input {\r\n display: block;\r\n width: 100%;\r\n }\r\n\r\n .react-datepicker__input-container input {\r\n width: 100%;\r\n height: 3rem;\r\n border: 1px solid ${greys[50]};\r\n border-radius: ${borderRadius.small}px;\r\n padding: 0 16px;\r\n font-size: 1rem;\r\n\r\n &:focus {\r\n outline: none;\r\n box-shadow: 0 0 0 0.2rem ${greys[50]};\r\n }\r\n\r\n &:hover {\r\n border-color: ${greys[100]};\r\n }\r\n\r\n ::placeholder {\r\n color: ${greys[300]};\r\n }\r\n }\r\n\r\n hr {\r\n border: 0;\r\n height: 0;\r\n border-bottom: 1px solid ${colors.border};\r\n margin: 1.5rem 0;\r\n }\r\n\r\n table {\r\n th#Action {\r\n width: 100px;\r\n }\r\n }\r\n\r\n .ReactCollapse--collapse {\r\n transition: height 0.5s;\r\n }\r\n`;\r\n\r\nconst queryClient = new QueryClient();\r\nconst App = () => {\r\n const { session, hasRight } = useSession();\r\n const [hasCollectionsRights, setHasCollectionsRights] = useState(false);\r\n const [hasCollectionsForeignRights, setHasCollectionsForeignRights] = useState(false);\r\n const [, setHasTermsAndConditionsRights] = useState(false);\r\n useEffect(() => {\r\n setHasCollectionsRights(hasRight(Right.Collection));\r\n setHasCollectionsForeignRights(hasRight(Right.CollectionAbroad));\r\n setHasTermsAndConditionsRights(hasRight(Right.GeneralConditions));\r\n }, [session]);\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n {/* - start - terms and conditions */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {/* - end - terms and conditions */}\r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n {/* in combination with a child with the default attribute, the path attribute of the component needs to start with a '/'. */}\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 {/* - start - terms and conditions */}\r\n \r\n \r\n \r\n \r\n \r\n {/* - end - terms and conditions */}\r\n\r\n \r\n\r\n {/* - start - correspondence */}\r\n \r\n \r\n \r\n \r\n {/* - end - correspondence */}\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 React, { StrictMode } from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport App from './App';\r\nimport { Bounce, ToastContainer } from 'react-toastify';\r\nimport 'react-toastify/dist/ReactToastify.css';\r\nimport { SessionProvider } from 'contexts/sessionContext';\r\n\r\n\r\nReactDOM.render(\r\n \r\n \r\n \r\n \r\n \r\n ,\r\n document.getElementById('root')\r\n);\r\n","import styled from '@emotion/styled';\r\nimport Icon from 'components/atoms/Icon';\r\n\r\nexport const H5 = styled.h5<{ color: string; }>`\r\n color: ${({ color }) => color};\r\n font-size: 1rem;\r\n line-height: 1rem;\r\n margin-bottom: 0.5rem;\r\n font-weight: 500;\r\n`;\r\n\r\nexport const Wrapper = styled.div<{ center?: boolean }>`\r\n display: flex;\r\n margin-bottom: 24px;\r\n justify-content: ${({ center }) => (center ? 'space-around' : 'flex-start')};\r\n`;\r\n\r\nexport const H3Icon = styled(Icon)`\r\n margin-right: 8px;\r\n`;\r\n","import React, { FC, useMemo } from 'react';\r\nimport { H5 as Text, Wrapper, H3Icon as Icon } from './styles';\r\nimport { Colors } from 'theme/colors';\r\nimport { useTheme } from '@emotion/react';\r\n\r\nexport interface H5Props {\r\n variant?: keyof Colors;\r\n grey?: number;\r\n center?: boolean;\r\n className?: string;\r\n icon?: string;\r\n}\r\n\r\nconst H5: FC = ({ children, variant, grey, center, className, icon }) => {\r\n const theme = useTheme();\r\n const color = useMemo(() => (variant ? theme.colors[variant] : grey ? theme.greys[grey] : theme.colors.secondary), [variant, grey]);\r\n\r\n return (\r\n \r\n {icon && }\r\n \r\n {children}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default H5;\r\n","import styled from '@emotion/styled';\r\nimport Icon from 'components/atoms/Icon';\r\n\r\nexport const H4 = styled.h4<{ color: string; center?: boolean }>`\r\n color: ${({ color }) => color};\r\n text-align: ${({ center }) => (center ? 'center' : 'left')};\r\n font-size: 1.375rem;\r\n line-height: 1.5rem;\r\n font-weight: 400;\r\n`;\r\n\r\nexport const Wrapper = styled.div`\r\n display: flex;\r\n margin-bottom: 24px;\r\n`;\r\n\r\nexport const H4Icon = styled(Icon)`\r\n margin-right: 8px;\r\n`;\r\n","import React, { FC, useMemo } from 'react';\r\nimport { H4 as Text, Wrapper, H4Icon as Icon } from './styles';\r\nimport { Colors } from 'theme/colors';\r\nimport { useTheme } from '@emotion/react';\r\n\r\nexport interface H4Props {\r\n variant?: keyof Colors;\r\n grey?: number;\r\n center?: boolean;\r\n className?: string;\r\n icon?: string;\r\n}\r\n\r\nconst H4: FC = ({ children, variant, grey, center, className, icon }) => {\r\n const theme = useTheme();\r\n const color = useMemo(() => (variant ? theme.colors[variant] : grey ? theme.greys[grey] : theme.colors.primary), [variant, grey]);\r\n\r\n return (\r\n \r\n {icon && }\r\n \r\n {children}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default H4;\r\n","import styled from '@emotion/styled';\r\nimport Icon from 'components/atoms/Icon';\r\n\r\nexport const H3 = styled.h3<{ color: string; center?: boolean }>`\r\n color: ${({ color }) => color};\r\n text-align: ${({ center }) => (center ? 'center' : 'left')};\r\n font-size: 1.375rem;\r\n line-height: 1.5rem;\r\n font-weight: 700;\r\n display: flex;\r\n word-break: break-word;\r\n`;\r\n\r\nexport const Wrapper = styled.div<{ noMargin?: boolean }>`\r\n display: flex;\r\n margin-bottom: ${({ noMargin }) => noMargin ? 0 : 24}px;\r\n`;\r\n\r\nexport const H3Icon = styled(Icon)`\r\n margin-right: 8px;\r\n`;\r\n","import React, { FC, useMemo } from 'react';\r\nimport { H3 as Text, Wrapper, H3Icon as Icon } from './styles';\r\nimport { Colors } from 'theme/colors';\r\nimport { useTheme } from '@emotion/react';\r\n\r\nexport interface H3Props {\r\n variant?: keyof Colors;\r\n grey?: number;\r\n center?: boolean;\r\n className?: string;\r\n icon?: string;\r\n noMargin?: boolean;\r\n}\r\n\r\nconst H3: FC = ({ children, variant, grey, center, className, icon, noMargin }) => {\r\n const theme = useTheme();\r\n const color = useMemo(() => (variant ? theme.colors[variant] : grey ? theme.greys[grey] : theme.colors.primary), [variant, grey]);\r\n\r\n return (\r\n \r\n {icon && }\r\n \r\n {children}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default H3;\r\n","import styled from '@emotion/styled';\r\n\r\nexport const H1 = styled.h1<{ color: string; center?: boolean }>`\r\n color: ${({ color }) => color};\r\n text-align: ${({ center }) => (center ? 'center' : 'left')};\r\n font-size: 2rem;\r\n line-height: 2rem;\r\n font-weight: 600;\r\n margin-bottom: 1rem;\r\n position: relative;\r\n`;\r\n","import React, { FC, useMemo } from 'react';\r\nimport { H1 as Text } from './styles';\r\nimport { Colors } from 'theme/colors';\r\nimport { useTheme } from '@emotion/react';\r\n\r\nexport interface H2Props {\r\n variant?: keyof Colors;\r\n grey?: number;\r\n center?: boolean;\r\n className?: string;\r\n}\r\n\r\nconst H2: FC = ({ children, variant, grey, center, className }) => {\r\n const theme = useTheme();\r\n const color = useMemo(() => (variant ? theme.colors[variant] : grey ? theme.greys[grey] : theme.colors.white), [variant, grey]);\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\nexport default H2;\r\n","import styled from '@emotion/styled';\r\n\r\nexport const H1 = styled.h1<{ color: string; center?: boolean }>`\r\n color: ${({ color }) => color};\r\n text-align: ${({ center }) => (center ? 'center' : 'left')};\r\n font-size: 2.875rem;\r\n line-height: 2.875rem;\r\n font-weight: 500;\r\n margin-bottom: 24px;\r\n position: relative;\r\n`;\r\n","import React, { FC, useMemo } from 'react';\r\nimport { H1 as Text } from './styles';\r\nimport { Colors } from 'theme/colors';\r\nimport { useTheme } from '@emotion/react';\r\n\r\nexport interface H1Props {\r\n variant?: keyof Colors;\r\n grey?: number;\r\n center?: boolean;\r\n className?: string;\r\n}\r\n\r\nconst H1: FC = ({ children, variant, grey, center, className }) => {\r\n const theme = useTheme();\r\n const color = useMemo(() => (variant ? theme.colors[variant] : grey ? theme.greys[grey] : theme.colors.primary), [variant, grey]);\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\nexport default H1;\r\n","import { css } from '@emotion/react';\r\nimport styled from '@emotion/styled';\r\n\r\nexport const Paragraph = styled.p<{ color: string; center?: boolean; noMargin?: boolean; lines?: number }>`\r\n ${({ color }) =>\r\n color &&\r\n css`\r\n color: ${color};\r\n\r\n & a {\r\n color: ${color};\r\n }\r\n `\r\n }\r\n \r\n text-align: ${({ center }) => (center ? 'center' : 'left')};\r\n font-size: 1rem;\r\n line-height: 1.5;\r\n margin-bottom: 1.5rem;\r\n\r\n ${({ lines }) =>\r\n lines !== undefined &&\r\n css`\r\n -webkit-line-clamp: ${lines};\r\n -webkit-box-orient: vertical;\r\n overflow: hidden;\r\n display: -webkit-box;\r\n `\r\n }\r\n\r\n ${({ noMargin }) =>\r\n noMargin &&\r\n css`\r\n margin: 0;\r\n `\r\n }\r\n`;\r\n","import React, { FC, useMemo } from 'react';\r\nimport { Paragraph as Text } from './styles';\r\nimport { Colors } from 'theme/colors';\r\nimport { useTheme } from '@emotion/react';\r\n\r\nexport interface ParagraphProps {\r\n variant?: keyof Colors;\r\n grey?: number;\r\n center?: boolean;\r\n noMargin?: boolean;\r\n className?: string;\r\n lines?: number;\r\n}\r\n\r\nconst Paragraph: FC = ({ children, variant, grey, center, noMargin, className, lines }) => {\r\n const theme = useTheme();\r\n const color = useMemo(() => (variant ? theme.colors[variant] : grey ? theme.greys[grey] : theme.colors.dark), [variant, grey]);\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\nexport default Paragraph;\r\n","export enum Right {\r\n Collection = 'Collection',\r\n CollectionAbroad = 'CollectionAbroad',\r\n LegalAid = 'LegalAid',\r\n GeneralConditions = 'GeneralConditions'\r\n};\r\n\r\nexport const getRightDisplay = (right: string): string => {\r\n switch (right) {\r\n case Right.Collection:\r\n return 'Incasso';\r\n case Right.CollectionAbroad:\r\n return 'Incasso buitenland';\r\n case Right.LegalAid:\r\n return 'Rechtshulp';\r\n case Right.GeneralConditions:\r\n return 'Algemene voorwaarden';\r\n }\r\n\r\n return '';\r\n};\r\n","export interface Colors {\r\n primary: string;\r\n secondary: string;\r\n success: string;\r\n error: string;\r\n orange: string;\r\n dark: string;\r\n white: string;\r\n black: string;\r\n grey: string;\r\n light: string;\r\n border: string;\r\n green: string;\r\n}\r\n\r\nconst colors: Colors = {\r\n primary: '#011F5E',\r\n secondary: '#D12229',\r\n success: '#4CAF50',\r\n error: '#D12229',\r\n orange: '#EBAA15',\r\n dark: '#001e5e',\r\n white: '#ffffff',\r\n black: '#000000',\r\n grey: '#b3b1b1',\r\n light: '#f5f3f1',\r\n border: '#D7D2C5',\r\n green: '#63b581'\r\n};\r\n\r\nexport default colors;\r\n","import { useField } from 'formik';\r\nimport React, { FC } from 'react';\r\nimport FormCurrency, { FormCurrencyProps } from '..';\r\n\r\nconst FormCurrencyFormik: FC = (props) => {\r\n const [field, meta] = useField(props);\r\n\r\n const error = !!(meta.touched && meta.error) ? meta.error : undefined;\r\n return ;\r\n};\r\n\r\nexport default FormCurrencyFormik;\r\n","export interface Greys {\r\n [key: number]: string;\r\n}\r\n\r\nconst greys: Greys = {\r\n 25: '#F5F7F8',\r\n 50: '#ECEFF1',\r\n 100: '#CFD8DC',\r\n 300: '#90A4AE',\r\n 500: '#607D8B',\r\n 700: '#455A64',\r\n 900: '#263238',\r\n};\r\n\r\nexport default greys;\r\n","import styled from '@emotion/styled';\r\nimport { rgba } from 'polished';\r\n\r\nexport const Tooltip = styled.div`\r\n box-shadow: 0 10px 30px ${({ theme }) => rgba(theme.colors.dark, 0.2)};\r\n border-radius: ${({ theme }) => theme.borderRadius.normal}px;\r\n background-color: ${({ theme }) => theme.colors.white};\r\n padding: 0.5rem 16px;\r\n font-size: 1rem;\r\n line-height: 1.5rem;\r\n max-width: 250px;\r\n`;\r\n\r\nexport const Trigger = styled.div`\r\n width: 24px;\r\n height: 24px;\r\n flex: 0 0 24px;\r\n border-radius: 50%;\r\n background-color: ${({ theme }) => theme.greys[100]};\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n`;\r\n","import { useTheme } from '@emotion/react';\r\nimport { AnimatePresence } from 'framer-motion';\r\nimport React, { FC, ReactElement } from 'react';\r\nimport { Arrow, useHover, useLayer } from 'react-laag';\r\nimport Icon from '../Icon';\r\nimport { Tooltip as Wrapper, Trigger } from './styles';\r\n\r\nexport interface TooltipProps {\r\n placement?: 'top-start' | 'top-center' | 'top-end' | 'bottom-start' | 'bottom-center' | 'bottom-end';\r\n trigger?: ReactElement; // TODO: custom trigger\r\n}\r\n\r\nconst Tooltip: FC = ({ children, placement, trigger }) => {\r\n const theme = useTheme();\r\n const [isOpen, hoverProps] = useHover({ delayEnter: 100, delayLeave: 300 });\r\n const { triggerProps, layerProps, arrowProps, renderLayer } = useLayer({\r\n isOpen,\r\n placement: placement ? placement : 'bottom-end',\r\n triggerOffset: 8\r\n });\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n {renderLayer(\r\n \r\n {isOpen && (\r\n \r\n {children}\r\n \r\n \r\n )}\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default Tooltip;\r\n","import React from 'react';\r\nimport { SessionModel } from 'hooks/api/types';\r\nimport { useSession } from 'contexts/sessionContext';\r\nimport { navigate } from '@reach/router';\r\nimport { ForgotPasswordInputModel, LoginInputModel, ResetPasswordInputModel } from './types';\r\nimport { useApi } from 'hooks/api';\r\n\r\nexport interface VerifyTfaCodeInputModel {\r\n 'code': string;\r\n 'rememberVerification': boolean;\r\n}\r\n\r\nconst useAccount = () => {\r\n const { setSession, clearSession } = useSession();\r\n const { post, put } = useApi();\r\n\r\n const login = async (values: LoginInputModel) => {\r\n const response = await post('/account/cookielogin', values);\r\n return response;\r\n };\r\n\r\n const loginWithUsername = async (username: string) => {\r\n const response = await post(`/account/cookieloginwithusername/${username}`);\r\n\r\n if (response.ok && response.data) {\r\n const session = response.data;\r\n setSession(session.claims);\r\n navigate('/');\r\n }\r\n };\r\n\r\n const logOut = async () => {\r\n const response = await post('/account/cookielogout');\r\n\r\n if (!response.ok) {\r\n return Promise.reject();\r\n }\r\n\r\n clearSession();\r\n };\r\n\r\n const resendTfaCode = async () => {\r\n const response = put('/account/cookieResendTfaCode');\r\n\r\n return response;\r\n\r\n };\r\n\r\n const verifyTfaCode = React.useCallback(async (values: VerifyTfaCodeInputModel, redirectUrl?: string) => {\r\n\r\n const response = await post('/account/cookieVerifyTfaCode', values);\r\n\r\n if (response.ok && response.data) {\r\n const session = response.data;\r\n setSession(session.claims);\r\n if (redirectUrl) {\r\n navigate(redirectUrl);\r\n } else {\r\n navigate('/');\r\n }\r\n }\r\n\r\n return response;\r\n\r\n }, [setSession]);\r\n\r\n const forgotPassword = async (values: ForgotPasswordInputModel) => {\r\n const response = await post('/account/forgotpassword', values);\r\n\r\n return response;\r\n };\r\n\r\n const resetPassword = async (values: ResetPasswordInputModel) => {\r\n const response = await put('/account/resetpassword', values);\r\n\r\n return response;\r\n };\r\n\r\n return {\r\n login,\r\n loginWithUsername,\r\n logOut,\r\n resendTfaCode,\r\n verifyTfaCode,\r\n forgotPassword,\r\n resetPassword\r\n };\r\n};\r\n\r\nexport default useAccount;\r\n","import { css } from '@emotion/react';\r\nimport styled from '@emotion/styled';\r\nimport { FormCheckProps } from './';\r\n\r\nexport const Radio = styled.div<{ checked?: boolean }>`\r\n width: 1rem;\r\n height: 1rem;\r\n border: 1px solid ${({ theme }) => theme.greys[100]};\r\n background-color: white;\r\n border-radius: 50%;\r\n display: flex;\r\n flex: 0 0 1rem;\r\n justify-content: center;\r\n align-items: center;\r\n\r\n &:after {\r\n content: '';\r\n background-color: ${({ theme }) => theme.colors.primary};\r\n width: 0;\r\n height: 0;\r\n border-radius: 50%;\r\n transition: width 0.15s ease, height 0.15s ease;\r\n }\r\n\r\n &:hover {\r\n border-color: ${({ theme }) => theme.greys[300]};\r\n\r\n ${({ checked }) =>\r\n !checked &&\r\n css`\r\n &:after {\r\n width: 4px;\r\n height: 4px;\r\n }\r\n `}\r\n }\r\n\r\n ${({ checked }) =>\r\n checked &&\r\n css`\r\n &:after {\r\n width: 0.5rem;\r\n height: 0.5rem;\r\n }\r\n `}\r\n`;\r\n\r\nexport const HiddenRadio = styled.input`\r\n position: absolute;\r\n opacity: 0;\r\n height: 0;\r\n width: 0;\r\n\r\n &:focus + div {\r\n outline: none;\r\n box-shadow: 0 0 0 0.2rem ${({ theme }) => theme.greys[50]};\r\n }\r\n`;\r\n\r\nexport const Label = styled.span`\r\n color: ${({ theme }) => theme.colors.dark};\r\n margin-left: 8px;\r\n margin-right: 16px;\r\n font-size: 1rem;\r\n line-height: 1rem;\r\n`;\r\n\r\nexport const Wrapper = styled.label`\r\n display: inline-flex;\r\n align-items: center;\r\n user-select: none;\r\n\r\n &:hover {\r\n cursor: pointer;\r\n }\r\n`;\r\n","import React, { FC, InputHTMLAttributes } from 'react';\r\nimport { Radio, HiddenRadio, Label, Wrapper } from './styles';\r\n\r\nexport interface FormCheckProps {\r\n label?: string;\r\n}\r\n\r\nconst FormRadio: FC & FormCheckProps> = ({ label, checked, ...props }) => {\r\n return (\r\n \r\n \r\n \r\n {label && }\r\n \r\n );\r\n};\r\n\r\nexport default FormRadio;\r\n"],"sourceRoot":""}