{ "version": 3, "sources": ["../javascripts/actions/insurance.ts"], "sourcesContent": ["import type { Dispatch as ReduxDispatch } from '@reduxjs/toolkit';\n\nimport type {\n Insurance,\n InsuranceBrandingResponse,\n InsuranceProviderResponse,\n InsuranceResponse,\n} from '../@types/Insurance';\nimport type { BaseAction } from '../@types/actions';\nimport * as http from '../Http';\nimport { buildGetRequest, buildPostRequest } from '../Http/requestTemplates';\nimport { get as getSettings } from '../helpers/settings';\nimport requestCache from '../utils/request-cache';\n\nexport const REQ_FETCH_INSURANCE = 'REQ/FETCH_INSURANCE';\nexport const RCV_FETCH_INSURANCE = 'RCV/FETCH_INSURANCE';\ntype REQ_FETCH_INSURANCE_TYPE = BaseAction;\ntype RCV_FETCH_INSURANCE_TYPE = BaseAction & {\n response: Insurance[];\n};\n\nexport const REQ_INSURANCE_PROVIDER = 'REQ/INSURANCE_PROVIDER';\nexport const RCV_INSURANCE_PROVIDER = 'RCV/INSURANCE_PROVIDER';\ntype REQ_INSURANCE_PROVIDER_TYPE = BaseAction;\ntype RCV_INSURANCE_PROVIDER_TYPE = BaseAction & {\n response: InsuranceProviderResponse;\n};\n\nexport const REQ_INSURANCE_INQUIRY = 'REQ/INSURANCE_INQUIRY';\nexport const RCV_INSURANCE_INQUIRY = 'RCV/INSURANCE_INQUIRY';\ntype REQ_INSURANCE_INQUIRY_TYPE = BaseAction;\ntype RCV_INSURANCE_INQUIRY = BaseAction & {\n response: Insurance[];\n};\n\nexport const REQ_INSURANCE_BRANDING = 'REQ/INSURANCE_BRANDING';\nexport const RCV_INSURANCE_BRANDING = 'RCV/INSURANCE_BRANDING';\ntype REQ_INSURANCE_BRANDING_TYPE = BaseAction;\ntype RCV_INSURANCE_BRANDING_TYPE = BaseAction & {\n response: InsuranceBrandingResponse;\n};\n\nexport const REQ_PERSIST_DATA = 'REQ/PERSIST_DATA';\ntype REQ_PERSIST_DATA_TYPE = BaseAction & {\n personalNumber: string;\n drivingRange: string;\n};\n\nexport const REQ_CLEAR_PERSIST_DATA = 'REQ/CLEAR_PERSIST_DATA';\ntype REQ_CLEAR_PERSIST_DATA_TYPE = BaseAction;\n\nexport const REQ_CLEAR_INSURANCE = 'REQ/CLEAR_INSURANCE';\ntype REQ_CLEAR_INSURANCE_TYPE = BaseAction;\n\nexport const REQUEST_FAILED = 'INSURANCE/REQUEST_FAILED';\ntype REQUEST_FAILED_TYPE = BaseAction & {\n action:\n | typeof REQ_FETCH_INSURANCE\n | typeof REQ_INSURANCE_BRANDING\n | typeof REQ_INSURANCE_INQUIRY\n | typeof REQ_INSURANCE_PROVIDER;\n};\n\nexport type INSURANCE_ACTION =\n | REQ_INSURANCE_INQUIRY_TYPE\n | RCV_INSURANCE_INQUIRY\n | REQ_FETCH_INSURANCE_TYPE\n | RCV_FETCH_INSURANCE_TYPE\n | REQ_INSURANCE_PROVIDER_TYPE\n | RCV_INSURANCE_PROVIDER_TYPE\n | REQ_INSURANCE_BRANDING_TYPE\n | RCV_INSURANCE_BRANDING_TYPE\n | REQ_PERSIST_DATA_TYPE\n | REQ_CLEAR_PERSIST_DATA_TYPE\n | REQ_CLEAR_INSURANCE_TYPE\n | REQUEST_FAILED_TYPE;\n\ntype Dispatch = ReduxDispatch;\n\ninterface InsuranceOption {\n externalId: string;\n dealerType: string;\n}\n\ninterface Vehicle {\n registrationNumber: string;\n manufacturer: string;\n}\n\nexport const get =\n (insuranceOption: InsuranceOption, vehicle: Vehicle, personalNumber: string, range: string) =>\n async (dispatch: Dispatch) => {\n const payload = {\n CarRegistrationNumber: vehicle.registrationNumber,\n SocialSecurityNumber: personalNumber,\n DrivingDistanceClass: range,\n CarBrand: vehicle.manufacturer.toUpperCase(),\n DealerId: insuranceOption.externalId,\n DealerType: insuranceOption.dealerType,\n ReturnInsuranceItems: true,\n ReturnInsuranceDescription: true,\n AddOns: [],\n };\n\n try {\n dispatch({ type: REQ_FETCH_INSURANCE });\n\n const response = await http.httpJson(\n getSettings('IfInsuranceUri') as string,\n buildPostRequest(payload),\n );\n dispatch({\n type: RCV_FETCH_INSURANCE,\n response: response.insurances,\n });\n } catch (_e) {\n dispatch({ type: REQUEST_FAILED, action: REQ_FETCH_INSURANCE });\n }\n };\n\nexport const inquiry =\n (vehicleId: string, branchId: string, personalNumber: string, range: string) =>\n async (dispatch: Dispatch) => {\n const payload = {\n vehicleId,\n branchId,\n socialId: personalNumber,\n drivingDistance: range,\n };\n\n try {\n if (requestCache.isPending(`${REQ_INSURANCE_INQUIRY}/${vehicleId}/${branchId}`)) {\n return;\n }\n\n requestCache.isPending(`${REQ_INSURANCE_INQUIRY}/${vehicleId}/${branchId}`, true);\n\n dispatch({ type: REQ_INSURANCE_INQUIRY });\n\n const response = await http.json(\n '/api/insurance/inquiry',\n buildPostRequest(payload),\n );\n\n dispatch({\n type: RCV_INSURANCE_INQUIRY,\n response: response.response.insurances,\n });\n } catch (_e) {\n dispatch({ type: REQUEST_FAILED, action: REQ_INSURANCE_INQUIRY });\n }\n requestCache.isPending(`${REQ_INSURANCE_INQUIRY}/${vehicleId}/${branchId}`, false);\n };\n\nexport const branding =\n (insuranceOption: InsuranceOption, vehicle: Vehicle) => async (dispatch: Dispatch) => {\n const payload = {\n CarRegistrationNumber: vehicle.registrationNumber,\n CarBrand: vehicle.manufacturer.toUpperCase(),\n DealerId: insuranceOption.externalId,\n DealerType: insuranceOption.dealerType,\n };\n\n try {\n dispatch({ type: REQ_INSURANCE_BRANDING });\n\n const response = await http.httpJson(\n getSettings('IfBrandingUri') as string,\n buildPostRequest(payload),\n );\n dispatch({\n type: RCV_INSURANCE_BRANDING,\n response,\n });\n } catch (_e) {\n dispatch({ type: REQUEST_FAILED, action: REQ_INSURANCE_BRANDING });\n }\n };\n\nexport const getInsuranceProvider =\n (vehicleId: string, branchId: string) => async (dispatch: Dispatch) => {\n try {\n if (requestCache.isPending(`${REQ_INSURANCE_PROVIDER}/${vehicleId}/${branchId}`)) {\n return;\n }\n\n requestCache.isPending(`${REQ_INSURANCE_PROVIDER}/${vehicleId}/${branchId}`, true);\n\n dispatch({ type: REQ_INSURANCE_PROVIDER });\n\n const response = await http.json(\n `/api/insurance/provider/${vehicleId}?branchId=${branchId}`,\n buildGetRequest(),\n );\n http.validateResponse(response);\n dispatch({\n type: RCV_INSURANCE_PROVIDER,\n response: response.response,\n });\n } catch (_e) {\n dispatch({ type: REQUEST_FAILED, action: REQ_INSURANCE_PROVIDER });\n }\n requestCache.isPending(`${REQ_INSURANCE_PROVIDER}/${vehicleId}/${branchId}`, false);\n };\n\nexport const save = (personalNumber: string, drivingRange: string) => (dispatch: Dispatch) =>\n dispatch({ type: REQ_PERSIST_DATA, personalNumber, drivingRange });\n\nexport const removePersistedData = () => (dispatch: Dispatch) =>\n dispatch({ type: REQ_CLEAR_PERSIST_DATA });\n\nexport const clear = () => (dispatch: Dispatch) => dispatch({ type: REQ_CLEAR_INSURANCE });\n"], "mappings": "mHAcO,IAAMA,EAAsB,sBACtBC,EAAsB,sBAMtBC,EAAyB,yBACzBC,EAAyB,yBAMzBC,EAAwB,wBACxBC,EAAwB,wBAMxBC,EAAyB,yBACzBC,EAAyB,yBAMzBC,EAAmB,mBAMnBC,EAAyB,yBAGzBC,EAAsB,sBAGtBC,EAAiB,2BAkEvB,IAAMC,EACX,CAACC,EAAmBC,EAAkBC,EAAwBC,IAC9D,MAAOC,GAAuB,CAC5B,IAAMC,EAAU,CACd,UAAAL,EACA,SAAAC,EACA,SAAUC,EACV,gBAAiBC,CACnB,EAEA,GAAI,CACF,GAAIG,EAAa,UAAU,GAAGC,CAAqB,IAAIP,CAAS,IAAIC,CAAQ,EAAE,EAC5E,OAGFK,EAAa,UAAU,GAAGC,CAAqB,IAAIP,CAAS,IAAIC,CAAQ,GAAI,EAAI,EAEhFG,EAAS,CAAE,KAAMG,CAAsB,CAAC,EAExC,IAAMC,EAAW,MAAWC,EAC1B,yBACAC,EAAiBL,CAAO,CAC1B,EAEAD,EAAS,CACP,KAAMO,EACN,SAAUH,EAAS,SAAS,UAC9B,CAAC,CACH,MAAa,CACXJ,EAAS,CAAE,KAAMQ,EAAgB,OAAQL,CAAsB,CAAC,CAClE,CACAD,EAAa,UAAU,GAAGC,CAAqB,IAAIP,CAAS,IAAIC,CAAQ,GAAI,EAAK,CACnF,EA2BK,IAAMY,EACX,CAACC,EAAmBC,IAAqB,MAAOC,GAAuB,CACrE,GAAI,CACF,GAAIC,EAAa,UAAU,GAAGC,CAAsB,IAAIJ,CAAS,IAAIC,CAAQ,EAAE,EAC7E,OAGFE,EAAa,UAAU,GAAGC,CAAsB,IAAIJ,CAAS,IAAIC,CAAQ,GAAI,EAAI,EAEjFC,EAAS,CAAE,KAAME,CAAuB,CAAC,EAEzC,IAAMC,EAAW,MAAWC,EAC1B,2BAA2BN,CAAS,aAAaC,CAAQ,GACzDM,EAAgB,CAClB,EACKC,EAAiBH,CAAQ,EAC9BH,EAAS,CACP,KAAMO,EACN,SAAUJ,EAAS,QACrB,CAAC,CACH,MAAa,CACXH,EAAS,CAAE,KAAMQ,EAAgB,OAAQN,CAAuB,CAAC,CACnE,CACAD,EAAa,UAAU,GAAGC,CAAsB,IAAIJ,CAAS,IAAIC,CAAQ,GAAI,EAAK,CACpF,EAEWU,EAAO,CAACC,EAAwBC,IAA0BX,GACrEA,EAAS,CAAE,KAAMY,EAAkB,eAAAF,EAAgB,aAAAC,CAAa,CAAC,EAEtDE,EAAsB,IAAOb,GACxCA,EAAS,CAAE,KAAMc,CAAuB,CAAC,EAE9BC,EAAQ,IAAOf,GAAuBA,EAAS,CAAE,KAAMgB,CAAoB,CAAC", "names": ["REQ_FETCH_INSURANCE", "RCV_FETCH_INSURANCE", "REQ_INSURANCE_PROVIDER", "RCV_INSURANCE_PROVIDER", "REQ_INSURANCE_INQUIRY", "RCV_INSURANCE_INQUIRY", "REQ_INSURANCE_BRANDING", "RCV_INSURANCE_BRANDING", "REQ_PERSIST_DATA", "REQ_CLEAR_PERSIST_DATA", "REQ_CLEAR_INSURANCE", "REQUEST_FAILED", "inquiry", "vehicleId", "branchId", "personalNumber", "range", "dispatch", "payload", "request_cache_default", "REQ_INSURANCE_INQUIRY", "response", "json", "buildPostRequest", "RCV_INSURANCE_INQUIRY", "REQUEST_FAILED", "getInsuranceProvider", "vehicleId", "branchId", "dispatch", "request_cache_default", "REQ_INSURANCE_PROVIDER", "response", "json", "buildGetRequest", "validateResponse", "RCV_INSURANCE_PROVIDER", "REQUEST_FAILED", "save", "personalNumber", "drivingRange", "REQ_PERSIST_DATA", "removePersistedData", "REQ_CLEAR_PERSIST_DATA", "clear", "REQ_CLEAR_INSURANCE"] }