{"version":3,"sources":["components/common/CommonStyles.ts","components/common/InputStyles.ts","components/common/DomainTypes.ts","components/common/DefaultValues.ts","api/omaelama-functions.ts","components/common/Header.tsx","components/common/Navigation.tsx","components/common/Layout.tsx","components/about/About.tsx","components/common/Tree.tsx","components/common/Spinner.tsx","components/family/familyTreeApi.ts","components/family/useFamilyTree.ts","components/family/FamilyTreeWidget.tsx","components/common/useWidth.ts","components/common/Card.tsx","api/RhrApi.ts","api/TaxAdministrationApi.ts","components/assets/assetsApi.ts","components/assets/useAssets.ts","components/assets/AssetsWidget.tsx","components/will/willApi.ts","utils/uuidUtils.ts","components/will/useWill.ts","utils/dateUtils.ts","components/will/WillWidget.tsx","components/parties/partiesApi.ts","components/parties/useParties.ts","components/parties/PartiesWidget.tsx","components/prenuptial/prenuptialApi.ts","components/prenuptial/usePrenuptial.ts","components/prenuptial/PrenuptialWidget.tsx","components/family/useSpouse.ts","components/dashboard/Dashboard.tsx","components/dashboard-work/IncomeCard.tsx","components/dashboard-work/useTransactions.ts","utils/apiClient.ts","components/income/IncomeTotalsCard.tsx","components/income/useTransactionsTotals.ts","components/common/DataModal.tsx","components/common/StyledInputComponents.ts","components/employment-certificate/EmploymentCertificateForm.tsx","components/employment-certificate/useEmploymentCertificateData.ts","components/dashboard-work/EmployersCard.tsx","components/dashboard-work/DashboardWork.tsx","components/dashboard-finance/CreditAndLoansCard.tsx","api/propertyApi.ts","components/assets/PersonAssets.tsx","components/dashboard-finance/DashboardFinance.tsx","components/dashboard-education/EducationCard.tsx","components/dashboard-education/LiberalEducationCard.tsx","components/forms/GenericFormTypes.ts","components/dashboard-education/useLiberalEducation.ts","components/dashboard-education/DashboardEducation.tsx","components/estateInventory/model/address.ts","components/estateInventory/model/person.ts","components/estateInventory/model/assets.ts","components/estateInventory/model/estateInventory.ts","components/estateInventory/addressEditor.tsx","components/estateInventory/personEditor.tsx","components/estateInventory/giftEditor.tsx","components/estateInventory/multiValuePicker.tsx","components/estateInventory/insurancePaymentEditor.tsx","components/estateInventory/model/fraction.ts","components/estateInventory/fractionEditor.tsx","components/estateInventory/beneficiaryEditor.tsx","components/estateInventory/advancementCtrl.tsx","components/estateInventory/model/valueDetails.ts","components/estateInventory/valueDetailsEditor.tsx","components/estateInventory/assetEditorCtrl.tsx","components/estateInventory/EstateInventory.tsx","components/home/Home.tsx","state/actions.ts","state/AppContext.ts","components/login/Login.tsx","components/common/DocumentStyles.ts","components/will/WillView.tsx","utils/mathUtils.ts","components/will/WillEdit.tsx","components/prenuptial/PrenuptialView.tsx","components/prenuptial/PrenuptialEdit.tsx","utils/xmlUtils.ts","components/users/useUsers.ts","components/users/EditUserModal.tsx","components/users/UserList.tsx","components/settings/SettingsDashboard.tsx","components/income-view/useIncome.ts","components/income-view/IncomeView.tsx","components/forms/FormsView.tsx","components/common/NotificationBox.tsx","components/forms/GenericForm.tsx","components/forms/reportDeath/ReportDeathForm.tsx","components/messages/events/DeathReportEvent.tsx","components/messages/events/DefaultGenericFormEvent.tsx","components/messages/events/TerminationOfEmploymentEvent.tsx","components/messages/events/MarriageEvent.tsx","components/messages/MessageListItem.tsx","components/forms/TerminationOfEmployment/TerminationOfEmployment.tsx","components/messages/Messages.tsx","components/forms/ChildsBirth/ChildsBirth.tsx","components/forms/DefaultGenericForm.tsx","components/forms/Marriage.tsx","App.tsx","index.tsx"],"names":["panelWithShadowCss","css","tokens","colors","whiteBase","spacing","m","panelWithBorderCss","depthLight3","l","MainWithBorder","styled","main","PanelWithShadow","div","HeaderBackground","brandBase","TopNavigationBackground","ContentContainer","Heading1WithBottomBorder","Heading","s","FlexRow","FlexCol","FlexColTight","Table","table","values","typography","bodyText","fontSize","value","unit","depthLight2","TableSmall","bodyTextSmall","xs","Placeholder","depthBase","HideOnSmallDisplay","span","MessagesDiv","HorizontalPadding","inputCss","fontFamily","fontWeight","lineHeight","xxs","Input","input","InputNumber","defaultProps","type","InputRadio","Relationship","EstateRole","PrenuptialType","MessageType","TextArea","textarea","Select","select","InputIcon","Icon","ButtonLink","button","highlightBase","ButtonLinkSmall","ButtonSecondaryDark","Button","blackBase","depthDark1","ButtonIconOnly","Status","NULL_PERSON","id","firstName","lastName","fullName","primaryLanguage","nationality","childCount","fiLabelForPrenuptialType","t","MUTUALLY_EXCLUSIVE","MUTUALLY_PARTIALLY_EXCLUSIVE","ONE_SIDED_EXCLUSIVE","ONE_SIDED_PARTIALLY_EXCLUSIVE","MESSAGE","Date","parse","EVENT","tokenKey","omaelamaFunctions","axios","create","baseURL","process","headers","withCredentials","interceptors","request","use","config","token","sessionStorage","getItem","response","setItem","ssn","a","get","params","removeItem","Promise","resolve","fetchCurrentUser","reject","GetUserMessages","msg","post","sendGenericForm","data","personId","Header","history","useHistory","useContext","AppContext","appState","setAppState","person","style","display","justifyContent","color","textAlign","textTransform","onClick","logout","then","res","push","NavItem","to","label","unreadMessages","messages","filter","isRead","length","match","useRouteMatch","path","exact","borderBottom","padding","marginRight","textDecoration","whiteSpace","className","Navigation","listStyle","margin","name","languageMenuButtonClassName","onSelect","Layout","props","variant","title","children","About","Tree","width","height","svgRef","useRef","useEffect","svgElement","current","selectAll","remove","selection","attr","append","init","root","horizontal","mirrored","nodeEnter","descendants","enter","classed","d","y","x","parent","text","links","source","target","draw","tree","separation","b","nodeSize","treeLayout","hierarchy","ref","Spinner","icon","mapPerson","Id","Henkilotunnus","Etunimi","Sukunimi","useFamilyTree","useState","familyTree","setFamilyTree","loading","setLoading","personsById","Henkilo","reduce","map","findChildren","Osapuoli","o","Suhdelaji","CHILD","parties","finally","loadingFamilyTree","FamilyTreeWidget","setWidth","offsetWidth","useWidth","smallScreen","marginTop","href","sdt","accentBase","Card","additionalInfo","apiRootUrl","rhrApi","GetAddress","permanentBuildingId","resp","catch","err","console","log","GetBuildingById","GetInstanceByID","taxAdministrationApi","mapAsset","Nimi","Arvo","count","Lukumaara","getPersonsAssetsAppData","GetPersonAssets","createBuildingAppData","buildings","ownerId","all","RhrApi","permanentBuildingID","buildingData","rhrAddress","TaxApi","taxAddress","ownerID","owner","address","useAssets","assets","setAssets","Varallisuusera","loadingAssets","AssetsWidget","entry","i","key","mapWill","Testamentti","clause","Klausuuli","date","Laatimispaivamaara","mapWillAsset","mapParty","share","Osuus","reverseMapWill","will","reverseMapPerson","reverseMapAsset","asset","reverseMapParty","party","NIL_UUID","useWill","initialValue","setWill","loadingWill","saveWill","postWill","toDateString","toLocaleDateString","WillWidget","isoDate","renderAsset","verticalAlign","listStyleType","j","renderParty","marginBottom","renderWill","relationship","Suhde","Roolilaji","street","Kadunnimi","Osoitenumero","zip","Postinumero","city","Postitoimipaikka","useParties","setParties","loadingParties","PartiesWidget","r","HEIR","WIDOW","WILL_BENEFICIARY","fiLabelForRelationship","mapPrenuptial","Avioehto","Avioehtolaji","reverseMapPrenuptial","prenup","valueOf","usePrenuptial","prenuptial","setPrenuptial","p","loadingPrenuptial","savePrenuptial","postPrenuptial","PrenuptialWidget","renderPrenuptial","useSpouse","spouse","setSpouse","spouseArray","flatMap","SPOUSE","loadingSpouse","Dashboard","boxSizing","minHeight","IncomeCard","transactions","setTransactions","isLoading","groupedTransactions","setGroupedTransactions","setTimeout","companyName","companyBusinessId","amount","time","code","groupedByMonth","result","item","month","getMonth","getFullYear","undefined","items","total","byMonth","Object","useTransactions","API_ROOT_URL","fetchData","resourcePath","normalizedPath","replace","toCamel","obj","Array","newO","origKey","hasOwnProperty","newKey","charAt","toLowerCase","slice","toString","constructor","IncomeTotalsCard","totals","setTotals","sixMonths","twelveMonths","useTransactionTotals","gross","DataModal","isOpen","contentLabel","content","marginLeft","maxWidth","selectCss","active","FormStyles","sleep","ms","onSubmitMock","window","JSON","stringify","EmploymentCertificateForm","onSubmit","onCancel","disabled","initialValues","hideButtons","employmentCertificateData","setEmploymentCertificateData","endingResult","ratingResult","employmentEndingCodes","codes","ratingCodes","useEmploymentCertificateData","render","form","handleSubmit","submitting","pristine","border","component","codeValue","prefLabel","fi","EmployersCard","isEmploymentCertificateOpen","setIsEmploymentCertificateOpen","employmentCertificate","Fragment","PersonAssets","properties","setProperties","PropertyApi","Accordion","defaultExpanded","AccordionSummary","expandIcon","aria-controls","Typography","PermanentBuildingID","Address","PostalCode","PostalDistrict","buildingSummary","AccordionDetails","paddingLeft","FirstNames","LastName","shareEnd","shareStart","postalDistrict","stair","number","postalCode","getAddress","area","floor","intendedUse","specifier","CreditAndLoansCard","EducationCard","rel","GenericFormType","LiberalEducationCard","courses","setCourses","useLiberalEducation","course","completedOn","baseAddress","streetName","houseNumber","entranceIdentifier","apartmentNumber","sectionLetter","abroadAddress","basePerson","personalId","contactPerson","phoneNumber","decedentDetails","estateInventoryDate","dateOfDeath","publiclyTradedShares","housingAssociationShares","realEstates","leisureRealEstates","nonListedCompanyShares","partnerships","insurancePayments","capitalRedemptionPolicy","bankAccounts","partInAnEstate","assetsOutsideOfFinland","vehicles","otherAssets","EstateInventory","attachmentFile","addressAbroad","decedent","widow","beneficiaries","advancements","gifts","decedentTotalAssets","decedentNonMaritalRightAssets","decedentAssets","decedentTotalLiabilities","decedentLiabilities","widowTotalAssets","widowAssets","reliefRequested","extensionRequested","widowRefusesAdjustment","lastWill","widowRightToHome","otherPossession","assetInherited","widowAssetInherited","taxPaidToOtherCountry","AddressEditor","internationalAddress","state","e","change","this","_","set","setState","refreshProperties","entity","TextField","onChange","handleChange","bind","multiline","rowsMax","React","Component","PersonEditor","showPhone","showSSN","showDecedent","InputLabelProps","shrink","GiftEditor","refresh","array","index","currencySymbol","outputFormat","decimalCharacter","digitGroupSeparator","MultiValuePicker","selectableValues","labelId","MenuItem","InsurancePaymentEditor","insuranceType","insuranceNumber","fraction","numenator","denominator","FractionEditor","getNum","getDenom","BeneficiaryEditor","entityName","taxCategory","inheritanceShare","handleChildChange","testamentShare","legalShare","legate","legateDescription","legateShare","workCompensation","allowance","paddingTop","AdvancementCtrl","advancementGiver","maritialRight","valueDetails","details","companyValueDetails","businessId","totalValueDetails","numberOfItems","ValueDetailsEditor","showBusinessId","showNumberOfItems","AssetEditor","itemName","list","v4","splice","setChildState","indexOf","addNewItem","EstateInventoryEditor","checked","arrayName","sum","Number","parseFloat","split","join","Divider","addNewRow","advancementSum","giftsSum","insurancesSum","Checkbox","handleCheckbox","Home","personRelations","find","role","birthday","year","day","deathInfo","cancellationOfDeath","relatedPerson","targetPersonSsn","NotifierType","CustomizedGenericFormTypes","DEATH_REPORT","CHILDS_BIRTH","TERMINATION_OF_EMPLOYMENT","MARRIAGE","GenericFormTypeTranslations","DIVORCE","EMPLOYMENT","START_OF_STUDIES","RETIREMENT","OTHER","NotifierTypeTranslations","SSN","ORGANIZATION","DOCTOR","OmaElamaFunctions","fetchUserMessages","resultsToMessages","jsonData","jsonDataToObject","eventData","subType","initialState","isLoadingPerson","loadAppStateAsync","parsePerson","forEach","pr","decodedToken","firstNames","addresses","Login","ApiContext","setSsn","doLogin","login","currentTarget","top","flexDirection","alignItems","xl","borderRadius","Toolbar","Main","Section","section","Heading1","Heading2","WillView","roundToPrecision","precision","Math","pow","round","EPSILON","fractionToPercentage","numeratorAndDenominator","parseInt","percentageToFraction","percentage","numerator","divisor","greatestCommonDivisor","createNewAsset","uuidv4","AssetEditModal","isEditMode","setEditMode","setAsset","onClickSave","onClickCancel","updateAssetName","renderSelectViewAssetRow","background","highlightLight1","left","right","tableLayout","colSpan","iconRight","AssetEditRow","updateAsset","deleteAsset","createNewPerson","isPersonModalOpen","setPersonModalOpen","modalPerson","setModalPerson","isAssetModalOpen","setAssetModalOpen","modalAsset","setModalAsset","updateParty","deleteParty","setPerson","concat","PartyEditRow","isModalOpen","setModalOpen","min","max","updateShare","PersonEditModal","knownPerson","updateSsn","WillEdit","toISOString","substring","isAssetModalEditMode","setAssetModalEditMode","prevWill","assetId","rows","PrenuptialView","PrenuptialEdit","prevPrenup","position","cloneDocument","document","cloneNode","parseXml","xmlString","DOMParser","parseFromString","xmlDocument","XMLSerializer","serializeToString","updateElement","elementPath","updateFunction","element","queryFirstElement","warn","queryFirstNode","context","xPathExpression","XPathEvaluator","evaluate","XPathResult","ANY_UNORDERED_NODE_TYPE","singleNodeValue","queryFirstText","textContent","node","nodeType","Node","ELEMENT_NODE","Error","queryNodes","results","nodeIterator","UNORDERED_NODE_ITERATOR_TYPE","thisNode","iterateNext","useUsers","user","users","setUsers","responseType","saveUser","documentElement","getAttribute","put","updateUser","insertUser","EditUserModal","setUser","username","password","updatePassword","newValue","prevUser","parentPath","elementName","beforeSibling","parentNode","newChild","createElement","sibling","childNode","childNodes","siblingName","nodeName","insertBefore","ensureElementAndUpdate","el","UserList","modalUser","setModalUser","nodes","queryElements","sort","aName","bName","superuser","modals","setModals","company","workRole","startDate","endDate","getColorByTransactionCode","transactionCode","String","successBase","successSecondary","alertBase","warningBase","createIncomeDatasetsForChart","transactionCodes","aggregates","groupTransactionsIntoCodes","labels","months","datasets","entries","stack","backgroundColor","201","213","402","413","414","options","scales","xAxes","stacked","yAxes","IncomeView","incomeDatasets","setTransactionCodes","transactionCodesResult","useIncome","Forms","NotificationBox","NotificationContainer","level","determineIcon","message","closable","GenericForm","notificationMessage","setNotificationMessage","notificationLevel","setNotificationLevel","FormikForm","withFormik","mapPropsToValues","validationSchema","formikBag","status","error","createGenericFormikForm","defaultValues","personalIdentityCode","description","tapahtumatunnus","viranomaiskoodi","arkistonumero","kuolinaikaarvioitu","kuolemanperuutus","doctorIdentifier","hospitalIdentifier","Yup","required","notRequired","defined","Form","errors","handleBlur","touched","autoComplete","onBlur","Boolean","helperText","ReportDeathForm","notifier","sairaalanidtunnus","eventTime","postData","payload","DeathReportEvent","Data","Person","givenName","familyName","ChangeEvent","DefaultGenericFormEvent","event","TerminationOfEmploymentEvent","reason","reasonText","readmission","MarriageEvent","relations","takeOpenFiscaValue","ReasonOfTermination","EventSubject","EventType","enumKey","GenericFormTypeByValue","EventContent","subject","widowData","henkilöt","leski","isGranted","oikeutettu_leskeneläkkeeseen","decision","argument","oikeutettu_leskeneläkkeeseen_perustelut","familyData","perheet","lapsilisän_määrä","lapsilisän_määrä_perustelut","GenericEventContent","XRoadContent","StringEventContent","OpenFiscaContent","MessageListItem","readMessage","open","receiverId","postReadMessage","SUCCESS","unReadMessage","postUnReadMessage","deleteMessage","postDeletedMessage","onOpenChange","highlightDark1","createdOn","XRoadSubject","body","Messages","m1","m2","getTime","openAllText","ariaOpenAllText","closeAllText","ariaCloseAllText","dateOfBirth","motherSsn","fatherSsn","gender","FormControl","FormLabel","RadioGroup","row","aria-labelledby","FormControlLabel","control","Radio","FormHelperText","ChildsBirth","PARENT","employerIdentifier","oneOf","FIXED_TERM","RESIGNATION","TERMINATION","CANCELLATION","TerminationOfEmployment","eventType","customEvent","notifierId","notifierType","when","is","test","val","includes","DefaultGenericForm","dateOfMarriage","spouseSsn","notifierIdentifier","organisationIdentifier","MarriageForm","organisaationidtunnus","createContext","App","loadAppState","Provider","styles","accentTertiaryDark1","bodySemiBold","Marriage","Consumer","DashboardWork","DashboardFinance","DashboardEducation","SettingsDashboard","ReactModal","setAppElement","ReactDOM","getElementById"],"mappings":"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","file":"static/js/main.e34da9a7.chunk.js","sourcesContent":["import styled from '@emotion/styled'\nimport {css} from \"@emotion/core\";\nimport {Heading, suomifiDesignTokens as tokens} from \"suomifi-ui-components\";\n\nexport const panelWithShadowCss = css`\n background-color: ${tokens.colors.whiteBase};\n box-shadow: #29292924 0px 1px 2px 0px, #2929291f 0px 1px 5px 0px;\n border-radius: 2px;\n padding: ${tokens.spacing.m};\n`;\n\nexport const panelWithBorderCss = css`\n background-color: ${tokens.colors.whiteBase};\n border: 1px solid ${tokens.colors.depthLight3};\n padding: ${tokens.spacing.l};\n`;\n\nexport const MainWithBorder = styled.main`\n ${panelWithBorderCss};\n min-height: 400px;\n`;\n\nexport const PanelWithBorder = styled.div`\n ${panelWithBorderCss}\n`;\n\nexport const PanelWithShadow = styled.div`\n ${panelWithShadowCss}\n`;\n\nexport const HeaderBackground = styled.div`\n background: ${tokens.colors.whiteBase};\n border-top: 4px solid ${tokens.colors.brandBase};\n border-bottom: 1px solid ${tokens.colors.depthLight3};\n padding: ${tokens.spacing.m} 0;\n`;\n\nexport const TopNavigationBackground = styled.div`\n background: ${tokens.colors.whiteBase};\n border-bottom: 1px solid ${tokens.colors.depthLight3};\n`;\n\nexport const ContentContainer = styled.div`\n box-sizing: border-box;\n margin: 0 auto;\n padding: 0 ${tokens.spacing.m};\n width: 100%;\n max-width: 1200px;\n`;\n\nexport const Heading1WithBottomBorder = styled(Heading)`\n border-bottom: 1px solid ${tokens.colors.depthLight3};\n padding-bottom: ${tokens.spacing.s};\n`;\n\nexport const Heading2WithBottomBorder = styled(Heading)`\n border-bottom: 1px solid ${tokens.colors.depthLight3};\n padding-bottom: ${tokens.spacing.s};\n`;\n\nexport const FlexRow = styled.div`\n display: flex;\n justify-content: space-between;\n width: 100%;\n & > * {\n flex: 1;\n }\n & > * + * {\n margin-left: ${tokens.spacing.l}; \n };\n @media (max-width: 800px) {\n display: block;\n & > * + * {\n margin-left: 0;\n margin-top: ${tokens.spacing.l};\n }\n }\n`;\n\nexport const FlexCol = styled.div`\n display: flex;\n flex-direction: column;\n & > * + * {\n margin-top: ${tokens.spacing.l}; \n };\n`;\n\nexport const FlexColTight = styled.div`\n display: flex;\n flex-direction: column;\n & > * + * {\n margin-top: ${tokens.spacing.m}; \n };\n`;\n\nexport const Table = styled.table`\n border-collapse: collapse;\n font-size: ${tokens.values.typography.bodyText.fontSize.value}${tokens.values.typography.bodyText.fontSize.unit};\n margin: ${tokens.spacing.m} 0;\n table-layout: fixed;\n width: 100%;\n & > thead > tr > th,\n & > thead > tr > td,\n & > tbody > tr > th,\n & > tbody > tr > td {\n border-bottom: 1px solid ${tokens.colors.depthLight2};\n padding: ${tokens.spacing.s};\n text-align: left; \n vertical-align: middle;\n };\n & > thead > tr > th.right,\n & > thead > tr > td.right,\n & > tbody > tr > th.right,\n & > tbody > tr > td.right {\n text-align: right; \n };\n & > thead > tr > th.center,\n & > thead > tr > td.center,\n & > tbody > tr > th.center,\n & > tbody > tr > td.center {\n text-align: center; \n };\n & > tbody > tr.nested-row > th {\n padding-left: ${tokens.spacing.l};\n };\n`;\n\nexport const TableSmall = styled.table`\n border-collapse: collapse;\n font-size: ${tokens.values.typography.bodyTextSmall.fontSize.value}${tokens.values.typography.bodyTextSmall.fontSize.unit};\n margin: ${tokens.spacing.m} 0;\n table-layout: fixed;\n width: 100%;\n & > thead > tr > th,\n & > thead > tr > td,\n & > tbody > tr > th,\n & > tbody > tr > td {\n border-bottom: 1px solid ${tokens.colors.depthLight2};\n padding: ${tokens.spacing.xs};\n text-align: left; \n vertical-align: middle;\n };\n & > thead > tr > th.right,\n & > thead > tr > td.right,\n & > tbody > tr > th.right,\n & > tbody > tr > td.right {\n text-align: right; \n };\n & > thead > tr > th.center,\n & > thead > tr > td.center,\n & > tbody > tr > th.center,\n & > tbody > tr > td.center {\n text-align: center; \n };\n & > tbody > tr.nested-row > th {\n padding-left: ${tokens.spacing.l};\n };\n`;\n\nexport const TableStyleRow = styled.div`\n border-bottom: 1px solid ${tokens.colors.depthLight2};\n display: flex;\n justify-content: space-between;\n align-items: center;\n width: 100%;\n & > * {\n flex: 1;\n padding: ${tokens.spacing.s};\n } \n`;\n\nexport const Placeholder = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n color: ${tokens.colors.depthBase};\n height: 100%;\n`;\n\nexport const HideOnSmallDisplay = styled.span`\n @media (max-width: 800px) {\n display: none;\n }\n`;\n\nexport const MessagesDiv = styled.span`\n & > span.viestit {\n margin-left: ${tokens.spacing.xs};\n vertical-align: sub;\n };\n`;\n\nexport const HorizontalPadding = styled.div`\n padding: \"18.5px 0\";\n`\n","import styled from '@emotion/styled'\nimport {css} from \"@emotion/core\";\nimport {Button, Icon, suomifiDesignTokens as tokens} from \"suomifi-ui-components\";\n\nexport const inputCss = css`\n border: 1px solid ${tokens.colors.depthLight3};\n border-radius: 2px;\n box-sizing: border-box;\n font-family: ${tokens.values.typography.bodyText.fontFamily};\n font-size: ${tokens.values.typography.bodyText.fontSize.value}${tokens.values.typography.bodyText.fontSize.unit};\n font-weight: ${tokens.values.typography.bodyText.fontWeight};\n line-height: ${tokens.values.typography.bodyText.lineHeight.value};\n margin: ${tokens.spacing.xxs} 0;\n padding: ${tokens.spacing.s};\n max-width: 100%;\n width: 100%;\n`;\n\nexport const Input = styled.input`\n ${inputCss}\n`;\n\nexport const InputNumber = styled.input`\n ${inputCss}\n width: 3em;\n text-align: right;\n border: 1px solid ${tokens.colors.depthLight2};\n &::-webkit-outer-spin-button,\n &::-webkit-inner-spin-button {\n -webkit-appearance: none;\n }\n`;\n\nInputNumber.defaultProps = {type: 'number'};\n\nexport const InputRadio = styled.input`\n font-family: ${tokens.values.typography.bodyText.fontFamily};\n font-size: ${tokens.values.typography.bodyText.fontSize.value}${tokens.values.typography.bodyText.fontSize.unit};\n font-weight: ${tokens.values.typography.bodyText.fontWeight};\n line-height: ${tokens.values.typography.bodyText.lineHeight.value};\n`;\n\nInputRadio.defaultProps = {type: 'radio'};\n\nexport const TextArea = styled.textarea`\n ${inputCss}\n`;\n\nexport const Select = styled.select`\n ${inputCss}\n display: block;\n background: ${tokens.colors.whiteBase};\n -moz-appearance: none;\n -webkit-appearance: none;\n`;\n\nexport const InputIcon = styled(Icon)`\n top: 50%;\n position: absolute;\n right: ${tokens.spacing.m};\n margin-top: -0.5em;\n pointer-events: none;\n`;\n\nexport const ButtonLink = styled.button`\n background: none;\n border: none;\n color: ${tokens.colors.highlightBase};\n cursor: pointer;\n font-family: ${tokens.values.typography.bodyText.fontFamily};\n font-size: ${tokens.values.typography.bodyText.fontSize.value}${tokens.values.typography.bodyText.fontSize.unit};\n font-weight: ${tokens.values.typography.bodyText.fontWeight};\n line-height: ${tokens.values.typography.bodyText.lineHeight.value};\n padding: 0;\n`;\n\nexport const ButtonLinkSmall = styled.button`\n background: none;\n border: none;\n color: ${tokens.colors.highlightBase};\n cursor: pointer;\n font-family: ${tokens.values.typography.bodyTextSmall.fontFamily};\n font-size: ${tokens.values.typography.bodyTextSmall.fontSize.value}${tokens.values.typography.bodyTextSmall.fontSize.unit};\n font-weight: ${tokens.values.typography.bodyTextSmall.fontWeight};\n line-height: ${tokens.values.typography.bodyTextSmall.lineHeight.value};\n padding: 0;\n &.right {\n float: right;\n }\n`;\n\nexport const ButtonSecondaryDark = styled(Button)`\n color: ${tokens.colors.blackBase} !important;\n border: 1px solid ${tokens.colors.depthLight3} !important;\n & > svg {\n fill: ${tokens.colors.depthDark1};\n }\n`;\n\nexport const ButtonSecondaryDarkNoBorder = styled(Button)`\n color: ${tokens.colors.blackBase} !important;\n background: none !important;\n & > svg {\n fill: ${tokens.colors.depthDark1};\n }\n`;\n\nexport const ButtonIconOnly = styled(Button)`\n & > svg {\n margin: 0 !important;\n };\n @media (max-width: 800px) {\n padding: ${tokens.spacing.s};\n };\n`;\n","export interface Person {\n id: string,\n ssn?: string,\n firstName: string,\n lastName: string,\n fullName: string,\n birthday?: Date,\n primaryLanguage: string,\n nationality: string,\n childCount: number,\n dateOfDeath?: Date,\n deathInfo?: PersonDeathInfo,\n address?: Address,\n personRelations?: PersonRelation[],\n}\n\nexport enum Relationship {\n CHILD = 1,\n SPOUSE = 2,\n PARENT = 3,\n SIBLING = 4,\n}\n\nexport interface PersonDeathInfo {\n id: string,\n personID: string,\n code: string,\n authorityCode: string,\n archiveNumber: string,\n deathTimeEstimated: boolean,\n cancellationOfDeath: boolean,\n notifierType: string,\n notifierCode: string,\n description?: string,\n}\n\nexport interface Address {\n street: string,\n zip: string,\n city: string,\n}\n\nexport interface PersonRelation {\n id: string,\n ownerID: string,\n ownerPersonSsn: string,\n targetPersonSsn: string,\n relatedPerson: Person,\n role: Relationship\n}\n\nexport interface Asset {\n id: string,\n name: string,\n value: number,\n count: number,\n}\n\nexport interface EstateParty {\n relationship: EstateRole,\n person: Person,\n}\n\nexport enum EstateRole {\n WIDOW = 2,\n HEIR = 3,\n WILL_BENEFICIARY = 4,\n}\n\nexport interface Will {\n id: string,\n clause: string,\n date: string,\n assets: WillAsset[],\n}\n\nexport interface WillAsset extends Asset {\n parties: Party[],\n}\n\nexport interface Party {\n share: string,\n person: Person,\n}\n\nexport interface Prenuptial {\n id: string,\n type: PrenuptialType,\n clause: string,\n date: string,\n parties: Person[],\n}\n\nexport enum PrenuptialType {\n MUTUALLY_EXCLUSIVE = 1,\n MUTUALLY_PARTIALLY_EXCLUSIVE = 2,\n ONE_SIDED_EXCLUSIVE = 3,\n ONE_SIDED_PARTIALLY_EXCLUSIVE = 4,\n}\n\nexport interface Transaction {\n amount: number,\n type: {\n label: string,\n code: string\n },\n companyName: string,\n companyBusinessId: string,\n time: Date\n}\n\ninterface TransactionTotalsByCode {\n code: string,\n total: number\n}\nexport interface TransactionsTotals {\n gross: number,\n net: number,\n monthlyAverage: number,\n monthlyMinimum: number,\n monthlyMaximum: number,\n groupedByCode: Array\n}\n\nexport interface Message {\n id: string,\n createdOn: Date,\n subject: string,\n jsonData: any,\n type: MessageType,\n subType?: string,\n senderId?: string,\n receiverId?: string,\n source?: string,\n isRead: boolean\n}\n\nexport enum MessageType {\n MESSAGE = \"message\",\n EVENT = \"event\",\n}\n\nexport interface SimpleMessage {\n body: string\n}\n\nexport interface EventGridEvent {\n Id: string,\n Subject: string,\n Data: T,\n EventType: string,\n DataVersion: string,\n MetadataVersion: string,\n EventTime: Date,\n Topic: string\n}","import {EstateRole, Message, MessageType, PrenuptialType} from \"./DomainTypes\";\n\nexport const NULL_PERSON = {\n id: \"\",\n firstName: \"\",\n lastName: \"\",\n fullName: \"\",\n primaryLanguage: \"fi\",\n nationality: \"FIN\",\n childCount: 0,\n};\n\nexport const fiLabelForRelationship = (r: EstateRole): string => {\n switch (r) {\n case EstateRole.HEIR:\n return \"rintaperillinen\";\n case EstateRole.WIDOW:\n return \"leski\";\n case EstateRole.WILL_BENEFICIARY:\n return \"testamentinsaaja\";\n default:\n return \"\";\n }\n};\n\nexport const fiLabelForPrenuptialType = (t: PrenuptialType): string => {\n switch (t) {\n case PrenuptialType.MUTUALLY_EXCLUSIVE:\n return \"Avio-oikeuden täydellisesti poissulkeva ehto\";\n case PrenuptialType.MUTUALLY_PARTIALLY_EXCLUSIVE:\n return \"Osittainen avioehto\";\n case PrenuptialType.ONE_SIDED_EXCLUSIVE:\n return \"Yksipuolinen täydellisesti poissulkeva avioehto\";\n case PrenuptialType.ONE_SIDED_PARTIALLY_EXCLUSIVE:\n return \"Yksipuolinen osittainen avioehto\";\n default:\n return \"\";\n }\n};\n\nexport const DUMMY_MESSAGES: Message[] = [\n {\n id: \"1000\",\n subject: \"Moikka moi!\",\n jsonData: { body: \"Kaunis päivä tänään.\" },\n type: MessageType.MESSAGE,\n createdOn: new Date(),\n senderId: \"aaaa\",\n source: \"Matti Meikäläinen\",\n isRead: true\n },\n {\n id: \"1001\",\n subject: \"Heippa hei!\",\n jsonData: { body: \"Seikka on saletti.\" },\n type: MessageType.MESSAGE,\n createdOn: new Date(),\n senderId: \"bbbb\",\n source: \"Maija Meikäläinen\",\n isRead: false\n },\n {\n id: \"\",\n createdOn: new Date(),\n subject: \"\",\n jsonData: {\n id: \"d662e7a4-e0d8-4147-86bd-51fc7812cdd5\",\n subject: \"kuoleman-raportointi\",\n data: {\n ChangeEvent: {\n description: \"Selite\",\n tapahtumatunnus: \"Tunnus\",\n viranomaiskoodi: \"Koodi\",\n arkistonumero: \"Numero\",\n kuolinaikaarvioitu: true,\n kuolemanperuutus: false\n },\n Ilmoittaja: {\n laakarintunnus: \"1234\",\n sairaalanidtunnus: \"5678\"\n },\n Person: {\n givenName: \"Testi\",\n familyName: \"Henkilö\",\n dateOfDeath: new Date(Date.parse(\"2021-11-01T11:30:00\")),\n personalIdentityCode: \"123456-7890\"\n }\n },\n eventType: \"Kuolintieto\",\n dataVersion: \"0.01\",\n metadataVersion: \"1\",\n eventTime: \"2021-11-23T09:30:21.5549516Z\",\n topic: \"/subscriptions/a57cfd5a-d28f-4d73-9818-db925524f274/resourceGroups/minisuomi-laku-rg/providers/Microsoft.EventGrid/topics/omaelama-kuoleman-raportointi\"\n },\n type: MessageType.EVENT,\n isRead: false\n }\n];\n","import axios, { AxiosRequestConfig, AxiosResponse } from 'axios';\nimport { Message } from '../components/common/DomainTypes';\nimport { GenericFormPayload } from '../components/forms/GenericFormTypes';\nimport { DeathReport } from \"../components/forms/reportDeath/model/ReportDeathFormModel\";\nimport { Assets } from '../model/assets';\n\nconst apiRootUrl = process.env.REACT_APP_API_ROOT_URL || 'http://localhost:7071/api'\nconst apiKey = process.env.REACT_APP_API_KEY\nconst tokenKey = \"x-omaelama-access-token\";\n\nconst requestInterceptor = (config: AxiosRequestConfig) => {\n const token = sessionStorage.getItem(tokenKey);\n if (token && config.headers) {\n config.headers[tokenKey] = token;\n }\n return config;\n}\n\nconst responseInterceptor = (response: AxiosResponse) => {\n const token = response.headers[tokenKey];\n if (token) {\n sessionStorage.setItem(tokenKey, token);\n }\n return response;\n}\n\nconst omaelamaFunctions = axios.create({\n baseURL: apiRootUrl,\n headers: {\n \"x-functions-key\": apiKey\n },\n withCredentials: true\n});\n\nomaelamaFunctions.interceptors.request.use(requestInterceptor);\nomaelamaFunctions.interceptors.response.use(responseInterceptor);\n\nexport interface JsonResponse {\n status: Status;\n message: string;\n}\n\nexport enum Status {\n SUCCESS = \"success\",\n WARNING = \"warning\",\n ERROR = \"error\",\n}\n\nexport default omaelamaFunctions;\n\nexport async function login(ssn: string): Promise> {\n return omaelamaFunctions.get(\"/LoginUser\", {params: {ssn}});\n}\n\nexport async function logout(): Promise {\n sessionStorage.removeItem(tokenKey);\n return new Promise(resolve => resolve(\"Logged out\"));\n}\n\nexport async function fetchCurrentUser(): Promise {\n const token = sessionStorage.getItem(tokenKey);\n if (token) {\n return omaelamaFunctions.get(\"/GetCurrentUser\");\n }\n return new Promise((resolve, reject) => reject(\"Not logged in\"));\n}\n\nexport async function GetUserMessages(): Promise> {\n const token = sessionStorage.getItem(tokenKey);\n if (token) {\n return omaelamaFunctions.get(\"/Messages/Search/User\");\n }\n return new Promise((resolve, reject) => reject(\"Not logged in\"));\n}\n\nexport async function postReadMessage(msg: string): Promise> {\n return omaelamaFunctions.post(\"/Messages/Read\", null, {params: {msg}});\n}\n\nexport async function postUnReadMessage(msg: string): Promise> {\n return omaelamaFunctions.post(\"/Messages/UnRead\", null, {params: {msg}});\n}\n\nexport async function postDeletedMessage(msg: string): Promise> {\n return omaelamaFunctions.post(\"/Messages/Delete\", null, {params: {msg}});\n}\n\nexport async function sendGenericForm(data: GenericFormPayload): Promise> {\n return omaelamaFunctions.post(\"/PostGenericForm\", data);\n}\n\nexport async function GetPersonAssets(personId: string): Promise> {\n return omaelamaFunctions.get(`/Persons/${personId}/Assets`);\n}","/** @jsx jsx */\nimport {jsx} from '@emotion/core'\nimport React, {useContext} from 'react';\nimport {useHistory} from \"react-router\";\nimport {suomifiDesignTokens as tokens} from 'suomifi-ui-components';\nimport {ButtonLinkSmall} from \"./InputStyles\";\nimport {AppContext} from '../../App';\nimport {NULL_PERSON} from \"./DefaultValues\";\nimport { logout } from '../../api/omaelama-functions';\n\nconst Header: React.FC = () => {\n const history = useHistory();\n const [appState, setAppState] = useContext(AppContext);\n const person = appState.person;\n\n return (\n
\n
\n
\n Omaelämä\n
\n\n
\n {person === NULL_PERSON ? '' :\n \n {person.firstName} {person.lastName}\n
\n {\n logout()\n .then(res => {\n setAppState(appState => ({...appState, person: NULL_PERSON}));\n history.push('/kirjaudu');\n });\n }}>\n Kirjaudu ulos\n \n
\n }\n
\n
\n
\n );\n};\n\nexport default Header;\n","import React, { useContext } from 'react'\nimport { Link, useRouteMatch } from \"react-router-dom\"\nimport { suomifiDesignTokens as tokens, StaticChip } from 'suomifi-ui-components'\nimport { AppContext } from \"../../App\"\nimport { NULL_PERSON } from \"./DefaultValues\"\nimport { LanguageMenu, LanguageMenuItem } from 'suomifi-ui-components';\nimport { MessagesDiv } from './CommonStyles'\n\nconst Navigation: React.FC = () => {\n const [appState] = useContext(AppContext);\n\n return (\n \n )\n}\n\nconst NavItem: React.FC = ({ to, label }: NavItemProps) => {\n const [appState] = useContext(AppContext);\n const unreadMessages = appState.messages.filter(m => !m.isRead).length;\n\n let match = useRouteMatch({\n path: to,\n exact: to === '/'\n });\n\n return (\n \n {label}\n {to === '/viestit' && unreadMessages > 0 && {unreadMessages}}\n \n );\n};\n\ninterface NavItemProps {\n to: string;\n label: string;\n}\n\nexport default Navigation;\n","import React from \"react\";\nimport {Heading, suomifiDesignTokens as tokens} from \"suomifi-ui-components\";\nimport {MainWithBorder} from \"./CommonStyles\";\n\nconst Layout: React.FC = (props) => {\n return (\n
\n \n {props.title}\n \n \n {props.children}\n \n
\n );\n};\n\ninterface Props {\n title: string\n}\n\nexport default Layout;\n","import React from \"react\";\nimport Layout from \"../common/Layout\";\n\nconst About: React.FC = () => {\n return \n \n};\n\nexport default About;\n","import React, {useEffect, useRef} from \"react\";\nimport {select, Selection} from 'd3-selection'\nimport {hierarchy, HierarchyPointNode, tree} from 'd3-hierarchy'\nimport {suomifiDesignTokens as tokens} from 'suomifi-ui-components';\n\ntype SvgContainerSelection = Selection;\n\nconst Tree: React.FC = ({data, width = 400, height = 250}) => {\n const svgRef = useRef(null);\n\n function clean(selection: SvgContainerSelection) {\n selection\n .selectAll(\"g\")\n .remove();\n }\n\n function init(selection: SvgContainerSelection) {\n selection\n .attr(\"width\", width)\n .attr(\"height\", height)\n .append(\"g\")\n .attr(\"class\", \"g\")\n .attr(\"transform\", \"translate(\" + (width / 2) + \", 20)\");\n\n selection\n .select('g.g')\n .append(\"g\")\n .attr(\"class\", \"links\");\n\n selection\n .select('g.g')\n .append(\"g\")\n .attr(\"class\", \"nodes\");\n }\n\n //eslint-disable-next-line\n function stackChildren(node: HierarchyPointNode) {\n const children = node.children || [];\n\n let xOffset = 0;\n let yOffset = 0;\n\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n\n // position children at rows of 4\n if (i > 0 && i % 4 === 0) {\n xOffset = children[i - 4].x - child.x;\n yOffset += 30;\n }\n\n child.x += xOffset;\n child.y += yOffset;\n }\n\n children.forEach(stackChildren);\n }\n\n function draw(selection: SvgContainerSelection, root: HierarchyPointNode, horizontal?: boolean, mirrored?: boolean) {\n let nodeEnter = selection\n .select('g.nodes')\n .selectAll('circle.node')\n .data(root.descendants())\n .enter();\n\n // nodes\n nodeEnter\n .append('circle')\n .classed('node', true)\n .style('fill', tokens.colors.whiteBase)\n .attr('cx', d => (mirrored ? -1 : 1) * (horizontal ? d.y : d.x))\n .attr('cy', d => (mirrored ? -1 : 1) * (horizontal ? d.x : d.y))\n .attr('r', 20);\n\n // node labels\n nodeEnter\n .append(\"text\")\n .attr('x', d => (mirrored ? -1 : 1) * (horizontal ? d.y : d.x))\n .attr('y', d => (mirrored ? -1 : 1) * (horizontal ? d.x : d.y))\n .attr(\"dy\", \"0.3em\")\n .attr(\"style\", d => \"font-weight:\" + (d.parent === null ? 600 : 400))\n .style(\"text-anchor\", 'middle')\n .text(d => d.data.name);\n\n // links\n selection\n .select('g.links')\n .selectAll('line.link')\n .data(root.links())\n .enter()\n .append('line')\n .classed('link', true)\n .style('stroke', tokens.colors.depthLight2)\n .style('stroke-width', '3px')\n .attr('x1', d => (mirrored ? -1 : 1) * (horizontal ? d.source.y : d.source.x))\n .attr('y1', d => (mirrored ? -1 : 1) * (horizontal ? d.source.x : d.source.y))\n .attr('x2', d => (mirrored ? -1 : 1) * (horizontal ? d.target.y : d.target.x))\n .attr('y2', d => (mirrored ? -1 : 1) * (horizontal ? d.target.x : d.target.y));\n }\n\n useEffect(() => {\n const svgElement = select(svgRef.current);\n\n clean(svgElement);\n init(svgElement);\n\n const treeLayout = tree()\n .separation((a, b) => a.parent === b.parent ? 1 : 1.2)\n .nodeSize([65, 100]);\n\n draw(svgElement, treeLayout(hierarchy(data)), false, false);\n });\n\n return \n};\n\ninterface Props {\n data: TreeNode,\n width?: number,\n height?: number,\n}\n\nexport interface TreeNode {\n name: string,\n children?: TreeNode[],\n}\n\nexport default Tree;\n","/** @jsx jsx */\nimport {css, jsx} from '@emotion/core'\nimport React, {CSSProperties} from \"react\";\nimport {suomifiDesignTokens as tokens} from \"suomifi-design-tokens\";\nimport { Icon } from 'suomifi-ui-components';\n\nconst Spinner: React.FC = ({style}) => {\n return
\n \n
;\n};\n\ninterface Props {\n style?: CSSProperties\n}\n\nexport default Spinner;\n","import axios from \"axios\";\nimport {TreeNode} from \"../common/Tree\";\nimport {Person, Relationship} from \"../common/DomainTypes\";\n\nexport const getFamilyTree = (personId: string): Promise => {\n return axios(`${process.env.REACT_APP_API_URL}/henkilo/${personId}/sukupuu`)\n .then(res => {\n const personsById = res.data.Henkilo.reduce((map: any, person: any) => {\n map[person.Id] = person;\n return map;\n }, {});\n\n const findChildren = (id: string) => {\n if (!personsById[id]) {\n return [];\n }\n\n return personsById[id].Osapuoli\n .filter((o: any) => o.Suhdelaji === Relationship.CHILD)\n .map((o: any) => {\n return {name: o.Etunimi, children: findChildren(o.Id)}\n });\n };\n\n return findChildren(personId);\n });\n};\n\nexport const getSpouse = (personId: string): Promise => {\n return axios(`${process.env.REACT_APP_API_URL}/henkilo/${personId}/sukupuu`)\n .then(res => {\n\n const spouseArray =\n (res.data.Henkilo || [])\n .filter((person: any) => person.Id === personId)\n .flatMap((person: any) => person.Osapuoli)\n .filter((party: any) => party.Suhdelaji === Relationship.SPOUSE);\n\n return spouseArray && spouseArray.length > 0 ? mapPerson(spouseArray[0]) : null;\n });\n};\n\nconst mapPerson = (data: any): Person => {\n return {\n id: data.Id,\n ssn: data.Henkilotunnus,\n firstName: data.Etunimi,\n lastName: data.Sukunimi,\n fullName: `${data.Etunimi} ${data.Sukunimi}`,\n primaryLanguage: \"fi\",\n nationality: \"FIN\",\n childCount: 0,\n };\n};\n","import {useContext, useEffect, useState} from \"react\";\nimport {AppContext} from \"../../App\";\nimport {TreeNode} from \"../common/Tree\";\nimport {getFamilyTree} from \"./familyTreeApi\";\n\nexport function useFamilyTree() {\n const [appState] = useContext(AppContext);\n const person = appState.person;\n\n const [familyTree, setFamilyTree] = useState([]);\n const [loading, setLoading] = useState(false);\n\n useEffect(() => {\n setLoading(true);\n getFamilyTree(person.id)\n .then(parties => setFamilyTree(parties))\n .finally(() => setLoading(false));\n }, [person]);\n\n return {familyTree, loadingFamilyTree: loading};\n}\n","/** @jsx jsx */\nimport {jsx} from '@emotion/core'\nimport React, {useContext, useRef} from \"react\";\nimport {FlexColTight, panelWithShadowCss} from \"../common/CommonStyles\";\nimport {Heading, Link} from \"suomifi-ui-components\";\nimport Tree from \"../common/Tree\";\nimport {suomifiDesignTokens as sdt} from \"suomifi-design-tokens\";\nimport {AppContext} from \"../../App\";\nimport Spinner from \"../common/Spinner\";\nimport {useFamilyTree} from \"./useFamilyTree\";\nimport {useWidth} from \"../common/useWidth\";\n\nconst FamilyTreeWidget: React.FC = () => {\n const [appState] = useContext(AppContext);\n const person = appState.person;\n const {familyTree, loadingFamilyTree} = useFamilyTree();\n const ref = useRef(null);\n const width = useWidth(ref);\n\n // const exampleChildren = [\n // {\n // \"name\": \"Jari\",\n // \"children\": [\n // {\n // \"name\": \"Elias\"\n // },\n // {\n // \"name\": \"Juhani\"\n // },\n // {\n // \"name\": \"Simo\"\n // },\n // {\n // \"name\": \"Jessika\"\n // }\n // ]\n // },\n // {\n // \"name\": \"Sari\",\n // \"children\": [\n // {\n // \"name\": \"Matias\"\n // }, {\n // \"name\": \"Sirkka\"\n // }\n // ]\n // },\n // {\n // \"name\": \"Lauri\"\n // }\n // ];\n\n return (\n \n \n Sukulaisuussuhteet\n \n\n {loadingFamilyTree ? :\n
\n \n
\n }\n\n
\n \n \n Katso tarkemmat sukulaisuustiedot\n \n
\n
\n );\n};\n\nexport default FamilyTreeWidget;\n","import React, {useEffect, useState} from \"react\";\n\nexport function useWidth(ref: React.RefObject) {\n const [width, setWidth] = useState(0);\n\n useEffect(() => {\n setWidth(ref.current?.offsetWidth || 0);\n }, [ref]);\n\n return width;\n}\n","/** @jsx jsx */\nimport { jsx } from '@emotion/core'\nimport React from \"react\"\nimport { Heading, suomifiDesignTokens as tokens } from \"suomifi-ui-components\"\nimport { Link } from 'react-router-dom'\nimport { FlexColTight, panelWithShadowCss } from \"./CommonStyles\"\n\n\nconst Card: React.FC = props => {\n return (\n \n \n {props.title}\n \n\n {props.children}\n\n { \n !props.additionalInfo \n ? null\n : (
\n \n \n {props.additionalInfo.text}\n \n
)\n }\n
\n );\n};\n\ntype Props = {\n title: string,\n additionalInfo?: {\n text: string,\n path: string\n }\n}\n\n// Card.propTypes = {\n// title: PropTypes.string.isRequired,\n// addditionalInfo: PropTypes.shape({\n// text: PropTypes.string.isRequired,\n// path: PropTypes.string.isRequired\n// })\n// }\n\nexport default Card;\n","import axios from \"axios\";\nimport { Person } from \"../components/common/DomainTypes\";\nimport { Building, OwnerAddress, TaxAdministrationBuilding } from \"../model/assets\";\nimport { Company } from \"../model/company\";\n\nconst apiRootUrl = process.env.REACT_APP_RHR_API || 'http://localhost:7071/api'\n\nconst rhrApi = axios.create({\n baseURL: apiRootUrl\n});\n\nexport async function GetBuildingData(permanentBuildingId: string): Promise {\n return rhrApi.get(`${apiRootUrl}/${permanentBuildingId}/TaxAdministrationInfo`)\n .then(resp => resp.data)\n .catch(err => console.log(`No building info found by ID ${permanentBuildingId}: ${err}`));\n}\n\nexport async function GetAddress(permanentBuildingId: string): Promise {\n return rhrApi.get(`${apiRootUrl}/${permanentBuildingId}/OwnerAddress`)\n .then(resp => resp.data)\n .catch(err => console.log(`No building info found by ID ${permanentBuildingId}: ${err}`));\n}\n\nexport async function GetBuildingById(id: string): Promise {\n return rhrApi.get(`${apiRootUrl}/buildings/${id}`)\n .then(resp => resp.data)\n .catch(err => console.log(`No building found by ID ${id}: ${err}`));\n}\n\nexport async function GetInstanceByID(id: string): Promise {\n return rhrApi.get(`${apiRootUrl}/instance/${id}`)\n .then(resp => resp.data)\n .catch(err => console.log(`No instance found by ID ${id}: ${err}`));\n}","import axios from \"axios\";\nimport { OwnerAddress, TaxAdministrationBuilding } from \"../model/assets\";\n\nconst apiRootUrl = process.env.REACT_APP_TAX_ADMINISTRATION_API || 'http://localhost:7071/api'\n\nconst taxAdministrationApi = axios.create({\n baseURL: apiRootUrl\n});\n\nexport async function GetBuildingData(permanentBuildingId: string): Promise {\n return taxAdministrationApi.get(`${apiRootUrl}/${permanentBuildingId}/TaxAdministrationInfo`)\n .then(resp => resp.data)\n .catch(err => console.log(`No building info found by ID ${permanentBuildingId}: ${err}`));\n}\n\nexport async function GetAddress(permanentBuildingId: string): Promise {\n return taxAdministrationApi.get(`${apiRootUrl}/${permanentBuildingId}/OwnerAddress`)\n .then(resp => resp.data)\n .catch(err => console.log(`No building info found by ID ${permanentBuildingId}: ${err}`));\n}","import {Asset} from \"../common/DomainTypes\";\nimport axios from \"axios\";\nimport { GetPersonAssets } from \"../../api/omaelama-functions\";\nimport * as RhrApi from \"../../api/RhrApi\";\nimport * as TaxApi from \"../../api/TaxAdministrationApi\";\nimport { AssetsAppData, BuildingAppData, BuildingAsset } from \"../../model/assets\";\n\n// This fetches data from old test api. Not in use anymore.\nexport const getAssets = (personId: string): Promise => {\n return axios(`${process.env.REACT_APP_API_URL}/henkilo/${personId}/varallisuus`)\n .then(res => {\n return (res.data.Varallisuusera || []).map(mapAsset);\n });\n};\n\nconst mapAsset = (data: any): Asset => {\n return {\n id: data.Id,\n name: data.Nimi,\n value: data.Arvo,\n count: data.Lukumaara,\n };\n};\n\nexport const getPersonsAssetsAppData = (personId: string): Promise => {\n return GetPersonAssets(personId)\n .then(res => {\n if (res.data) {\n return createBuildingAppData(res.data.buildings);\n }\n })\n .then(res => {\n return {ownerId: personId, buildings: res} as AssetsAppData;\n });\n};\n\nconst createBuildingAppData = (buildings: BuildingAsset[]) => {\n return Promise.all(buildings.map(async b => {\n var buildingData = await RhrApi.GetBuildingById(b.permanentBuildingID);\n var rhrAddress = await RhrApi.GetAddress(b.permanentBuildingID)\n var taxAddress = await TaxApi.GetAddress(b.permanentBuildingID)\n var owner = await RhrApi.GetInstanceByID(b.ownerID);\n return { \n buildingData: {\n \"rhr\": buildingData\n }, \n address: {\n \"rhr\": rhrAddress, \n \"tax\": taxAddress\n }, \n owner: {\n \"rhr\": owner\n } \n } as BuildingAppData;\n }));\n}","import {useContext, useEffect, useState} from \"react\";\nimport {AppContext} from \"../../App\";\nimport {Asset} from \"../common/DomainTypes\";\nimport {getAssets} from \"./assetsApi\";\n\nexport function useAssets() {\n const [appState] = useContext(AppContext);\n const person = appState.person;\n\n const [assets, setAssets] = useState([]);\n const [loading, setLoading] = useState(false);\n\n useEffect(() => {\n setLoading(true);\n getAssets(person.id)\n .then(parties => setAssets(parties))\n .finally(() => setLoading(false));\n }, [person]);\n\n return {assets, loadingAssets: loading};\n}\n","/** @jsx jsx */\nimport {jsx} from '@emotion/core'\nimport React from \"react\";\nimport Card from '../common/Card';\nimport {TableSmall} from \"../common/CommonStyles\";\nimport Spinner from \"../common/Spinner\";\nimport {useAssets} from \"./useAssets\";\n\nconst AssetsWidget: React.FC = () => {\n const {assets, loadingAssets} = useAssets();\n\n return (\n \n {loadingAssets ? :\n \n \n {assets.map((entry, i) =>\n \n {entry.name}\n +{entry.value} €\n \n )}\n \n \n }\n \n )\n};\n\nexport default AssetsWidget;\n","import {Party, Person, Will, WillAsset} from \"../common/DomainTypes\";\nimport axios from \"axios\";\n\nexport const getWill = (personId: string): Promise => {\n return axios(`${process.env.REACT_APP_API_URL}/henkilo/${personId}/dokumentit/testamentti`)\n .then(res => res.data.Testamentti ? mapWill(res.data) : null);\n};\n\nexport const postWill = (person: Person, will: Will): Promise => {\n return axios.post(`${process.env.REACT_APP_API_URL}/henkilo/${person.id}/dokumentit/testamentti`, reverseMapWill(person, will));\n};\n\nconst mapWill = (data: any): Will => {\n return {\n id: data.Testamentti.id,\n clause: data.Testamentti.Klausuuli,\n date: data.Testamentti.Laatimispaivamaara,\n assets: data.Testamentti.Varallisuusera\n ? data.Testamentti.Varallisuusera.map(mapWillAsset)\n : []\n };\n};\n\nconst mapWillAsset = (data: any): WillAsset => {\n return {\n id: data.Id,\n name: data.Nimi,\n value: data.Arvo,\n count: data.Lukumaara,\n parties: data.Osapuoli ? data.Osapuoli.map(mapParty) : []\n };\n};\n\nconst mapParty = (data: any): Party => {\n return {\n share: data.Osuus,\n person: mapPerson(data.Henkilo),\n };\n};\n\nconst mapPerson = (data: any): Person => {\n return {\n id: data.Id,\n ssn: data.Henkilotunnus,\n firstName: data.Etunimi,\n lastName: data.Sukunimi,\n fullName: `${data.Etunimi} ${data.Sukunimi}`,\n primaryLanguage: \"fi\",\n nationality: \"FIN\",\n childCount: 0,\n };\n};\n\nconst reverseMapWill = (person: Person, will: Will): any => {\n return {\n Testamentti: {\n id: will.id,\n Klausuuli: will.clause,\n Laatimispaivamaara: will.date,\n Henkilo: reverseMapPerson(person),\n Varallisuusera: will.assets.map(reverseMapAsset)\n }\n };\n};\n\nconst reverseMapAsset = (asset: WillAsset): any => {\n return {\n Id: asset.id,\n Nimi: asset.name,\n Arvo: asset.value,\n Lukumaara: asset.count,\n Osapuoli: asset.parties.map(reverseMapParty),\n }\n};\n\nconst reverseMapParty = (party: Party): any => {\n return {\n Osuus: party.share,\n Henkilo: reverseMapPerson(party.person),\n }\n};\n\nconst reverseMapPerson = (person: Person): any => {\n return {\n Id: person.id,\n Henkilotunnus: person.ssn,\n Etunimi: person.firstName,\n Sukunimi: person.lastName,\n }\n};\n","export const NIL_UUID = '00000000-0000-0000-0000-000000000000';\n","import {useContext, useEffect, useState} from \"react\";\nimport {AppContext} from \"../../App\";\nimport {Will} from \"../common/DomainTypes\";\nimport {getWill, postWill} from \"./willApi\";\nimport {NIL_UUID} from \"../../utils/uuidUtils\";\n\nexport function useWill(initialValue?: Will) {\n const [appState] = useContext(AppContext)\n const person = appState.person;\n\n const [will, setWill] = useState(initialValue ? initialValue : {\n id: NIL_UUID,\n clause: '',\n date: '0000-00-00',\n assets: [],\n });\n\n const [loading, setLoading] = useState(false);\n\n useEffect(() => {\n setLoading(true);\n getWill(person.id)\n .then(will => will && setWill(will))\n .finally(() => setLoading(false));\n }, [person]);\n\n const saveWill = (): Promise => {\n return postWill(person, will);\n };\n\n return {will, setWill, loadingWill: loading, saveWill};\n}\n","export const currentIsoDate = (): string => {\n return new Date().toISOString().substring(0, 10);\n};\n\nexport const currentTimestamp = (): string => {\n return Date.now().toString(10);\n};\n\nexport const toFiDateString = (isoDate: string) => {\n return new Date(isoDate).toLocaleDateString('fi-FI');\n};\n\nexport const toDateString = (date?: Date | string) => {\n if (date instanceof Date) {\n date.toLocaleDateString('fi-FI');\n }\n else if (date) {\n return new Date(date).toLocaleDateString('fi-FI');\n }\n}","/** @jsx jsx */\nimport {jsx} from '@emotion/core'\nimport React from \"react\";\nimport {Button, Heading, suomifiDesignTokens as sdt} from \"suomifi-ui-components\";\nimport {FlexColTight, panelWithShadowCss, Placeholder, TableSmall} from \"../common/CommonStyles\";\nimport Spinner from \"../common/Spinner\";\nimport {Link, useHistory} from \"react-router-dom\";\nimport {Party, Will, WillAsset} from \"../common/DomainTypes\";\nimport {useWill} from \"./useWill\";\nimport {NIL_UUID} from \"../../utils/uuidUtils\";\nimport {toFiDateString} from \"../../utils/dateUtils\";\n\nconst WillWidget: React.FC = () => {\n const history = useHistory();\n const {will, loadingWill} = useWill();\n\n const renderWill = (will: Will) => (\n
\n {will.clause}\n \n \n {will.assets.map((asset, i) => renderAsset(asset, i))}\n \n \n
\n );\n\n const renderAsset = (asset: WillAsset, i: number) => (\n \n \n {asset.name}
\n +{asset.value} €\n \n \n
    \n {asset.parties.map((party, j) => renderParty(party, j))}\n
\n \n \n );\n\n const renderParty = (party: Party, i: number) => (\n
  • \n {party.person.firstName} {party.person.lastName}\n  \n {party.share} osaa\n
  • \n );\n\n const renderCallToWill = () => (\n \n
    \n Testamenttia ei ole vielä laadittu\n
    \n \n
    \n );\n\n return (\n \n \n Testamentti\n \n\n
    \n {loadingWill\n ? \n : will.id !== NIL_UUID\n ? renderWill(will)\n : renderCallToWill()}\n
    \n\n
    \n \n \n Katso koko testamentti\n  \n {will.id !== NIL_UUID\n ? \n (päivitetty {toFiDateString(will.date)})\n : ''}\n \n
    \n
    \n );\n};\n\nexport default WillWidget;\n","import {EstateParty, Person} from \"../common/DomainTypes\";\nimport axios from \"axios\";\n\nexport const getParties = (personId: string): Promise => {\n return axios(`${process.env.REACT_APP_API_URL}/henkilo/${personId}/kuolinpesaosakkaat`)\n .then(res => {\n return (res.data.Henkilo || [])\n .map(mapParty)\n .filter((party: EstateParty) => party.person.id !== personId);\n });\n};\n\nconst mapParty = (data: any): EstateParty => {\n return {\n relationship: data.Suhde ? data.Suhde.Roolilaji : 0,\n person: mapPerson(data)\n }\n};\n\nconst mapPerson = (data: any): Person => {\n return {\n id: data.Id,\n ssn: data.Henkilotunnus,\n firstName: data.Etunimi,\n lastName: data.Sukunimi,\n fullName: `${data.Etunimi} ${data.Sukunimi}`,\n primaryLanguage: \"fi\",\n nationality: \"FIN\",\n childCount: 0,\n address: {\n street: `${data.Kadunnimi} ${data.Osoitenumero}`,\n zip: data.Postinumero,\n city: data.Postitoimipaikka,\n }\n }\n};\n","import {useContext, useEffect, useState} from \"react\";\nimport {AppContext} from \"../../App\";\nimport {EstateParty} from \"../common/DomainTypes\";\nimport {getParties} from \"./partiesApi\";\n\nexport function useParties() {\n const [appState] = useContext(AppContext)\n const person = appState.person;\n\n const [parties, setParties] = useState([]);\n const [loading, setLoading] = useState(false);\n\n useEffect(() => {\n setLoading(true);\n getParties(person.id)\n .then(parties => setParties(parties))\n .finally(() => setLoading(false));\n }, [person]);\n\n return {parties, loadingParties: loading};\n}\n","/** @jsx jsx */\nimport {jsx} from '@emotion/core'\nimport React from \"react\";\nimport {FlexColTight, panelWithShadowCss, TableSmall} from \"../common/CommonStyles\";\nimport {Heading, Link} from \"suomifi-ui-components\";\nimport {suomifiDesignTokens as sdt} from \"suomifi-design-tokens\";\nimport Spinner from \"../common/Spinner\";\nimport {fiLabelForRelationship} from \"../common/DefaultValues\";\nimport {useParties} from \"./useParties\";\n\nconst PartiesWidget: React.FC = () => {\n const {parties, loadingParties} = useParties();\n\n return (\n \n \n Osakkaat\n \n\n {loadingParties ? :\n \n \n {parties.map((entry, i) => {\n return \n {entry.person.firstName} {entry.person.lastName}\n {fiLabelForRelationship(entry.relationship)}\n \n })}\n \n \n }\n\n
    \n \n \n Tee tai päivitä testamenttia\n \n
    \n
    \n );\n};\n\nexport default PartiesWidget;\n","import {Person, Prenuptial} from \"../common/DomainTypes\";\nimport axios from \"axios\";\n\nexport const getPrenuptial = (personId: string): Promise => {\n return axios(`${process.env.REACT_APP_API_URL}/henkilo/${personId}/dokumentit/avioehto`)\n .then(res => res.data.Avioehto ? mapPrenuptial(res.data) : null);\n};\n\nexport const postPrenuptial = (person: Person, prenup: Prenuptial): Promise => {\n return axios.post(`${process.env.REACT_APP_API_URL}/henkilo/${person.id}/dokumentit/avioehto`, reverseMapPrenuptial(prenup));\n};\n\nconst mapPrenuptial = (data: any): Prenuptial => {\n return {\n id: data.Avioehto.id,\n clause: data.Avioehto.Klausuuli,\n type: data.Avioehto.Avioehtolaji,\n date: data.Avioehto.Laatimispaivamaara,\n parties: data.Avioehto.Osapuoli\n ? data.Avioehto.Osapuoli.map(mapPerson)\n : []\n };\n};\n\nconst mapPerson = (data: any): Person => {\n return {\n id: data.Id,\n ssn: data.Henkilotunnus,\n firstName: data.Etunimi,\n lastName: data.Sukunimi,\n fullName: `${data.Etunimi} ${data.Sukunimi}`,\n primaryLanguage: \"fi\",\n nationality: \"FIN\",\n childCount: 0,\n };\n};\n\nconst reverseMapPrenuptial = (prenup: Prenuptial): any => {\n return {\n Avioehto: {\n id: prenup.id,\n Avioehtolaji: prenup.type.valueOf(),\n Klausuuli: prenup.clause,\n Laatimispaivamaara: prenup.date,\n Osapuoli: prenup.parties.map(reverseMapPerson)\n }\n };\n};\n\nconst reverseMapPerson = (person: Person): any => {\n return {\n Id: person.id,\n Henkilotunnus: person.ssn,\n Etunimi: person.firstName,\n Sukunimi: person.lastName,\n };\n};\n","import {useContext, useEffect, useState} from \"react\";\nimport {AppContext} from \"../../App\";\nimport {Prenuptial, PrenuptialType} from \"../common/DomainTypes\";\nimport {getPrenuptial, postPrenuptial} from \"./prenuptialApi\";\nimport {NIL_UUID} from \"../../utils/uuidUtils\";\n\nexport function usePrenuptial() {\n const [appState] = useContext(AppContext)\n const person = appState.person;\n\n const [prenuptial, setPrenuptial] = useState({\n id: NIL_UUID,\n type: PrenuptialType.MUTUALLY_EXCLUSIVE,\n clause: '',\n date: '0000-00-00',\n parties: [],\n });\n\n const [loading, setLoading] = useState(false);\n\n useEffect(() => {\n setLoading(true);\n getPrenuptial(person.id)\n .then(p => p && setPrenuptial(p))\n .finally(() => setLoading(false));\n }, [person]);\n\n\n const savePrenuptial = (): Promise => {\n return postPrenuptial(person, prenuptial);\n };\n\n return {prenuptial, setPrenuptial, loadingPrenuptial: loading, savePrenuptial};\n}\n","/** @jsx jsx */\nimport {jsx} from '@emotion/core'\nimport React from \"react\";\nimport {FlexColTight, panelWithShadowCss, Placeholder, TableSmall} from \"../common/CommonStyles\";\nimport {Button, Heading, Text} from \"suomifi-ui-components\";\nimport {suomifiDesignTokens as sdt} from \"suomifi-design-tokens\";\nimport Spinner from \"../common/Spinner\";\nimport {usePrenuptial} from \"./usePrenuptial\";\nimport {Link, useHistory} from \"react-router-dom\";\nimport {NIL_UUID} from \"../../utils/uuidUtils\";\nimport {Prenuptial} from \"../common/DomainTypes\";\nimport {fiLabelForPrenuptialType} from \"../common/DefaultValues\";\n\nconst PrenuptialWidget: React.FC = () => {\n const history = useHistory();\n const {prenuptial, loadingPrenuptial} = usePrenuptial();\n\n const renderPrenuptial = (prenuptial: Prenuptial) => (\n
    \n {fiLabelForPrenuptialType(prenuptial.type)}:
    \n {prenuptial.clause}\n \n \n {prenuptial.parties.map((party, i) => (\n \n {party.firstName} {party.lastName}\n osapuoli\n )\n )}\n \n \n
    \n );\n\n const renderCallToPrenuptial = () => (\n \n
    \n Avioehtoa ei ole vielä laadittu\n
    \n \n
    \n );\n\n return (\n \n \n Avioehto\n \n\n {loadingPrenuptial\n ? \n : prenuptial.id !== NIL_UUID\n ? renderPrenuptial(prenuptial)\n : renderCallToPrenuptial()}\n\n
    \n \n \n Tee tai päivitä avioehtoa\n \n
    \n
    \n );\n};\n\nexport default PrenuptialWidget;\n","import {useContext, useEffect, useState} from \"react\";\nimport {AppContext} from \"../../App\";\nimport {getSpouse} from \"./familyTreeApi\";\nimport {Person} from \"../common/DomainTypes\";\n\nexport function useSpouse() {\n const [appState] = useContext(AppContext);\n const person = appState.person;\n\n const [spouse, setSpouse] = useState(null);\n const [loading, setLoading] = useState(false);\n\n useEffect(() => {\n setLoading(true);\n getSpouse(person.id)\n .then(spouse => setSpouse(spouse))\n .finally(() => setLoading(false));\n }, [person]);\n\n return {spouse, loadingSpouse: loading};\n}\n","/** @jsx jsx */\nimport {jsx} from '@emotion/core'\nimport React, {useContext} from \"react\";\nimport {suomifiDesignTokens as sdt, Text} from \"suomifi-ui-components\";\nimport {FlexCol, FlexRow, Heading1WithBottomBorder,} from \"../common/CommonStyles\";\nimport FamilyTreeWidget from \"../family/FamilyTreeWidget\";\nimport AssetsWidget from \"../assets/AssetsWidget\";\nimport {AppContext} from \"../../App\";\nimport WillWidget from \"../will/WillWidget\";\nimport PartiesWidget from \"../parties/PartiesWidget\";\nimport PrenuptialWidget from \"../prenuptial/PrenuptialWidget\";\nimport {useSpouse} from \"../family/useSpouse\";\n\nconst Dashboard: React.FC = () => {\n const [appState] = useContext(AppContext);\n const {spouse} = useSpouse();\n const person = appState.person;\n\n return (\n \n
    \n \n Perukirja\n \n {person.firstName} {person.lastName}\n - {person.address?.street}, {person.address?.zip} {person.address?.city}\n
    \n\n *': {\n boxSizing: 'border-box',\n minHeight: \"300px\"\n }\n }}>\n \n \n \n\n *': {\n boxSizing: 'border-box',\n minHeight: \"300px\"\n }\n }}>\n \n \n \n\n *': {\n boxSizing: 'border-box',\n minHeight: \"300px\"\n }\n }}>\n {spouse ? :
    }\n
    \n \n\n
    \n \n );\n};\n\nexport default Dashboard;\n","/** @jsx jsx */\nimport { jsx } from '@emotion/core'\nimport React from \"react\";\nimport Card from '../common/Card';\nimport { TableSmall } from \"../common/CommonStyles\";\nimport Spinner from '../common/Spinner';\nimport { useTransactions } from './useTransactions'\n\nconst IncomeCard: React.FC = () => {\n const { groupedTransactions, isLoading } = useTransactions()\n return (\n \n {\n isLoading \n ? \n : (\n \n \n {groupedTransactions?.byMonth.map((item, i) =>\n \n {item.month}\n +{item.total} €\n \n )}\n \n \n )\n }\n \n )\n};\n\nexport default IncomeCard;\n","import { useContext, useEffect, useState } from \"react\";\nimport { AppContext } from \"../../App\";\nimport { Transaction } from \"../common/DomainTypes\";\n\ninterface GroupedTransactions {\n byMonth: Array\n}\ninterface TransactionMonthSummary {\n month: string,\n total: number,\n items: Array\n}\n\nexport function useTransactions() {\n const [appState] = useContext(AppContext);\n const person = appState.person;\n\n const [transactions, setTransactions] = useState([]);\n const [isLoading, setLoading] = useState(true);\n const [groupedTransactions, setGroupedTransactions] = useState()\n\n useEffect(() => {\n setTimeout(() => {\n setTransactions([\n {\n companyName: 'Digispan Oy',\n companyBusinessId: '1234567-8',\n amount: 1234.5,\n time: new Date(Date.parse('2020-11-01')),\n type: {\n code: '101',\n label: 'Kokonaissumma'\n }\n },\n {\n companyName: 'Digispan Oy',\n companyBusinessId: '1234567-8',\n amount: 1234.5,\n time: new Date(Date.parse('2020-10-01')),\n type: {\n code: '101',\n label: 'Kokonaissumma'\n }\n }\n ])\n\n const groupedByMonth = transactions\n .reduce((result: any, item) => {\n const month = `${item.time.getMonth() + 1}/${item.time.getFullYear()}`\n if (result[month] === undefined) result[month] = { month, items: [], total: 0 }\n result[month] = {\n ...result[month],\n items: [...result[month].items, item],\n total: result[month].total + item.amount\n }\n return result\n }, {})\n\n setGroupedTransactions({ byMonth: Object.values(groupedByMonth) })\n\n setLoading(false)\n }, 500)\n // getAssets(person.id)\n // .then(parties => setTransactions(parties))\n // .finally(() => setLoading(false));\n }, [person, transactions]);\n\n return { \n transactions, \n groupedTransactions, \n isLoading \n };\n}\n","import axios from \"axios\";\n\ninterface IObjectKeys {\n [key: string]: string;\n}\n\nconst apiRootUrl = process.env.API_ROOT_URL || '/example-data'\n\nexport const fetchData = async (resourcePath: string): Promise => {\n const normalizedPath = resourcePath.replace(/^\\//, '')\n const response = await axios(`${apiRootUrl}/${normalizedPath}`)\n\n return toCamel(response.data)\n}\n\nfunction toCamel(obj: any) {\n // SO copypaste ¯\\_(ツ)_/¯\n if (obj instanceof Array) {\n return obj.map(function (value) {\n if (typeof value === \"object\") {\n value = toCamel(value)\n }\n return value\n })\n } else {\n var newO: IObjectKeys = {}\n for (let origKey in obj) {\n if (obj.hasOwnProperty(origKey)) {\n const newKey = (origKey.charAt(0).toLowerCase() + origKey.slice(1) || origKey).toString()\n let value = obj[origKey]\n if (value instanceof Array || (value !== null && value.constructor === Object)) {\n value = toCamel(value)\n }\n newO[newKey] = value\n }\n }\n return newO\n }\n}\n","/** @jsx jsx */\nimport { jsx } from '@emotion/core'\nimport React from \"react\";\nimport Card from '../common/Card';\nimport { TableSmall } from \"../common/CommonStyles\";\nimport Spinner from '../common/Spinner';\nimport { useTransactionTotals } from './useTransactionsTotals';\n\nconst IncomeTotalsCard: React.FC = () => {\n const { totals, isLoading } = useTransactionTotals();\n\n return (\n \n {\n isLoading \n ? \n : (\n \n \n \n 6kk\n {totals?.sixMonths?.gross} €\n \n \n 12kk\n {totals?.twelveMonths?.gross} €\n \n \n \n )\n }\n \n )\n};\n\nexport default IncomeTotalsCard;\n","import {useContext, useEffect, useState} from \"react\";\nimport {AppContext} from \"../../App\";\nimport {TransactionsTotals} from \"../common/DomainTypes\";\nimport {fetchData} from \"../../utils/apiClient\";\n\ninterface TotalsResult {\n sixMonths: TransactionsTotals,\n twelveMonths: TransactionsTotals\n}\n\ninterface IObjectKeys {\n [key: string]: string;\n}\n\nexport function useTransactionTotals() {\n const [appState] = useContext(AppContext);\n const person = appState.person;\n\n const [totals, setTotals] = useState();\n const [isLoading, setLoading] = useState(false);\n\n useEffect(() => {\n setLoading(true)\n Promise.all([\n fetchData(`IncomeData/Persons/${person.ssn}/Transactions/Totals?timespanInMonths=6`),\n fetchData(`IncomeData/Persons/${person.ssn}/Transactions/Totals?timespanInMonths=12`)\n ])\n .then(result => setTotals({\n sixMonths: result[0],\n twelveMonths: result[1]\n }))\n .finally(() => setLoading(false));\n }, [person])\n\n return {totals, isLoading}\n}\n","import React from \"react\"\nimport Modal from \"react-modal\"\nimport { Heading, suomifiDesignTokens as tokens } from \"suomifi-ui-components\"\nimport { FlexColTight } from \"../common/CommonStyles\"\n\ninterface Props {\n isOpen: boolean,\n title: string\n}\n\nconst DataModal: React.FC = ({ isOpen, title, children }) => (\n \n \n \n {title}\n \n
    \n {children}\n
    \n
    \n)\n\nexport default DataModal","import styled from '@emotion/styled'\nimport {css} from \"@emotion/core\";\nimport {Button, suomifiDesignTokens as tokens} from \"suomifi-ui-components\";\n\nexport const inputCss = css`\n border: 1px solid ${tokens.colors.depthLight3};\n border-radius: 2px;\n box-sizing: border-box;\n font-family: ${tokens.values.typography.bodyText.fontFamily};\n font-size: ${tokens.values.typography.bodyText.fontSize.value}${tokens.values.typography.bodyText.fontSize.unit};\n font-weight: ${tokens.values.typography.bodyText.fontWeight};\n line-height: ${tokens.values.typography.bodyText.lineHeight.value};\n margin: ${tokens.spacing.xxs} 0;\n padding: ${tokens.spacing.s};\n width: 100%;\n`;\n\nconst selectCss = css`\n ${inputCss}\n display: block;\n background: ${tokens.colors.whiteBase};\n -moz-appearance: none;\n -webkit-appearance: none;\n`\n\nexport const Input = styled.input`\n ${inputCss}\n`;\n\nexport const InputSmall = styled.input`\n ${inputCss}\n font-family: ${tokens.values.typography.bodyTextSmall.fontFamily};\n font-size: ${tokens.values.typography.bodyTextSmall.fontSize.value}${tokens.values.typography.bodyTextSmall.fontSize.unit};\n font-weight: ${tokens.values.typography.bodyTextSmall.fontWeight};\n line-height: 1;\n`;\n\nexport const TextArea = styled.textarea`\n ${inputCss}\n`;\n\nexport const InputNumber = styled(Input)`\n width: 3em;\n text-align: right;\n border: 1px solid ${tokens.colors.depthLight2};\n &::-webkit-outer-spin-button,\n &::-webkit-inner-spin-button {\n -webkit-appearance: none;\n }\n`;\n\nInputNumber.defaultProps = {type: 'number'};\n\nexport const InputRadio = styled.input`\n font-family: ${tokens.values.typography.bodyText.fontFamily};\n font-size: ${tokens.values.typography.bodyText.fontSize.value}${tokens.values.typography.bodyText.fontSize.unit};\n font-weight: ${tokens.values.typography.bodyText.fontWeight};\n line-height: ${tokens.values.typography.bodyText.lineHeight.value};\n`;\n\nInputRadio.defaultProps = {type: 'radio'};\n\nexport const Select = styled.select`\n ${selectCss}\n`;\n\nexport const ButtonInverted = styled(Button)`\n background: none;\n color: ${tokens.colors.whiteBase} !important;\n border: 1px solid ${tokens.colors.whiteBase} !important;\n & > svg {\n fill: ${tokens.colors.whiteBase};\n }\n`;\n\ninterface ButtonLinkProps {\n active?: boolean\n}\n\nexport const ButtonLink = styled.button`\n background: none;\n border: none;\n color: ${(props: ButtonLinkProps) => props.active ? tokens.colors.blackBase : tokens.colors.highlightBase};\n cursor: pointer;\n font-family: ${tokens.values.typography.bodyText.fontFamily};\n font-size: ${tokens.values.typography.bodyText.fontSize.value}${tokens.values.typography.bodyText.fontSize.unit};\n font-weight: ${tokens.values.typography.bodyText.fontWeight};\n line-height: ${tokens.values.typography.bodyText.lineHeight.value};\n padding: 0;\n`;\n\nexport const ButtonLinkSmall = styled(ButtonLink)`\n font-family: ${tokens.values.typography.bodyTextSmall.fontFamily};\n font-size: ${tokens.values.typography.bodyTextSmall.fontSize.value}${tokens.values.typography.bodyTextSmall.fontSize.unit};\n font-weight: ${tokens.values.typography.bodyTextSmall.fontWeight};\n line-height: ${tokens.values.typography.bodyTextSmall.lineHeight.value};\n`;\n\nexport const ButtonIconOnly = styled(Button)`\n & > svg {\n margin: 0 !important;\n };\n @media (max-width: 800px) {\n padding: ${tokens.spacing.s};\n };\n`;\n\nexport const ButtonSmallIconOnly = styled(Button)`\n & > svg {\n margin: 0 !important;\n };\n background-color: transparent !important;\n padding: ${tokens.spacing.xs};\n min-height: 0;\n`;\n\nexport const FormStyles = styled.div`\n form {\n .error {\n display: flex;\n font-weight: bold;\n color: #800;\n flex-flow: row nowrap;\n justify-content: center;\n }\n .Select {\n width: 100%;\n }\n pre {\n border: 1px solid #ccc;\n background: rgba(0, 0, 0, 0.1);\n box-shadow: inset 1px 1px 3px rgba(0, 0, 0, 0.2);\n padding: 20px;\n }\n input, textarea {\n ${inputCss}\n }\n select {\n ${selectCss}\n }\n }\n`","import React from \"react\";\nimport { Button } from \"suomifi-ui-components\";\nimport { Form, Field } from 'react-final-form'\nimport { FormStyles } from \"../common/StyledInputComponents\";\nimport { ButtonLink } from \"../common/InputStyles\";\nimport { useEmploymentCertificateData } from \"./useEmploymentCertificateData\";\nimport Spinner from \"../common/Spinner\";\n\ninterface Props {\n onSubmit?: () => void,\n onCancel?: () => void,\n hideButtons?: boolean,\n disabled?: boolean,\n initialValues?: any\n}\n\ninterface Values {\n company: string\n}\n\nconst sleep = (ms: number) => new Promise(resolve => setTimeout(resolve, ms))\n\nconst onSubmitMock = async (values: Values) => {\n await sleep(1000)\n window.sessionStorage['cache:employmentCertificate'] = JSON.stringify(values)\n}\n\nconst EmploymentCertificateForm: React.FC = ({ onSubmit, onCancel, disabled, initialValues, hideButtons }) => {\n const { data } = useEmploymentCertificateData()\n return (\n \n {\n await onSubmitMock(values)\n if(onSubmit) onSubmit()\n }}\n initialValues={initialValues}\n render={({ form, values, handleSubmit, submitting, pristine }) => (\n
    \n {\n submitting\n ? \n : (\n
    \n
    \n \n \n
    \n
    \n \n \n
    \n
    \n \n \n
    \n
    \n \n \n
    \n
    \n \n \n
    \n
    \n \n \n \n ))}\n \n
    \n
    \n \n \n \n ))}\n \n
    \n
    \n \n \n \n ))}\n \n
    \n
    \n )\n }\n {\n hideButtons\n ? null\n : (\n
    \n \n {' '}\n \n Peruuta\n \n
    \n )\n }\n \n )}\n />\n
    \n );\n};\n\nexport default EmploymentCertificateForm;\n","import { useContext, useEffect, useState } from \"react\"\nimport axios from \"axios\"\nimport { AppContext } from \"../../App\"\n\ninterface EmploymentCertificateData {\n employmentEndingCodes: Array,\n ratingCodes: Array,\n person: object\n}\n\nexport function useEmploymentCertificateData() {\n const [appState] = useContext(AppContext);\n const person = appState.person;\n\n const [employmentCertificateData, setEmploymentCertificateData] = useState();\n const [isLoading, setLoading] = useState(true);\n\n useEffect(() => {\n Promise.all([\n axios.get('/codelists/KevaEmploymentEnding.json'),\n axios.get('/codelists/tyoarvio.json')\n ])\n .then(([endingResult, ratingResult]) => {\n setEmploymentCertificateData(x => ({ \n ...x,\n person: {\n name: person.fullName,\n ssn: person.ssn\n },\n employmentEndingCodes: endingResult.data.codes,\n ratingCodes: ratingResult.data.codes\n }))\n })\n .finally(() => setLoading(false))\n }, [person]);\n\n return {\n data: employmentCertificateData,\n isLoading\n };\n}\n","/** @jsx jsx */\nimport { jsx } from '@emotion/core'\nimport React, { useState } from \"react\"\nimport { Button, Link } from 'suomifi-ui-components'\nimport Card from '../common/Card'\nimport { TableSmall } from \"../common/CommonStyles\"\nimport DataModal from '../common/DataModal'\nimport Spinner from '../common/Spinner'\nimport EmploymentCertificateForm from '../employment-certificate/EmploymentCertificateForm'\n\nconst EmployersCard: React.FC = () => {\n const [isEmploymentCertificateOpen, setIsEmploymentCertificateOpen] = useState(false)\n const isLoading = false\n const employmentCertificate = window.sessionStorage['cache:employmentCertificate'] || null\n return (\n \n {\n isLoading\n ? \n : (\n \n \n \n Digivero Oy\n 5/2014 -\n \n \n \n {\n !employmentCertificate\n ? null\n : \n setIsEmploymentCertificateOpen(true)}>Työtodistus\n  | \n \n }\n Referenssit\n \n \n \n Auroraview\n 1/2013 - 5/2014\n \n \n Työtodistus | Suositukset | Referenssit\n \n \n Lohjan yliopisto\n 1/2008 - 12/2012\n \n \n Työtodistus | Suositukset | Referenssit\n \n \n \n )\n }\n \n \n \n \n \n )\n};\n\nexport default EmployersCard;\n","/** @jsx jsx */\nimport { jsx } from '@emotion/core'\nimport React, { useContext } from \"react\";\nimport { suomifiDesignTokens as sdt, Text } from \"suomifi-ui-components\";\nimport { FlexCol, FlexRow, Heading1WithBottomBorder, TableSmall} from \"../common/CommonStyles\";\nimport { AppContext } from \"../../App\";\nimport IncomeCard from './IncomeCard';\nimport IncomeTotalsCard from '../income/IncomeTotalsCard';\nimport EmployersCard from './EmployersCard'\nimport Card from '../common/Card'\n\nconst Dashboard: React.FC = () => {\n const [appState] = useContext(AppContext);\n const person = appState.person;\n\n return (\n \n
    \n \n Työelämä\n \n {person.firstName} {person.lastName}\n - {person.address?.street}, {person.address?.zip} {person.address?.city}\n
    \n\n *': {\n boxSizing: 'border-box',\n minHeight: \"150px\"\n }\n }}>\n \n \n \n \n Veroprosentti\n 23%\n \n \n Veronumero\n 100012345678\n \n \n \n \n \n\n *': {\n boxSizing: 'border-box',\n minHeight: \"300px\"\n }\n }}>\n \n \n \n\n *': {\n boxSizing: 'border-box',\n minHeight: \"300px\"\n }\n }}>\n \n \n\n *': {\n boxSizing: 'border-box',\n minHeight: \"300px\"\n }\n }}>\n \n \n \n \n Digivero Oy (perustaja/tj)\n 5/2014 -\n \n \n Verocast Oy (51% osakekannasta)\n 8/2019 -\n \n \n \n \n \n \n \n \n Digivero Oy (hallituksen pj)\n 5/2014 -\n \n \n \n \n \n\n *': {\n boxSizing: 'border-box',\n minHeight: \"300px\"\n }\n }}>\n \n \n \n \n Digivero Oy (perustaja/tj)\n 5/2014 -\n \n \n Verocast Oy (51% osakekannasta)\n 8/2019 -\n \n \n \n \n \n \n \n \n Lupa XYZ\n 19.2.2018\n \n \n Lupa ABC\n 11.4.2014\n \n \n \n \n \n
    \n
    \n );\n};\n\nexport default Dashboard;\n","/** @jsx jsx */\nimport { jsx } from '@emotion/core'\nimport React from \"react\";\nimport Card from '../common/Card';\nimport { TableSmall } from \"../common/CommonStyles\";\nimport Spinner from '../common/Spinner';\n\nconst EmployersCard: React.FC = () => {\n const isLoading = false\n return (\n \n {\n isLoading\n ? \n : (\n \n \n \n Voimassa oleva asuntolaina\n 128 345 €\n \n \n Tuloihin perustuva asuntolaina-arvio\n 330 000 €\n \n \n \n )\n }\n \n )\n};\n\nexport default EmployersCard;\n","import axios from \"axios\";\nimport { PersonPropertyShare } from \"../model/assets\";\n\nconst apiRootUrl = process.env.REACT_APP_PROPERTY_API || 'http://localhost:7071/api'\n\nconst taxAdministrationApi = axios.create({\n baseURL: apiRootUrl\n});\n\nexport async function GetPropertyData(ssn: string): Promise {\n return taxAdministrationApi.get(`${apiRootUrl}/Henkilo/${ssn}/Huoneistotiedot`)\n .then(resp => resp.data)\n .catch(err => console.log(`No apartment info found by ID ${ssn}: ${err}`));\n}\n","import { Accordion, AccordionDetails, AccordionSummary, Typography } from \"@material-ui/core\";\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport React, {useContext, useEffect, useState} from \"react\";\nimport { Heading } from \"suomifi-ui-components\";\nimport {AppContext} from \"../../App\";\nimport { AssetsAppData, BuildingAppData, PersonPropertyShare } from \"../../model/assets\";\nimport Card from '../common/Card';\nimport {FlexCol, FlexRow, TableSmall} from \"../common/CommonStyles\";\nimport Spinner from \"../common/Spinner\";\nimport * as PropertyApi from \"../../api/propertyApi\";\nimport { getPersonsAssetsAppData } from \"./assetsApi\";\n\nconst PersonAssets: React.FC = () => {\n const [appState] = useContext(AppContext);\n const person = appState.person;\n\n const [assets, setAssets] = useState({ownerId: \"\", buildings: []});\n const [properties, setProperties] = useState([]);\n const [loading, loadingAssets] = useState(false);\n\n useEffect(() => {\n loadingAssets(true);\n var assets = getPersonsAssetsAppData(person.id);\n var properties = PropertyApi.GetPropertyData(person.ssn as string);\n\n Promise.all([assets, properties]).then(r => {\n setAssets(r[0]);\n setProperties(r[1]);\n }).finally(() => loadingAssets(false));\n }, [person]);\n\n const buildingSummary = (entry: BuildingAppData) => {\n if (entry.address[\"rhr\"]) {\n return entry.buildingData[\"rhr\"].PermanentBuildingID + \" - \" +\n entry.address[\"rhr\"]?.Address + \" \" + entry.address[\"rhr\"]?.PostalCode + \" \" + entry.address[\"rhr\"]?.PostalDistrict;\n }\n return entry.buildingData[\"rhr\"].PermanentBuildingID;\n }\n\n const getAddress = (entry: PersonPropertyShare) => {\n return `${entry.address} ${entry.stair !== undefined ? entry.stair : \"\"}${entry.number !== undefined ? entry.number : \"\"} ${entry.postalCode} ${entry.postalDistrict}`\n }\n \n return (\n \n {loading ? :\n
    \n { assets?.buildings && assets?.buildings.length > 0 &&\n \n \n {\"Rakennukset\"}\n \n {\n assets?.buildings.map((entry, i) =>\n \n }\n aria-controls=\"panel1a-content\"\n id=\"panel1a-header\">\n {buildingSummary(entry)}\n \n \n *': {\n boxSizing: 'border-box',\n paddingLeft: '10px'\n }\n }}>\n \n \n \n \n \n \n Rekisteri\n Rakennus- ja huoneistotietorekisteri RHR\n \n \n Pysyvä rakennustunnus\n {entry.buildingData[\"rhr\"].PermanentBuildingID}\n \n \n Osoite\n {entry.address[\"rhr\"]?.Address} {entry.address[\"rhr\"]?.PostalCode} {entry.address[\"rhr\"]?.PostalDistrict}\n \n \n Omistaja\n {entry.owner[\"rhr\"].FirstNames} {entry.owner[\"rhr\"].LastName}\n \n \n \n \n \n \n \n \n \n \n \n \n Rekisteri\n Vero\n \n \n Pysyvä rakennustunnus\n {entry.buildingData[\"rhr\"].PermanentBuildingID}\n \n \n Osoite\n {entry.address[\"tax\"]?.Address} {entry.address[\"tax\"]?.PostalCode} {entry.address[\"tax\"]?.PostalDistrict}\n \n \n Omistaja\n {entry.owner.FirstNames} {entry.owner.LastName}\n \n \n \n \n \n \n \n \n \n )}\n } \n { properties?.length > 0 &&\n \n \n {\"Huoneistot\"}\n \n {properties?.map((entry, i) =>\n \n }\n aria-controls=\"panel1a-content\"\n id=\"panel1a-header\">\n Asunto-osakkeet, yht. {entry.shareEnd - entry.shareStart + 1} kappaletta, {entry.address} {entry.postalDistrict}\n \n \n *': {\n boxSizing: 'border-box',\n paddingLeft: '10px'\n }\n }}>\n \n \n \n \n \n \n Osakkeet\n {entry.shareStart} - {entry.shareEnd}, {entry.shareEnd - entry.shareStart + 1} kappaletta\n \n \n Osoite\n {getAddress(entry)}\n \n \n Pinta-ala, m2\n {entry.area}\n \n \n Kerros\n {entry.floor}\n \n \n Käyttötarkoitus\n {entry.intendedUse}\n \n \n Selite\n {entry.specifier}\n \n \n \n \n \n \n \n \n \n )}\n \n }\n
    \n }\n
    \n )\n};\n\nexport default PersonAssets;\n","/** @jsx jsx */\nimport {jsx} from '@emotion/core'\nimport React, {useContext} from \"react\";\nimport {suomifiDesignTokens as sdt, Text} from \"suomifi-ui-components\";\nimport {FlexCol, FlexRow, Heading1WithBottomBorder,} from \"../common/CommonStyles\";\nimport {AppContext} from \"../../App\";\nimport IncomeTotalsCard from '../income/IncomeTotalsCard';\nimport CreditAndLoansCard from './CreditAndLoansCard'\nimport AssetsWidget from '../assets/AssetsWidget'\nimport PersonAssets from '../assets/PersonAssets';\n\nconst Dashboard: React.FC = () => {\n const [appState] = useContext(AppContext);\n const person = appState.person;\n\n return (\n \n
    \n \n Talous\n \n {person.firstName} {person.lastName}\n - {person.address?.street}, {person.address?.zip} {person.address?.city}\n
    \n\n *': {\n boxSizing: 'border-box',\n minHeight: \"300px\"\n }\n }}>\n \n \n\n *': {\n boxSizing: 'border-box',\n minHeight: \"300px\"\n }\n }}>\n \n \n\n *': {\n boxSizing: 'border-box',\n minHeight: \"300px\"\n }\n }}>\n \n \n\n
    \n
    \n );\n};\n\nexport default Dashboard;\n","/** @jsx jsx */\nimport { jsx } from '@emotion/core'\nimport React from \"react\";\nimport Card from '../common/Card';\nimport { TableSmall } from \"../common/CommonStyles\";\nimport Spinner from '../common/Spinner';\nimport { Expander, ExpanderContent, ExpanderTitleButton } from 'suomifi-ui-components'\n\nconst EducationCard: React.FC = () => {\n const isLoading = false\n return (\n \n {\n isLoading\n ? \n : (\n \n
    \n \n \n Peruskoulu\n \n \n \n \n \n Lohjan peruskoulu\n 9/1984 - 6/1993\n \n \n \n \n \n \n \n Ammattikoulu/lukio\n \n \n \n \n \n Lohjan lukio\n 9/1993 - 6/1996\n \n \n Luksia Lohja - Liiketoiminnan ammattitutkinto\n 9/1997 - 5/2000\n \n \n \n \n \n \n \n Korkeakoulu/yliopisto/MBA\n \n \n \n \n \n Lohjan yliopisto\n 9/2000 - 5/2004\n \n \n Filosofian maisteri, tilastotiede\n 300 op\n \n \n \n \n \n \n \n Tohtoriopinnot\n \n \n \n \n \n Lohjan yliopisto - Filosofian tohtori, matematiikka ja tilastotiede\n 9/2004 - 5/2008\n \n \n Artikkeli ABC\n \n \n Artikkeli XYZ\n \n \n \n \n \n
    \n )\n }\n
    \n )\n}\n\nexport default EducationCard;\n","/** @jsx jsx */\nimport { jsx } from '@emotion/core'\nimport React from \"react\"\nimport Card from '../common/Card'\nimport { TableSmall } from \"../common/CommonStyles\"\nimport Spinner from '../common/Spinner'\nimport {useLiberalEducation} from './useLiberalEducation'\n\nconst LiberalEducationCard: React.FC = () => {\n const {courses, isLoading} = useLiberalEducation()\n return (\n \n {\n isLoading\n ? \n : (\n \n \n {\n courses.map(course => (\n \n {course.name}\n {course.completedOn}\n \n ))\n }\n \n \n )\n }\n \n )\n}\n\nexport default LiberalEducationCard;\n","import { FormikProps } from \"formik\";\nimport { SchemaOf } from 'yup';\nimport { Relationship } from \"../common/DomainTypes\";\n\nexport interface GenericFormProps {\n defaultValues: any;\n onSubmit: (props: any) => Promise;\n form: React.FC>;\n validationSchema: SchemaOf;\n}\n\nexport interface GenericFormParams {\n initialValues: object;\n validationSchema: SchemaOf;\n onSubmit: (props: any) => Promise;\n setNotificationMessage: React.Dispatch>;\n setNotificationLevel: React.Dispatch>;\n}\n\nexport enum GenericFormType {\n DEATH_REPORT = \"death-report\",\n CHILDS_BIRTH = \"childs-birth\",\n TERMINATION_OF_EMPLOYMENT = \"termination-of-employment\",\n MARRIAGE = \"marriage\",\n DIVORCE = \"divorce\",\n EMPLOYMENT = \"employment\",\n START_OF_STUDIES = \"start-of-studies\",\n RETIREMENT = \"retirement\",\n OTHER = \"other\",\n}\n\nexport const CustomizedGenericFormTypes: string[] = [\n GenericFormType.DEATH_REPORT,\n GenericFormType.CHILDS_BIRTH,\n GenericFormType.TERMINATION_OF_EMPLOYMENT,\n GenericFormType.MARRIAGE\n];\n\nexport const GenericFormTypeByValue = (value: string) => {\n const enumKey = Object.entries(GenericFormType)\n .filter( ([key, val]) => val === value)\n .map( ([key, val]) => key);\n if (enumKey.length > 0) {\n return GenericFormTypeTranslations[enumKey[0]] ? GenericFormTypeTranslations[enumKey[0]].fi : value\n }\n return value;\n}\n\nexport const GenericFormTypeTranslations: {[key: string]: {fi: string}} = {\n DEATH_REPORT: {\n fi: \"Kuoleman raportointi\"\n },\n CHILDS_BIRTH: {\n fi: \"Lapsen syntymä\"\n },\n TERMINATION_OF_EMPLOYMENT: {\n fi: \"Työsuhteen päättyminen\"\n },\n MARRIAGE: {\n fi: \"Avioliitto\"\n },\n DIVORCE: {\n fi: \"Avioero\"\n },\n EMPLOYMENT: {\n fi: \"Palkkatyön aloitus\"\n },\n START_OF_STUDIES: {\n fi: \"Opintojen aloitus\"\n },\n RETIREMENT: {\n fi: \"Eläkkeelle jääminen\"\n },\n OTHER: {\n fi: \"Muu\"\n }\n}\n\nexport interface GenericFormPayload {\n type: string,\n payload: any\n}\n\nexport interface GenericEventPayload {\n person: Person;\n eventData: GenericEvent;\n notifier?: Notifier;\n}\n\nexport interface Person {\n firstName?: string;\n lastName?: string;\n birthday?: Date;\n gender?: number;\n personalIdentityCode?: string;\n relations?: PersonRelation[]; \n}\n\nexport interface PersonRelation {\n personalIdentityCode?: string;\n role?: Relationship;\n description?: string;\n}\n\nexport interface DeceasedPerson extends Person {\n dateOfDeath?: Date;\n}\n\nexport interface GenericEvent {\n eventTime?: Date;\n description?: string;\n tapahtumatunnus?: string;\n viranomaiskoodi?: string;\n arkistonumero?: string;\n}\n\nexport interface Notifier {\n id?: string;\n type?: NotifierType | \"\";\n}\n\nexport enum NotifierType {\n SSN = \"ssn\",\n ORGANIZATION = \"organization\",\n DOCTOR = \"doctor\",\n OTHER = \"muu\",\n}\n\nexport const NotifierTypeTranslations: {[key: string]: {fi: string}} = {\n SSN: {\n fi: \"Sosiaaliturvatunnus\"\n },\n ORGANIZATION: {\n fi: \"Organisaatio/yritys\"\n },\n DOCTOR: {\n fi: \"Lääkäri\"\n },\n OTHER: {\n fi: \"Muu\"\n }\n}\n\nexport interface HospitalNotifier extends Notifier {\n sairaalanidtunnus?: string;\n}\n\nexport interface OrganizationNotifier extends Notifier {\n organisaationidtunnus?: string;\n}\n\n\n\n","import { useContext, useEffect, useState } from \"react\"\nimport { AppContext } from \"../../App\"\nimport { fetchData } from \"../../utils/apiClient\"\n\ninterface LiberalEducationCourse {\n name: string,\n infoText: string,\n status: string,\n completedOn: string\n}\n\nexport function useLiberalEducation() {\n const [appState] = useContext(AppContext)\n const person = appState.person;\n\n const [courses, setCourses] = useState([])\n const [isLoading, setLoading] = useState(true)\n\n useEffect(() => {\n setLoading(true)\n fetchData(`Education/Person/${person.ssn}/oksivis`)\n .then(result => {\n if (result && result instanceof Array) {\n setCourses(result);\n }\n })\n .finally(() => setLoading(false))\n }, [person])\n\n return { courses, isLoading }\n}\n","/** @jsx jsx */\nimport {jsx} from '@emotion/core'\nimport React, {useContext} from \"react\";\nimport {suomifiDesignTokens as sdt, Text} from \"suomifi-ui-components\";\nimport {FlexCol, FlexRow, Heading1WithBottomBorder, TableSmall,} from \"../common/CommonStyles\";\nimport {AppContext} from \"../../App\";\nimport Card from '../common/Card';\nimport EducationCard from './EducationCard';\nimport LiberalEducationCard from './LiberalEducationCard'\n\nconst Dashboard: React.FC = () => {\n const [appState] = useContext(AppContext);\n const person = appState.person;\n\n return (\n \n
    \n \n Osaaminen\n \n {person.firstName} {person.lastName}\n - {person.address?.street}, {person.address?.zip} {person.address?.city}\n
    \n\n *': {\n boxSizing: 'border-box',\n minHeight: \"300px\"\n }\n }}>\n \n \n\n *': {\n boxSizing: 'border-box',\n minHeight: \"300px\"\n }\n }}>\n \n \n \n \n \n Sertifikaatti XYZ\n 11.3.2020\n \n \n Sertifikaatti ABC\n 9.5.2019\n \n \n \n \n \n\n *': {\n boxSizing: 'border-box',\n minHeight: \"300px\"\n }\n }}>\n \n \n \n \n International Experience Badge\n 11.3.2020\n \n \n Yhdistyksen sihteerin osaamismerkki\n 6.9.2011\n \n \n \n \n \n \n \n \n Laillistettu sosiaalihuollon ammattihenkilö\n 11.3.2020\n \n \n \n \n \n\n *': {\n boxSizing: 'border-box',\n minHeight: \"300px\"\n }\n }}>\n \n \n \n \n Lupa XYZ\n 11.3.2020\n \n \n Lupa ABC\n 9.5.2019\n \n \n \n \n \n \n \n \n Viestintä, yhteistyö ja luovuus\n \n \n \n \n \n\n
    \n
    \n );\n};\n\nexport default Dashboard;\n","export class baseAddress {\n postalCode: string = \"\"\n}\n\nexport class address extends baseAddress {\n streetName: string = \"\"\n houseNumber?: number\n entranceIdentifier: string = \"\"\n apartmentNumber: string = \"\"\n sectionLetter: string = \"\"\n city: string = \"\"\n }\n\n export class abroadAddress extends baseAddress {\n address: string = \"\"\n }","export class basePerson {\n id: string = \"\"\n name: string = \"\"\n}\n\nexport class person extends basePerson {\n personalId: string = \"\"\n}\n\nexport class contactPerson extends basePerson {\n phoneNumber: string = \"\"\n}\nexport class decedentDetails extends person {\n estateInventoryDate: Date = new Date()\n dateOfDeath: Date = new Date()\n}","import { companyValueDetails, totalValueDetails, valueDetails } from \"./valueDetails\";\n\nexport class assets{\n publiclyTradedShares: totalValueDetails[] = []\n housingAssociationShares: companyValueDetails[] = []\n realEstates: valueDetails[] = []\n leisureRealEstates: valueDetails[] = []\n nonListedCompanyShares:valueDetails[] = []\n partnerships: valueDetails[] = []\n insurancePayments: valueDetails[] = []\n capitalRedemptionPolicy: valueDetails[] = []\n bankAccounts: valueDetails[] = []\n partInAnEstate: valueDetails[] = []\n assetsOutsideOfFinland: valueDetails[] = []\n vehicles: valueDetails[] = []\n otherAssets: valueDetails[] = []\n}","import { address, abroadAddress } from \"./address\";\nimport { advancement } from \"./advancement\";\nimport { gift } from \"./gift\";\nimport { beneficiary } from \"./beneficiary\";\nimport { InsurancePayment } from \"./insurancePayment\";\nimport { contactPerson, decedentDetails, person } from \"./person\";\nimport { assets } from \"./assets\";\nimport { valueDetails } from \"./valueDetails\";\n\nexport class EstateInventory{\n id: string = \"\";\n attachmentFile: string = \"\"\n contactPerson: contactPerson = new contactPerson();\n address: address = new address();\n addressAbroad: abroadAddress = new abroadAddress();\n decedent: decedentDetails = new decedentDetails();\n widow: person = new person();\n beneficiaries: beneficiary[] = []\n \n advancements: advancement[] = [];\n gifts: gift[] = [];\n insurancePayments: InsurancePayment[] = [];\n decedentTotalAssets: number = 0;\n decedentNonMaritalRightAssets: number = 0;\n decedentAssets: assets = new assets();\n decedentTotalLiabilities: number = 0;\n decedentLiabilities: valueDetails[] = [];\n \n widowTotalAssets: number = 0\n widowAssets: assets = new assets();\n\n // Lesken tai aiemmin kuolleen puolison avio-oikeuden alaiset velat?\n\n reliefRequested: boolean = false;\n extensionRequested: boolean = false;\n widowRefusesAdjustment: boolean = false;\n lastWill: boolean = false;\n widowRightToHome: boolean = false;\n otherPossession: boolean = false;\n assetInherited: boolean = false;\n widowAssetInherited: boolean = false;\n taxPaidToOtherCountry: boolean = false;\n\n}","/** @jsx jsx */\nimport {jsx} from '@emotion/core'\nimport React from \"react\";\nimport {FlexCol, FlexRow } from \"../common/CommonStyles\";\nimport TextField from '@material-ui/core/TextField';\nimport { address, abroadAddress, baseAddress } from './model/address';\nimport _ from 'lodash';\n\nclass AddressEditor extends React.Component {\n constructor(props: any, data : any) {\n super(props);\n this.state = props.data;\n this.internationalAddress = props.data instanceof abroadAddress;\n }\n\n internationalAddress : boolean = false\n\n handleChange(e: any) {\n let change = this.state;\n _.set(change, e.target.name, e.target.value)\n this.setState(change)\n this.props.refreshProperties(this.state, this.props.entity);\n }\n\n render() {\n \n return (\n
    \n { !this.internationalAddress && \n
    \n \n \n \n \n \n \n \n
    \n \n \n \n
    }\n {this.internationalAddress &&\n \n \n \n \n \n \n \n \n }\n
    \n );\n }\n}\n\nexport default AddressEditor;\n","/** @jsx jsx */\nimport {jsx} from '@emotion/core'\nimport React from \"react\";\nimport {FlexCol, FlexRow } from \"../common/CommonStyles\";\nimport TextField from '@material-ui/core/TextField';\nimport { contactPerson, decedentDetails, person } from './model/person';\nimport _ from 'lodash';\n\nclass PersonEditor extends React.Component {\n constructor(props: any, data : any) {\n super(props);\n this.state = props.data;\n this.showPhone = props.data instanceof contactPerson;\n this.showSSN = props.data instanceof person;\n this.showDecedent = props.data instanceof decedentDetails;\n }\n\n showPhone : boolean = false;\n showSSN : boolean = false;\n showDecedent: boolean = false;\n\n handleChange(e: any) {\n let change = this.state;\n _.set(change, e.target.name, e.target.value)\n this.setState(change)\n this.props.refreshProperties(this.state, this.props.entity);\n }\n\n render() {\n \n return (\n \n \n \n {this.showSSN && }\n {this.showPhone && }\n \n\n {this.showDecedent && \n \n \n \n }\n \n );\n }\n}\n\nexport default PersonEditor;\n","/** @jsx jsx */\nimport {jsx} from '@emotion/core'\nimport React from \"react\";\nimport {FlexCol, FlexRow } from \"../common/CommonStyles\";\nimport TextField from '@material-ui/core/TextField';\nimport * as _ from \"lodash\";\nimport \"react-datepicker/dist/react-datepicker.css\";\nimport CurrencyTextField from '@unicef/material-ui-currency-textfield'\nimport { gift } from './model/gift';\nimport Button from '@material-ui/core/Button';\n\nclass GiftEditor extends React.Component {\n constructor(props: any) {\n super(props);\n this.state = props.data;\n }\n\n handleChange(e: any) {\n let change = this.state;\n _.set(change, e.target.name, e.target.value)\n this.setState(change)\n this.props.refresh(this.state, this.props.array, this.props.index);\n }\n\n removeItem(){\n this.props.removeItem(this.props.index, this.props.array);\n }\n render() {\n \n return (\n \n \n \n \n \n \n \n \n \n \n \n \n );\n }\n}\n\nexport default GiftEditor;\n","/** @jsx jsx */\nimport {jsx} from '@emotion/core'\nimport React from \"react\";\nimport { MenuItem, Select } from '@material-ui/core';\n\nclass MultiValuePicker extends React.Component {\n constructor(props: any, data : any) {\n super(props);\n this.state = { target: {\n name: props.name,\n value: props.data\n }}\n\n this.selectableValues = props.items;\n }\n\n private selectableValues: any = []\n\n handleChange(e: any) {\n let change = { target: {\n name: this.props.name,\n value: e.target.value\n }};\n this.setState(change)\n this.props.onChange(change);\n }\n\n render() {\n \n return (\n \n Valitse arvo\n {\n this.selectableValues.map((item: any) => (\n {item.name}\n ))\n }\n \n );\n }\n}\n\nexport default MultiValuePicker;\n","/** @jsx jsx */\nimport {jsx} from '@emotion/core'\nimport React from \"react\";\nimport {FlexCol, FlexRow } from \"../common/CommonStyles\";\nimport TextField from '@material-ui/core/TextField';\nimport _ from 'lodash';\nimport { InsurancePayment } from './model/insurancePayment';\nimport CurrencyTextField from '@unicef/material-ui-currency-textfield'\nimport MultiValuePicker from './multiValuePicker';\nimport Button from '@material-ui/core/Button';\n\nclass InsurancePaymentEditor extends React.Component {\n constructor(props: any, data : any) {\n super(props);\n this.state = props.data !== null && props.data !== undefined ? props.data : {};\n \n }\n\n handleChange(e: any) {\n let change = this.state;\n _.set(change, e.target.name, e.target.value)\n this.setState(change)\n this.props.refresh(this.state, this.props.array, this.props.index);\n }\n\n removeItem(){\n this.props.removeItem(this.props.index, this.props.array);\n }\n\n render() {\n \n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n }\n}\n\nexport default InsurancePaymentEditor;\n","export class fraction{\n numenator: number = 0\n denominator: number = 0\n}","/** @jsx jsx */\nimport {jsx} from '@emotion/core'\nimport React from \"react\";\nimport TextField from '@material-ui/core/TextField';\nimport { fraction } from './model/fraction';\nimport * as _ from \"lodash\";\n\nclass FractionEditor extends React.Component {\n constructor(props: any, data : any) {\n super(props);\n this.setState(new fraction());\n }\n\n getNum(): number { \n if (this.state == undefined){\n this.setState(new fraction());\n return 0;\n }\n\n return this.state.numenator;\n }\n\n getDenom(): number { \n if (this.state == undefined){\n this.setState(new fraction());\n return 0;\n }\n\n return this.state.denominator;\n}\n\n handleChange(e: any) {\n if (e.target.value < 1){\n e.target.value = 1;\n }\n \n let change = this.state;\n _.set(change, e.target.name, e.target.value)\n this.setState(change)\n this.props.refreshProperties(this.state, this.props.entity);\n }\n\n render() {\n \n return (\n
    \n \n \n \n
    \n );\n }\n}\n\nexport default FractionEditor;\n","/** @jsx jsx */\nimport {jsx} from '@emotion/core'\nimport React from \"react\";\nimport { FlexCol, FlexRow } from \"../common/CommonStyles\";\nimport TextField from '@material-ui/core/TextField';\nimport _ from 'lodash';\nimport { beneficiary } from './model/beneficiary';\nimport FractionEditor from './fractionEditor';\nimport MultiValuePicker from './multiValuePicker';\nimport { Button } from '@material-ui/core';\n\nclass BeneficiaryEditor extends React.Component {\n constructor(props: any, data : any) {\n super(props);\n this.state = props.data;\n var change={};\n _.set(change, \"heritageShare\", {});\n _.set(change, \"willShare\", {});\n _.set(change, \"legalShare\", {});\n }\n\n handleChange(e: any) {\n let change = this.state;\n _.set(change, e.target.name, e.target.value)\n this.setState(change)\n this.props.refresh(this.state, this.props.array, this.props.index);\n }\n\n handleChildChange(e: any, entityName: string) {\n let change = this.state;\n _.set(change, entityName, e)\n this.setState(change)\n this.props.refresh(this.state, this.props.array, this.props.index);\n }\n\n removeItem(){\n this.props.removeItem(this.props.index, this.props.array);\n }\n\n render() {\n \n return (\n
    \n \n \n \n \n \n
    \n \n \n \n \n
    \n \n \n \n \n\n \n \n \n \n\n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n
    \n \n \n \n
    \n );\n }\n}\n\nexport default BeneficiaryEditor;\n","/** @jsx jsx */\nimport {jsx} from '@emotion/core'\nimport React from \"react\";\nimport {FlexCol, FlexRow } from \"../common/CommonStyles\";\nimport TextField from '@material-ui/core/TextField';\nimport * as _ from \"lodash\";\nimport Button from '@material-ui/core/Button';\n\nimport \"react-datepicker/dist/react-datepicker.css\";\nimport { advancement } from './model/advancement';\n\nimport CurrencyTextField from '@unicef/material-ui-currency-textfield'\nimport MultiValuePicker from './multiValuePicker';\n\nclass AdvancementCtrl extends React.Component {\n constructor(props: any, data : advancement) {\n super(props);\n this.state = props.data;\n \n }\n\n handleChange(e: any) {\n let change = this.state;\n _.set(change, e.target.name, e.target.value)\n this.setState(change)\n this.props.refresh(this.state, this.props.array, this.props.index);\n }\n\n removeItem(){\n this.props.removeItem(this.props.index, this.props.array);\n }\n render() {\n \n return (\n
    \n \n \n \n \n

    \n \n \n

    \n
    \n\n \n

    \n \n \n

    \n
    \n \n \n \n \n \n \n \n \n
    \n );\n }\n}\n\nexport default AdvancementCtrl;\n","export class valueDetails {\n id: string = \"\"\n value: number = 0\n details: string = \"\"\n}\n\nexport class companyValueDetails extends valueDetails {\n businessId: string = \"\"\n}\n\nexport class totalValueDetails extends valueDetails {\n numberOfItems: number = 0\n}","/** @jsx jsx */\nimport {jsx} from '@emotion/core'\nimport React from \"react\";\nimport Button from '@material-ui/core/Button';\nimport TextField from '@material-ui/core/TextField';\nimport { companyValueDetails, valueDetails, totalValueDetails } from './model/valueDetails';\nimport _ from 'lodash';\nimport CurrencyTextField from '@unicef/material-ui-currency-textfield'\n\nclass ValueDetailsEditor extends React.Component {\n constructor(props: any, data : any) {\n super(props);\n this.state = props.data;\n this.showBusinessId = props.data instanceof companyValueDetails;\n this.showNumberOfItems = props.data instanceof totalValueDetails;\n }\n\n showBusinessId : boolean = false;\n showNumberOfItems: boolean = false;\n\n handleChange(e: any) {\n let change = this.state;\n _.set(change, e.target.name, e.target.value)\n this.setState(change)\n this.props.refresh(this.state, this.props.array, this.props.index);\n }\n\n removeItem(){\n this.props.removeItem(this.props.index, this.props.array);\n }\n\n render() {\n \n return (\n \n {this.showBusinessId &&\n \n \n \n }\n {this.showNumberOfItems &&\n \n \n \n }\n\n \n \n \n \n \n \n \n \n \n \n );\n }\n}\n\nexport default ValueDetailsEditor;\n","/** @jsx jsx */\nimport {jsx} from '@emotion/core'\nimport React from \"react\";\nimport * as _ from \"lodash\";\nimport { v4 } from 'uuid';\nimport Button from '@material-ui/core/Button';\n\nimport Accordion from '@material-ui/core/Accordion';\nimport AccordionSummary from '@material-ui/core/AccordionSummary';\nimport AccordionDetails from '@material-ui/core/AccordionDetails';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport Typography from '@material-ui/core/Typography';\n\nimport \"react-datepicker/dist/react-datepicker.css\";\n\nimport { assets } from './model/assets';\nimport { FlexCol, panelWithShadowCss } from '../common/CommonStyles';\nimport ValueDetailsEditor from './valueDetailsEditor';\nimport { companyValueDetails, valueDetails, totalValueDetails } from './model/valueDetails';\n\nclass AssetEditor extends React.Component {\n constructor(props: any) {\n super(props);\n this.state = props.data as assets;\n }\n\n handleChange(e: any) {\n let change = this.state;\n _.set(change, e.target.name, e.target.value)\n this.setState(change)\n }\n\n addNewItem(itemName: string, item: any){\n var list = _.get(this.state, itemName);\n\n if (list === null || list === undefined){\n let change = this.state;\n _.set(change, itemName, []);\n }\n \n list = _.get(this.state, itemName);\n //var item = {} as any;\n\n item.id = v4();\n list.push(item);\n var change = {} as any\n _.set(change, itemName, list);\n this.setState(change);\n }\n\n setChildState(item: any, array: any, index: number){\n var list = _.get(this.state, array);\n list[index] = item;\n var change = {};\n _.set(change, array, list)\n this.setState(change)\n }\n\n \n refreshProperties(item: any, entity: any){\n _.set(this.state, entity, item);\n }\n\n removeItem (item: number, array: string) {\n var list = _.get(this.state, array);\n list.splice(item, 1);\n var change = {} as any\n //change.set.advancements = list;\n _.set(change, array, list);\n this.setState(change);\n }\n\n render() {\n return (\n
    \n \n }\n aria-controls=\"panel1a-content\"\n id=\"panel1a-header\"\n >\n Julkisesti noteeratut arvopaperit\n \n \n
    \n {\n this.state.publiclyTradedShares.map(item => (\n
    \n \n
    \n ))\n }\n \n
    \n
    \n
    \n\n \n }\n aria-controls=\"panel1a-content\"\n id=\"panel1a-header\"\n >\n Asunto-osakkeet\n \n \n
    \n {\n this.state.housingAssociationShares.map(item => (\n \n \n \n ))\n }\n \n
    \n
    \n
    \n\n\n \n }\n aria-controls=\"panel1a-content\"\n id=\"panel1a-header\"\n >\n Kiinteistöt\n \n \n
    \n {\n this.state.realEstates.map(item => (\n \n \n \n ))\n }\n \n
    \n
    \n
    \n\n \n }\n aria-controls=\"panel1a-content\"\n id=\"panel1a-header\"\n >\n Vapaa-ajan kiinteistöt\n \n \n
    \n {\n this.state.leisureRealEstates.map(item => (\n \n \n \n ))\n }\n \n
    \n
    \n
    \n\n \n }\n aria-controls=\"panel1a-content\"\n id=\"panel1a-header\"\n >\n Noteeraamattomat osakkeet\n \n \n
    \n {\n this.state.nonListedCompanyShares.map(item => (\n \n \n \n ))\n }\n \n
    \n
    \n
    \n\n \n }\n aria-controls=\"panel1a-content\"\n id=\"panel1a-header\"\n >\n Henkilöyhtiöt\n \n \n
    \n {\n this.state.partnerships.map(item => (\n \n \n \n ))\n }\n \n
    \n
    \n
    \n\n \n }\n aria-controls=\"panel1a-content\"\n id=\"panel1a-header\"\n >\n Kapitalisaatiosopimus\n \n \n
    \n {\n this.state.capitalRedemptionPolicy.map(item => (\n \n \n \n ))\n }\n \n
    \n
    \n
    \n\n \n }\n aria-controls=\"panel1a-content\"\n id=\"panel1a-header\"\n >\n Tilivarat\n \n \n
    \n {\n this.state.bankAccounts.map(item => (\n \n \n \n ))\n }\n \n
    \n
    \n
    \n\n \n }\n aria-controls=\"panel1a-content\"\n id=\"panel1a-header\"\n >\n Osuus kuolinpesässä\n \n \n
    \n {\n this.state.partInAnEstate.map(item => (\n \n \n \n ))\n }\n \n
    \n
    \n
    \n\n \n }\n aria-controls=\"panel1a-content\"\n id=\"panel1a-header\"\n >\n Ulkomailla sijaitseva varallisuus\n \n \n
    \n {\n this.state.assetsOutsideOfFinland.map(item => (\n \n \n \n ))\n }\n \n
    \n
    \n
    \n\n \n }\n aria-controls=\"panel1a-content\"\n id=\"panel1a-header\"\n >\n Rekisteröidyt ajoneuvot\n \n \n
    \n {\n this.state.vehicles.map(item => (\n \n \n \n ))\n }\n \n
    \n
    \n
    \n\n \n }\n aria-controls=\"panel1a-content\"\n id=\"panel1a-header\"\n >\n Muu varallisuus\n \n \n
    \n {\n this.state.otherAssets.map(item => (\n \n \n \n ))\n }\n \n
    \n
    \n
    \n\n
    \n );\n }\n}\n\nexport default AssetEditor;\n","/** @jsx jsx */\nimport {jsx} from '@emotion/core'\nimport React from \"react\";\nimport {FlexCol, FlexRow, panelWithShadowCss,} from \"../common/CommonStyles\";\nimport Card from '../common/Card';\nimport TextField from '@material-ui/core/TextField';\nimport * as _ from \"lodash\";\nimport { v4 } from 'uuid';\nimport Button from '@material-ui/core/Button';\n\nimport Accordion from '@material-ui/core/Accordion';\nimport AccordionSummary from '@material-ui/core/AccordionSummary';\nimport AccordionDetails from '@material-ui/core/AccordionDetails';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport Typography from '@material-ui/core/Typography';\n\nimport \"react-datepicker/dist/react-datepicker.css\";\n\nimport { EstateInventory } from './model/estateInventory';\nimport AddressEditor from './addressEditor';\nimport PersonEditor from './personEditor';\nimport GiftEditor from './giftEditor';\nimport InsurancePaymentEditor from './insurancePaymentEditor';\nimport BeneficiaryEditor from './beneficiaryEditor';\nimport { Divider } from '@material-ui/core';\nimport AdvancementCtrl from './advancementCtrl';\nimport AssetEditor from './assetEditorCtrl';\nimport ValueDetailsEditor from './valueDetailsEditor';\nimport Checkbox from '@material-ui/core/Checkbox';\n\nclass EstateInventoryEditor extends React.Component {\n constructor(props: any) {\n super(props);\n this.state = new EstateInventory()\n }\n\n handleChange(e: any) {\n let change = this.state;\n _.set(change, e.target.name, e.target.value)\n this.setState(change)\n }\n\n handleCheckbox(e: any) {\n let change = this.state;\n _.set(change, e.target.name, e.target.checked)\n this.setState(change)\n }\n\n addNewRow(arrayName: string){\n var list = _.get(this.state, arrayName);\n\n if (list === null || list === undefined){\n let change = this.state;\n _.set(change, arrayName, []);\n }\n \n list = _.get(this.state, arrayName);\n var item = {} as any;\n item.id = v4();\n list.push(item);\n var change = {} as any\n _.set(change, arrayName, list);\n this.setState(change);\n }\n\n setChildState(item: any, array: any, index: number){\n var list = _.get(this.state, array);\n list[index] = item;\n var change = {};\n _.set(change, array, list)\n this.setState(change)\n }\n\n \n refreshProperties(item: any, entity: any){\n _.set(this.state, entity, item);\n }\n\n removeItem (item: number, array: string) {\n var list = _.get(this.state, array);\n list.splice(item, 1);\n var change = {} as any\n _.set(change, array, list);\n this.setState(change);\n }\n\n advancementSum(): string {\n var sum = 0;\n for (var i = 0; i < this.state.advancements.length; i++)\n {\n var amount = this.state.advancements[i].value as unknown as string;\n if (amount !== undefined && amount !== null){\n sum += Number.parseFloat(amount.split(' ').join(''));\n }\n }\n\n return sum.toString();\n }\n\n giftsSum(): string {\n var sum = 0;\n for (var i = 0; i < this.state.gifts.length; i++)\n {\n var amount = this.state.gifts[i].value as unknown as string;\n if (amount !== undefined && amount !== null){\n sum += Number.parseFloat(amount.split(' ').join(''));\n }\n }\n\n return sum.toString();\n }\n\n insurancesSum(): string {\n var sum = 0;\n for (var i = 0; i < this.state.insurancePayments.length; i++)\n {\n var amount = this.state.insurancePayments[i].value as unknown as string;\n if (amount !== undefined && amount !== null){\n sum += Number.parseFloat(amount.split(' ').join(''));\n }\n }\n\n return sum.toString();\n }\n\n render() {\n \n return (\n \n \n \n Yhteyshenkilö\n \n\n Osoite suomessa\n \n\n \n }\n aria-controls=\"panel1a-content\"\n id=\"panel1a-header\">\n Osoite ulkomailla\n \n \n \n \n \n\n

    \n\n Perinnönjättäjä\n \n\n Leski\n \n\n \n\n \n }\n aria-controls=\"panel1a-content\"\n id=\"panel1a-header\"\n >\n Perilliset\n \n \n
    \n {\n this.state.beneficiaries.map(item => (\n \n \n \n ))\n }\n \n
    \n
    \n
    \n\n

    \n \n\n \n }\n aria-controls=\"panel1a-content\"\n id=\"panel1a-header\"\n >\n Ennakkoperinnöt, {this.state.advancements.length} kpl, {this.advancementSum()} € \n \n \n
    \n {\n this.state.advancements.map(item => (\n \n \n \n ))\n }\n \n
    \n
    \n
    \n\n \n }\n aria-controls=\"panel1a-content\"\n id=\"panel1a-header\"\n >\n Lahjat, {this.state.gifts.length} kpl, {this.giftsSum()} € \n \n \n
    \n {\n this.state.gifts.map(item => (\n \n \n \n ))\n }\n \n
    \n
    \n
    \n\n \n }\n aria-controls=\"panel1a-content\"\n id=\"panel1a-header\"\n >\n Vakuutuskorvaukset, {this.state.insurancePayments.length} kpl, {this.insurancesSum()} € \n \n \n
    \n {\n this.state.insurancePayments.map(item => (\n \n \n \n ))\n }\n \n
    \n
    \n
    \n\n \n \n \n \n\n \n }\n aria-controls=\"panel1a-content\"\n id=\"panel1a-header\"\n >\n Perinnönjättäjän varallisuus\n \n \n {\n \n }\n \n \n\n \n \n \n\n \n }\n aria-controls=\"panel1a-content\"\n id=\"panel1a-header\"\n >\n Perinnönjättäjän velkojen erittely\n \n \n
    \n {\n this.state.decedentLiabilities.map(item => (\n \n \n \n ))\n }\n \n
    \n
    \n
    \n\n \n \n \n\n \n }\n aria-controls=\"panel1a-content\"\n id=\"panel1a-header\"\n >\n Lesken tai aiemmin kuolleen puolison avio-oikeuden alainen varallisuus\n \n \n {\n \n }\n \n \n\n \n Vaatimus, että perintöveroa huojennetaan (Perintö ja lahjaverolaki 55§)\n \n \n \n Vaatimus, että perintöveron maksuaikaa pidennetään (Perintö ja lahjaverolaki 56§)\n \n \n \n Leski vetoaa AL 103.2§\n \n \n \n Perinnönjättäjällä on testamentti\n \n \n \n Lesken hallinta vakituiseen asuntoon\n \n \n \n Perinnönjättäjän varallisuuteen sisältyy kahden vuoden sisällä perittyä varallisuutta\n \n \n \n Lesken varallisuuteen sisältyy kahden vuoden sisällä perittyä varallisuutta\n \n \n \n \n \n
    \n
    \n \n );\n }\n}\n\nexport default EstateInventoryEditor;\n","import React, {useContext} from \"react\";\nimport {AppContext} from \"../../App\";\nimport Layout from \"../common/Layout\";\nimport { Heading } from \"suomifi-ui-components\";\nimport { FlexCol, FlexRow, TableSmall } from \"../common/CommonStyles\";\nimport { Relationship } from \"../common/DomainTypes\";\n\nconst Home: React.FC = () => {\n const [appState] = useContext(AppContext);\n const person = appState.person;\n console.log(\"Person: \", person);\n const spouse = person.personRelations ? person.personRelations.find(i => i.role === Relationship.SPOUSE) : null;\n const children =\n person.personRelations?.filter((item) => item.role === Relationship.CHILD) || [];\n return (\n \n {person.firstName} {person.lastName}\n \n *': {\n boxSizing: 'border-box',\n minHeight: \"300px\"\n }\n }}>\n \n \n \n Henkilötunnus\n {person.ssn}\n \n \n Syntymäaika\n {person.birthday?.toLocaleDateString('fi', { year: \"numeric\", month: \"long\", day: \"numeric\"})}\n \n \n Osoite\n {person.address?.street}, {person.address?.zip} {person.address?.city}\n \n \n Ensisijainen kieli\n {person.primaryLanguage}\n \n \n Kansalaisuus\n {person.nationality}\n \n { person.dateOfDeath && !person.deathInfo?.cancellationOfDeath && \n Kuolinaika\n {person.dateOfDeath?.toLocaleDateString('fi', { year: \"numeric\", month: \"long\", day: \"numeric\"})}\n }\n { person.dateOfDeath && person.deathInfo?.cancellationOfDeath && \n Kuolinaika\n {person.dateOfDeath?.toLocaleDateString('fi', { year: \"numeric\", month: \"long\", day: \"numeric\"})}\n }\n { spouse && \n Puoliso\n {spouse.relatedPerson ? spouse.relatedPerson.fullName : spouse.targetPersonSsn}\n }\n { children.length > 0 && (\n \n Lapset\n \n {children.map(item => (\n
    \n {item.relatedPerson?.firstName} {item.relatedPerson?.lastName} {item.targetPersonSsn}\n
    \n ))}\n \n \n )}\n \n
    \n
    \n
    \n
    \n );\n};\n\nexport default Home;\n","import * as OmaElamaFunctions from \"../api/omaelama-functions\";\nimport { Message, MessageType, EventGridEvent } from \"../components/common/DomainTypes\";\nimport { GenericEventPayload, GenericFormType } from \"../components/forms/GenericFormTypes\";\nimport { DeathReport } from \"../components/forms/reportDeath/model/ReportDeathFormModel\";\nimport * as tokenUtil from \"../utils/tokenUtil\"\n\nexport async function decodeToken(): Promise {\n try {\n const {isValid, decodedToken} = await tokenUtil.isTokenValid();\n if (!isValid) {\n return Promise.reject(\"Invalid token\");\n }\n return decodedToken;\n }\n catch(err) {\n return Promise.reject(err);\n }\n}\n\nexport async function fetchCurrentUser(): Promise {\n return (await OmaElamaFunctions.fetchCurrentUser()).data;\n}\n\nexport async function fetchUserMessages(): Promise {\n const data = (await OmaElamaFunctions.GetUserMessages()).data;\n return data.map(resultsToMessages);\n}\n\nfunction resultsToMessages(data: any): Message {\n return {\n ...data, jsonData: jsonDataToObject(data)\n };\n}\n\nfunction jsonDataToObject(data: any) {\n let eventData;\n switch(data.type) {\n case MessageType.EVENT:\n switch(data.subType) {\n case GenericFormType.DEATH_REPORT:\n case \"Kuolintieto\":\n eventData = { ...data.jsonData } as EventGridEvent;\n break;\n default:\n if (data.source === \"EventGrid\") {\n eventData = { ...data.jsonData } as EventGridEvent;\n }\n else {\n eventData = data.jsonData;\n }\n }\n break;\n default:\n // MessageType.MESSAGE contains a string\n eventData = data.jsonData as string;\n }\n return eventData;\n}","import { useContext, useEffect, useState, Dispatch, SetStateAction } from \"react\";\nimport { DUMMY_MESSAGES, NULL_PERSON } from \"../components/common/DefaultValues\";\nimport { Message, Person } from \"../components/common/DomainTypes\";\nimport { AppContext } from \"../App\";\nimport { decodeToken, fetchCurrentUser, fetchUserMessages } from \"./actions\";\nimport { DecodedToken } from \"../utils/tokenUtil\";\n\nexport interface AppState {\n person: Person;\n isLoadingPerson: boolean;\n decodedToken?: DecodedToken;\n messages: Message[];\n}\n\nexport function initialState(): AppState {\n return {\n person: NULL_PERSON,\n isLoadingPerson: true,\n messages: [],\n };\n}\n\nexport function loadAppState(appState: AppState, setAppState: Dispatch>) {\n loadAppStateAsync(appState, setAppState);\n}\n\nexport async function loadAppStateAsync(appState: AppState, setAppState: Dispatch>): Promise {\n // decodeToken()\n // .then(decodedToken => {\n // setState(state => ({...state, decodedToken}));\n // return fetchCurrentUser();\n // })\n return fetchCurrentUser()\n .then(data => {\n const person = parsePerson(data);\n person.personRelations?.forEach(pr => {\n if (pr.relatedPerson) {\n pr.relatedPerson = parsePerson(pr.relatedPerson);\n }\n });\n setAppState(appState => ({...appState, person: parsePerson(data), isLoadingPerson: false}));\n return fetchUserMessages();\n })\n .then(messages => {\n setAppState(appState => ({...appState, messages}));\n })\n .catch(err => {\n console.log(\"Error\", err);\n setAppState(appState => ({...appState, decodedToken: undefined, person: NULL_PERSON, isLoadingPerson: false}));\n });\n}\n\nconst parsePerson = (data: any): Person => {\n return {\n id: data.id,\n ssn: data.code,\n firstName: data.firstNames,\n lastName: data.lastName,\n fullName: `${data.firstNames} ${data.lastName}`,\n birthday: new Date(Date.parse(data.birthday)),\n primaryLanguage: data.primaryLanguage,\n nationality: data.nationality,\n childCount: data.childCount,\n dateOfDeath: data.dateOfDeath ? new Date(Date.parse(data.dateOfDeath)) : undefined,\n deathInfo: data.deathInfo,\n address: data.addresses ? {\n street: data.addresses[0]?.address,\n zip: data.addresses[0]?.postalCode,\n city: data.addresses[0]?.postalDistrict\n } : undefined,\n personRelations: data.personRelations\n // ...data.personRelations,\n // relatedPerson: data.personRelations.relatedPerson ? parsePerson(data.personRelations.relatedPerson) : null\n // } : null\n };\n}","/** @jsx jsx */\nimport {jsx} from '@emotion/core'\nimport React, {useContext, useEffect, useState} from \"react\";\nimport {useHistory} from \"react-router\";\nimport Modal from 'react-modal';\nimport axios from \"axios\";\nimport {Button, Heading, suomifiDesignTokens as tokens} from \"suomifi-ui-components\";\nimport {ApiContext, AppContext} from \"../../App\";\nimport {FlexCol, FlexRow, Heading1WithBottomBorder,} from \"../common/CommonStyles\";\nimport Spinner from \"../common/Spinner\";\nimport {NULL_PERSON} from \"../common/DefaultValues\";\nimport {ButtonLink, Input} from '../common/InputStyles';\nimport { login } from '../../api/omaelama-functions'\nimport { loadAppStateAsync } from '../../state/AppContext';\n\nconst Login: React.FC = () => {\n const apiUrl = useContext(ApiContext);\n const [appState, setAppState] = useContext(AppContext);\n\n const history = useHistory();\n\n const [ssn, setSsn] = useState('');\n const [loading, setLoading] = useState(false);\n\n // ensure empty user when login page is viewed\n useEffect(() => {\n setAppState(appState => ({...appState, person: NULL_PERSON}));\n }, [setAppState]);\n\n const doLogin = (ssn: string) => {\n setLoading(true);\n login(ssn)\n .then(res => {\n return loadAppStateAsync(appState, setAppState);\n })\n .then(() => {\n setLoading(false);\n history.push('/');\n })\n .catch(() => {\n setLoading(false);\n });\n };\n\n return
    \n \n \n
    \n \n Kirjaudu\n \n Syötä henkilötunnuksesi ja paina kirjaudu.\n
    \n\n
    \n \n\n \n
    \n\n
    \n Kokeile esimerkkihenkilöillä:\n
      \n
    • \n doLogin('270400A999V')}>Erno Jacopintes\n
    • \n
    • \n doLogin('241254-999A')}>Villehard Yrjänä Pekkala\n
    • \n
    • \n doLogin('291156-9987')}>Moa Maj Pekkala\n
    • \n
    • \n doLogin('080880-938H')}>Silja Juhola\n
    • \n
    • \n doLogin('160256-995F')}>Pekko Piermontes\n
    • \n
    • \n doLogin('290399-997U')}>Pietari Järvites\n
    • \n
    • \n doLogin('290998-996C')}>Tuulamarianne Ollenbergtes\n
    • \n
    • \n doLogin('010280-952L')}>Tessa Testilä\n
    • \n
    • \n doLogin('010180-953U')}>Tehvo Testilä\n
    • \n
    • \n doLogin('200760-9998')}>Erkka Kaj Aaltonen\n
    • \n
    • \n doLogin('190465-998E')}>Jenny Aaltonen\n
    • \n
    • \n doLogin('030553-998U')}>Kaisa von Kugelgentes\n
    • \n
    \n
    \n
    \n
    \n \n\n \n \n \n Kirjaudutaan...\n \n \n\n
    ;\n};\n\nexport default Login;\n","import styled from '@emotion/styled'\nimport {Heading, suomifiDesignTokens as tokens} from \"suomifi-ui-components\";\nimport {MainWithBorder} from \"./CommonStyles\";\n\nexport const Toolbar = styled.div`\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin: ${tokens.spacing.l} 0 ${tokens.spacing.s};\n`;\n\nexport const Main = styled(MainWithBorder)`\n padding: ${tokens.spacing.xl};\n line-height: 2;\n @media (max-width: 800px) {\n padding: ${tokens.spacing.l} ${tokens.spacing.m};\n }\n`;\n\nexport const Section = styled.section`\n margin: ${tokens.spacing.l} 0;\n`;\n\nexport const Heading1 = styled(Heading)`\n margin: ${tokens.spacing.m} 0;\n`;\n\nexport const Heading2 = styled(Heading)`\n margin: ${tokens.spacing.m} 0;\n`;\n","/** @jsx jsx */\nimport {jsx} from '@emotion/core'\nimport React, {useContext} from \"react\";\nimport {useHistory} from \"react-router\";\nimport {Button, suomifiDesignTokens as tokens, Text} from \"suomifi-ui-components\";\nimport Spinner from \"../common/Spinner\";\nimport {ButtonSecondaryDark,} from \"../common/InputStyles\";\nimport {Party, Will, WillAsset} from \"../common/DomainTypes\";\nimport {Heading1, Heading2, Main, Section, Toolbar} from \"../common/DocumentStyles\";\nimport {useWill} from \"./useWill\";\nimport {AppContext} from \"../../App\";\n\nconst WillView: React.FC = () => {\n const history = useHistory();\n const [appState] = useContext(AppContext)\n const person = appState.person;\n const {will, loadingWill} = useWill();\n\n const renderWill = (will: Will) => (\n
    \n

    \n {will.clause}\n

    \n
      \n {will.assets.map(renderAsset)}\n
    \n
    \n );\n\n const renderAsset = (asset: WillAsset, i: number) => (\n
  • \n {asset.name}\n
      \n {asset.parties.map(renderParty)}\n
    \n
  • \n );\n\n const renderParty = (party: Party, i: number) => (\n
  • \n \n {party.person.firstName} {party.person.lastName}\n ({party.person.ssn}) osuudella {party.share}\n
  • \n );\n\n return (\n
    \n \n history.push(\"/perukirja\")}>\n Perukirja\n \n \n \n\n
    \n \n Testamentti\n \n\n
    \n Tekijä\n\n {person.firstName} {person.lastName} ({person.ssn})\n
    \n {person.address?.street}, {person.address?.zip} {person.address?.city}\n
    \n\n
    \n Testamenttimääräys\n\n {loadingWill ? : renderWill(will)}\n
    \n
    \n
    \n
    \n );\n};\n\nexport default WillView;\n","export const roundToPrecision = (number: number, precision: number) => {\n const i = Math.pow(10, precision);\n return Math.round((number + Number.EPSILON) * i) / i;\n};\n\nexport const fractionToPercentage = (fraction: string): number => {\n const numeratorAndDenominator = fraction.split('/');\n return roundToPrecision(\n (parseInt(numeratorAndDenominator[0], 10) / parseInt(numeratorAndDenominator[1], 10)) * 100, 1);\n};\n\nexport const percentageToFraction = (percentage: number): string => {\n const greatestCommonDivisor = (a: number, b: number): number => {\n return !b ? a : greatestCommonDivisor(b, a % b);\n };\n\n const precision = 3;\n const number = roundToPrecision(percentage / 100, precision);\n\n const denominator = Math.pow(10, precision);\n const numerator = Math.round(number * denominator);\n const divisor = greatestCommonDivisor(numerator, denominator);\n\n return Math.floor(numerator / divisor) + '/' + Math.floor(denominator / divisor);\n};\n","/** @jsx jsx */\nimport {css, jsx} from '@emotion/core'\nimport React, {useEffect, useState} from \"react\";\nimport {useHistory} from \"react-router\";\nimport {v4 as uuidv4} from 'uuid';\nimport {Button, Heading, Text} from \"suomifi-ui-components\";\nimport {FlexColTight, HideOnSmallDisplay, TableSmall,} from \"../common/CommonStyles\";\nimport {\n ButtonIconOnly,\n ButtonSecondaryDark,\n Input,\n InputNumber,\n InputRadio,\n TextArea\n} from \"../common/InputStyles\";\nimport {suomifiDesignTokens as tokens} from \"suomifi-design-tokens\";\nimport {fractionToPercentage, percentageToFraction} from \"../../utils/mathUtils\";\nimport {currentIsoDate} from \"../../utils/dateUtils\";\nimport Modal from \"react-modal\";\nimport {Asset, Party, Person, WillAsset} from \"../common/DomainTypes\";\nimport {Heading1, Main, Toolbar} from \"../common/DocumentStyles\";\nimport {useWill} from \"./useWill\";\nimport {useAssets} from \"../assets/useAssets\";\nimport {useParties} from \"../parties/useParties\";\n\nconst createNewAsset = (): WillAsset => ({\n id: uuidv4(),\n name: \"Uusi omaisuus\",\n value: 0,\n count: 0,\n parties: []\n});\n\nconst WillEdit: React.FC = () => {\n const history = useHistory();\n\n const {will, setWill, saveWill} = useWill({\n id: uuidv4(),\n clause: \"\",\n date: currentIsoDate(),\n assets: []\n });\n\n const [isAssetModalOpen, setAssetModalOpen] = useState(false);\n const [isAssetModalEditMode, setAssetModalEditMode] = useState(false);\n const [modalAsset, setModalAsset] = useState(createNewAsset());\n\n const updateClause = (clause: string) => {\n setWill(prevWill => ({...prevWill, clause}));\n };\n\n const insertAsset = (asset: WillAsset) => {\n setWill(prevWill => ({\n ...prevWill,\n assets: prevWill.assets.concat(asset)\n }));\n };\n\n const updateAsset = (asset: WillAsset) => {\n setWill(prevWill => ({\n ...prevWill,\n assets: prevWill.assets.map(a => a.id === asset.id ? asset : a)\n }));\n };\n\n const deleteAsset = (assetId: string) => {\n setWill(prevWill => ({\n ...prevWill,\n assets: prevWill.assets.filter(a => a.id !== assetId)\n }));\n };\n\n return (\n
    \n \n saveWill().then(() => history.push(\"/testamentti\"))}>\n Tallenna\n \n \n \n\n
    \n \n Testamentti\n \n\n \n\n
      \n {will.assets.map((asset, i) =>\n )}\n
    \n\n setAssetModalOpen(true)}>\n Testamenttaa lisää omaisuutta\n \n\n {\n insertAsset(modalAsset);\n setModalAsset(createNewAsset());\n setAssetModalOpen(false);\n setAssetModalEditMode(false);\n }}\n onClickCancel={() => {\n setModalAsset(createNewAsset());\n setAssetModalOpen(false);\n setAssetModalEditMode(false);\n }}/>\n
    \n
    \n
    \n );\n};\n\ninterface AssetEditModalProps {\n isOpen: boolean,\n isEditMode: boolean,\n setEditMode: (isEdit: boolean) => void,\n asset: WillAsset,\n setAsset: (asset: WillAsset) => void,\n onClickSave: () => void,\n onClickCancel: () => void,\n}\n\nconst AssetEditModal: React.FC = (\n {isOpen, isEditMode, setEditMode, asset, setAsset, onClickSave, onClickCancel}) => {\n\n // existing assets\n const {assets} = useAssets();\n\n const updateAssetName = (name: string) => {\n setAsset({...asset, name});\n };\n\n const renderEditView = () => (\n
    \n \n
    \n );\n\n const renderSelectViewAssetRow = (a: Asset, i: number) => (\n \n \n \n \n \n {\n updateAssetName(a.name);\n setEditMode(true);\n }}/>\n \n \n );\n\n const renderSelectView = () => (\n
    \n Valitse omaisuus tai luo uusi omaisuusmerkintä\n \n \n {assets.map(renderSelectViewAssetRow)}\n \n \n \n \n \n \n \n
    \n );\n\n return \n \n \n Omaisuus\n \n\n {isEditMode ?\n renderEditView() :\n renderSelectView()}\n\n
    \n \n \n
    \n
    \n
    ;\n};\n\ninterface AssetEditRowProps {\n asset: WillAsset,\n updateAsset: (asset: WillAsset) => void,\n deleteAsset: (assetId: string) => void,\n}\n\nconst AssetEditRow: React.FC = ({asset, updateAsset, deleteAsset}) => {\n const createNewPerson = (): Person => {\n return {\n id: uuidv4(),\n ssn: \"\",\n firstName: \"\",\n lastName: \"\",\n fullName: \"\",\n primaryLanguage: \"fi\",\n nationality: \"FIN\",\n childCount: 0,\n };\n };\n\n const [isPersonModalOpen, setPersonModalOpen] = useState(false);\n const [modalPerson, setModalPerson] = useState(createNewPerson());\n\n const [isAssetModalOpen, setAssetModalOpen] = useState(false);\n const [modalAsset, setModalAsset] = useState(asset);\n\n useEffect(() => {\n setModalAsset(asset);\n }, [asset]);\n\n const insertParty = (party: Party) => {\n updateAsset({\n ...asset,\n parties: asset.parties.concat(party)\n });\n };\n\n const updateParty = (party: Party) => {\n updateAsset({\n ...asset,\n parties: asset.parties.map(p => p.person.id === party.person.id ? party : p)\n });\n };\n\n const deleteParty = (personId: string) => {\n updateAsset({\n ...asset,\n parties: asset.parties.filter(p => p.person.id !== personId)\n });\n };\n\n return (\n
  • \n \n {asset.name}\n
    \n setAssetModalOpen(true)}/>\n deleteAsset(asset.id)}/>\n
    \n
    \n
      \n {asset.parties.map((party, j) =>\n )}\n
    \n setPersonModalOpen(true)}>\n Lisää perijä\n \n\n {\n insertParty({share: \"0/1\", person: modalPerson});\n setModalPerson(createNewPerson());\n setPersonModalOpen(false);\n }}\n onClickCancel={() => {\n setPersonModalOpen(false);\n }}/>\n\n null}\n asset={modalAsset}\n setAsset={setModalAsset}\n onClickSave={() => {\n updateAsset(modalAsset);\n setAssetModalOpen(false);\n }}\n onClickCancel={() => {\n setAssetModalOpen(false);\n }}/>\n
  • \n );\n};\n\ninterface PartyEditRowProps {\n party: Party,\n updateParty: (party: Party) => void,\n deleteParty: (personId: string) => void,\n}\n\nconst PartyEditRow: React.FC = ({party, updateParty, deleteParty}) => {\n const [isModalOpen, setModalOpen] = useState(false);\n const [modalPerson, setModalPerson] = useState(party.person);\n\n useEffect(() => {\n setModalPerson(party.person);\n }, [party.person]);\n\n const updateShare = (value: string) => {\n const percentage = value ? parseFloat(value) : 0;\n if (percentage >= 0 && percentage <= 100) {\n updateParty({\n ...party,\n share: percentageToFraction(percentage)\n });\n }\n };\n\n return (\n
  • \n
    \n
    \n updateShare(e.currentTarget.value)}\n /> %\n  \n \n {party.person.firstName} {party.person.lastName}\n ({party.person.ssn})\n
    \n
    \n setModalOpen(true)}/>\n deleteParty(party.person.id)}/>\n
    \n
    \n {\n updateParty({...party, person: modalPerson});\n setModalOpen(false);\n }}\n onClickCancel={() => {\n setModalOpen(false);\n }}/>\n
  • \n );\n};\n\ninterface PersonEditModalProps {\n isOpen: boolean,\n person: Person,\n setPerson: (person: Person) => void,\n onClickSave: () => void,\n onClickCancel: () => void,\n}\n\nconst PersonEditModal: React.FC = (\n {isOpen, person, setPerson, onClickSave, onClickCancel}) => {\n\n // known parties (parties to an estate - kuolinpesän osakkaat)\n const {parties} = useParties();\n\n const updateSsn = (ssn: string) => {\n const knownPerson = parties.filter(p => p.person.ssn === ssn)[0];\n\n if (knownPerson) {\n // keep the old id as it's used to track changes\n setPerson({...knownPerson.person, id: person.id});\n } else {\n setPerson({...person, ssn});\n }\n };\n\n const updateFirstName = (firstName: string) => {\n setPerson({...person, firstName});\n };\n\n const updateLastName = (lastName: string) => {\n setPerson({...person, lastName});\n };\n\n return \n \n \n Henkilö\n \n\n \n \n \n\n
    \n \n \n
    \n
    \n
    ;\n};\n\nexport default WillEdit;\n","/** @jsx jsx */\nimport {jsx} from '@emotion/core'\nimport React from \"react\";\nimport {Button, Text} from \"suomifi-ui-components\";\nimport {usePrenuptial} from \"./usePrenuptial\";\nimport {Heading1, Heading2, Main, Section, Toolbar} from \"../common/DocumentStyles\";\nimport {ButtonSecondaryDark} from \"../common/InputStyles\";\nimport {useHistory} from \"react-router\";\nimport {fiLabelForPrenuptialType} from \"../common/DefaultValues\";\n\nconst PrenuptialView: React.FC = () => {\n const history = useHistory();\n const {prenuptial} = usePrenuptial();\n\n return (\n
    \n \n history.push(\"/perukirja\")}>\n Perukirja\n \n \n \n\n
    \n \n Avioehto\n \n\n
    \n \n {fiLabelForPrenuptialType(prenuptial.type)}\n \n {prenuptial.clause}\n
    \n
    \n \n Osapuolet\n \n {prenuptial.parties.map((party, i) =>\n {party.firstName} {party.lastName}
    \n )}\n
    \n
    \n
    \n
    \n );\n};\n\nexport default PrenuptialView;\n","/** @jsx jsx */\nimport {jsx} from '@emotion/core'\nimport React, {useContext, useEffect} from \"react\";\nimport {useHistory} from \"react-router\";\nimport {Button} from \"suomifi-ui-components\";\nimport {Input, InputIcon, Select, TextArea} from \"../common/InputStyles\";\nimport {suomifiDesignTokens as tokens} from \"suomifi-design-tokens\";\nimport {Heading1, Main, Toolbar} from \"../common/DocumentStyles\";\nimport {usePrenuptial} from \"./usePrenuptial\";\nimport {AppContext} from \"../../App\";\nimport {useSpouse} from \"../family/useSpouse\";\nimport {PrenuptialType} from \"../common/DomainTypes\";\nimport {fiLabelForPrenuptialType} from \"../common/DefaultValues\";\nimport {FlexColTight} from \"../common/CommonStyles\";\n\nconst PrenuptialEdit: React.FC = () => {\n const [appState] = useContext(AppContext)\n const person = appState.person;\n const {spouse} = useSpouse();\n\n const history = useHistory();\n const {prenuptial, setPrenuptial, savePrenuptial} = usePrenuptial();\n\n useEffect(() => {\n spouse && setPrenuptial(prevPrenup => ({\n ...prevPrenup, parties: [person, spouse]\n }));\n }, [person, spouse, setPrenuptial]);\n\n const updateClause = (clause: string) => {\n setPrenuptial(prevPrenup => ({...prevPrenup, clause}));\n };\n\n const updateType = (type: PrenuptialType) => {\n setPrenuptial(prevPrenup => ({...prevPrenup, type}));\n };\n\n return (\n
    \n \n savePrenuptial().then(() => history.push(\"/avioehto\"))}>\n Tallenna\n \n \n \n\n
    \n \n \n Avioehto\n \n\n \n\n \n\n \n\n \n\n\n
    \n
    \n
    \n );\n};\n\n\nexport default PrenuptialEdit;\n","export function cloneDocument(document: Document): Document {\n return document.cloneNode(true) as Document;\n}\n\nexport function parseXml(xmlString: string): Document {\n return new DOMParser().parseFromString(xmlString, \"text/xml\");\n}\n\nexport function toString(xmlDocument: Node): string {\n return new XMLSerializer().serializeToString(xmlDocument);\n}\n\nexport function updateElement(document: Document, elementPath: string,\n updateFunction: (el: Element) => void): Document {\n\n let element = queryFirstElement(document, elementPath);\n\n if (element) {\n updateFunction(element);\n } else {\n console.warn(\"Could not update, element not found with: \" + elementPath);\n }\n\n return document;\n}\n\nexport function ensureElementAndUpdate(\n document: Document, parentPath: string, elementName: string, beforeSibling: string[] | null,\n updateFunction: (el: Element) => void = () => null): Document {\n let element = queryFirstElement(document, parentPath + \"/\" + elementName);\n\n if (element) {\n updateFunction(element);\n return document;\n }\n\n let parentNode = queryFirstNode(document, parentPath);\n\n if (parentNode) {\n const newChild = document.createElement(elementName);\n\n let sibling = null;\n\n if (beforeSibling) {\n for (let i = 0; i < parentNode.childNodes.length; i++) {\n let childNode = parentNode.childNodes[i];\n if (beforeSibling.find(siblingName => siblingName === childNode.nodeName)) {\n sibling = childNode;\n break;\n }\n }\n }\n\n updateFunction(parentNode.insertBefore(newChild, sibling))\n } else {\n console.warn(\"Could not create and update child element, parent node not found with: \" + parentPath);\n }\n\n return document;\n}\n\nexport function queryFirstNode(context: Node, xPathExpression: string): Node | null {\n return new XPathEvaluator().evaluate(\n xPathExpression, context, null, XPathResult.ANY_UNORDERED_NODE_TYPE, null).singleNodeValue;\n}\n\nexport function queryFirstText(context: Node, xPathExpression: string): string {\n return queryFirstNode(context, xPathExpression)?.textContent || '';\n}\n\nexport function queryFirstElement(context: Node, xPathExpression: string): Element | null {\n let node = queryFirstNode(context, xPathExpression);\n\n if (node === null) {\n return null;\n }\n\n if (node.nodeType === Node.ELEMENT_NODE) {\n return node as Element;\n } else {\n throw new Error(\"Unexpected node type: \" + node);\n }\n}\n\nexport function queryNodes(context: Node, xPathExpression: string): Node[] {\n let results: Node[] = [];\n let nodeIterator = new XPathEvaluator().evaluate(\n xPathExpression, context, null, XPathResult.UNORDERED_NODE_ITERATOR_TYPE, null);\n\n let thisNode = nodeIterator.iterateNext();\n while (thisNode) {\n results.push(thisNode);\n thisNode = nodeIterator.iterateNext();\n }\n\n return results;\n}\n\nexport function queryElements(context: Node, xPathExpression: string): Element[] {\n let nodes = queryNodes(context, xPathExpression);\n\n nodes.forEach(node => {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n throw new Error(\"Unexpected node type: \" + node);\n }\n });\n\n return nodes as Element[];\n}\n\nexport function queryTexts(context: Node, xPathExpression: string): string[] {\n return queryNodes(context, xPathExpression).map(n => n.textContent || \"\");\n}\n\nexport function countNodes(context: Node, xPathExpression: string): number {\n return new XPathEvaluator().evaluate(\n 'count(' + xPathExpression + ')', context, null, XPathResult.NUMBER_TYPE, null).numberValue\n}\n\nexport function childElements(node: Node): Element[] {\n return Array.from(node.childNodes)\n .filter(n => n.nodeType === Node.ELEMENT_NODE)\n .map(n => n as Element);\n}\n","import {useContext, useEffect, useState} from \"react\";\nimport axios from \"axios\";\nimport {parseXml, toString} from \"../../utils/xmlUtils\";\nimport {AppContext} from \"../../App\";\n\nexport function useUsers() {\n const [appState] = useContext(AppContext)\n const user = appState.person;\n const [users, setUsers] = useState(parseXml(\"\"));\n\n useEffect(() => {\n axios.get('/api/users/', {\n responseType: 'document'\n }).then(res => {\n setUsers(res.data);\n });\n }, [user]);\n\n const insertUser = (user: Document) => {\n return axios.post('/api/users', toString(user), {\n headers: {'Content-Type': 'text/xml'}\n })\n .then(() => axios.get('/api/users', {responseType: 'document'}))\n .then(res => setUsers(res.data));\n }\n\n const updateUser = (user: Document) => {\n return axios.put('/api/users/' + user.documentElement.getAttribute(\"id\"), toString(user), {\n headers: {'Content-Type': 'text/xml'}\n })\n .then(() => axios.get('/api/users', {responseType: 'document'}))\n .then(res => setUsers(res.data));\n }\n\n const saveUser = (user: Document) => {\n return user.documentElement.getAttribute('id')\n ? updateUser(user)\n : insertUser(user);\n };\n\n return {users, saveUser};\n}\n","import React, {Dispatch, SetStateAction} from \"react\";\nimport Modal from \"react-modal\";\nimport {Button, Heading, suomifiDesignTokens as tokens} from \"suomifi-ui-components\";\nimport {\n cloneDocument,\n ensureElementAndUpdate,\n queryFirstText,\n updateElement\n} from \"../../utils/xmlUtils\";\nimport {FlexColTight} from \"../common/CommonStyles\";\nimport {Input} from \"../common/StyledInputComponents\";\n\ninterface User {\n username: string,\n firstName?: string,\n lastName?: string,\n superuser?: boolean\n}\n\n\ninterface Props {\n isOpen: boolean,\n user: Document,\n setUser: Dispatch>,\n onClickSave: () => void,\n onClickCancel: () => void,\n}\n\nconst EditUserModal: React.FC = ({isOpen, user, setUser, onClickSave, onClickCancel}) => {\n const element = user.documentElement;\n\n const username = queryFirstText(element, \"username\");\n const password = queryFirstText(element, \"password\");\n const firstName = queryFirstText(element, \"firstName\");\n const lastName = queryFirstText(element, \"lastName\");\n\n function updateUsername(newValue: string) {\n setUser((prevUser) => updateElement(\n cloneDocument(prevUser), \"/user/username\", (el) => el.textContent = newValue)\n );\n }\n\n function updatePassword(newValue: string) {\n setUser((prevUser) => ensureElementAndUpdate(\n cloneDocument(prevUser), \"/user\", \"password\", [\"firstName\", \"lastName\", \"properties\"],\n (el) => el.textContent = newValue)\n );\n }\n\n function updateFirstName(newValue: string) {\n setUser((prevUser) => updateElement(\n cloneDocument(prevUser), \"/user/firstName\", (el) => el.textContent = newValue)\n );\n }\n\n function updateLastName(newValue: string) {\n setUser((prevUser) => updateElement(\n cloneDocument(prevUser), \"/user/lastName\", (el) => el.textContent = newValue)\n );\n }\n\n return (\n \n \n \n Käyttäjä\n \n\n
    \n\n \n\n \n\n \n\n \n\n
    \n \n \n
    \n\n
    \n
    \n );\n};\n\nexport default EditUserModal;\n","import React, {useState} from \"react\";\nimport {Button, Heading, suomifiDesignTokens as tokens} from \"suomifi-ui-components\";\nimport {Table} from \"../common/CommonStyles\";\nimport {parseXml, queryElements, queryFirstText, toString} from \"../../utils/xmlUtils\";\nimport {useUsers} from \"./useUsers\";\nimport EditUserModal from \"./EditUserModal\";\nimport {ButtonIconOnly} from \"../common/StyledInputComponents\";\n\nconst UserList: React.FC = () => {\n const createNewPerson = () => parseXml(\n \"\" +\n \" \" +\n \" \" +\n \" \" +\n \" \" +\n \"\");\n\n const {users, saveUser} = useUsers();\n const [modalUser, setModalUser] = useState(createNewPerson());\n const [isModalOpen, setModalOpen] = useState(false);\n\n const usernameComparator = (a: Element, b: Element): number => {\n const aName = queryFirstText(a, 'username') || '';\n const bName = queryFirstText(b, 'username') || '';\n return aName < bName ? -1 : (aName > bName ? 1 : 0);\n };\n\n const renderUserRow = (user: Element, i: number) => {\n const username = queryFirstText(user, 'username');\n const superuser = queryFirstText(user, 'superuser') === 'true';\n\n return (\n \n {username} {superuser ? '(pääkäyttäjä)' : ''}\n \n {\n setModalUser(parseXml(toString(user)));\n setModalOpen(true);\n }}/>\n \n \n );\n };\n\n return (\n
    \n
    \n \n Käyttäjät\n \n\n \n
    \n\n \n \n {queryElements(users.documentElement, 'user')\n .sort(usernameComparator)\n .map(renderUserRow)}\n \n
    \n\n {\n saveUser(modalUser).then(() => {\n setModalOpen(false);\n setModalUser(createNewPerson());\n })\n }}\n onClickCancel={() => {\n setModalOpen(false);\n setModalUser(createNewPerson());\n }}\n />\n
    \n );\n};\n\nexport default UserList;\n","/** @jsx jsx */\nimport { jsx } from '@emotion/core'\nimport React, { useContext, useState } from \"react\"\nimport { FlexCol, Heading1WithBottomBorder, PanelWithShadow, } from \"../common/CommonStyles\"\nimport { Button, Heading, suomifiDesignTokens as tokens } from \"suomifi-ui-components\"\nimport { AppContext } from \"../../App\"\nimport { NULL_PERSON } from '../common/DefaultValues'\nimport UserList from '../users/UserList'\nimport EmploymentCertificateForm from '../employment-certificate/EmploymentCertificateForm'\nimport DataModal from '../common/DataModal'\n\nconst Dashboard: React.FC = () => {\n const [appState] = useContext(AppContext)\n const person = appState.person;\n const [modals, setModals] = useState({ employmentCertificate: false })\n\n return (\n \n
    \n \n Asetukset\n \n
    \n {\n person !== NULL_PERSON && (\n \n \n \n \n\n \n
    \n \n Työtodistukset\n \n\n \n \n {\n setModals({ ...modals, employmentCertificate: false })\n }}\n onCancel={() => {\n setModals({ ...modals, employmentCertificate: false })\n }}\n initialValues={{\n name: 'Anna-Liisa Keskitalo',\n company: 'Digivero Oy (1234567-8)',\n workRole: 'Talousjohtaja',\n startDate: '2015-01-01',\n endDate: new Date().toISOString().replace(/T.+$/, '')\n }}\n />\n \n
    \n
    \n
    \n )\n }\n\n
    \n
    \n );\n};\n\nexport default Dashboard;\n","import {useContext, useEffect, useState} from \"react\";\nimport { suomifiDesignTokens as tokens } from 'suomifi-ui-components'\nimport axios from \"axios\"\n\nimport {AppContext} from \"../../App\";\nimport {fetchData} from \"../../utils/apiClient\";\n\ninterface IObjectKeys {\n [key: string]: string;\n}\n\nconst getColorByTransactionCode = (transactionCode: any) => {\n switch(String(transactionCode)) {\n case '201': return tokens.colors.successBase\n case '213': return tokens.colors.successSecondary\n case '402': return tokens.colors.alertBase\n case '413': return tokens.colors.warningBase\n case '414': return tokens.colors.accentBase\n }\n}\n\nconst createIncomeDatasetsForChart = (transactions: any, transactionCodes: Array) => {\n const aggregates = groupTransactionsIntoCodes(transactions)\n let data = {\n labels: aggregates.months,\n datasets: Object.entries(aggregates.codes).reduce((result: object[], [code, values]) => {\n return [\n ...result,\n {\n stack: 'income',\n label: transactionCodes.find(x => String(x.codeValue) === String(code))?.prefLabel?.fi || code,\n backgroundColor: getColorByTransactionCode(code),\n data: aggregates.months.map(month => {\n return values.find(x => x.month === month)?.value || 0\n })\n }\n ]\n }, [])\n // datasets: Object.entries(monthlyTotals).reduce((result, [month, totals]) => {\n // Object.entries(totals).map(([transactionCode, value]) => {\n // return {\n // stack: month,\n // backgroundColor: getColorByTransactionCode(transactionCode)\n // }\n // })\n // }, [])\n // datasets: [\n \n // {\n // stack: 'stack1',\n // backgroundColor: tokens.colors.alertBase,\n // label: 'data1',\n // data: [-1.7, -2, -3, -3.6, -2.8]\n // },\n // {\n // stack: 'stack1',\n // backgroundColor: tokens.colors.brandBase,\n // label: 'data2',\n // data: [5, 4, 3, 2, 1]\n // }\n // ]\n }\n\n return data\n}\n\n\n\nconst groupTransactionsIntoCodes = (transactions: any) => {\n return {\n months: [\n '2020/1',\n '2020/2',\n '2020/3',\n '2020/4',\n '2020/5',\n '2020/6',\n '2020/7',\n '2020/8',\n '2020/9',\n '2020/10',\n '2020/11',\n '2020/12'\n ],\n codes: {\n 201: [\n { month: '2020/1', value: 5300 },\n { month: '2020/2', value: 5300 },\n { month: '2020/3', value: 5300 },\n { month: '2020/4', value: 5300 },\n { month: '2020/5', value: 5300 },\n { month: '2020/6', value: 5300 },\n { month: '2020/7', value: 5300 },\n { month: '2020/8', value: 5300 },\n { month: '2020/9', value: 5300 },\n { month: '2020/10', value: 5300 },\n { month: '2020/11', value: 5300 },\n { month: '2020/12', value: 5300 }\n ],\n 213: [\n { month: '2020/7', value: 2500 }\n ],\n 402: [\n { month: '2020/1', value: -1219 },\n { month: '2020/2', value: -1219 },\n { month: '2020/3', value: -1219 },\n { month: '2020/4', value: -1219 },\n { month: '2020/5', value: -1219 },\n { month: '2020/6', value: -1219 },\n { month: '2020/7', value: -1219 },\n { month: '2020/8', value: -1219 },\n { month: '2020/9', value: -1219 },\n { month: '2020/10', value: -1219 },\n { month: '2020/11', value: -1219 },\n { month: '2020/12', value: -1219 }\n ],\n 413: [\n { month: '2020/1', value: -389.55 },\n { month: '2020/2', value: -389.55 },\n { month: '2020/3', value: -389.55 },\n { month: '2020/4', value: -389.55 },\n { month: '2020/5', value: -389.55 },\n { month: '2020/6', value: -389.55 },\n { month: '2020/7', value: -389.55 },\n { month: '2020/8', value: -389.55 },\n { month: '2020/9', value: -389.55 },\n { month: '2020/10', value: -389.55 },\n { month: '2020/11', value: -389.55 },\n { month: '2020/12', value: -389.55 }\n ],\n 414: [\n { month: '2020/1', value: -67.84 },\n { month: '2020/2', value: -67.84 },\n { month: '2020/3', value: -67.84 },\n { month: '2020/4', value: -67.84 },\n { month: '2020/5', value: -67.84 },\n { month: '2020/6', value: -67.84 },\n { month: '2020/7', value: -67.84 },\n { month: '2020/8', value: -67.84 },\n { month: '2020/9', value: -67.84 },\n { month: '2020/10', value: -67.84 },\n { month: '2020/11', value: -67.84 },\n { month: '2020/12', value: -67.84 }\n ]\n }\n }\n // transactions.reduce((result, item) => {\n // const endDate = new Date(item.EarningPeriodEnd)\n // const monthKey = `${endDate.getFullYear()}/${endDate.getMonth()+1}`\n \n // }, {})\n}\n\nexport function useIncome() {\n const [appState] = useContext(AppContext)\n const person = appState.person;\n\n const [transactions, setTransactions] = useState()\n const [transactionCodes, setTransactionCodes] = useState>([])\n const [isLoading, setLoading] = useState(false)\n\n useEffect(() => {\n setLoading(true)\n Promise.all([\n // fetchData(`IncomeData/Persons/${person.ssn}/Transactions?timespanInMonths=12`),\n axios.get('/codelists/Tulolajit.json')\n ])\n .then(\n ([\n // transactionsResult, \n transactionCodesResult\n ]) => {\n // setTransactions(transactionsResult.value?.GroupedByEndMonth)\n setTransactionCodes(transactionCodesResult.data.codes)\n }\n )\n .finally(() => setLoading(false));\n }, [person])\n\n return {\n transactions, \n isLoading,\n incomeDatasets: createIncomeDatasetsForChart(transactions, transactionCodes)\n }\n}\n","/** @jsx jsx */\nimport { jsx } from '@emotion/core'\nimport React, { useContext } from \"react\";\nimport { suomifiDesignTokens as tokens, Text } from \"suomifi-ui-components\";\nimport { Bar } from 'react-chartjs-2'\nimport { FlexCol, FlexColTight, FlexRow, Heading1WithBottomBorder, panelWithShadowCss, TableSmall } from \"../common/CommonStyles\";\nimport { AppContext } from \"../../App\";\nimport Card from '../common/Card'\nimport { useIncome } from './useIncome'\n\nconst options = {\n scales: {\n xAxes: [{\n stacked: true\n }],\n yAxes: [{\n stacked: true\n }]\n }\n}\n\nconst IncomeView: React.FC = () => {\n const [appState] = useContext(AppContext)\n const person = appState.person;\n const { incomeDatasets } = useIncome()\n\n return (\n \n
    \n \n Tulot\n \n {person.firstName} {person.lastName}\n - {person.address?.street}, {person.address?.zip} {person.address?.city}\n
    \n\n \n \n \n\n *': {\n boxSizing: 'border-box',\n minHeight: \"150px\"\n }\n }}>\n \n \n \n \n Vuosiloma\n 1.7.2020 - 31.7.2020\n \n \n Sairasloma\n 4.2.2020 - 6.2.2020\n \n \n \n \n \n
    \n
    \n );\n};\n\nexport default IncomeView;\n","import React from \"react\";\nimport Layout from \"../common/Layout\";\n\nconst Forms: React.FC = () => {\n return \n ;\n};\n\nexport default Forms;\n","/** @jsx jsx */\nimport { jsx } from '@emotion/core'\nimport React from \"react\"\nimport styled from '@emotion/styled'\nimport PropTypes from 'prop-types';\nimport { FlexColTight, FlexRow, panelWithShadowCss } from \"./CommonStyles\"\nimport { Text, Icon, suomifiDesignTokens as tokens } from \"suomifi-ui-components\";\n\ninterface Props {\n message: string,\n level?: string,\n closable?: boolean,\n onClose?: Function\n}\n\nconst NotificationBox: React.FC = props => {\n const determineIcon = () => {\n switch(props.level) {\n case \"success\":\n return \"info\";\n default:\n return \"errorFilled\";\n \n }\n }\n\n const determineColor = () => {\n switch(props.level) {\n case \"success\":\n return \"blackBase\";\n default:\n return \"whiteBase\";\n \n }\n }\n\n return (\n \n \n {props.message}\n \n );\n}\n\nNotificationBox.propTypes = {\n message: PropTypes.string.isRequired,\n level: PropTypes.string,\n closable: PropTypes.bool,\n onClose: PropTypes.func\n}\n\nNotificationBox.defaultProps = {\n level: \"alert\",\n closable: true\n}\n\nexport default NotificationBox;\n\nexport const NotificationContainer = styled.div`\n align-items: center;\n &.success {\n background-color: ${tokens.colors.successSecondary};\n }\n &.warning {\n background-color: ${tokens.colors.warningBase};\n }\n &.error {\n background-color: ${tokens.colors.alertBase};\n color: ${tokens.colors.whiteBase};\n }\n & > * {\n margin-left: ${tokens.spacing.l};\n }\n`;","import React, { useState } from \"react\";\nimport NotificationBox from \"../common/NotificationBox\";\nimport { panelWithShadowCss } from \"../common/CommonStyles\";\nimport { withFormik } from \"formik\";\nimport { GenericFormProps, GenericFormParams } from \"./GenericFormTypes\";\n\nconst createGenericFormikForm = (props: GenericFormProps) => {\n return withFormik({\n mapPropsToValues: ({ initialValues }) => {\n return {\n ...initialValues\n };\n },\n validationSchema: ((props: GenericFormParams) => props.validationSchema),\n handleSubmit: async (values, formikBag) => {\n formikBag.props.onSubmit(values)\n .then(resp => {\n formikBag.props.setNotificationMessage(resp.data.message);\n formikBag.props.setNotificationLevel(resp.data.status);\n })\n .catch(error => {\n console.log(\"Error resp: \", error);\n formikBag.props.setNotificationMessage(error.response.data.message);\n formikBag.props.setNotificationLevel(error.response.data.status);\n })\n }\n })(props.form)\n};\n\nconst GenericForm: React.FC = (props: GenericFormProps) => {\n const [notificationMessage, setNotificationMessage] = useState(\"\");\n const [notificationLevel, setNotificationLevel] = useState(\"error\");\n\n // const formModel = props.items.reduce((obj, item) => ({...obj, [item.fieldName]: item.defaultValue}), {});\n\n const FormikForm = createGenericFormikForm(props);\n\n return (\n <>\n {\n notificationMessage && \n \n }\n \n \n )\n};\n\nexport default GenericForm;","import React from \"react\";\nimport { TextField, Typography, Checkbox } from \"@material-ui/core\";\nimport Card from \"../../common/Card\";\nimport { FlexCol, FlexRow } from \"../../common/CommonStyles\";\nimport { DeathReportFormModel } from \"./model/ReportDeathFormModel\";\nimport {Button, suomifiDesignTokens as tokens } from \"suomifi-ui-components\";\nimport { FormikProps } from \"formik\";\nimport * as Yup from 'yup';\nimport { SchemaOf } from 'yup';\nimport { sendGenericForm } from '../../../api/omaelama-functions'\nimport { GenericEvent, GenericEventPayload, GenericFormType, HospitalNotifier, NotifierType } from \"../GenericFormTypes\";\nimport GenericForm from \"../GenericForm\";\n\nexport interface DeathReportEvent extends GenericEvent {\n kuolinaikaarvioitu: boolean;\n kuolemanperuutus: boolean;\n}\n\ninterface FormModel {\n firstName: string;\n lastName: string;\n personalIdentityCode: string;\n dateOfDeath?: Date;\n \n description?: string;\n tapahtumatunnus?: string;\n viranomaiskoodi?: string;\n arkistonumero?: string;\n kuolinaikaarvioitu: boolean;\n kuolemanperuutus: boolean;\n\n doctorIdentifier?: string;\n hospitalIdentifier?: string;\n}\n\nconst defaultValues: FormModel = {\n firstName: \"\",\n lastName: \"\",\n personalIdentityCode: \"\",\n dateOfDeath: undefined,\n\n description: \"\",\n tapahtumatunnus: undefined,\n viranomaiskoodi: undefined,\n arkistonumero: undefined,\n kuolinaikaarvioitu: false,\n kuolemanperuutus: false,\n\n doctorIdentifier: \"\",\n hospitalIdentifier: \"\"\n}\n\nconst validationSchema: SchemaOf = Yup.object({\n firstName: Yup.string()\n .min(2, 'Etunimen pituus oltava vähintään 2 merkkiä')\n .max(50, 'Etunimen pituus voi olla enintään 50 merkkiä')\n .required('Pakollinen tieto'),\n lastName: Yup.string()\n .min(2, 'Sukunimen pituus oltava vähintään 2 merkkiä')\n .max(50, 'Sukunimen pituus voi olla enintään 50 merkkiä')\n .required('Pakollinen tieto'),\n personalIdentityCode: Yup.string()\n .length(11, 'Henkilötunnuksen pituus oltava 11 merkkiä')\n .required('Pakollinen tieto'),\n dateOfDeath: Yup.date()\n .required('Pakollinen tieto'),\n description: Yup.string()\n .min(3, 'Tekstin pituus oltava vähintään 3 merkkiä')\n .max(500, 'Tekstin pituus voi olla enintään 256 merkkiä')\n .notRequired(),\n tapahtumatunnus: Yup.string().notRequired(),\n viranomaiskoodi: Yup.string().notRequired(),\n arkistonumero: Yup.string().notRequired(),\n kuolinaikaarvioitu: Yup.boolean().defined(),\n kuolemanperuutus: Yup.boolean().defined(),\n doctorIdentifier: Yup.string()\n .min(2, 'Tunnisteen pituus oltava vähintään 2 merkkiä')\n .max(50, 'Tunnisteen pituus voi olla enintään 11 merkkiä')\n .notRequired(),\n hospitalIdentifier: Yup.string()\n .min(2, 'Tunnisteen pituus oltava vähintään 2 merkkiä')\n .max(50, 'Tunnisteen pituus voi olla enintään 11 merkkiä')\n .notRequired(),\n});\n\nconst Form: React.FC> = ({\n errors,\n handleBlur,\n handleChange,\n handleSubmit,\n touched,\n values,\n}) => {\n\n return (\n
    \n \n \n Henkilö, joka on todettu kuolleeksi\n \n \n \n \n \n \n \n \n \n \n
    \n Kuoleman ilmoittamiseen liittyvät tiedot\n \n \n \n \n \n \n \n \n \n \n Kuolinaika arvioitu\n \n \n \n Kuoleman peruutus\n \n \n \n
    \n Ilmoittaja\n \n \n \n \n \n \n \n
    \n
    \n
    \n )\n}\n\nconst ReportDeathForm: React.FC = () => {\n\n const handleSubmit = async (values: FormModel) => {\n const notifier: HospitalNotifier = {\n id: values.doctorIdentifier,\n type: NotifierType.DOCTOR,\n sairaalanidtunnus: values.hospitalIdentifier\n }\n const eventData: DeathReportEvent = {\n eventTime: values.dateOfDeath,\n description: values.description,\n tapahtumatunnus: values.tapahtumatunnus,\n viranomaiskoodi: values.viranomaiskoodi,\n arkistonumero: values.arkistonumero,\n kuolinaikaarvioitu: values.kuolinaikaarvioitu,\n kuolemanperuutus: values.kuolemanperuutus\n }\n const postData: GenericEventPayload = {\n person: {\n firstName: values.firstName,\n lastName: values.lastName,\n personalIdentityCode: values.personalIdentityCode\n },\n eventData,\n notifier\n }\n return sendGenericForm({ type: GenericFormType.DEATH_REPORT, payload: postData});\n }\n\n return (\n \n );\n}\n\nexport default ReportDeathForm;","import React from \"react\";\nimport { Paragraph, Text } from 'suomifi-ui-components'\nimport { EventGridEvent, Message } from \"../../common/DomainTypes\";\nimport {FlexCol, FlexRow, Heading1WithBottomBorder, TableSmall,} from \"../../common/CommonStyles\";\nimport { DeathReport } from \"../../forms/reportDeath/model/ReportDeathFormModel\";\nimport { toDateString } from \"../../../utils/dateUtils\";\n\ntype Props = {\n msg: Message\n}\n\nconst DeathReportEvent: React.FC = ({msg}: Props) => {\n const data = msg.source === \"EventGrid\" ? msg.jsonData.Data as DeathReport : msg.jsonData as DeathReport;\n return (\n \n *': {\n boxSizing: 'border-box',\n minHeight: \"300px\"\n }\n }}>\n \n \n \n Nimi\n {data.Person.givenName} {data.Person.familyName}\n \n \n Henkilötunnus\n {data.Person.personalIdentityCode}\n \n \n Kuolinaika\n \n {toDateString(data.Person.dateOfDeath)}\n {data.ChangeEvent.kuolinaikaarvioitu ? \" (arvio)\" : \"\"}\n \n \n \n Lisätiedot\n {data.ChangeEvent.description}\n \n \n \n \n \n );\n}\n\nexport default DeathReportEvent;","import React from \"react\";\nimport { Paragraph, Text } from 'suomifi-ui-components'\nimport { EventGridEvent } from \"../../common/DomainTypes\";\nimport {FlexCol, FlexRow, Heading1WithBottomBorder, TableSmall,} from \"../../common/CommonStyles\";\nimport { DeathReport } from \"../../forms/reportDeath/model/ReportDeathFormModel\";\nimport { toDateString } from \"../../../utils/dateUtils\";\nimport { GenericEventPayload } from \"../../forms/GenericFormTypes\";\n\ntype Props = {\n event: EventGridEvent\n}\n\nconst DefaultGenericFormEvent: React.FC = ({event}: Props) => {\n return (\n \n *': {\n boxSizing: 'border-box',\n minHeight: \"300px\"\n }\n }}>\n \n \n { event.Data.person.firstName && event.Data.person.lastName && \n \n Nimi\n {event.Data.person.firstName} {event.Data.person.lastName}\n \n }\n { event.Data.person.personalIdentityCode && \n \n Henkilötunnus\n {event.Data.person.personalIdentityCode}\n \n }\n { event.Data.eventData.eventTime && \n \n Tapahtuma-aika\n \n {toDateString(event.Data.eventData.eventTime)}\n \n \n }\n { event.Data.eventData.description &&\n \n Lisätiedot\n {event.Data.eventData.description}\n \n }\n \n \n \n \n );\n}\n\nexport default DefaultGenericFormEvent;","import React from \"react\";\nimport { EventGridEvent } from \"../../common/DomainTypes\";\nimport {FlexCol, FlexRow, TableSmall,} from \"../../common/CommonStyles\";\nimport { toDateString } from \"../../../utils/dateUtils\";\nimport { GenericEventPayload } from \"../../forms/GenericFormTypes\";\nimport { TerminationOfEmploymentPayload } from \"../../forms/TerminationOfEmployment/TerminationOfEmployment\";\n\ntype Props = {\n event: EventGridEvent\n}\n\nconst TerminationOfEmploymentEvent: React.FC = ({event}: Props) => {\n const eventData = {\n person: event.Data.person,\n eventData: event.Data.eventData as TerminationOfEmploymentPayload,\n notifier: event.Data.notifier\n }\n const reasonText = (reason?: string) => {\n switch (reason) {\n case \"maaraaikaisuus\":\n return \"Määräaikainen työsuhde\";\n case \"irtisanominen\":\n return \"Työnantajan päättämä irtisanominen\";\n case \"irtisanoutuminen\":\n return \"Työntekijän päättämä irtisanoutuminen\";\n case \"purkaminen\":\n return \"Työsopimuksen purkaminen\";\n default:\n return \"\";\n }\n }\n\n return (\n \n *': {\n boxSizing: 'border-box',\n minHeight: \"300px\"\n }\n }}>\n \n \n \n Nimi\n {eventData.person.firstName} {eventData.person.lastName}\n \n \n Henkilötunnus\n {eventData.person.personalIdentityCode}\n \n \n Työsuhde päättyy\n \n {toDateString(eventData.eventData.eventTime)}\n \n \n \n Työsuhteen päättymisen syy\n {reasonText(eventData.eventData.reason)}\n \n \n \n Työnantajan takaisinottovelvollisuus\n {eventData.eventData.readmission ? \"Kyllä\" : \"Ei\"}\n \n \n Lisätiedot\n {eventData.eventData.description}\n \n \n \n \n \n );\n}\n\nexport default TerminationOfEmploymentEvent;","import React from \"react\";\nimport { Paragraph, Text } from 'suomifi-ui-components'\nimport { EventGridEvent } from \"../../common/DomainTypes\";\nimport {FlexCol, FlexRow, Heading1WithBottomBorder, TableSmall,} from \"../../common/CommonStyles\";\nimport { GenericEventPayload } from \"../../forms/GenericFormTypes\";\nimport { toDateString } from \"../../../utils/dateUtils\";\n\ntype Props = {\n event: EventGridEvent\n}\n\nconst MarriageEvent: React.FC = ({event}: Props) => {\n return (\n \n *': {\n boxSizing: 'border-box',\n minHeight: \"300px\"\n }\n }}>\n \n \n { event.Data.eventData.eventTime && \n \n Tapahtuma-aika\n \n {toDateString(event.Data.eventData.eventTime)}\n \n \n }\n { event.Data.person.relations && event.Data.person.relations[0] && \n \n Henkilötunnus\n {event.Data.person.relations[0].personalIdentityCode}\n \n }\n { event.Data.person.relations && event.Data.person.relations[1] && \n \n Puolison henkilötunnus\n {event.Data.person.relations[1].personalIdentityCode}\n \n }\n \n \n \n \n );\n}\n\nexport default MarriageEvent;","/** @jsx jsx */\nimport { jsx } from '@emotion/core'\nimport React, {useContext} from \"react\";\nimport { AppContext } from \"../../App\";\nimport { Message, MessageType, EventGridEvent } from \"../common/DomainTypes\";\nimport { suomifiDesignTokens as tokens, Expander, ExpanderContent, ExpanderTitleButton, Paragraph, Icon } from 'suomifi-ui-components'\nimport { FlexCol, FlexRow } from \"../common/CommonStyles\";\nimport {ButtonLinkSmall} from \"../common/InputStyles\";\nimport DeathReportEvent from './events/DeathReportEvent';\nimport { postReadMessage, postUnReadMessage, postDeletedMessage, Status } from '../../api/omaelama-functions';\nimport { toDateString } from '../../utils/dateUtils';\nimport { GenericEventPayload, GenericFormType, GenericFormTypeByValue, GenericFormTypeTranslations } from '../forms/GenericFormTypes';\nimport DefaultGenericFormEvent from './events/DefaultGenericFormEvent';\nimport TerminationOfEmploymentEvent from './events/TerminationOfEmploymentEvent';\nimport MarriageEvent from './events/MarriageEvent';\n\n\ninterface Family {\n lapsilisän_määrä_perustelut: Record;\n [key: string]: Record;\n}\n\nfunction takeOpenFiscaValue(input: Record) {\n return (Object.values(input || {})[0] as string) || \"\";\n}\n\nconst EventSubject = (event: EventGridEvent) => {\n switch(event.EventType) {\n case GenericFormType.DEATH_REPORT:\n case \"Kuolintieto\":\n return `Henkilön ${event.Data.Person.givenName} ${event.Data.Person.familyName} kuolintieto vastaanotettu`;\n default:\n const genericEvent: EventGridEvent = { ...event };\n return `${GenericFormTypeByValue(event.EventType)}`;\n }\n}\n\nconst XRoadSubject = (msg: Message) => {\n switch(msg.subType) {\n case \"Kuolintieto\":\n return `Henkilön ${msg.jsonData.Person.givenName} ${msg.jsonData.Person.familyName} kuolintieto vastaanotettu`;\n default:\n return msg.subject;\n }\n}\n\nconst EventContent = ({msg}: {msg: Message}) => {\n switch(msg.source) {\n case \"EventGrid\":\n return ;\n case \"Openfisca API\":\n if (msg.subject === \"Leskeneläke\") {\n // Take out needed variables from OpenFisca output JSON\n const widowData = msg.jsonData.henkilöt?.leski;\n const isGranted = !!Object.values(\n widowData.oikeutettu_leskeneläkkeeseen || {}\n )[0];\n const decision = `Oikeutesi leskeneläkkeeseen on tarkistettu ja ${\n isGranted\n ? \"sinulle on myönnetty leskeneläke.\"\n : \"sinulla ei ole oikeutta leskeneläkkeeseen.\"\n }`;\n const argument = takeOpenFiscaValue(\n widowData.oikeutettu_leskeneläkkeeseen_perustelut\n );\n return (\n \n );\n }\n if (msg.subject === \"Lapsilisä\") {\n // Take out needed variables from OpenFisca output JSON\n const familyData = Object.values(msg.jsonData.perheet)?.[0] as Family;\n const amount = takeOpenFiscaValue(familyData.lapsilisän_määrä);\n const decision = `Lapsilisän määrä tässä kuussa on ${amount} euroa.`;\n const argument = takeOpenFiscaValue(\n familyData.lapsilisän_määrä_perustelut\n );\n return ;\n }\n return ;\n case \"X-Road\":\n return \n default:\n return ;\n }\n}\n\nconst GenericEventContent = ({msg}: {msg: Message}) => {\n switch(msg.jsonData.EventType) {\n case GenericFormType.DEATH_REPORT:\n case \"Kuolintieto\":\n return ;\n case GenericFormType.CHILDS_BIRTH:\n return ;\n case GenericFormType.MARRIAGE:\n return ;\n case GenericFormType.TERMINATION_OF_EMPLOYMENT:\n return ;\n default:\n return ;\n }\n}\n\nconst XRoadContent = ({msg}: {msg: Message}) => {\n switch (msg.subType) {\n case \"Kuolintieto\":\n return ;\n default:\n return ;\n }\n}\n\nconst StringEventContent = ({message}: {message: string}) => {\n return (\n \n *': {\n boxSizing: 'border-box',\n minHeight: \"300px\"\n }\n }}>\n {message}\n \n \n )\n}\n\nconst OpenFiscaContent = ({\n decision,\n argument,\n}: {\n decision: string;\n argument: string;\n}) => {\n return (\n
    \n

    \n Päätös:\n
    \n {decision}\n

    \n {!!argument && (\n

    \n Perustelut:\n
    \n \n {argument}\n \n

    \n )}\n
    \n );\n};\n\nconst MessageListItem: React.FC = ({msg}: Props) => {\n const [appState, setAppState] = useContext(AppContext);\n\n const readMessage = (message: Message, open: boolean) => {\n if (open && !message.isRead && appState.person.id === message.receiverId) {\n postReadMessage(message.id)\n .then(res => {\n if (res.data.status !== Status.SUCCESS) {\n console.log(`Error while reading message ${message.id}`, res.data.message);\n }\n else {\n var messages = appState.messages;\n messages.filter(m => m.id === message.id).forEach(m => m.isRead = true);\n setAppState(appState => ({...appState, messages}));\n }\n })\n .catch(error => {\n console.log(`Error while reading message ${message.id}`, error.response.data);\n });\n }\n }\n\n const unReadMessage = (message: Message) => {\n if (message.isRead && appState.person.id === message.receiverId) {\n postUnReadMessage(message.id)\n .then(res => {\n if (res.data.status !== Status.SUCCESS) {\n console.log(`Error while reading message ${message.id}`, res.data.message);\n }\n else {\n var messages = appState.messages;\n messages.filter(m => m.id === message.id).forEach(m => m.isRead = false);\n setAppState(appState => ({...appState, messages}));\n }\n })\n .catch(error => {\n console.log(`Error while reading message ${message.id}`, error.response.data);\n });\n }\n }\n\n const deleteMessage = (message: Message) => {\n if (appState.person.id === message.receiverId) {\n postDeletedMessage(message.id)\n .then(res => {\n if (res.data.status !== Status.SUCCESS) {\n console.log(`Error while deleting a message ${message.id}`, res.data.message);\n }\n else {\n var messages = appState.messages.filter(m => m.id !== message.id);\n setAppState(appState => ({...appState, messages}));\n }\n })\n }\n }\n\n return (\n readMessage(msg, open)}>\n \n \n
    \n {toDateString(msg.createdOn)}\n
    \n
    \n {msg.type === MessageType.EVENT && msg.source === \"EventGrid\" && EventSubject(msg.jsonData)}\n {msg.type === MessageType.EVENT && msg.source === \"X-Road\" && XRoadSubject(msg)}\n {(msg.type !== MessageType.EVENT || (msg.source !== \"EventGrid\" && msg.source !== \"X-Road\")) && msg.subject}\n
    \n
    \n {msg.source}\n
    \n
    \n \n \n {msg.type === MessageType.MESSAGE ? msg.jsonData.body : }\n unReadMessage(msg)}>\n Merkitse lukemattomaksi\n \n deleteMessage(msg)}>\n \n Poista viesti\n \n \n \n );\n}\n\ntype Props = {\n msg: Message\n}\n\nexport default MessageListItem;","import React from \"react\";\nimport { TextField, Typography, Checkbox, RadioGroup, FormControlLabel, Radio } from \"@material-ui/core\";\nimport { Button, suomifiDesignTokens as tokens } from \"suomifi-ui-components\";\nimport { FlexCol, FlexRow } from \"../../common/CommonStyles\";\nimport Card from \"../../common/Card\";\nimport { FormikProps } from \"formik\";\nimport * as Yup from 'yup';\nimport GenericForm from \"../GenericForm\";\nimport { sendGenericForm } from \"../../../api/omaelama-functions\";\nimport { GenericEvent, GenericEventPayload, GenericFormType, NotifierType } from \"../GenericFormTypes\";\n\nexport enum ReasonOfTermination {\n FIXED_TERM = \"maaraaikaisuus\",\n TERMINATION = \"irtisanominen\",\n RESIGNATION = \"irtisanoutuminen\",\n CANCELLATION = \"purkaminen\"\n}\n\n// This form uses a custom event\nexport interface TerminationOfEmploymentPayload extends GenericEvent {\n reason?: ReasonOfTermination;\n description?: string;\n readmission: boolean;\n}\n\ninterface FormModel {\n firstName: string;\n lastName: string;\n personalIdentityCode: string;\n\n eventTime?: Date;\n reason?: ReasonOfTermination;\n description?: string;\n readmission: boolean;\n\n employerIdentifier: string;\n}\n\nconst defaultValues: FormModel = {\n firstName: \"\",\n lastName: \"\",\n personalIdentityCode: \"\",\n\n eventTime: undefined,\n reason: undefined,\n description: undefined,\n readmission: false,\n\n employerIdentifier: \"\"\n}\n\nconst validationSchema: Yup.SchemaOf = Yup.object({\n firstName: Yup.string()\n .min(2, 'Etunimen pituus oltava vähintään 2 merkkiä')\n .max(50, 'Etunimen pituus voi olla enintään 50 merkkiä')\n .required('Pakollinen tieto'),\n lastName: Yup.string()\n .min(2, 'Sukunimen pituus oltava vähintään 2 merkkiä')\n .max(50, 'Sukunimen pituus voi olla enintään 50 merkkiä')\n .required('Pakollinen tieto'),\n personalIdentityCode: Yup.string()\n .length(11, 'Henkilötunnuksen pituus oltava 11 merkkiä')\n .required('Pakollinen tieto'),\n eventTime: Yup.date()\n .required('Pakollinen tieto'),\n reason: Yup.mixed()\n .oneOf(Object.values(ReasonOfTermination))\n .required('Pakollinen tieto'),\n description: Yup.string()\n .min(3, 'Tekstin pituus oltava vähintään 3 merkkiä')\n .max(500, 'Tekstin pituus voi olla enintään 256 merkkiä')\n .notRequired(),\n readmission: Yup.boolean().defined(),\n employerIdentifier: Yup.string()\n .min(2, 'Tunnisteen pituus oltava vähintään 2 merkkiä')\n .max(50, 'Tunnisteen pituus voi olla enintään 11 merkkiä')\n .required('Pakollinen tieto'),\n});\n\nexport const Form: React.FC> = ({\n errors,\n handleBlur,\n handleChange,\n handleSubmit,\n touched,\n values,\n}) => {\n return (\n
    \n \n \n Työntekijän tiedot\n \n \n \n \n \n \n \n
    \n Työsuhteen päättymiseen liittyvät tiedot\n \n \n \n \n \n Työsuhteen päättymisen syy\n \n } label=\"Määräaikaisuus\" />\n } label=\"Työntekijän päättämä irtisanoutuminen\" />\n } label=\"Työnantajan päättämä irtisanominen\" />\n } label=\"Työsopimuksen purkaminen\" />\n \n \n \n \n \n \n Työnantajan takaisinottovelvollisuus\n \n \n \n
    \n Työnantajan tiedot\n \n \n \n \n \n \n
    \n
    \n
    \n )\n}\n\nconst TerminationOfEmployment: React.FC = () => {\n\n const handleSubmit = async (values: FormModel) => {\n const eventData: TerminationOfEmploymentPayload = {\n eventTime: values.eventTime,\n reason: values.reason,\n description: values.description,\n readmission : values.readmission\n }\n const postData: GenericEventPayload = {\n person: {\n firstName: values.firstName,\n lastName: values.lastName,\n personalIdentityCode: values.personalIdentityCode,\n },\n eventData,\n notifier: {\n id: values.employerIdentifier,\n type: NotifierType.ORGANIZATION\n }\n }\n return sendGenericForm({ type: GenericFormType.TERMINATION_OF_EMPLOYMENT, payload: postData});\n }\n\n return (\n \n );\n}\n\nexport default TerminationOfEmployment;","import React, {useContext} from \"react\";\nimport { AppContext } from \"../../App\";\nimport { suomifiDesignTokens as sdt, Text, ExpanderGroup } from \"suomifi-ui-components\";\nimport Card from '../common/Card'\nimport { FlexCol, FlexRow, Heading1WithBottomBorder, TableSmall} from \"../common/CommonStyles\";\nimport MessageListItem from \"./MessageListItem\";\n\nconst Messages: React.FC = () => {\n const [appState] = useContext(AppContext);\n const person = appState.person;\n const messages = appState.messages.sort((m1, m2) => (new Date(m2.createdOn)).getTime() - (new Date(m1.createdOn)).getTime());\n\n return (\n \n
    \n \n Viestit\n \n {person.firstName} {person.lastName}\n - {person.address?.street}, {person.address?.zip} {person.address?.city}\n
    \n { messages && *': {\n boxSizing: 'border-box',\n minHeight: \"150px\"\n }\n }}>\n \n \n { messages.map( msg => ) }\n \n \n }\n
    \n );\n}\n\nexport default Messages;","import React from \"react\";\nimport { FormControl, FormControlLabel, FormHelperText, FormLabel, Radio, RadioGroup, TextField, Typography } from \"@material-ui/core\";\nimport { Button, suomifiDesignTokens as tokens } from \"suomifi-ui-components\";\nimport { FlexCol, FlexRow, HorizontalPadding } from \"../../common/CommonStyles\";\nimport Card from \"../../common/Card\";\nimport { FormikProps } from \"formik\";\nimport * as Yup from 'yup';\nimport GenericForm from \"../GenericForm\";\nimport { sendGenericForm } from \"../../../api/omaelama-functions\";\nimport { GenericEventPayload, GenericFormType, NotifierType, HospitalNotifier } from \"../GenericFormTypes\";\nimport { Relationship } from \"../../common/DomainTypes\";\n\ninterface FormModel {\n dateOfBirth?: Date;\n gender?: string;\n firstName?: string;\n lastName?: string;\n motherSsn: string;\n fatherSsn?: string;\n\n description?: string;\n tapahtumatunnus?: string;\n viranomaiskoodi?: string;\n arkistonumero?: string;\n\n doctorIdentifier?: string;\n hospitalIdentifier?: string;\n}\n\nconst defaultValues: FormModel = {\n dateOfBirth: undefined,\n firstName: \"\",\n lastName: \"\",\n motherSsn: \"\",\n fatherSsn: undefined,\n\n description: \"\",\n tapahtumatunnus: undefined,\n viranomaiskoodi: undefined,\n arkistonumero: undefined,\n\n doctorIdentifier: \"\",\n hospitalIdentifier: \"\"\n}\n\nconst validationSchema: Yup.SchemaOf = Yup.object({\n dateOfBirth: Yup.date()\n .required('Pakollinen tieto'),\n gender: Yup.string()\n .required('Pakollinen tieto'),\n firstName: Yup.string()\n .required('Pakollinen tieto'),\n lastName: Yup.string()\n .required('Pakollinen tieto'),\n motherSsn: Yup.string()\n .length(11, 'Henkilötunnuksen pituus oltava 11 merkkiä')\n .required('Pakollinen tieto'),\n fatherSsn: Yup.string()\n .length(11, 'Henkilötunnuksen pituus oltava 11 merkkiä')\n .notRequired(),\n description: Yup.string()\n .min(3, 'Tekstin pituus oltava vähintään 3 merkkiä')\n .max(500, 'Tekstin pituus voi olla enintään 256 merkkiä')\n .notRequired(),\n tapahtumatunnus: Yup.string().notRequired(),\n viranomaiskoodi: Yup.string().notRequired(),\n arkistonumero: Yup.string().notRequired(),\n doctorIdentifier: Yup.string()\n .min(2, 'Tunnisteen pituus oltava vähintään 2 merkkiä')\n .max(50, 'Tunnisteen pituus voi olla enintään 11 merkkiä')\n .notRequired(),\n hospitalIdentifier: Yup.string()\n .min(2, 'Tunnisteen pituus oltava vähintään 2 merkkiä')\n .max(50, 'Tunnisteen pituus voi olla enintään 11 merkkiä')\n .notRequired(),\n});\n\nexport const Form: React.FC> = ({\n errors,\n handleBlur,\n handleChange,\n handleSubmit,\n touched,\n values,\n}) => {\n return (\n
    \n \n \n Lapsen tiedot\n \n \n \n \n \n \n Sukupuoli\n \n \n } label=\"Poika\" />\n } label=\"Tyttö\" />\n \n {!!errors.gender && \n {errors.gender}\n }\n \n \n \n \n \n \n \n \n \n \n \n \n
    \n Syntymän ilmoittamiseen liittyvät tiedot\n \n \n \n \n \n \n \n \n \n \n
    \n Ilmoittaja\n \n \n \n \n \n \n \n
    \n
    \n
    \n )\n}\n\nconst ChildsBirth: React.FC = () => {\n\n const handleSubmit = async (values: FormModel) => {\n const notifier: HospitalNotifier = {\n id: values.doctorIdentifier,\n type: NotifierType.DOCTOR,\n sairaalanidtunnus: values.hospitalIdentifier\n }\n const postData: GenericEventPayload = {\n person: {\n firstName: values.firstName,\n lastName: values.lastName,\n birthday: values.dateOfBirth,\n gender: Number(values.gender),\n relations: [\n {\n personalIdentityCode: values.motherSsn,\n role: Relationship.PARENT,\n description: \"mother\"\n },\n {\n personalIdentityCode: values.fatherSsn,\n role: Relationship.PARENT,\n description: \"father\"\n }\n ]\n },\n eventData: {\n eventTime: values.dateOfBirth,\n description: values.description,\n tapahtumatunnus: values.tapahtumatunnus,\n viranomaiskoodi: values.viranomaiskoodi,\n arkistonumero: values.arkistonumero\n },\n notifier\n }\n return sendGenericForm({ type: GenericFormType.CHILDS_BIRTH, payload: postData});\n }\n\n return (\n \n );\n}\n\nexport default ChildsBirth;","import React, {Component, useState} from \"react\";\nimport { TextField, Typography, Checkbox, Select, MenuItem, FormControl, FormHelperText } from \"@material-ui/core\";\nimport {Button, suomifiDesignTokens as tokens, Block} from \"suomifi-ui-components\";\nimport { FlexCol, FlexRow, panelWithShadowCss } from \"../common/CommonStyles\";\nimport Card from \"../common/Card\";\nimport { FormikProps } from \"formik\";\nimport * as Yup from 'yup';\nimport GenericForm from \"./GenericForm\";\nimport { sendGenericForm } from \"../../api/omaelama-functions\";\nimport { GenericEventPayload, GenericFormType, NotifierType, Notifier, GenericFormTypeTranslations, NotifierTypeTranslations, CustomizedGenericFormTypes } from \"./GenericFormTypes\";\nimport { Relationship } from \"../common/DomainTypes\";\n\n// Edit form specific data model\ninterface FormModel {\n eventType?: GenericFormType | \"\";\n customEvent?: string;\n firstName?: string;\n lastName?: string;\n personalIdentityCode?: string;\n\n eventTime?: Date;\n description?: string;\n tapahtumatunnus?: string;\n viranomaiskoodi?: string;\n arkistonumero?: string;\n\n notifierId?: string;\n notifierType?: NotifierType | \"\";\n}\n\n// Update default values to meet FormModel\nconst defaultValues: FormModel = {\n eventType: \"\",\n customEvent: \"\",\n firstName: \"\",\n lastName: \"\",\n personalIdentityCode: \"\",\n\n eventTime: undefined,\n description: \"\",\n tapahtumatunnus: \"\",\n viranomaiskoodi: \"\",\n arkistonumero: \"\",\n\n notifierId: \"\",\n notifierType: \"\"\n}\n\n// Update validationSchema to meet FormModel\nconst validationSchema: Yup.SchemaOf = Yup.object({\n eventType: Yup.mixed()\n .oneOf(Object.values(GenericFormType))\n .required('Pakollinen tieto'),\n customEvent: Yup.string()\n .when(\"eventType\", {\n is: GenericFormType.OTHER,\n then: Yup.string()\n .min(3, 'Tapahtumatyypin oltava vähintään 3 merkkiä pitkä')\n .test(\"is-valid\", \"Ei sallittu\", value => {\n return Object.values(GenericFormType)\n .find(val => val === value) === undefined;\n })\n .required('Pakollinen tieto')\n }),\n firstName: Yup.string()\n .min(2, 'Etunimen pituus oltava vähintään 2 merkkiä')\n .max(50, 'Etunimen pituus voi olla enintään 50 merkkiä')\n .notRequired(),\n lastName: Yup.string()\n .min(2, 'Sukunimen pituus oltava vähintään 2 merkkiä')\n .max(50, 'Sukunimen pituus voi olla enintään 50 merkkiä')\n .notRequired(),\n personalIdentityCode: Yup.string()\n .length(11, 'Henkilötunnuksen pituus oltava 11 merkkiä')\n .required('Pakollinen tieto'),\n eventTime: Yup.date()\n .required('Pakollinen tieto'),\n description: Yup.string()\n .min(3, 'Tekstin pituus oltava vähintään 3 merkkiä')\n .max(500, 'Tekstin pituus voi olla enintään 256 merkkiä')\n .notRequired(),\n tapahtumatunnus: Yup.string().notRequired(),\n viranomaiskoodi: Yup.string().notRequired(),\n arkistonumero: Yup.string().notRequired(),\n notifierId: Yup.string()\n .min(2, 'Tunnisteen pituus oltava vähintään 2 merkkiä')\n .max(50, 'Tunnisteen pituus voi olla enintään 11 merkkiä')\n .notRequired(),\n notifierType: Yup.mixed()\n .oneOf(Object.values(NotifierType))\n .required('Pakollinen tieto'),\n});\n\nexport const Form: React.FC> = ({\n errors,\n handleBlur,\n handleChange,\n handleSubmit,\n touched,\n values,\n}) => {\n const availableGenericFormTypes = () => {\n return Object.entries(GenericFormType)\n .filter(([key, value]) => !CustomizedGenericFormTypes.includes(value))\n .map(([key, value]) => (\n \n {GenericFormTypeTranslations[key] ? GenericFormTypeTranslations[key].fi : key}\n \n )\n );\n }\n\n return (\n
    \n \n \n \n \n \n Valitse tapahtuman tyyppi\n \n { touched.eventType && Boolean(errors.eventType) && \n {errors.eventType} \n }\n \n \n { values.eventType === GenericFormType.OTHER && \n \n \n \n }\n \n
    \n Tapahtuman kohteena oleva henkilö\n \n \n \n \n \n \n \n
    \n Tapahtuman tiedot\n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n Tapahtuman ilmoittaja\n \n \n \n \n \n \n Ilmoittajan tyyppi\n \n { touched.notifierType && Boolean(errors.notifierType) && \n {errors.notifierType} \n }\n \n \n \n \n
    \n
    \n
    \n )\n}\n\nconst DefaultGenericForm: React.FC = () => {\n\n // Update handleSubmit to create postData from customized FormModel\n const handleSubmit = async (values: FormModel) => {\n const eventType = values.eventType === GenericFormType.OTHER ? values.customEvent! : values.eventType!;\n // As an example, if you need to use custom object e.g. HospitalNotifier instead of basic Notifier\n // instantiate custom object and add it to postData.\n const notifier: Notifier = {\n id: values.notifierId,\n type: values.notifierType\n }\n const postData: GenericEventPayload = {\n person: {\n firstName: values.firstName,\n lastName: values.lastName,\n personalIdentityCode: values.personalIdentityCode\n },\n eventData: {\n eventTime: values.eventTime,\n description: values.description,\n tapahtumatunnus: values.tapahtumatunnus,\n viranomaiskoodi: values.viranomaiskoodi,\n arkistonumero: values.arkistonumero\n },\n notifier\n }\n return sendGenericForm({ type: eventType, payload: postData});\n }\n\n return (\n \n );\n}\n\nexport default DefaultGenericForm;","import React, {Component, useState} from \"react\";\nimport { TextField, Typography, Checkbox } from \"@material-ui/core\";\nimport {Button, suomifiDesignTokens as tokens, Block} from \"suomifi-ui-components\";\nimport { FlexCol, FlexRow, panelWithShadowCss } from \"../common/CommonStyles\";\nimport Card from \"../common/Card\";\nimport { FormikProps } from \"formik\";\nimport * as Yup from 'yup';\nimport GenericForm from \"./GenericForm\";\nimport { sendGenericForm } from \"../../api/omaelama-functions\";\nimport { GenericEventPayload, GenericFormType, NotifierType, OrganizationNotifier } from \"./GenericFormTypes\";\nimport { Relationship } from \"../common/DomainTypes\";\n\ninterface FormModel {\n dateOfMarriage?: Date;\n ssn: string;\n spouseSsn?: string;\n\n description?: string;\n tapahtumatunnus?: string;\n viranomaiskoodi?: string;\n arkistonumero?: string;\n\n notifierIdentifier?: string;\n organisationIdentifier?: string;\n}\n\nconst defaultValues: FormModel = {\n dateOfMarriage: undefined,\n ssn: \"\",\n spouseSsn: undefined,\n\n description: \"\",\n tapahtumatunnus: undefined,\n viranomaiskoodi: undefined,\n arkistonumero: undefined,\n\n notifierIdentifier: \"\",\n organisationIdentifier: \"\"\n}\n\nconst validationSchema: Yup.SchemaOf = Yup.object({\n dateOfMarriage: Yup.date()\n .required('Pakollinen tieto'),\n ssn: Yup.string()\n .length(11, 'Henkilötunnuksen pituus oltava 11 merkkiä')\n .required('Pakollinen tieto'),\n spouseSsn: Yup.string()\n .length(11, 'Henkilötunnuksen pituus oltava 11 merkkiä')\n .required('Pakollinen tieto'),\n description: Yup.string()\n .min(3, 'Tekstin pituus oltava vähintään 3 merkkiä')\n .max(500, 'Tekstin pituus voi olla enintään 256 merkkiä')\n .notRequired(),\n tapahtumatunnus: Yup.string().notRequired(),\n viranomaiskoodi: Yup.string().notRequired(),\n arkistonumero: Yup.string().notRequired(),\n notifierIdentifier: Yup.string()\n .min(2, 'Tunnisteen pituus oltava vähintään 2 merkkiä')\n .max(50, 'Tunnisteen pituus voi olla enintään 11 merkkiä')\n .notRequired(),\n organisationIdentifier: Yup.string()\n .min(2, 'Tunnisteen pituus oltava vähintään 2 merkkiä')\n .max(50, 'Tunnisteen pituus voi olla enintään 11 merkkiä')\n .notRequired(),\n});\n\nexport const Form: React.FC> = ({\n errors,\n handleBlur,\n handleChange,\n handleSubmit,\n touched,\n values,\n}) => {\n return (\n
    \n \n \n Avioliiton tiedot\n \n \n \n \n \n \n \n \n \n
    \n Tapahtumaan liittyvät tiedot\n \n \n \n \n \n \n \n \n \n \n
    \n Ilmoittaja\n \n \n \n \n \n \n \n
    \n
    \n
    \n )\n}\n\nconst MarriageForm: React.FC = () => {\n\n const handleSubmit = async (values: FormModel) => {\n const notifier: OrganizationNotifier = {\n id: values.notifierIdentifier,\n type: NotifierType.ORGANIZATION,\n organisaationidtunnus: values.organisationIdentifier\n\n }\n const postData: GenericEventPayload = {\n person: {\n relations: [\n {\n personalIdentityCode: values.ssn,\n role: Relationship.SPOUSE,\n description: \"spouse\"\n },\n {\n personalIdentityCode: values.spouseSsn,\n role: Relationship.SPOUSE,\n description: \"spouse\"\n }\n ]\n },\n eventData: {\n eventTime: values.dateOfMarriage,\n description: values.description,\n tapahtumatunnus: values.tapahtumatunnus,\n viranomaiskoodi: values.viranomaiskoodi,\n arkistonumero: values.arkistonumero\n },\n notifier\n }\n return sendGenericForm({ type: GenericFormType.MARRIAGE, payload: postData});\n }\n\n return (\n \n );\n}\n\nexport default MarriageForm;","import React, {Dispatch, SetStateAction, useState, useEffect} from 'react';\nimport {BrowserRouter as Router, Redirect, Route, Switch} from \"react-router-dom\";\nimport {css, Global} from '@emotion/core'\nimport {suomifiDesignTokens as tokens} from 'suomifi-ui-components';\nimport {\n ContentContainer,\n HeaderBackground,\n TopNavigationBackground\n} from \"./components/common/CommonStyles\";\nimport Header from \"./components/common/Header\";\nimport Navigation from \"./components/common/Navigation\";\nimport About from \"./components/about/About\";\nimport Dashboard from \"./components/dashboard/Dashboard\";\nimport DashboardWork from \"./components/dashboard-work/DashboardWork\";\nimport DashboardFinance from \"./components/dashboard-finance/DashboardFinance\"\nimport DashboardEducation from \"./components/dashboard-education/DashboardEducation\"\nimport EstateInventoryEditor from \"./components/estateInventory/EstateInventory\"\nimport Home from \"./components/home/Home\";\nimport Login from \"./components/login/Login\";\nimport WillView from \"./components/will/WillView\";\nimport WillEdit from \"./components/will/WillEdit\";\nimport {Person} from \"./components/common/DomainTypes\";\nimport {NULL_PERSON} from \"./components/common/DefaultValues\";\nimport PrenuptialView from \"./components/prenuptial/PrenuptialView\";\nimport PrenuptialEdit from \"./components/prenuptial/PrenuptialEdit\";\nimport SettingsDashboard from \"./components/settings/SettingsDashboard\"\nimport IncomeView from './components/income-view/IncomeView';\nimport Forms from './components/forms/FormsView';\nimport ReportDeathForm from './components/forms/reportDeath/ReportDeathForm';\nimport { AppState, initialState, loadAppState } from './state/AppContext';\nimport Messages from './components/messages/Messages';\nimport ChildsBirth from './components/forms/ChildsBirth/ChildsBirth';\nimport TerminationOfEmployment from './components/forms/TerminationOfEmployment/TerminationOfEmployment';\nimport DefaultGenericForm from './components/forms/DefaultGenericForm';\nimport MarriageForm from './components/forms/Marriage';\n\nexport const AppContext = React.createContext<[AppState, Dispatch>]>([initialState(), () => null]);\nexport const ApiContext = React.createContext('');\n\nconst App: React.FC = () => {\n const [appState, setAppState] = useState(initialState());\n useEffect(() => {\n loadAppState(appState, setAppState);\n }, []);\n\n return (\n \n \n \n\n \n \n \n
    \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {state => !state[0].isLoadingPerson && state[0].person === NULL_PERSON ?\n <>\n \n \n \n :\n <>\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n }\n \n \n \n \n \n \n );\n};\n\nexport default App;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport ReactModal from \"react-modal\";\nimport './index.css';\nimport './fonts.css';\nimport App from './App';\n//import '@fontsource/roboto';\n\nReactModal.setAppElement('#root');\n\n\nReactDOM.render(, document.getElementById('root'));\n"],"sourceRoot":""}