{"version":3,"file":"static/js/627.cb7151c2.chunk.js","mappings":"+4DAoBaA,EAA0B,SACnC,G,IACIC,EAAW,cACXC,EAAmB,sBACnBC,EAAI,OACJC,EAAY,eACZC,EAAa,gBACbC,EAAO,U,uBACwBC,SAAO,W,+DAEtCH,GAAgBD,IAAQ,QAAaA,IAArC,Y,iBAEI,O,sBAAA,IAAM,QAAOA,GAAMK,MAAK,qD,yDAChBF,EACA,IAAM,QAAM,CACRG,SAAUN,EAAKO,MACfC,SAAUR,EAAKS,SACfC,cAAc,IACfL,MAAK,SAAAM,GAAU,OAAAR,EAAQQ,EAAR,KALlB,M,OACA,S,oDAFR,S,aAWA,O,WAAO,CAAP,EAAOP,QAAQQ,OAAO,I,OAU9B,OANMC,EAAwD,CAC1DC,aAAcf,EACdgB,KAAMjB,EACNkB,cAAed,SAAAA,GAGZ,CAAP,EAAO,KAAQe,KAAmB,uBAAwBJ,EAA2B,KAAYK,MAC5Fb,MAAK,SAAAc,GACF,OAAOA,EAASC,IACpB,IAAG,SAACC,GACA,OAAOjB,QAAQQ,QAAO,QAAYS,GACtC,K,QAWKC,EAAuB,SAAOC,EAA0BC,GAAwB,uBAAGpB,SAAO,W,2BACnG,MAAO,CAAP,EAAO,KAAQa,KAAW,oCAA6BM,EAAS,sBAAcC,GAAa,CAAC,G,QAGnFC,EAAmB,SAAOF,EAA0BC,GAAwB,uBAAGpB,SAAO,W,2BAC/F,MAAO,CAAP,EAAO,KAAQsB,IAAkC,2CAAoCH,EAAS,sBAAcC,IACvGnB,MAAK,SAACM,GAAW,OAAAA,EAAOS,IAAP,I,QAGbO,EAAmC,SAACC,GAC7C,IAMuBC,EANjBC,EAAWF,EAAM,KAASG,UAC1BC,EAAcJ,EAAM,KAASK,MAC7BC,EAAYN,EAAM,KAASO,cAC3BC,EAAQR,EAAM,KAASS,WACvBC,EAAUV,EAAM,KAASW,UAAYX,EAAM,KAASS,WAAYC,QAKtE,OAAO,EAAP,CACIE,WAAYV,aAAQ,EAARA,EAAUW,GACtBC,UAAWJ,EAAQG,GACnBE,WAAYP,GAASA,EAAMQ,SAASH,GACpCI,YAAab,EAAcA,EAAYc,YAAcV,EAAOU,YAC5DC,UAAWf,EAAcA,EAAYgB,UAAYZ,EAAOQ,SAASK,MACjEC,YATmBrB,EASOG,EAAcA,EAAYgB,UAAYZ,EAAOQ,SAASK,MAR/Ef,GAAaA,EAAUiB,aAAc,QAActB,EAAMK,EAAUiB,aAAgBtB,IAShFK,GAAa,CAAEkB,UAAWlB,EAAUmB,SAEhD,EAEaC,EAAkC,SAACC,EAAyCC,GAC7E,IAAAC,EAAuBF,EAAkB,KAAnChD,EAAiBgD,EAAkB,MAA5BG,EAAUH,EAAkB,MAEjD,OAAO,EAAP,CACIE,KAAI,EACJlD,MAAK,EACLmD,MAAK,EACLC,SAAUH,EAAgBf,IACtBe,EAAgBI,aAAeL,EAAmBM,eAAiB,CAAC,EAEhF,EAEaC,EAAmB,SAACC,GAC7B,QAAIA,IACAC,OAAOC,SAASC,KAAOH,GAChB,EAIf,C","sources":["services/api/paymentReservation.ts"],"sourcesContent":["import { IDTO, IResponseDto } from 'src/entities/common';\r\nimport { IPaymentReservation, IPaymentReservationDetails, IPaymentReservationRequest, IPaymentResultResponse, IPaymentUser } from 'src/entities/paymentReservation';\r\nimport { IPaymentSelectOption } from 'src/entities/pocket';\r\nimport { IReservationModel, isSignUpUser } from 'src/entities/reservation';\r\nimport { IReservationEndUser, ISignupUser, IUser, IUserBase } from 'src/entities/user';\r\nimport { setTimeOnDate } from '../dateTime';\r\nimport fetcher, { ContentType } from '../fetcher';\r\nimport { StepType } from '../getStepOrder';\r\nimport { handleError } from './errorHandler';\r\nimport { login, signUp } from './user';\r\n\r\nexport interface IPostPaymentReservationParams {\r\n paymentUser: IPaymentUser;\r\n paymentReservations: IPaymentReservation[];\r\n user?: IUserBase | ISignupUser;\r\n shouldSignUp?: boolean;\r\n termsAccepted?: boolean;\r\n setUser?: (userData: IUser | null) => void;\r\n}\r\n\r\nexport const postPaymentReservations = async (\r\n { \r\n paymentUser, \r\n paymentReservations,\r\n user, \r\n shouldSignUp,\r\n termsAccepted, \r\n setUser \r\n }: IPostPaymentReservationParams): Promise => {\r\n\r\n if (shouldSignUp && user && isSignUpUser(user)) {\r\n try {\r\n await signUp(user).then(async () => {\r\n if (setUser) {\r\n await login({\r\n username: user.Email,\r\n password: user.Password,\r\n keepLoggedIn: false\r\n }).then(result => setUser(result));\r\n }\r\n });\r\n }\r\n catch (e) {\r\n return Promise.reject(e);\r\n }\r\n }\r\n\r\n const paymentReservationRequest: IPaymentReservationRequest = {\r\n Reservations: paymentReservations,\r\n User: paymentUser,\r\n TermsAccepted: termsAccepted ?? false\r\n }\r\n\r\n return fetcher.post>(`/PaymentReservations`, paymentReservationRequest, ContentType.Json)\r\n .then(response => {\r\n return response.Data;\r\n }, (errorDto: IResponseDto) => {\r\n return Promise.reject(handleError(errorDto));\r\n });\r\n}\r\n\r\nexport const getPaymentReservations = async (clientKey?: string): Promise => {\r\n if (clientKey) {\r\n return fetcher.get>(`/PaymentReservations/ByClientKey?clientKey=${clientKey}`)\r\n .then((restpJson) => restpJson.Data);\r\n }\r\n return null;\r\n}\r\n\r\nexport const finalizeAfterPayment = async (paymentId: string | null, clientKey: string | null): Promise => {\r\n return fetcher.post(`/Finance/Barion?paymentId=${paymentId}&clientKey=${clientKey}`, {});\r\n}\r\n\r\nexport const getPaymentResult = async (paymentId: string | null, clientKey: string | null): Promise => {\r\n return fetcher.get>(`/Finance/PaymentResult?paymentId=${paymentId}&clientKey=${clientKey}`)\r\n .then((result) => result.Data);\r\n}\r\n\r\nexport const reservationModelToPaymentRequest = (model: IReservationModel): IPaymentReservation => {\r\n const calendar = model[StepType.Calendar];\r\n const appointment = model[StepType.Date];\r\n const questions = model[StepType.CustomerData];\r\n const event = model[StepType.Timetable];\r\n const service = model[StepType.Service] || model[StepType.Timetable]!.service;\r\n\r\n const getArriveTime = (date: string) =>\r\n (questions && questions.arriveTime && setTimeOnDate(date, questions.arriveTime)) || date;\r\n\r\n return {\r\n CalendarId: calendar?.Id,\r\n ServiceId: service.Id,\r\n ScheduleId: event && event.schedule.Id,\r\n PersonCount: appointment ? appointment.personCount : event!.personCount,\r\n StartTime: appointment ? appointment.startTime : event!.schedule.Start,\r\n ArriveTime: getArriveTime(appointment ? appointment.startTime : event!.schedule.Start),\r\n ...(questions && { Questions: questions.answers })\r\n };\r\n}\r\n\r\nexport const reservationEndUserToPaymentUser = (reservationEndUser: IReservationEndUser, selectedPayment: IPaymentSelectOption): IPaymentUser => {\r\n const { Name, Email, Phone } = reservationEndUser;\r\n\r\n return {\r\n Name,\r\n Email,\r\n Phone,\r\n PocketId: selectedPayment.Id,\r\n ...(selectedPayment.NeedsInvoice ? reservationEndUser.InvoiceDetails : {})\r\n };\r\n}\r\n\r\nexport const redirectToBarion = (barionLink: string): boolean => {\r\n if (barionLink) {\r\n window.location.href = barionLink;\r\n return true;\r\n }\r\n\r\n return false;\r\n}"],"names":["postPaymentReservations","paymentUser","paymentReservations","user","shouldSignUp","termsAccepted","setUser","Promise","then","username","Email","password","Password","keepLoggedIn","result","reject","paymentReservationRequest","Reservations","User","TermsAccepted","post","Json","response","Data","errorDto","finalizeAfterPayment","paymentId","clientKey","getPaymentResult","get","reservationModelToPaymentRequest","model","date","calendar","Calendar","appointment","Date","questions","CustomerData","event","Timetable","service","Service","CalendarId","Id","ServiceId","ScheduleId","schedule","PersonCount","personCount","StartTime","startTime","Start","ArriveTime","arriveTime","Questions","answers","reservationEndUserToPaymentUser","reservationEndUser","selectedPayment","Name","Phone","PocketId","NeedsInvoice","InvoiceDetails","redirectToBarion","barionLink","window","location","href"],"sourceRoot":""}