{ "version": 3, "sources": ["src/app/shared/components/coupon-card/service/coupon.service.ts", "src/app/shared/components/coupon-card/coupon-card.component.ts", "src/app/shared/components/coupon-card/coupon-card.component.html"], "sourcesContent": ["import { PromoCodeService } from 'src/app/proxy/services';\r\nimport { TosterService } from '../../../services/toster.service';\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class CouponService {\r\n constructor(\r\n private TosterService: TosterService,\r\n private PromoCodeService: PromoCodeService\r\n ) {}\r\n\r\n applyCouponToDiscount(\r\n code: string,\r\n bookingInfo: any,\r\n onSuccess: (updatedBookingInfo: any, discountInfo: any) => void\r\n ): void {\r\n console.log(code, bookingInfo);\r\n\r\n if (!bookingInfo) {\r\n this.TosterService.customToast('Booking information is invalid', 'error');\r\n return;\r\n }\r\n let discountInfo = {};\r\n this.PromoCodeService.getByName(code).subscribe({\r\n next: (res) => {\r\n discountInfo = res;\r\n if (!res.discountAmount || !res.discountAmountIn) {\r\n this.TosterService.customToast('Invalid coupon data', 'error');\r\n return;\r\n }\r\n\r\n let updatedBookingInfo = { ...bookingInfo };\r\n\r\n switch (res.discountAmountIn) {\r\n case 1: // Fixed discount\r\n if (bookingInfo.totalAppointmentFee < res.discountAmount) {\r\n this.TosterService.customToast(\r\n 'Discount amount exceeds the total appointment fee!',\r\n 'error'\r\n );\r\n return;\r\n }\r\n\r\n updatedBookingInfo.totalAppointmentFee =\r\n bookingInfo.totalAppointmentFee - res.discountAmount;\r\n\r\n this.TosterService.customToast(\r\n `Coupon applied! Discount: ${res.discountAmount}`,\r\n 'success'\r\n );\r\n break;\r\n\r\n case 2: // Percentage discount\r\n const percentageDiscount =\r\n (bookingInfo.totalAppointmentFee * res.discountAmount) / 100;\r\n\r\n if (bookingInfo.totalAppointmentFee < percentageDiscount) {\r\n this.TosterService.customToast(\r\n 'Discount exceeds the total appointment fee!',\r\n 'error'\r\n );\r\n return;\r\n }\r\n\r\n updatedBookingInfo.totalAppointmentFee =\r\n bookingInfo.totalAppointmentFee - percentageDiscount;\r\n\r\n this.TosterService.customToast(\r\n `Coupon applied! Discount: ${res.discountAmount}%`,\r\n 'success'\r\n );\r\n break;\r\n\r\n default:\r\n this.TosterService.customToast('Invalid discount type', 'error');\r\n return;\r\n }\r\n\r\n // Ensure totalAppointmentFee doesn't drop below 0\r\n if (updatedBookingInfo.totalAppointmentFee < 0) {\r\n updatedBookingInfo.totalAppointmentFee = 0;\r\n }\r\n\r\n // Call the success callback\r\n onSuccess(updatedBookingInfo, discountInfo);\r\n },\r\n error: (err) => {\r\n console.log('Error applying coupon:', err);\r\n this.TosterService.customToast(\r\n 'Failed to apply coupon. Please try again.',\r\n 'error'\r\n );\r\n },\r\n });\r\n }\r\n}\r\n", "import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { AppointmentInputDto } from 'src/app/proxy/dto-models';\r\nimport { PromoCodeInputDto } from 'src/app/proxy/input-dto';\r\nimport { CouponService } from './service/coupon.service';\r\n\r\n@Component({\r\n selector: 'app-coupon-card',\r\n standalone: true,\r\n imports: [],\r\n templateUrl: './coupon-card.component.html',\r\n styleUrl: './coupon-card.component.scss',\r\n})\r\nexport class CouponCardComponent implements OnChanges {\r\n previousTotalFee: number = 0;\r\n disableApplyButton: boolean = false;\r\n @Input() bookingInfo: AppointmentInputDto = {} as AppointmentInputDto;\r\n discount!: PromoCodeInputDto;\r\n constructor(private CouponService: CouponService) {}\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['bookingInfo'] && changes['bookingInfo'].currentValue) {\r\n this.previousTotalFee =\r\n changes['bookingInfo'].currentValue.totalAppointmentFee;\r\n }\r\n }\r\n applyCoupon(coupon: string) {\r\n this.CouponService.applyCouponToDiscount(\r\n coupon,\r\n this.bookingInfo,\r\n (updatedBookingInfo: any, discountInfo: PromoCodeInputDto) => {\r\n this.bookingInfo = updatedBookingInfo;\r\n this.discount = discountInfo;\r\n this.disableApplyButton = true;\r\n console.log('Updated Booking Info:', this.bookingInfo);\r\n }\r\n );\r\n }\r\n}\r\n", "@if (bookingInfo && (bookingInfo.totalAppointmentFee == 0 ||\r\nbookingInfo.totalAppointmentFee)) { @if (bookingInfo.totalAppointmentFee !== 0)\r\n{\r\n
\r\n \r\n \r\n Apply\r\n \r\n
\r\n}\r\n\r\n
\r\n \r\n
\r\n}@else { No Booking details found! }\r\n"], "mappings": "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", "names": ["CouponService", "constructor", "TosterService", "PromoCodeService", "applyCouponToDiscount", "code", "bookingInfo", "onSuccess", "console", "log", "customToast", "discountInfo", "getByName", "subscribe", "next", "res", "discountAmount", "discountAmountIn", "updatedBookingInfo", "__spreadValues", "totalAppointmentFee", "percentageDiscount", "error", "err", "\u0275\u0275inject", "factory", "\u0275fac", "providedIn", "_CouponService", "\u0275\u0275elementStart", "\u0275\u0275element", "\u0275\u0275listener", "\u0275\u0275restoreView", "_r6", "_r4", "\u0275\u0275reference", "ctx_r5", "\u0275\u0275nextContext", "\u0275\u0275resetView", "applyCoupon", "value", "\u0275\u0275text", "\u0275\u0275elementEnd", "\u0275\u0275advance", "\u0275\u0275property", "ctx_r2", "bookingInfo", "totalAppointmentFee", "disableApplyButton", "\u0275\u0275textInterpolate2", "ctx_r7", "discount", "discountAmount", "discountAmountIn", "\u0275\u0275template", "CouponCardComponent_Conditional_0_Conditional_3_Conditional_8_Template", "CouponCardComponent_Conditional_0_Conditional_3_Conditional_9_Template", "\u0275\u0275textInterpolate1", "ctx_r3", "previousTotalFee", "\u0275\u0275conditional", "CouponCardComponent_Conditional_0_Conditional_0_Template", "CouponCardComponent_Conditional_0_Conditional_3_Template", "ctx_r0", "CouponCardComponent", "constructor", "CouponService", "ngOnChanges", "changes", "currentValue", "coupon", "applyCouponToDiscount", "updatedBookingInfo", "discountInfo", "console", "log", "\u0275\u0275directiveInject", "selectors", "inputs", "standalone", "features", "\u0275\u0275NgOnChangesFeature", "\u0275\u0275StandaloneFeature", "decls", "vars", "consts", "template", "rf", "ctx", "CouponCardComponent_Conditional_0_Template", "CouponCardComponent_Conditional_1_Template", "_CouponCardComponent"] }