{ "version": 3, "sources": ["src/app/core/backend.service.ts"], "sourcesContent": ["import { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport dayjs, { Dayjs } from 'dayjs';\r\nimport { Observable, of } from 'rxjs';\r\nimport { catchError, map, tap } from 'rxjs/operators';\r\nimport { BlockItem } from '../admin/models/admin.model';\r\nimport { SxcService } from '../admin/sxc/sxc.service';\r\nimport { Cart, CartMode, GiftCardValidationModel, Order, OrderLog, PlaceOrder, PlaceOrderResult, SaveReservationResult } from '../cart/cart.model';\r\nimport { TermsAndConditions } from '../checkout/terms-and-conditions/terms-and-conditions';\r\nimport { FieldConfig, FieldConfigRaw, normalizeFieldsConfigs } from '../generic-fields/generic-fields';\r\nimport { GiftCardDetails } from '../gift-card/gift-card.models';\r\nimport { InfoscreenModel } from '../infoscreen/infoscreen.model';\r\nimport { ItemWithMetadata } from '../models/item';\r\nimport { MyOrderSummary } from '../models/my-order-summary';\r\nimport { AppointmentAvailability, EndDateOption, StartInfo, TimeSlotDayInfo } from '../object-choice/time-slots-picker/models';\r\nimport { UserState } from '../root-store/user-store/state';\r\nimport { Appointment, AppointmentsResult, WishValidationResult } from '../scheduler/scheduler.interfaces';\r\nimport { IdentityResult, UserResult } from '../user/user.interfaces';\r\nimport { getIconName } from '../utilities/items';\r\nimport { TreeAndItems } from './../root-store/object-tree-store/object-tree.models';\r\nimport { CatalogResponse } from './catalog.model';\r\nimport { ItemService } from './item.service';\r\nimport { LocaleService } from './locale/locale.service';\r\nimport { LabelsForCatalogResponse } from './sxc.models';\r\nimport { GUID } from './types';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class BackendService {\r\n private readonly baseUrl = '/api'\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private localeService: LocaleService,\r\n ) { }\r\n\r\n getCatalog(name: string): Observable {\r\n return this.http.get(`${this.baseUrl}/Catalog/${name}`)\r\n }\r\n\r\n getCatalogByOrderId(orderId: string): Observable {\r\n return this.http.get(`${this.baseUrl}/Catalog/Order/${orderId}`)\r\n }\r\n\r\n getCustomLabels(catalogId: number, parentCatalogId?: number) {\r\n let params: { [param: string]: string | number } = {\r\n CatalogId: catalogId,\r\n appId: SxcService.defaultAppId,\r\n }\r\n\r\n if (parentCatalogId)\r\n params['parentCatalogId'] = parentCatalogId\r\n\r\n return this.http.get(`${this.baseUrl}/sxc/app/auto/query/GetLabelsForCatalog`, { params })\r\n .pipe(map(res => ({\r\n ObjectChoice: res.ObjectChoice[0] ?? {},\r\n Checkout: res.Checkout[0] ?? {},\r\n Payment: res.Payment[0] ?? {},\r\n })))\r\n }\r\n\r\n getItemTree(): Observable {\r\n return this.http.get(`${this.baseUrl}/ItemTree`)\r\n .pipe(\r\n tap(treeAndItems => ItemService.prepareItemTreeData(treeAndItems))\r\n )\r\n }\r\n\r\n getRooms(): Observable {\r\n return this.http.get(`${this.baseUrl}/Items/Rooms`)\r\n }\r\n\r\n getItems(includeNotBookable = true): Observable {\r\n // Add lang to ensure crawlers use correct language\r\n const params: { [param: string]: string | string[] } = {\r\n lang: this.localeService.currentLang()\r\n }\r\n\r\n if (!includeNotBookable)\r\n params['includeNotBookable'] = 'false'\r\n\r\n return this.http.get(`${this.baseUrl}/Items`, { params })\r\n .pipe(map(allItems => allItems.map(i => ({ ...i, materialIcon: getIconName(i.itemType) }))))\r\n }\r\n\r\n getRecommendedItems(itemId: number): Observable {\r\n return this.http.get(`${this.baseUrl}/Items(${itemId})/RecommendedItems`)\r\n }\r\n\r\n getItemInfo(id: number): Observable {\r\n return this.http.get(`${this.baseUrl}/items(${id})`, {\r\n params: {\r\n // Add lang to ensure crawlers use correct language\r\n lang: this.localeService.currentLang()\r\n }\r\n })\r\n }\r\n\r\n getNextBookingInfo(): Observable<{ firstAvailableTime: Date }> {\r\n return this.http.get<{ firstAvailableTime: string }>(`${this.baseUrl}/Appointments/NextBooking`)\r\n .pipe(\r\n map(res => ({\r\n firstAvailableTime: new Date(res.firstAvailableTime)\r\n }))\r\n )\r\n }\r\n\r\n // #region TimeSlots\r\n getEndDates(availabilityPlanId: number, startDate: dayjs.Dayjs): Observable {\r\n return this.http.get(\r\n `${this.baseUrl}/TimeSlots/EndDates?availabilityPlanId=${availabilityPlanId}&startDate=${startDate.format('YYYY-MM-DD HH:mm')}`).pipe(\r\n map(endDates => endDates.map(res => ({ ...res, dayjs: dayjs(res.date) })))\r\n )\r\n }\r\n\r\n getStartInfo(planId: number | undefined, start: dayjs.Dayjs, entireDay = false, itemIds?: number[]): Observable {\r\n const params: { [param: string]: string | boolean | number } = {\r\n start: start.format('YYYY-MM-DD')\r\n }\r\n\r\n if (planId)\r\n params['planId'] = planId\r\n if (entireDay)\r\n params['entireDay'] = true\r\n if (itemIds)\r\n params['itemIds'] = itemIds.join(',')\r\n\r\n\r\n return this.http.get(`${this.baseUrl}/TimeSlots/StartInfo`, { params })\r\n .pipe(map(startInfo => ({\r\n ...startInfo,\r\n starts: startInfo.starts.map(s => ({\r\n ...s,\r\n start: dayjs(s.start),\r\n end: dayjs(s.end),\r\n }))\r\n })))\r\n }\r\n\r\n getNextAvailableStartDate(availabilityPlanId: number): Observable {\r\n return this.http.get(`${this.baseUrl}/TimeSlots/NextAvailableStartDate?availabilityPlanId=${availabilityPlanId}`, { responseType: 'text' as 'json' })\r\n .pipe(map(dateString => dayjs(dateString).toDate()))\r\n }\r\n\r\n getAvailableStarts(planId: number, itemIds: number[]): Observable {\r\n return this.http.get(`${this.baseUrl}/TimeSlots/Starts`, { params: { planId, itemIds: itemIds.join(',') } })\r\n .pipe(map(availabilities => availabilities.map(a => ({ ...a, start: dayjs(a.start), end: dayjs(a.end) }))))\r\n }\r\n\r\n getTimeSlotsMonthInfo(month: number, year: number, itemIds: number[]): Observable {\r\n return this.http.get(`${this.baseUrl}/TimeSlots/MonthInfo`, { params: { month, year, itemIds: itemIds.join(',') } })\r\n .pipe(map(dates => dates.map(d => ({ ...d, date: dayjs(d.date) }))))\r\n }\r\n\r\n getTimeSlotsNextAvailability(itemIds: number[]): Observable {\r\n return this.http.get(`${this.baseUrl}/TimeSlots/NextAvailability`, { params: { itemIds: itemIds.join(',') } })\r\n .pipe(map(a => {\r\n if (!a)\r\n return a\r\n\r\n a.start = dayjs(a.start)\r\n a.end = dayjs(a.end)\r\n\r\n return a\r\n }))\r\n }\r\n\r\n // #endregion\r\n\r\n getAppointments(itemIds: number[], viewStart: Date, viewEnd: Date, wishStart?: Date | dayjs.Dayjs | null, wishEnd?: Date | dayjs.Dayjs | null,\r\n editingReservationId?: number, wishRecurrenceRule?: string | null, quantity?: number | null, consolidate?: boolean,\r\n availabilityPlanId?: number | null, preparationMinutes?: number, followUpMinutes?: number):\r\n Observable {\r\n const params = {\r\n itemIds: itemIds.join(','),\r\n wishStart: wishStart ? wishStart.toISOString() : '',\r\n wishEnd: wishEnd ? wishEnd.toISOString() : '',\r\n viewStart: viewStart.toISOString(),\r\n viewEnd: viewEnd.toISOString()\r\n } as { [param: string]: string | number | boolean }\r\n\r\n if (editingReservationId)\r\n params['editingReservationId'] = editingReservationId\r\n\r\n if (wishRecurrenceRule)\r\n params['wishRecurrenceRule'] = wishRecurrenceRule\r\n\r\n if (quantity && quantity > 1)\r\n params['quantity'] = quantity\r\n\r\n if (preparationMinutes !== undefined)\r\n params['preparationMinutes'] = preparationMinutes\r\n\r\n if (followUpMinutes !== undefined)\r\n params['followUpMinutes'] = followUpMinutes\r\n\r\n if (consolidate === false)\r\n params['consolidate'] = consolidate\r\n\r\n if (availabilityPlanId && availabilityPlanId > 0)\r\n params['availabilityPlanId'] = availabilityPlanId\r\n\r\n const errorResult = { appointments: [] as Appointment[], wishErrors: { invalidTime: true }, availabilities: undefined }\r\n\r\n // ensure viewStart and viewEnd are not before the minimum date of SQL-Server (1753-01-01)\r\n if (dayjs(viewStart).isBefore('1753-01-01') || dayjs(viewEnd).isBefore('1753-01-01'))\r\n return of(errorResult)\r\n\r\n return this.http.get(`${this.baseUrl}/Appointments`, { params }).pipe(\r\n catchError(() => of(errorResult)),\r\n map(({ appointments, wishErrors, availabilities }) => ({\r\n appointments: appointments.map(a => ({\r\n ...a,\r\n start: dayjs(a.start).toDate(),\r\n end: dayjs(a.end).toDate(),\r\n title: (a as any).subject,\r\n tooltip: a.tooltip?.replace(/\\r\\n/g, '
'),\r\n isWishTime: typeof a.id === 'string' && a.id.startsWith('WishTime')\r\n })),\r\n wishErrors,\r\n availabilities: availabilities?.map(a => ({ ...a, start: dayjs(a.start), end: dayjs(a.end) }))\r\n })))\r\n }\r\n\r\n getAppointment(reservationId: number) {\r\n return this.http.get<{ userIdentifier: GUID, allowEdit: boolean } | null>(`${this.baseUrl}/Appointments(${reservationId})`)\r\n }\r\n\r\n getItemsAvailability(start: dayjs.Dayjs, end: dayjs.Dayjs, itemIds: number[]): Observable {\r\n const params = {\r\n wishStart: start.toISOString(),\r\n wishEnd: end.toISOString(),\r\n itemIds: itemIds.join(',')\r\n }\r\n\r\n return this.http.get(`${this.baseUrl}/Appointments/Availability`, { params })\r\n }\r\n\r\n getAvailableQuantity(start: dayjs.Dayjs, end: dayjs.Dayjs, itemIds: number[], editingReservationId?: number) {\r\n const params = {\r\n start: start.toISOString(),\r\n end: end.toISOString(),\r\n itemIds: itemIds.join(',')\r\n } as { [k: string]: string }\r\n\r\n if (editingReservationId)\r\n params['editingReservationId'] = editingReservationId.toString()\r\n\r\n return this.http.get(`${this.baseUrl}/Appointments/AvailableQuantity`, { params })\r\n }\r\n\r\n getMyOrders(): Observable {\r\n return this.http.get(`${this.baseUrl}/Orders/MyOrders`)\r\n }\r\n\r\n getOrder(cartMode: CartMode, orderId?: GUID): Observable {\r\n const params: { [param: string]: string } = {\r\n cartMode\r\n }\r\n\r\n if (orderId)\r\n params['OrderId'] = orderId\r\n\r\n return this.http.get(`${this.baseUrl}/Cart/Order`, { params })\r\n }\r\n\r\n // #region User\r\n getUser(): Observable {\r\n return this.http.get(`${this.baseUrl}/User`)\r\n }\r\n\r\n loginUser(body: any): Observable {\r\n return this.http.post(`${this.baseUrl}/User/Login`, body)\r\n .pipe(tap(res => this.requestVerificationToken = res.requestVerificationToken))\r\n }\r\n\r\n logoutUser(): Observable {\r\n return this.http.post(`${this.baseUrl}/User/Logout`, null)\r\n .pipe(tap(res => this.requestVerificationToken = res.requestVerificationToken))\r\n }\r\n\r\n forgotPassword(email: string): Observable {\r\n return this.http.post(`${this.baseUrl}/User/ForgotPassword`, { email })\r\n }\r\n\r\n resetPassword(model: { email: string, code: string, newPassword: string }): Observable {\r\n return this.http.post(`${this.baseUrl}/User/ResetPassword`, model).pipe(tap(res => {\r\n this.requestVerificationToken = res.requestVerificationToken\r\n }))\r\n }\r\n\r\n changePassword(model: { email: string, currentPassword: string, newPassword: string }): Observable {\r\n return this.http.post(`${this.baseUrl}/User/ChangePassword`, model)\r\n }\r\n\r\n registerUser(model: any): Observable {\r\n return this.http.post(`${this.baseUrl}/User/Register`, model)\r\n .pipe(tap(res => this.requestVerificationToken = res.requestVerificationToken))\r\n }\r\n\r\n updateMyProfile(model: any): Observable {\r\n return this.http.post(`${this.baseUrl}/User/UpdateMyProfile`, model)\r\n .pipe(tap(res => this.requestVerificationToken = res.requestVerificationToken))\r\n }\r\n // #endregion\r\n\r\n // #region Cart\r\n // All calls to ${this.baseUrl}/Cart may optionally have an ?OrderId QueryString-Parameter, which might be added by an interceptor\r\n updateCartCustomerGroup(customerGroupId: number): Observable {\r\n return this.http.put(`${this.baseUrl}/Cart/CustomerGroup?customerGroupId=${customerGroupId}`, {})\r\n }\r\n\r\n getCart(cartMode: CartMode, orderId?: GUID): Observable {\r\n const params: { [param: string]: string } = {}\r\n if (cartMode !== 'Default')\r\n params['cartMode'] = cartMode\r\n if (orderId)\r\n params['OrderId'] = orderId\r\n\r\n return this.http.get(`${this.baseUrl}/Cart`, { params })\r\n }\r\n\r\n keepAlive(): Observable {\r\n return this.http.post(`${this.baseUrl}/Cart/KeepAlive`, undefined)\r\n }\r\n\r\n deleteReservation(reservationId: number): Observable {\r\n return this.http.delete(`${this.baseUrl}/Cart(${reservationId})`)\r\n }\r\n\r\n addToCart(orderFields: any, params: { [param: string]: string | boolean | number }): Observable {\r\n return this.http.post(`${this.baseUrl}/Cart/Add`, { orderFields }, { params })\r\n }\r\n\r\n addAdditionalEntry(\r\n itemId: number | null, start: Date | null, end: Date | null, quantity: number | null, manualPrice: boolean, price: number | null,\r\n comment: string | null, externalComment: string | null): Observable {\r\n return this.addUpdateAdditionalEntry(null, itemId, start, end, quantity, manualPrice, price, comment, externalComment)\r\n }\r\n\r\n addFromOtherOrder(reservationIds: number[], move: boolean) {\r\n return this.http.post(`${this.baseUrl}/Cart/AddFromOtherOrder`, undefined, {\r\n params: { reservationIds: reservationIds.join(','), move }\r\n })\r\n }\r\n\r\n updateCustomPosition(\r\n reservationId: number, start: Date | null, end: Date | null, quantity: number | null, manualPrice: boolean, price: number | null,\r\n comment: string | null, externalComment: string | null): Observable {\r\n return this.addUpdateAdditionalEntry(reservationId, null, start, end, quantity, manualPrice, price, comment, externalComment)\r\n }\r\n\r\n private addUpdateAdditionalEntry(\r\n reservationId: number | null, itemId: number | null, start: Date | null, end: Date | null, quantity: number | null, manualPrice: boolean,\r\n price: number | null, comment: string | null, externalComment: string | null): Observable {\r\n const params: { [param: string]: string } = {\r\n manualPrice: manualPrice.toString()\r\n }\r\n\r\n if (itemId)\r\n params['itemId'] = itemId.toString()\r\n if (start)\r\n params['start'] = start.toISOString()\r\n if (end)\r\n params['end'] = end.toISOString()\r\n if (price)\r\n params['price'] = price.toString()\r\n if (quantity)\r\n params['quantity'] = quantity.toString()\r\n if (comment)\r\n params['comment'] = comment\r\n if (externalComment)\r\n params['externalComment'] = externalComment\r\n\r\n return !reservationId ?\r\n this.http.post(`${this.baseUrl}/Cart/Additional`, {}, { params }) :\r\n this.http.put(`${this.baseUrl}/Cart/Additional(${reservationId})`, {}, { params })\r\n }\r\n\r\n collapseRecurrence(reservationId: number): Observable {\r\n return this.http.patch(`${this.baseUrl}/Cart(${reservationId})/Collapse`, {})\r\n }\r\n\r\n expandRecurrence(reservationId: number): Observable {\r\n return this.http.patch(`${this.baseUrl}/Cart(${reservationId})/Expand`, {})\r\n }\r\n\r\n acceptChangeRequest(reservationId: number): Observable {\r\n return this.http.patch(`${this.baseUrl}/Cart(${reservationId})/AcceptChangeRequest`, {})\r\n }\r\n\r\n rejectChangeRequest(reservationId: number): Observable {\r\n return this.http.patch(`${this.baseUrl}/Cart(${reservationId})/RejectChangeRequest`, {})\r\n }\r\n\r\n getOrderLog() {\r\n return this.http.get(`${this.baseUrl}/Cart/OrderLog`)\r\n }\r\n\r\n //#region BlockAppointments\r\n\r\n addBlock(orderFields: { [key: number]: { [key: string]: string } }, params: { [param: string]: string | boolean | number }): Observable {\r\n return this.http.post(`${this.baseUrl}/Cart/AddBlock`, { orderFields }, { params })\r\n }\r\n\r\n updateBlockAppointment(id: number, start: Dayjs, end: Dayjs, comment?: string | null, externalComment?: string | null,\r\n availabilityPlanId?: number | null, quantity?: number | null, isPrintable?: boolean | null,\r\n printCol1?: string | null, printCol2?: string | null, printCol3?: string | null, doubleReservationAllowed?: boolean, mailRecipientOnOverlappingWithBlockInfo?: string | null): Observable {\r\n\r\n const params: { [param: string]: string | boolean } = {\r\n start: start.toISOString(),\r\n end: end!.toISOString()\r\n }\r\n\r\n if (comment)\r\n params['comment'] = comment\r\n\r\n if (externalComment)\r\n params['externalComment'] = externalComment\r\n\r\n if (availabilityPlanId)\r\n params['availabilityPlanId'] = availabilityPlanId.toString()\r\n\r\n if (quantity)\r\n params['quantity'] = quantity.toString()\r\n\r\n if (isPrintable)\r\n params['isPrintable'] = isPrintable\r\n\r\n if (printCol1)\r\n params['printCol1'] = printCol1\r\n\r\n if (printCol2)\r\n params['printCol2'] = printCol2\r\n\r\n if (printCol3)\r\n params['printCol3'] = printCol3\r\n\r\n if (doubleReservationAllowed !== undefined)\r\n params['doubleReservationAllowed'] = doubleReservationAllowed\r\n\r\n if (mailRecipientOnOverlappingWithBlockInfo)\r\n params['mailRecipientOnOverlappingWithBlockInfo'] = mailRecipientOnOverlappingWithBlockInfo\r\n\r\n return this.http.put(`${this.baseUrl}/Blocks(${id})`, {}, { params })\r\n }\r\n\r\n deleteBlockAppointment(id: number): Observable {\r\n return this.http.delete(`${this.baseUrl}/Blocks(${id})`)\r\n }\r\n\r\n copyBlockAppointment(id: number): Observable {\r\n return this.http.post(`${this.baseUrl}/Blocks(${id})/Copy`, {})\r\n }\r\n\r\n getBlockAppointment(id: number): Observable {\r\n return this.http.get(`${this.baseUrl}/Blocks(${id})`)\r\n }\r\n\r\n // #endregion\r\n\r\n orderCartItemsByStartDate(): Observable {\r\n return this.http.post(`${this.baseUrl}/Cart/OrderItemsByStartDate`, {})\r\n }\r\n\r\n orderCartItems(reservationIds: number[]): Observable {\r\n return this.http.post(`${this.baseUrl}/Cart/OrderItems?reservationIds=${reservationIds.join(',')}`, {})\r\n }\r\n\r\n updateCartObjectField(fieldId: number, newValue: string, reservationId: number): Observable {\r\n return this.http.put(`${this.baseUrl}/Cart/ObjectField`, {},\r\n { params: { fieldId: fieldId, newValue, reservationId: reservationId } })\r\n }\r\n\r\n updateCartItem(reservationId: number, start: Dayjs, end: Dayjs, comment?: string | null, externalComment?: string | null,\r\n availabilityPlanId?: number | null, quantity?: number | null, isPrintable?: boolean | null,\r\n printCol1?: string | null, printCol2?: string | null, printCol3?: string | null, itemFieldValues?: { [key: string]: string },\r\n manualPrice?: boolean, price?: number | null, preparationMinutes?: number, followUpMinutes?: number\r\n ): Observable {\r\n\r\n const params: { [param: string]: string | boolean | number } = {\r\n start: start.toISOString(),\r\n end: end!.toISOString()\r\n } as { [param: string]: string | boolean | number }\r\n\r\n if (preparationMinutes)\r\n params['preparationMinutes'] = preparationMinutes\r\n\r\n if (followUpMinutes)\r\n params['followUpMinutes'] = followUpMinutes\r\n\r\n if (comment)\r\n params['comment'] = comment\r\n\r\n if (externalComment)\r\n params['externalComment'] = externalComment\r\n\r\n if (availabilityPlanId)\r\n params['availabilityPlanId'] = availabilityPlanId\r\n\r\n if (quantity)\r\n params['quantity'] = quantity\r\n\r\n if (isPrintable)\r\n params['isPrintable'] = isPrintable\r\n\r\n if (printCol1)\r\n params['printCol1'] = printCol1\r\n\r\n if (printCol2)\r\n params['printCol2'] = printCol2\r\n\r\n if (printCol3)\r\n params['printCol3'] = printCol3\r\n\r\n if (manualPrice === true) {\r\n params['manualPrice'] = manualPrice\r\n\r\n if (price !== undefined && price !== null)\r\n params['price'] = price\r\n }\r\n\r\n return this.http.put(`${this.baseUrl}/Cart(${reservationId})`, { itemFieldValues }, { params })\r\n }\r\n\r\n placeOrder(order: PlaceOrder): Observable {\r\n return this.http.post(`${this.baseUrl}/Cart/PlaceOrder`, order)\r\n }\r\n\r\n getCheckoutFields(): Observable {\r\n return this.http.get(`${this.baseUrl}/Cart/CheckoutFields`)\r\n .pipe(map(raw => normalizeFieldsConfigs(raw)))\r\n }\r\n\r\n getICalUrl(orderId: string, catName: string, reservationId: number): string {\r\n return `${this.baseUrl}/Cart/IcalExport?OrderId=${orderId}&catName=${catName}&reservationId=${reservationId}`\r\n }\r\n\r\n // Admin-Cart\r\n acceptReservation(reservationId: number): Observable {\r\n return this.http.patch(`${this.baseUrl}/Cart(${reservationId})/Accept`, {})\r\n }\r\n\r\n rejectReservation(reservationId: number): Observable {\r\n return this.http.patch(`${this.baseUrl}/Cart(${reservationId})/Reject`, {})\r\n }\r\n\r\n acceptAllReservations(): Observable {\r\n return this.http.patch(`${this.baseUrl}/Cart/AcceptAll`, {})\r\n }\r\n\r\n rejectAllReservations(): Observable {\r\n return this.http.patch(`${this.baseUrl}/Cart/RejectAll`, {})\r\n }\r\n\r\n // #endregion\r\n\r\n //#region GiftCards\r\n\r\n addGiftCard(itemId: number, price: number, senderName: string, recipientName: string, message: string) {\r\n return this.http.post(`${this.baseUrl}/Cart/AddGiftCard`, undefined, { params: { itemId, price, senderName, recipientName, message } })\r\n }\r\n\r\n updateGiftCard(reservationId: number, price: number, senderName: string, recipientName: string, message: string) {\r\n return this.http.put(`${this.baseUrl}/Cart/UpdateGiftCard`, undefined, { params: { reservationId, price, senderName, recipientName, message } })\r\n }\r\n\r\n getGiftCard(couponCode: string) {\r\n return this.http.get(`${this.baseUrl}/GiftCards(${couponCode})`)\r\n }\r\n\r\n validateGiftCard(couponCode: string) {\r\n return this.http.get(`${this.baseUrl}/Cart/ValidateGiftCard`, { params: { couponCode } })\r\n }\r\n\r\n applyGiftCard(couponCode: string) {\r\n return this.http.post(`${this.baseUrl}/Cart/ApplyGiftCard`, undefined, { params: { couponCode } })\r\n }\r\n\r\n removeGiftCard(couponCode: string) {\r\n return this.http.delete(`${this.baseUrl}/Cart/RemoveGiftCard`, { params: { couponCode } })\r\n }\r\n\r\n getGiftCardPreviewUrl(amount: number, catalogId: number, senderName?: string, recipientName?: string, message?: string): string {\r\n let params = new HttpParams()\r\n\r\n if (senderName)\r\n params = params.set('senderName', senderName)\r\n\r\n if (recipientName)\r\n params = params.set('recipientName', recipientName)\r\n\r\n if (message)\r\n params = params.set('message', message)\r\n\r\n return `${this.baseUrl}/GiftCards/Preview?amount=${amount}&catalogId=${catalogId}&${params}`\r\n }\r\n\r\n getGiftCardUrl(couponCode: string): string {\r\n return `${this.baseUrl}/GiftCards/${couponCode}`\r\n }\r\n\r\n //#endregion\r\n\r\n //#region XSRF\r\n get requestVerificationToken(): string | null {\r\n return document.getElementById('__RequestVerificationToken')?.getAttribute('value') ?? null\r\n }\r\n\r\n set requestVerificationToken(value: string | null) {\r\n if (!value) return\r\n\r\n document.getElementById('__RequestVerificationToken')?.setAttribute('value', value)\r\n }\r\n //#endregion\r\n\r\n getTermsAndConditions(includeParentCatalog = true): Observable {\r\n let params = new HttpParams()\r\n\r\n if (!includeParentCatalog)\r\n params = params.set('includeParentCatalog', false)\r\n\r\n return this.http.get(`${this.baseUrl}/Catalog/TermsAndConditions`, { params })\r\n }\r\n\r\n getInfoscreen(key: string) {\r\n return this.http.get(`${this.baseUrl}/Infoscreen/${key}`)\r\n }\r\n\r\n getInfoscreenPreview(futureEvents: string, pastEvents: string, showPurpose: boolean, showAllBookingDetails: boolean, allItems: boolean, itemIds?: number[]) {\r\n return this.http.get(`${this.baseUrl}/Infoscreen/Preview`, {\r\n params: {\r\n futureEvents,\r\n pastEvents,\r\n showPurpose,\r\n showAllBookingDetails,\r\n allItems,\r\n itemIds: itemIds?.join(',') ?? ''\r\n }\r\n })\r\n }\r\n}\r\n"], "mappings": "kYAEA,IAAAA,EAA6B,OA2B7B,IAAaC,GAAc,IAAA,CAArB,IAAOA,EAAP,MAAOA,CAAc,CAGzBC,YACUC,EACAC,EAA4B,CAD5B,KAAAD,KAAAA,EACA,KAAAC,cAAAA,EAJO,KAAAC,QAAU,MAKvB,CAEJC,WAAWC,EAAY,CACrB,OAAO,KAAKJ,KAAKK,IAAqB,GAAG,KAAKH,OAAO,YAAYE,CAAI,EAAE,CACzE,CAEAE,oBAAoBC,EAAe,CACjC,OAAO,KAAKP,KAAKK,IAAqB,GAAG,KAAKH,OAAO,kBAAkBK,CAAO,EAAE,CAClF,CAEAC,gBAAgBC,EAAmBC,EAAwB,CACzD,IAAIC,EAA+C,CACjDC,UAAWH,EACXI,MAAOC,EAAWC,cAGpB,OAAIL,IACFC,EAAO,gBAAqBD,GAEvB,KAAKV,KAAKK,IAA8B,GAAG,KAAKH,OAAO,0CAA2C,CAAES,OAAAA,CAAM,CAAE,EAChHK,KAAKC,EAAIC,IAAQ,CAChBC,aAAcD,EAAIC,aAAa,CAAC,GAAK,CAAA,EACrCC,SAAUF,EAAIE,SAAS,CAAC,GAAK,CAAA,EAC7BC,QAASH,EAAIG,QAAQ,CAAC,GAAK,CAAA,GAC3B,CAAC,CACP,CAEAC,aAAW,CACT,OAAO,KAAKtB,KAAKK,IAAkB,GAAG,KAAKH,OAAO,WAAW,EAC1Dc,KACCO,EAAIC,GAAgBC,EAAYC,oBAAoBF,CAAY,CAAC,CAAC,CAExE,CAEAG,UAAQ,CACN,OAAO,KAAK3B,KAAKK,IAAwB,GAAG,KAAKH,OAAO,cAAc,CACxE,CAEA0B,SAASC,EAAqB,GAAI,CAEhC,IAAMlB,EAAiD,CACrDmB,KAAM,KAAK7B,cAAc8B,YAAW,GAGtC,OAAKF,IACHlB,EAAO,mBAAwB,SAE1B,KAAKX,KAAKK,IAAwB,GAAG,KAAKH,OAAO,SAAU,CAAES,OAAAA,CAAM,CAAE,EACzEK,KAAKC,EAAIe,GAAYA,EAASf,IAAIgB,GAAMC,EAAAC,EAAA,GAAKF,GAAL,CAAQG,aAAcC,EAAYJ,EAAEK,QAAQ,CAAC,EAAG,CAAC,CAAC,CAC/F,CAEAC,oBAAoBC,EAAc,CAChC,OAAO,KAAKxC,KAAKK,IAAwB,GAAG,KAAKH,OAAO,UAAUsC,CAAM,oBAAoB,CAC9F,CAEAC,YAAYC,EAAU,CACpB,OAAO,KAAK1C,KAAKK,IAAsB,GAAG,KAAKH,OAAO,UAAUwC,CAAE,IAAK,CACrE/B,OAAQ,CAENmB,KAAM,KAAK7B,cAAc8B,YAAW,GAEvC,CACH,CAEAY,oBAAkB,CAChB,OAAO,KAAK3C,KAAKK,IAAoC,GAAG,KAAKH,OAAO,2BAA2B,EAC5Fc,KACCC,EAAIC,IAAQ,CACV0B,mBAAoB,IAAIC,KAAK3B,EAAI0B,kBAAkB,GACnD,CAAC,CAET,CAGAE,YAAYC,EAA4BC,EAAsB,CAC5D,OAAO,KAAKhD,KAAKK,IACf,GAAG,KAAKH,OAAO,0CAA0C6C,CAAkB,cAAcC,EAAUC,OAAO,kBAAkB,CAAC,EAAE,EAAEjC,KAC/HC,EAAIiC,GAAYA,EAASjC,IAAIC,GAAQgB,EAAAC,EAAA,GAAKjB,GAAL,CAAUiC,SAAOA,EAAAA,SAAMjC,EAAIkC,IAAI,CAAC,EAAG,CAAC,CAAC,CAEhF,CAEAC,aAAaC,EAA4BC,EAAoBC,EAAY,GAAOC,EAAkB,CAChG,IAAM9C,EAAyD,CAC7D4C,MAAOA,EAAMN,OAAO,YAAY,GAGlC,OAAIK,IACF3C,EAAO,OAAY2C,GACjBE,IACF7C,EAAO,UAAe,IACpB8C,IACF9C,EAAO,QAAa8C,EAAQC,KAAK,GAAG,GAG/B,KAAK1D,KAAKK,IAAe,GAAG,KAAKH,OAAO,uBAAwB,CAAES,OAAAA,CAAM,CAAE,EAC9EK,KAAKC,EAAI0C,GAAczB,EAAAC,EAAA,GACnBwB,GADmB,CAEtBC,OAAQD,EAAUC,OAAO3C,IAAI4C,GAAM3B,EAAAC,EAAA,GAC9B0B,GAD8B,CAEjCN,SAAOJ,EAAAA,SAAMU,EAAEN,KAAK,EACpBO,OAAKX,EAAAA,SAAMU,EAAEC,GAAG,GAChB,GACF,CAAC,CACP,CAEAC,0BAA0BhB,EAA0B,CAClD,OAAO,KAAK/C,KAAKK,IAAY,GAAG,KAAKH,OAAO,wDAAwD6C,CAAkB,GAAI,CAAEiB,aAAc,MAAgB,CAAE,EACzJhD,KAAKC,EAAIgD,MAAcd,EAAAA,SAAMc,CAAU,EAAEC,OAAM,CAAE,CAAC,CACvD,CAEAC,mBAAmBb,EAAgBG,EAAiB,CAClD,OAAO,KAAKzD,KAAKK,IAA+B,GAAG,KAAKH,OAAO,oBAAqB,CAAES,OAAQ,CAAE2C,OAAAA,EAAQG,QAASA,EAAQC,KAAK,GAAG,CAAC,CAAE,CAAE,EACnI1C,KAAKC,EAAImD,GAAkBA,EAAenD,IAAIoD,GAAMnC,EAAAC,EAAA,GAAKkC,GAAL,CAAQd,SAAOJ,EAAAA,SAAMkB,EAAEd,KAAK,EAAGO,OAAKX,EAAAA,SAAMkB,EAAEP,GAAG,CAAC,EAAG,CAAC,CAAC,CAC9G,CAEAQ,sBAAsBC,EAAeC,EAAcf,EAAiB,CAClE,OAAO,KAAKzD,KAAKK,IAAuB,GAAG,KAAKH,OAAO,uBAAwB,CAAES,OAAQ,CAAE4D,MAAAA,EAAOC,KAAAA,EAAMf,QAASA,EAAQC,KAAK,GAAG,CAAC,CAAE,CAAE,EACnI1C,KAAKC,EAAIwD,GAASA,EAAMxD,IAAIyD,GAAMxC,EAAAC,EAAA,GAAKuC,GAAL,CAAQtB,QAAMD,EAAAA,SAAMuB,EAAEtB,IAAI,CAAC,EAAG,CAAC,CAAC,CACvE,CAEAuB,6BAA6BlB,EAAiB,CAC5C,OAAO,KAAKzD,KAAKK,IAAoC,GAAG,KAAKH,OAAO,8BAA+B,CAAES,OAAQ,CAAE8C,QAASA,EAAQC,KAAK,GAAG,CAAC,CAAE,CAAE,EAC1I1C,KAAKC,EAAIoD,GACHA,IAGLA,EAAEd,SAAQJ,EAAAA,SAAMkB,EAAEd,KAAK,EACvBc,EAAEP,OAAMX,EAAAA,SAAMkB,EAAEP,GAAG,EAEZO,EACR,CAAC,CACN,CAIAO,gBAAgBnB,EAAmBoB,EAAiBC,EAAeC,EAAuCC,EACxGC,EAA+BC,EAAoCC,EAA0BC,EAC7FrC,EAAoCsC,EAA6BC,EAAwB,CAEzF,IAAM3E,EAAS,CACb8C,QAASA,EAAQC,KAAK,GAAG,EACzBqB,UAAWA,EAAYA,EAAUQ,YAAW,EAAK,GACjDP,QAASA,EAAUA,EAAQO,YAAW,EAAK,GAC3CV,UAAWA,EAAUU,YAAW,EAChCT,QAASA,EAAQS,YAAW,GAG1BN,IACFtE,EAAO,qBAA0BsE,GAE/BC,IACFvE,EAAO,mBAAwBuE,GAE7BC,GAAYA,EAAW,IACzBxE,EAAO,SAAcwE,GAEnBE,IAAuBG,SACzB7E,EAAO,mBAAwB0E,GAE7BC,IAAoBE,SACtB7E,EAAO,gBAAqB2E,GAE1BF,IAAgB,KAClBzE,EAAO,YAAiByE,GAEtBrC,GAAsBA,EAAqB,IAC7CpC,EAAO,mBAAwBoC,GAEjC,IAAM0C,EAAc,CAAEC,aAAc,CAAA,EAAqBC,WAAY,CAAEC,YAAa,EAAI,EAAIxB,eAAgBoB,MAAS,EAGrH,SAAIrC,EAAAA,SAAM0B,CAAS,EAAEgB,SAAS,YAAY,MAAK1C,EAAAA,SAAM2B,CAAO,EAAEe,SAAS,YAAY,EAC1EC,EAAGL,CAAW,EAEhB,KAAKzF,KAAKK,IAAwB,GAAG,KAAKH,OAAO,gBAAiB,CAAES,OAAAA,CAAM,CAAE,EAAEK,KACnF+E,EAAW,IAAMD,EAAGL,CAAW,CAAC,EAChCxE,EAAI,CAAC,CAAEyE,aAAAA,EAAcC,WAAAA,EAAYvB,eAAAA,CAAc,KAAQ,CACrDsB,aAAcA,EAAazE,IAAIoD,GAAMnC,EAAAC,EAAA,GAChCkC,GADgC,CAEnCd,SAAOJ,EAAAA,SAAMkB,EAAEd,KAAK,EAAEW,OAAM,EAC5BJ,OAAKX,EAAAA,SAAMkB,EAAEP,GAAG,EAAEI,OAAM,EACxB8B,MAAQ3B,EAAU4B,QAClBC,QAAS7B,EAAE6B,SAASC,QAAQ,QAAS,OAAO,EAC5CC,WAAY,OAAO/B,EAAE3B,IAAO,UAAY2B,EAAE3B,GAAG2D,WAAW,UAAU,GAClE,EACFV,WAAAA,EACAvB,eAAgBA,GAAgBnD,IAAIoD,GAAMnC,EAAAC,EAAA,GAAKkC,GAAL,CAAQd,SAAOJ,EAAAA,SAAMkB,EAAEd,KAAK,EAAGO,OAAKX,EAAAA,SAAMkB,EAAEP,GAAG,CAAC,EAAG,GAC7F,CAAC,CACP,CAEAwC,eAAeC,EAAqB,CAClC,OAAO,KAAKvG,KAAKK,IAAyD,GAAG,KAAKH,OAAO,iBAAiBqG,CAAa,GAAG,CAC5H,CAEAC,qBAAqBjD,EAAoBO,EAAkBL,EAAiB,CAC1E,IAAM9C,EAAS,CACboE,UAAWxB,EAAMgC,YAAW,EAC5BP,QAASlB,EAAIyB,YAAW,EACxB9B,QAASA,EAAQC,KAAK,GAAG,GAG3B,OAAO,KAAK1D,KAAKK,IAA0B,GAAG,KAAKH,OAAO,6BAA8B,CAAES,OAAAA,CAAM,CAAE,CACpG,CAEA8F,qBAAqBlD,EAAoBO,EAAkBL,EAAmBwB,EAA6B,CACzG,IAAMtE,EAAS,CACb4C,MAAOA,EAAMgC,YAAW,EACxBzB,IAAKA,EAAIyB,YAAW,EACpB9B,QAASA,EAAQC,KAAK,GAAG,GAG3B,OAAIuB,IACFtE,EAAO,qBAA0BsE,EAAqByB,SAAQ,GAEzD,KAAK1G,KAAKK,IAAmB,GAAG,KAAKH,OAAO,kCAAmC,CAAES,OAAAA,CAAM,CAAE,CAClG,CAEAgG,aAAW,CACT,OAAO,KAAK3G,KAAKK,IAAsB,GAAG,KAAKH,OAAO,kBAAkB,CAC1E,CAEA0G,SAASC,EAAoBtG,EAAc,CACzC,IAAMI,EAAsC,CAC1CkG,SAAAA,GAGF,OAAItG,IACFI,EAAO,QAAaJ,GAEf,KAAKP,KAAKK,IAAW,GAAG,KAAKH,OAAO,cAAe,CAAES,OAAAA,CAAM,CAAE,CACtE,CAGAmG,SAAO,CACL,OAAO,KAAK9G,KAAKK,IAAe,GAAG,KAAKH,OAAO,OAAO,CACxD,CAEA6G,UAAUC,EAAS,CACjB,OAAO,KAAKhH,KAAKiH,KAAiB,GAAG,KAAK/G,OAAO,cAAe8G,CAAI,EACjEhG,KAAKO,EAAIL,GAAO,KAAKgG,yBAA2BhG,EAAIgG,wBAAwB,CAAC,CAClF,CAEAC,YAAU,CACR,OAAO,KAAKnH,KAAKiH,KAAiB,GAAG,KAAK/G,OAAO,eAAgB,IAAI,EAClEc,KAAKO,EAAIL,GAAO,KAAKgG,yBAA2BhG,EAAIgG,wBAAwB,CAAC,CAClF,CAEAE,eAAeC,EAAa,CAC1B,OAAO,KAAKrH,KAAKiH,KAAqB,GAAG,KAAK/G,OAAO,uBAAwB,CAAEmH,MAAAA,CAAK,CAAE,CACxF,CAEAC,cAAcC,EAA2D,CACvE,OAAO,KAAKvH,KAAKiH,KAAiB,GAAG,KAAK/G,OAAO,sBAAuBqH,CAAK,EAAEvG,KAAKO,EAAIL,GAAM,CAC5F,KAAKgG,yBAA2BhG,EAAIgG,wBACtC,CAAC,CAAC,CACJ,CAEAM,eAAeD,EAAsE,CACnF,OAAO,KAAKvH,KAAKiH,KAAqB,GAAG,KAAK/G,OAAO,uBAAwBqH,CAAK,CACpF,CAEAE,aAAaF,EAAU,CACrB,OAAO,KAAKvH,KAAKiH,KAAiB,GAAG,KAAK/G,OAAO,iBAAkBqH,CAAK,EACrEvG,KAAKO,EAAIL,GAAO,KAAKgG,yBAA2BhG,EAAIgG,wBAAwB,CAAC,CAClF,CAEAQ,gBAAgBH,EAAU,CACxB,OAAO,KAAKvH,KAAKiH,KAAiB,GAAG,KAAK/G,OAAO,wBAAyBqH,CAAK,EAC5EvG,KAAKO,EAAIL,GAAO,KAAKgG,yBAA2BhG,EAAIgG,wBAAwB,CAAC,CAClF,CAKAS,wBAAwBC,EAAuB,CAC7C,OAAO,KAAK5H,KAAK6H,IAAI,GAAG,KAAK3H,OAAO,uCAAuC0H,CAAe,GAAI,CAAA,CAAE,CAClG,CAEAE,QAAQjB,EAAoBtG,EAAc,CACxC,IAAMI,EAAsC,CAAA,EAC5C,OAAIkG,IAAa,YACflG,EAAO,SAAckG,GACnBtG,IACFI,EAAO,QAAaJ,GAEf,KAAKP,KAAKK,IAAU,GAAG,KAAKH,OAAO,QAAS,CAAES,OAAAA,CAAM,CAAE,CAC/D,CAEAoH,WAAS,CACP,OAAO,KAAK/H,KAAKiH,KAAK,GAAG,KAAK/G,OAAO,kBAAmBsF,MAAS,CACnE,CAEAwC,kBAAkBzB,EAAqB,CACrC,OAAO,KAAKvG,KAAKiI,OAA8B,GAAG,KAAK/H,OAAO,SAASqG,CAAa,GAAG,CACzF,CAEA2B,UAAUC,EAAkBxH,EAAsD,CAChF,OAAO,KAAKX,KAAKiH,KAA4B,GAAG,KAAK/G,OAAO,YAAa,CAAEiI,YAAAA,CAAW,EAAI,CAAExH,OAAAA,CAAM,CAAE,CACtG,CAEAyH,mBACE5F,EAAuBe,EAAoBO,EAAkBqB,EAAyBkD,EAAsBC,EAC5GC,EAAwBC,EAA8B,CACtD,OAAO,KAAKC,yBAAyB,KAAMjG,EAAQe,EAAOO,EAAKqB,EAAUkD,EAAaC,EAAOC,EAASC,CAAe,CACvH,CAEAE,kBAAkBC,EAA0BC,EAAa,CACvD,OAAO,KAAK5I,KAAKiH,KAA4B,GAAG,KAAK/G,OAAO,0BAA2BsF,OAAW,CAChG7E,OAAQ,CAAEgI,eAAgBA,EAAejF,KAAK,GAAG,EAAGkF,KAAAA,CAAI,EACzD,CACH,CAEAC,qBACEtC,EAAuBhD,EAAoBO,EAAkBqB,EAAyBkD,EAAsBC,EAC5GC,EAAwBC,EAA8B,CACtD,OAAO,KAAKC,yBAAyBlC,EAAe,KAAMhD,EAAOO,EAAKqB,EAAUkD,EAAaC,EAAOC,EAASC,CAAe,CAC9H,CAEQC,yBACNlC,EAA8B/D,EAAuBe,EAAoBO,EAAkBqB,EAAyBkD,EACpHC,EAAsBC,EAAwBC,EAA8B,CAC5E,IAAM7H,EAAsC,CAC1C0H,YAAaA,EAAY3B,SAAQ,GAGnC,OAAIlE,IACF7B,EAAO,OAAY6B,EAAOkE,SAAQ,GAChCnD,IACF5C,EAAO,MAAW4C,EAAMgC,YAAW,GACjCzB,IACFnD,EAAO,IAASmD,EAAIyB,YAAW,GAC7B+C,IACF3H,EAAO,MAAW2H,EAAM5B,SAAQ,GAC9BvB,IACFxE,EAAO,SAAcwE,EAASuB,SAAQ,GACpC6B,IACF5H,EAAO,QAAa4H,GAClBC,IACF7H,EAAO,gBAAqB6H,GAEtBjC,EAEN,KAAKvG,KAAK6H,IAA2B,GAAG,KAAK3H,OAAO,oBAAoBqG,CAAa,IAAK,CAAA,EAAI,CAAE5F,OAAAA,CAAM,CAAE,EADxG,KAAKX,KAAKiH,KAA4B,GAAG,KAAK/G,OAAO,mBAAoB,CAAA,EAAI,CAAES,OAAAA,CAAM,CAAE,CAE3F,CAEAmI,mBAAmBvC,EAAqB,CACtC,OAAO,KAAKvG,KAAK+I,MAAY,GAAG,KAAK7I,OAAO,SAASqG,CAAa,aAAc,CAAA,CAAE,CACpF,CAEAyC,iBAAiBzC,EAAqB,CACpC,OAAO,KAAKvG,KAAK+I,MAAY,GAAG,KAAK7I,OAAO,SAASqG,CAAa,WAAY,CAAA,CAAE,CAClF,CAEA0C,oBAAoB1C,EAAqB,CACvC,OAAO,KAAKvG,KAAK+I,MAAe,GAAG,KAAK7I,OAAO,SAASqG,CAAa,wBAAyB,CAAA,CAAE,CAClG,CAEA2C,oBAAoB3C,EAAqB,CACvC,OAAO,KAAKvG,KAAK+I,MAAe,GAAG,KAAK7I,OAAO,SAASqG,CAAa,wBAAyB,CAAA,CAAE,CAClG,CAEA4C,aAAW,CACT,OAAO,KAAKnJ,KAAKK,IAAgB,GAAG,KAAKH,OAAO,gBAAgB,CAClE,CAIAkJ,SAASjB,EAA2DxH,EAAsD,CACxH,OAAO,KAAKX,KAAKiH,KAA4B,GAAG,KAAK/G,OAAO,iBAAkB,CAAEiI,YAAAA,CAAW,EAAI,CAAExH,OAAAA,CAAM,CAAE,CAC3G,CAEA0I,uBAAuB3G,EAAYa,EAAcO,EAAYyE,EAAyBC,EACpFzF,EAAoCoC,EAA0BmE,EAC9DC,EAA2BC,EAA2BC,EAA2BC,EAAoCC,EAAuD,CAE5K,IAAMhJ,EAAgD,CACpD4C,MAAOA,EAAMgC,YAAW,EACxBzB,IAAKA,EAAKyB,YAAW,GAGvB,OAAIgD,IACF5H,EAAO,QAAa4H,GAElBC,IACF7H,EAAO,gBAAqB6H,GAE1BzF,IACFpC,EAAO,mBAAwBoC,EAAmB2D,SAAQ,GAExDvB,IACFxE,EAAO,SAAcwE,EAASuB,SAAQ,GAEpC4C,IACF3I,EAAO,YAAiB2I,GAEtBC,IACF5I,EAAO,UAAe4I,GAEpBC,IACF7I,EAAO,UAAe6I,GAEpBC,IACF9I,EAAO,UAAe8I,GAEpBC,IAA6BlE,SAC/B7E,EAAO,yBAA8B+I,GAEnCC,IACFhJ,EAAO,wCAA6CgJ,GAE/C,KAAK3J,KAAK6H,IAAe,GAAG,KAAK3H,OAAO,WAAWwC,CAAE,IAAK,CAAA,EAAI,CAAE/B,OAAAA,CAAM,CAAE,CACjF,CAEAiJ,uBAAuBlH,EAAU,CAC/B,OAAO,KAAK1C,KAAKiI,OAAa,GAAG,KAAK/H,OAAO,WAAWwC,CAAE,GAAG,CAC/D,CAEAmH,qBAAqBnH,EAAU,CAC7B,OAAO,KAAK1C,KAAKiH,KAAgB,GAAG,KAAK/G,OAAO,WAAWwC,CAAE,SAAU,CAAA,CAAE,CAC3E,CAEAoH,oBAAoBpH,EAAU,CAC5B,OAAO,KAAK1C,KAAKK,IAAe,GAAG,KAAKH,OAAO,WAAWwC,CAAE,GAAG,CACjE,CAIAqH,2BAAyB,CACvB,OAAO,KAAK/J,KAAKiH,KAAK,GAAG,KAAK/G,OAAO,8BAA+B,CAAA,CAAE,CACxE,CAEA8J,eAAerB,EAAwB,CACrC,OAAO,KAAK3I,KAAKiH,KAAK,GAAG,KAAK/G,OAAO,mCAAmCyI,EAAejF,KAAK,GAAG,CAAC,GAAI,CAAA,CAAE,CACxG,CAEAuG,sBAAsBC,EAAiBC,EAAkB5D,EAAqB,CAC5E,OAAO,KAAKvG,KAAK6H,IAAI,GAAG,KAAK3H,OAAO,oBAAqB,CAAA,EACvD,CAAES,OAAQ,CAAEuJ,QAASA,EAASC,SAAAA,EAAU5D,cAAeA,CAAa,CAAE,CAAE,CAC5E,CAEA6D,eAAe7D,EAAuBhD,EAAcO,EAAYyE,EAAyBC,EACvFzF,EAAoCoC,EAA0BmE,EAC9DC,EAA2BC,EAA2BC,EAA2BY,EACjFhC,EAAuBC,EAAuBjD,EAA6BC,EAAwB,CAGnG,IAAM3E,EAAyD,CAC7D4C,MAAOA,EAAMgC,YAAW,EACxBzB,IAAKA,EAAKyB,YAAW,GAGvB,OAAIF,IACF1E,EAAO,mBAAwB0E,GAE7BC,IACF3E,EAAO,gBAAqB2E,GAE1BiD,IACF5H,EAAO,QAAa4H,GAElBC,IACF7H,EAAO,gBAAqB6H,GAE1BzF,IACFpC,EAAO,mBAAwBoC,GAE7BoC,IACFxE,EAAO,SAAcwE,GAEnBmE,IACF3I,EAAO,YAAiB2I,GAEtBC,IACF5I,EAAO,UAAe4I,GAEpBC,IACF7I,EAAO,UAAe6I,GAEpBC,IACF9I,EAAO,UAAe8I,GAEpBpB,IAAgB,KAClB1H,EAAO,YAAiB0H,EAEGC,GAAU,OACnC3H,EAAO,MAAW2H,IAGf,KAAKtI,KAAK6H,IAA2B,GAAG,KAAK3H,OAAO,SAASqG,CAAa,IAAK,CAAE8D,gBAAAA,CAAe,EAAI,CAAE1J,OAAAA,CAAM,CAAE,CACvH,CAEA2J,WAAWC,EAAiB,CAC1B,OAAO,KAAKvK,KAAKiH,KAAuB,GAAG,KAAK/G,OAAO,mBAAoBqK,CAAK,CAClF,CAEAC,mBAAiB,CACf,OAAO,KAAKxK,KAAKK,IAAsB,GAAG,KAAKH,OAAO,sBAAsB,EACzEc,KAAKC,EAAIwJ,GAAOC,EAAuBD,CAAG,CAAC,CAAC,CACjD,CAEAE,WAAWpK,EAAiBqK,EAAiBrE,EAAqB,CAChE,MAAO,GAAG,KAAKrG,OAAO,4BAA4BK,CAAO,YAAYqK,CAAO,kBAAkBrE,CAAa,EAC7G,CAGAsE,kBAAkBtE,EAAqB,CACrC,OAAO,KAAKvG,KAAK+I,MAAe,GAAG,KAAK7I,OAAO,SAASqG,CAAa,WAAY,CAAA,CAAE,CACrF,CAEAuE,kBAAkBvE,EAAqB,CACrC,OAAO,KAAKvG,KAAK+I,MAAe,GAAG,KAAK7I,OAAO,SAASqG,CAAa,WAAY,CAAA,CAAE,CACrF,CAEAwE,uBAAqB,CACnB,OAAO,KAAK/K,KAAK+I,MAAe,GAAG,KAAK7I,OAAO,kBAAmB,CAAA,CAAE,CACtE,CAEA8K,uBAAqB,CACnB,OAAO,KAAKhL,KAAK+I,MAAe,GAAG,KAAK7I,OAAO,kBAAmB,CAAA,CAAE,CACtE,CAMA+K,YAAYzI,EAAgB8F,EAAe4C,EAAoBC,EAAuBC,EAAe,CACnG,OAAO,KAAKpL,KAAKiH,KAAW,GAAG,KAAK/G,OAAO,oBAAqBsF,OAAW,CAAE7E,OAAQ,CAAE6B,OAAAA,EAAQ8F,MAAAA,EAAO4C,WAAAA,EAAYC,cAAAA,EAAeC,QAAAA,CAAO,CAAE,CAAE,CAC9I,CAEAC,eAAe9E,EAAuB+B,EAAe4C,EAAoBC,EAAuBC,EAAe,CAC7G,OAAO,KAAKpL,KAAK6H,IAAU,GAAG,KAAK3H,OAAO,uBAAwBsF,OAAW,CAAE7E,OAAQ,CAAE4F,cAAAA,EAAe+B,MAAAA,EAAO4C,WAAAA,EAAYC,cAAAA,EAAeC,QAAAA,CAAO,CAAE,CAAE,CACvJ,CAEAE,YAAYC,EAAkB,CAC5B,OAAO,KAAKvL,KAAKK,IAAqB,GAAG,KAAKH,OAAO,cAAcqL,CAAU,GAAG,CAClF,CAEAC,iBAAiBD,EAAkB,CACjC,OAAO,KAAKvL,KAAKK,IAA6B,GAAG,KAAKH,OAAO,yBAA0B,CAAES,OAAQ,CAAE4K,WAAAA,CAAU,CAAE,CAAE,CACnH,CAEAE,cAAcF,EAAkB,CAC9B,OAAO,KAAKvL,KAAKiH,KAAW,GAAG,KAAK/G,OAAO,sBAAuBsF,OAAW,CAAE7E,OAAQ,CAAE4K,WAAAA,CAAU,CAAE,CAAE,CACzG,CAEAG,eAAeH,EAAkB,CAC/B,OAAO,KAAKvL,KAAKiI,OAAa,GAAG,KAAK/H,OAAO,uBAAwB,CAAES,OAAQ,CAAE4K,WAAAA,CAAU,CAAE,CAAE,CACjG,CAEAI,sBAAsBC,EAAgBnL,EAAmByK,EAAqBC,EAAwBC,EAAgB,CACpH,IAAIzK,EAAS,IAAIkL,EAEjB,OAAIX,IACFvK,EAASA,EAAOmL,IAAI,aAAcZ,CAAU,GAE1CC,IACFxK,EAASA,EAAOmL,IAAI,gBAAiBX,CAAa,GAEhDC,IACFzK,EAASA,EAAOmL,IAAI,UAAWV,CAAO,GAEjC,GAAG,KAAKlL,OAAO,6BAA6B0L,CAAM,cAAcnL,CAAS,IAAIE,CAAM,EAC5F,CAEAoL,eAAeR,EAAkB,CAC/B,MAAO,GAAG,KAAKrL,OAAO,cAAcqL,CAAU,EAChD,CAKA,IAAIrE,0BAAwB,CAC1B,OAAO8E,SAASC,eAAe,4BAA4B,GAAGC,aAAa,OAAO,GAAK,IACzF,CAEA,IAAIhF,yBAAyBiF,EAAoB,CAC1CA,GAELH,SAASC,eAAe,4BAA4B,GAAGG,aAAa,QAASD,CAAK,CACpF,CAGAE,sBAAsBC,EAAuB,GAAI,CAC/C,IAAI3L,EAAS,IAAIkL,EAEjB,OAAKS,IACH3L,EAASA,EAAOmL,IAAI,uBAAwB,EAAK,GAE5C,KAAK9L,KAAKK,IAA0B,GAAG,KAAKH,OAAO,8BAA+B,CAAES,OAAAA,CAAM,CAAE,CACrG,CAEA4L,cAAcC,EAAW,CACvB,OAAO,KAAKxM,KAAKK,IAAqB,GAAG,KAAKH,OAAO,eAAesM,CAAG,EAAE,CAC3E,CAEAC,qBAAqBC,EAAsBC,EAAoBC,EAAsBC,EAAgC7K,EAAmByB,EAAkB,CACxJ,OAAO,KAAKzD,KAAKK,IAAqB,GAAG,KAAKH,OAAO,sBAAuB,CAC1ES,OAAQ,CACN+L,aAAAA,EACAC,WAAAA,EACAC,YAAAA,EACAC,sBAAAA,EACA7K,SAAAA,EACAyB,QAASA,GAASC,KAAK,GAAG,GAAK,IAElC,CACH,yCApmBW5D,GAAcgN,EAAAC,CAAA,EAAAD,EAAAE,CAAA,CAAA,CAAA,wBAAdlN,EAAcmN,QAAdnN,EAAcoN,UAAAC,WAFb,MAAM,CAAA,EAEd,IAAOrN,EAAPsN,SAAOtN,CAAc,GAAA", "names": ["import_dayjs", "BackendService", "constructor", "http", "localeService", "baseUrl", "getCatalog", "name", "get", "getCatalogByOrderId", "orderId", "getCustomLabels", "catalogId", "parentCatalogId", "params", "CatalogId", "appId", "SxcService", "defaultAppId", "pipe", "map", "res", "ObjectChoice", "Checkout", "Payment", "getItemTree", "tap", "treeAndItems", "ItemService", "prepareItemTreeData", "getRooms", "getItems", "includeNotBookable", "lang", "currentLang", "allItems", "i", "__spreadProps", "__spreadValues", "materialIcon", "getIconName", "itemType", "getRecommendedItems", "itemId", "getItemInfo", "id", "getNextBookingInfo", "firstAvailableTime", "Date", "getEndDates", "availabilityPlanId", "startDate", "format", "endDates", "dayjs", "date", "getStartInfo", "planId", "start", "entireDay", "itemIds", "join", "startInfo", "starts", "s", "end", "getNextAvailableStartDate", "responseType", "dateString", "toDate", "getAvailableStarts", "availabilities", "a", "getTimeSlotsMonthInfo", "month", "year", "dates", "d", "getTimeSlotsNextAvailability", "getAppointments", "viewStart", "viewEnd", "wishStart", "wishEnd", "editingReservationId", "wishRecurrenceRule", "quantity", "consolidate", "preparationMinutes", "followUpMinutes", "toISOString", "undefined", "errorResult", "appointments", "wishErrors", "invalidTime", "isBefore", "of", "catchError", "title", "subject", "tooltip", "replace", "isWishTime", "startsWith", "getAppointment", "reservationId", "getItemsAvailability", "getAvailableQuantity", "toString", "getMyOrders", "getOrder", "cartMode", "getUser", "loginUser", "body", "post", "requestVerificationToken", "logoutUser", "forgotPassword", "email", "resetPassword", "model", "changePassword", "registerUser", "updateMyProfile", "updateCartCustomerGroup", "customerGroupId", "put", "getCart", "keepAlive", "deleteReservation", "delete", "addToCart", "orderFields", "addAdditionalEntry", "manualPrice", "price", "comment", "externalComment", "addUpdateAdditionalEntry", "addFromOtherOrder", "reservationIds", "move", "updateCustomPosition", "collapseRecurrence", "patch", "expandRecurrence", "acceptChangeRequest", "rejectChangeRequest", "getOrderLog", "addBlock", "updateBlockAppointment", "isPrintable", "printCol1", "printCol2", "printCol3", "doubleReservationAllowed", "mailRecipientOnOverlappingWithBlockInfo", "deleteBlockAppointment", "copyBlockAppointment", "getBlockAppointment", "orderCartItemsByStartDate", "orderCartItems", "updateCartObjectField", "fieldId", "newValue", "updateCartItem", "itemFieldValues", "placeOrder", "order", "getCheckoutFields", "raw", "normalizeFieldsConfigs", "getICalUrl", "catName", "acceptReservation", "rejectReservation", "acceptAllReservations", "rejectAllReservations", "addGiftCard", "senderName", "recipientName", "message", "updateGiftCard", "getGiftCard", "couponCode", "validateGiftCard", "applyGiftCard", "removeGiftCard", "getGiftCardPreviewUrl", "amount", "HttpParams", "set", "getGiftCardUrl", "document", "getElementById", "getAttribute", "value", "setAttribute", "getTermsAndConditions", "includeParentCatalog", "getInfoscreen", "key", "getInfoscreenPreview", "futureEvents", "pastEvents", "showPurpose", "showAllBookingDetails", "\u0275\u0275inject", "HttpClient", "LocaleService", "factory", "\u0275fac", "providedIn", "_BackendService"] }